# ============================================================ - 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 wait_timeout: "{{ rackspace_wait_timeout }}" 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 wait_timeout: "{{ rackspace_wait_timeout }}" 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 wait_timeout: "{{ rackspace_wait_timeout }}" 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 wait_timeout: "{{ rackspace_wait_timeout }}" 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 wait_timeout: "{{ rackspace_wait_timeout }}" 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 wait_timeout: "{{ rackspace_wait_timeout }}" 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 wait_timeout: "{{ rackspace_wait_timeout }}" register: rax - name: "Validate delete" assert: that: - rax|changed - rax|success - rax.action == 'delete' # ============================================================