From 3ae1014fd34753a0d7fc50e24271ca8003d4d63f Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Mon, 19 Jan 2015 11:04:53 -0600 Subject: [PATCH] Add tests for rax_cbs --- test/integration/cleanup_rax.py | 13 + test/integration/rackspace.yml | 8 +- .../roles/test_rax_cbs/meta/main.yml | 3 + .../roles/test_rax_cbs/tasks/main.yml | 346 ++++++++++++++++++ 4 files changed, 365 insertions(+), 5 deletions(-) create mode 100644 test/integration/roles/test_rax_cbs/meta/main.yml create mode 100644 test/integration/roles/test_rax_cbs/tasks/main.yml diff --git a/test/integration/cleanup_rax.py b/test/integration/cleanup_rax.py index 932f23e61aa..10e94334f89 100644 --- a/test/integration/cleanup_rax.py +++ b/test/integration/cleanup_rax.py @@ -114,6 +114,18 @@ def delete_rax_network(args): args.assumeyes) +def delete_rax_cbs(args): + """Function for deleting Cloud Networks""" + print ("--- Cleaning Cloud Block Storage matching '%s'" % args.match_re) + for region in pyrax.identity.services.network.regions: + cbs = pyrax.connect_to_cloud_blockstorage(region=region) + for volume in cbs.list(): + if re.search(args.match_re, volume.name): + prompt_and_delete(volume, + 'Delete matching %s? [y/n]: ' % volume, + args.assumeyes) + + def main(): if not HAS_PYRAX: raise SystemExit('The pyrax python module is required for this script') @@ -124,6 +136,7 @@ def main(): delete_rax_clb(args) delete_rax_keypair(args) delete_rax_network(args) + delete_rax_cbs(args) if __name__ == '__main__': diff --git a/test/integration/rackspace.yml b/test/integration/rackspace.yml index ba2f9f0714e..51f7620a7c0 100644 --- a/test/integration/rackspace.yml +++ b/test/integration/rackspace.yml @@ -5,11 +5,6 @@ tags: - rackspace roles: - - role: prepare_rax_tests - tags: - - prepare - - prepare_rax_tests - - role: test_rax tags: test_rax @@ -30,3 +25,6 @@ - role: test_rax_network tags: test_rax_network + + - role: test_rax_cbs + tags: test_rax_cbs diff --git a/test/integration/roles/test_rax_cbs/meta/main.yml b/test/integration/roles/test_rax_cbs/meta/main.yml new file mode 100644 index 00000000000..a3f85b642e3 --- /dev/null +++ b/test/integration/roles/test_rax_cbs/meta/main.yml @@ -0,0 +1,3 @@ +dependencies: + - prepare_tests + - prepare_rax_tests diff --git a/test/integration/roles/test_rax_cbs/tasks/main.yml b/test/integration/roles/test_rax_cbs/tasks/main.yml new file mode 100644 index 00000000000..90395e4fe20 --- /dev/null +++ b/test/integration/roles/test_rax_cbs/tasks/main.yml @@ -0,0 +1,346 @@ +# ============================================================ +- name: Test rax_cbs with no args + rax_cbs: + ignore_errors: true + register: rax_cbs + +- name: Validate results of rax_cbs with no args + assert: + that: + - rax_cbs|failed + - rax_cbs.msg == 'missing required arguments: name' +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs with name + rax_cbs: + name: fail + ignore_errors: true + register: rax_cbs + +- name: Validate results of rax_cbs with no args + assert: + that: + - rax_cbs|failed + - rax_cbs.msg == 'No credentials supplied!' +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs with name and credentials + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + name: fail + ignore_errors: true + register: rax_cbs + +- name: Validate results of rax_cbs with name and credentials + assert: + that: + - rax_cbs|failed + - rax_cbs.msg.startswith('None is not a valid region') +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs with creds, region, name and public_key string + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-1" + wait: true + register: rax_cbs + +- name: Validate rax_cbs creds, region and name + assert: + that: + - rax_cbs|success + - rax_cbs|changed + - rax_cbs.volume.display_name == "{{ resource_prefix }}-1" + - rax_cbs.volume.attachments == [] + - rax_cbs.volume.size == 100 + - rax_cbs.volume.volume_type == 'SATA' + - rax_cbs.volume.status == 'available' + +- name: Delete integration 1 + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-1" + state: absent + register: rax_cbs + +- name: Validate delete integration 1 + assert: + that: + - rax_cbs|success + - rax_cbs|changed + - rax_cbs.volume.display_name == "{{ resource_prefix }}-1" +# ============================================================ + + + + +# ============================================================ +- name: Test rax_cbs with creds, region, name and invalid size + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: fail + size: 1 + ignore_errors: true + register: rax_cbs + +- name: Validate rax_cbs creds, region, name and invalid size + assert: + that: + - rax_cbs|failed + - rax_cbs.msg == '"size" must be greater than or equal to 100' +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs with creds, region, name and valid size + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-2" + size: 150 + wait: true + register: rax_cbs + +- name: Validate rax_cbs creds, region and valid size + assert: + that: + - rax_cbs|success + - rax_cbs|changed + - rax_cbs.volume.display_name == "{{ resource_prefix }}-2" + - rax_cbs.volume.attachments == [] + - rax_cbs.volume.size == 150 + - rax_cbs.volume.volume_type == 'SATA' + - rax_cbs.volume.status == 'available' + +- name: Delete integration 2 + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-2" + state: absent + register: rax_cbs + +- name: Validate delete integration 2 + assert: + that: + - rax_cbs|success + - rax_cbs|changed + - rax_cbs.volume.display_name == "{{ resource_prefix }}-2" +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs with creds, region, name and invalid volume_type + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: fail + volume_type: fail + ignore_errors: true + register: rax_cbs + +- name: Validate rax_cbs creds, region, name and invalid volume_type + assert: + that: + - rax_cbs|failed + - "rax_cbs.msg == 'value of volume_type must be one of: SSD,SATA, got: fail'" +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs with creds, region, name and valid volume_size + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-3" + volume_type: SSD + wait: true + register: rax_cbs + +- name: Validate rax_cbs creds, region and valid volume_size + assert: + that: + - rax_cbs|success + - rax_cbs|changed + - rax_cbs.volume.display_name == "{{ resource_prefix }}-3" + - rax_cbs.volume.attachments == [] + - rax_cbs.volume.size == 100 + - rax_cbs.volume.volume_type == 'SSD' + - rax_cbs.volume.status == 'available' + +- name: Delete integration 3 + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-3" + state: absent + register: rax_cbs + +- name: Validate delete integration 3 + assert: + that: + - rax_cbs|success + - rax_cbs|changed + - rax_cbs.volume.display_name == "{{ resource_prefix }}-3" +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs with creds, region, name and description + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-4" + description: "{{ resource_prefix }}-4 description" + wait: true + register: rax_cbs + +- name: Validate rax_cbs creds, region and description + assert: + that: + - rax_cbs|success + - rax_cbs|changed + - rax_cbs.volume.display_name == "{{ resource_prefix }}-4" + - rax_cbs.volume.description == '{{ resource_prefix }}-4 description' + - rax_cbs.volume.attachments == [] + - rax_cbs.volume.size == 100 + - rax_cbs.volume.volume_type == 'SATA' + - rax_cbs.volume.status == 'available' + +- name: Delete integration 4 + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-4" + state: absent + register: rax_cbs + +- name: Validate delete integration 4 + assert: + that: + - rax_cbs|success + - rax_cbs|changed + - rax_cbs.volume.display_name == "{{ resource_prefix }}-4" +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs with creds, region, name and meta + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-5" + meta: + foo: bar + wait: true + register: rax_cbs + +- name: Validate rax_cbs creds, region and meta + assert: + that: + - rax_cbs|success + - rax_cbs|changed + - rax_cbs.volume.display_name == "{{ resource_prefix }}-5" + - rax_cbs.volume.attachments == [] + - rax_cbs.volume.size == 100 + - rax_cbs.volume.volume_type == 'SATA' + - rax_cbs.volume.status == 'available' + - rax_cbs.volume.metadata.foo == 'bar' + +- name: Delete integration 5 + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-5" + state: absent + register: rax_cbs + +- name: Validate delete integration 5 + assert: + that: + - rax_cbs|success + - rax_cbs|changed + - rax_cbs.volume.display_name == "{{ resource_prefix }}-5" +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs with idempotency 1 + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-6" + wait: true + register: rax_cbs_1 + +- name: Validate rax_cbs with idempotency 1 + assert: + that: + - rax_cbs_1|success + - rax_cbs_1|changed + - rax_cbs_1.volume.display_name == "{{ resource_prefix }}-6" + +- name: Test rax_cbs with idempotency 2 + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-6" + register: rax_cbs_2 + +- name: Validate rax_cbs with idempotency 2 + assert: + that: + - rax_cbs_2|success + - not rax_cbs_2|changed + - rax_cbs_2.volume.display_name == "{{ resource_prefix }}-6" + - rax_cbs_2.volume.id == rax_cbs_1.volume.id + +- name: Delete integration 6 + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-6" + state: absent + register: rax_cbs + +- name: Validate delete integration 6 + assert: + that: + - rax_cbs|success + - rax_cbs|changed + - rax_cbs.volume.name == "{{ resource_prefix }}-6" +# ============================================================