diff --git a/test/integration/azure.yml b/test/integration/azure.yml new file mode 100644 index 0000000000..4fceb2a13e --- /dev/null +++ b/test/integration/azure.yml @@ -0,0 +1,7 @@ +- hosts: localhost + connection: local + gather_facts: no + tags: + - test_azure + roles: + - { role: test_azure } diff --git a/test/integration/cleanup_azure.py b/test/integration/cleanup_azure.py new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/test/integration/cleanup_azure.py @@ -0,0 +1 @@ + diff --git a/test/integration/credentials.template b/test/integration/credentials.template index 4894f5827b..78594aca97 100644 --- a/test/integration/credentials.template +++ b/test/integration/credentials.template @@ -13,5 +13,9 @@ service_account_email: pem_file: project_id: +# Azure Credentials +azure_subscription_id: +azure_cert_path: + # GITHUB SSH private key - a path to a SSH private key for use with github.com github_ssh_private_key: "{{ lookup('env','HOME') }}/.ssh/id_rsa" diff --git a/test/integration/roles/test_azure/defaults/main.yml b/test/integration/roles/test_azure/defaults/main.yml new file mode 100644 index 0000000000..01018a9f7f --- /dev/null +++ b/test/integration/roles/test_azure/defaults/main.yml @@ -0,0 +1,10 @@ +--- +# defaults file for test_azure +instance_name: "{{ resource_prefix|lower }}" +cert_path: "{{ azure_cert_path }}" +subscription_id: "{{ azure_subscription_id }}" +storage_account: "{{ azure_storage_account|default('ansibleeast') }}" +role_size: "{{ azure_role_size|default('Basic_A0') }}" +user: "{{ azure_user|default('ansible_user') }}" +location: "{{ azure_location|default('East US') }}" +password: "{{ azure_password|default('abc123Q%') }}" diff --git a/test/integration/roles/test_azure/tasks/main.yml b/test/integration/roles/test_azure/tasks/main.yml new file mode 100644 index 0000000000..cba93e3d65 --- /dev/null +++ b/test/integration/roles/test_azure/tasks/main.yml @@ -0,0 +1,63 @@ +# TODO: Implement create storage account feature. Currently, storage_account must be manually created on azure account. +# TODO: When more granular azure operations are implemented (i.e. list disk, list cloud services, etc). Use the +# fine-grain listings to ensure higher level operations are performed. +# ============================================================ +- name: test with no credentials + azure: + register: result + ignore_errors: true + +- name: assert failure when called with no credentials + assert: + that: + - 'result.failed' + - 'result.msg == "No subscription_id provided. Please set ''AZURE_SUBSCRIPTION_ID'' or use the ''subscription_id'' parameter"' + +# ============================================================ +- name: test credentials + azure: + subscription_id: "{{ subscription_id }}" + management_cert_path: "{{ cert_path }}" + register: result + ignore_errors: true + +- name: assert failure when called with credentials and no parameters + assert: + that: + - 'result.failed' + - 'result.msg == "name parameter is required for new instance"' + +# ============================================================ +- name: test status=Running (expected changed=true) + azure: + subscription_id: "{{ subscription_id }}" + management_cert_path: "{{ cert_path }}" + name: "{{ instance_name }}" + image: "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-12_04_4-LTS-amd64-server-20140514-en-us-30GB" + storage_account: "{{ storage_account }}" + user: "{{ user }}" + role_size: "{{ role_size }}" + password: "{{ password }}" + location: "{{ location }}" + wait: yes + state: present + register: result + +- name: assert state=Running (expected changed=true) + assert: + that: + - 'result.changed' + - 'result.deployment.name == "{{ instance_name }}"' + - 'result.deployment.status == "Running"' + +# ============================================================ +- name: test state=absent (expected changed=true) + azure: + subscription_id: "{{ subscription_id }}" + management_cert_path: "{{ cert_path }}" + name: "{{ instance_name }}" + #storage_account: "{{ storage_account }}" + #location: "{{ location }}" + wait: yes + state: absent + register: result