diff --git a/test/integration/rackspace.yml b/test/integration/rackspace.yml index 51f7620a7c0..e00f14171d5 100644 --- a/test/integration/rackspace.yml +++ b/test/integration/rackspace.yml @@ -28,3 +28,6 @@ - role: test_rax_cbs tags: test_rax_cbs + + - role: test_rax_cbs_attachments + tags: test_rax_cbs_attachments diff --git a/test/integration/roles/test_rax_cbs_attachments/meta/main.yml b/test/integration/roles/test_rax_cbs_attachments/meta/main.yml new file mode 100644 index 00000000000..a3f85b642e3 --- /dev/null +++ b/test/integration/roles/test_rax_cbs_attachments/meta/main.yml @@ -0,0 +1,3 @@ +dependencies: + - prepare_tests + - prepare_rax_tests diff --git a/test/integration/roles/test_rax_cbs_attachments/tasks/main.yml b/test/integration/roles/test_rax_cbs_attachments/tasks/main.yml new file mode 100644 index 00000000000..6750105c1e6 --- /dev/null +++ b/test/integration/roles/test_rax_cbs_attachments/tasks/main.yml @@ -0,0 +1,253 @@ +# ============================================================ +- name: Test rax_cbs_attachments with no args + rax_cbs_attachments: + ignore_errors: true + register: rax_cbs_attachments + +- name: Validate results of rax_cbs_attachments with no args + assert: + that: + - rax_cbs_attachments|failed + - rax_cbs_attachments.msg == 'missing required arguments: server,volume,device' +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs_attachments with server, volume and device + rax_cbs_attachments: + server: '1234' + volume: '1234' + device: /dev/xvde + ignore_errors: true + register: rax_cbs_attachments + +- name: Validate results of rax_cbs_attachments with server, volume and device + assert: + that: + - rax_cbs_attachments|failed + - rax_cbs_attachments.msg == 'No credentials supplied!' +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs_attachments with credentials, server, volume and device + rax_cbs_attachments: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + server: '1234' + volume: '1234' + device: /dev/xvde + ignore_errors: true + register: rax_cbs_attachments + +- name: Validate results of rax_cbs_attachments with credentials, server, volume and device + assert: + that: + - rax_cbs_attachments|failed + - rax_cbs_attachments.msg.startswith('None is not a valid region') +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs_attachments with creds, region, invalid server, invalid volume and device + rax_cbs_attachments: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + server: '1234' + volume: '1234' + device: /dev/xvde + ignore_errors: true + register: rax_cbs_attachments + +- name: Validate rax_cbs_attachments creds, region, invalid server, invalid volume and device + assert: + that: + - rax_cbs_attachments|failed + - rax_cbs_attachments.msg == 'No matching storage volumes were found' +# ============================================================ + + + +# ============================================================ +- name: Build Volume for rax_cbs_attachments test + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ resource_prefix }}-rax_cbs_attachments" + wait: true + register: rax_cbs + +- name: Validate volume build + assert: + that: + - rax_cbs|success + - rax_cbs|changed + - rax_cbs.volume.display_name == "{{ resource_prefix }}-rax_cbs_attachments" +# ============================================================ + + + +# ============================================================ +- name: Build CloudServer for rax_cbs_attachments tests + rax: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + image: "{{ rackspace_image_id }}" + flavor: "{{ rackspace_flavor }}" + name: "{{ resource_prefix }}-rax_cbs_attachments" + wait: true + register: rax + +- name: Validate CloudServer build + assert: + that: + - rax|success + - rax|changed + - rax.action == 'create' + - rax.instances|length == 1 + - rax.instances[0].name == "{{ resource_prefix }}-rax_cbs_attachments" +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs_attachments with creds, region, invalid server, volume and device + rax_cbs_attachments: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + server: '1234' + volume: "{{ rax_cbs.volume.id }}" + device: /dev/xvde + ignore_errors: true + register: rax_cbs_attachments + +- name: Validate rax_cbs_attachments creds, region, invalid server, volume and device + assert: + that: + - rax_cbs_attachments|failed + - rax_cbs_attachments.msg == 'No Server was matched by name, try using the Server ID instead' +# ============================================================ + + + +# ============================================================ +- name: Test rax_cbs_attachments with creds, region, server, volume and device (valid) + rax_cbs_attachments: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + server: "{{ rax.instances[0].id }}" + volume: "{{ rax_cbs.volume.id }}" + device: /dev/xvde + wait: true + register: rax_cbs_attachments + +- name: Validate rax_cbs_attachments creds, region, server, volume and device (valid) + assert: + that: + - rax_cbs_attachments|success + - rax_cbs_attachments|changed + - rax_cbs_attachments.volume.attachments.0.device == '/dev/xvde' + - rax_cbs_attachments.volume.attachments.0.server_id == "{{ rax.instances[0].id }}" + +- name: Idempotent present test + rax_cbs_attachments: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + server: "{{ rax.instances[0].id }}" + volume: "{{ rax_cbs.volume.id }}" + device: /dev/xvde + wait: true + register: rax_cbs_attachments + +- name: Validate idempotent present test + assert: + that: + - rax_cbs_attachments|success + - not rax_cbs_attachments|changed + +- name: Unattach volume + rax_cbs_attachments: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + server: "{{ rax.instances[0].id }}" + volume: "{{ rax_cbs.volume.id }}" + device: /dev/xvde + wait: true + state: absent + register: rax_cbs_attachments + +- name: Validate unattach volume + assert: + that: + - rax_cbs_attachments|success + - rax_cbs_attachments|changed + - rax_cbs_attachments.volume.attachments == [] + +- name: Idempotent absent test + rax_cbs_attachments: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + server: "{{ rax.instances[0].id }}" + volume: "{{ rax_cbs.volume.id }}" + device: /dev/xvde + wait: true + state: absent + register: rax_cbs_attachments + +- name: Validate idempotent absent test + assert: + that: + - rax_cbs_attachments|success + - not rax_cbs_attachments|changed +# ============================================================ + + + +# ============================================================ +- name: Delete test volume + rax_cbs: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + name: "{{ rax_cbs.volume.id }}" + state: absent + register: rax_cbs + +- name: Validate delete integration 6 + assert: + that: + - rax_cbs|success + - rax_cbs|changed +# ============================================================ + + + +# ============================================================ +- name: "Delete CloudServer" + rax: + username: "{{ rackspace_username }}" + api_key: "{{ rackspace_api_key }}" + region: "{{ rackspace_region }}" + instance_ids: "{{ rax.instances[0].id }}" + state: absent + wait: true + register: rax + +- name: "Validate delete" + assert: + that: + - rax|changed + - rax|success + - rax.action == 'delete' +# ============================================================