Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add azure integration tests #10916

Merged
merged 2 commits into from
May 5, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 10 additions & 1 deletion test/integration/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -105,13 +105,16 @@ test_tags:
[ "$$(ansible-playbook --list-tasks --skip-tags tag test_tags.yml -i $(INVENTORY) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -v $(TEST_FLAGS) | fgrep Task_with | xargs)" = "Task_with_always_tag TAGS: [always] Task_without_tag TAGS: []" ]


cloud: amazon rackspace
cloud: amazon rackspace azure

cloud_cleanup: amazon_cleanup rackspace_cleanup

amazon_cleanup:
python cleanup_ec2.py -y --match="^$(CLOUD_RESOURCE_PREFIX)"

azure_cleanup:
python cleanup_azure.py -y --match="^$(CLOUD_RESOURCE_PREFIX)"

gce_setup:
python setup_gce.py "$(CLOUD_RESOURCE_PREFIX)"

Expand All @@ -131,6 +134,12 @@ amazon: $(CREDENTIALS_FILE)
CLOUD_RESOURCE_PREFIX="$(CLOUD_RESOURCE_PREFIX)" make amazon_cleanup ; \
exit $$RC;

azure: $(CREDENTIALS_FILE)
ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook azure.yml -i $(INVENTORY) $(CREDENTIALS_ARG) -e "resource_prefix=$(CLOUD_RESOURCE_PREFIX)" -v $(TEST_FLAGS) ; \
RC=$$? ; \
CLOUD_RESOURCE_PREFIX="$(CLOUD_RESOURCE_PREFIX)" make azure_cleanup ; \
exit $$RC;

gce: $(CREDENTIALS_FILE)
CLOUD_RESOURCE_PREFIX="$(CLOUD_RESOURCE_PREFIX)" make gce_setup ; \
ansible-playbook gce.yml -i $(INVENTORY) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -e "resource_prefix=$(CLOUD_RESOURCE_PREFIX)" -v $(TEST_FLAGS) ; \
Expand Down
7 changes: 7 additions & 0 deletions test/integration/azure.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
- hosts: localhost
connection: local
gather_facts: no
tags:
- test_azure
roles:
- { role: test_azure }
1 change: 1 addition & 0 deletions test/integration/cleanup_azure.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

4 changes: 4 additions & 0 deletions test/integration/credentials.template
Original file line number Diff line number Diff line change
Expand Up @@ -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"
10 changes: 10 additions & 0 deletions test/integration/roles/test_azure/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -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%') }}"
63 changes: 63 additions & 0 deletions test/integration/roles/test_azure/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -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