--- - name: Test create a running server in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' register: server check_mode: yes - name: Verify create a running server in check mode assert: that: - server is changed - server.state == 'absent' - name: Test create a running server cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' register: server - name: Verify create a running server assert: that: - server is changed - server.state == 'running' - name: Test create a running server idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' register: server - name: Verify create a running server idempotence assert: that: - server is not changed - server.state == 'running' - name: Test update flavor of a running server without force in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: no register: server check_mode: yes - name: Verify update flavor of a running server without force in check mode assert: that: - server is not changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - name: Test update flavor of a running server without force cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: no register: server - name: Verify update flavor of a running server without force assert: that: - server is not changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - name: Test update flavor of a running server without force idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: no register: server - name: Verify update flavor of a running server without force idempotence assert: that: - server is not changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - name: Test update flavor and name of a running server without force in check mode cloudscale_server: uuid: '{{ server.uuid }}' name: '{{ cloudscale_resource_prefix }}-test-renamed' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: no register: server check_mode: yes - name: Verify update flavor and name of a running server without force in check mode assert: that: - server is changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.name == '{{ cloudscale_resource_prefix }}-test' - name: Test update flavor and name of a running server without force cloudscale_server: uuid: '{{ server.uuid }}' name: '{{ cloudscale_resource_prefix }}-test-renamed' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: no register: server - name: Verify update flavor and name of a running server without force assert: that: - server is changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.name == '{{ cloudscale_resource_prefix }}-test-renamed' - name: Test update flavor and name of a running server without force idempotence cloudscale_server: uuid: '{{ server.uuid }}' name: '{{ cloudscale_resource_prefix }}-test-renamed' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: no register: server - name: Verify update flavor and name of a running server without force idempotence assert: that: - server is not changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.name == '{{ cloudscale_resource_prefix }}-test-renamed' - name: Test update flavor of a running server with force in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-renamed' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: yes register: server check_mode: yes - name: Verify update flavor of a running server with force in check mode assert: that: - server is changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.name == '{{ cloudscale_resource_prefix }}-test-renamed' - name: Test update flavor of a running server with force cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-renamed' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: yes register: server - name: Verify update flavor of a running server with force assert: that: - server is changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor_2 }}' - server.name == '{{ cloudscale_resource_prefix }}-test-renamed' - name: Test update a running server with force idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-renamed' flavor: '{{ cloudscale_test_flavor_2 }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' force: yes register: server - name: Verify update flavor of a running server with force idempotence assert: that: - server is not changed - server.state == 'running' - server.flavor.slug == '{{ cloudscale_test_flavor_2 }}' - server.name == '{{ cloudscale_resource_prefix }}-test-renamed' - name: Remember uuid of running server for anti affinity set_fact: running_server_uuid: '{{ server.uuid }}' - name: Test create server stopped in anti affinity and private network only in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-stopped' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' anti_affinity_with: '{{ running_server_uuid }}' use_public_network: no use_private_network: yes state: stopped check_mode: yes register: server_stopped - name: Verify create server stopped in anti affinity and private network only in check mode assert: that: - server_stopped is changed - server_stopped.state == 'absent' - name: Test create server stopped in anti affinity and private network only cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-stopped' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' anti_affinity_with: '{{ running_server_uuid }}' use_public_network: no use_private_network: yes state: stopped register: server_stopped - name: Verify create server stopped in anti affinity and private network only assert: that: - server_stopped is changed - server_stopped.state == 'stopped' - server_stopped.anti_affinity_with.0.uuid == running_server_uuid - server_stopped.interfaces.0.type == 'private' - name: Test create server stopped in anti affinity and private network only idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-stopped' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' anti_affinity_with: '{{ running_server_uuid }}' use_public_network: no use_private_network: yes state: stopped register: server_stopped - name: Verify create server stopped in anti affinity and private network only idempotence assert: that: - server_stopped is not changed - server_stopped.state == 'stopped' - server_stopped.anti_affinity_with.0.uuid == running_server_uuid - server_stopped.interfaces.0.type == 'private' - name: Test create server with password in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-password' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' password: '{{ cloudscale_test_password }}' check_mode: yes register: server_password - name: Verify create server with password in check mode assert: that: - server_password is changed - server_password.state == 'absent' # Verify password is not logged - server_password.diff.after.password != cloudscale_test_password - name: Test create server with password cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-password' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' password: '{{ cloudscale_test_password }}' register: server_password - name: Verify create server with password assert: that: - server_password is changed - server_password.state == 'running' # Verify password is not logged - server_password.diff.after.password != cloudscale_test_password - name: Test create server with password idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-password' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' password: '{{ cloudscale_test_password }}' register: server_password - name: Verify create server with password idempotence assert: that: - server_password is not changed - server_password.state == 'running' - name: Test create server failure without required parameters cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-failed' register: server_failed ignore_errors: yes - name: Verify create server failure without required parameters assert: that: - server_failed is failed - "'Failure while calling the cloudscale.ch API with POST for \"servers\".' in server_failed.msg" - "'This field is required.' in server_failed.fetch_url_info.body" - name: Test stop running server in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-renamed' state: stopped check_mode: yes register: server - name: Verify stop running server in check mode assert: that: - server is changed - server.state == 'running' - name: Test stop running server cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-renamed' state: stopped register: server - name: Verify stop running server assert: that: - server is changed - server.state == 'stopped' - name: Test stop running server idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test-renamed' state: 'stopped' register: server - name: Verify stop running server idempotence assert: that: - server is not changed - server.state == 'stopped' - name: Test update a stopped server in check mode cloudscale_server: uuid: '{{ server.uuid }}' name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' state: stopped register: server check_mode: yes - name: Verify update a stopped server in check mode assert: that: - server is changed - server.state == 'stopped' - server.flavor.slug == '{{ cloudscale_test_flavor_2 }}' - server.name == '{{ cloudscale_resource_prefix }}-test-renamed' - name: Test update a stopped server without force cloudscale_server: uuid: '{{ server.uuid }}' name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' state: stopped register: server - name: Verify update a stopped server without force assert: that: - server is changed - server.state == 'stopped' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.name == '{{ cloudscale_resource_prefix }}-test' - name: Test update a stopped server idempotence cloudscale_server: uuid: '{{ server.uuid }}' name: '{{ cloudscale_resource_prefix }}-test' flavor: '{{ cloudscale_test_flavor }}' image: '{{ cloudscale_test_image }}' ssh_keys: '{{ cloudscale_test_ssh_key }}' state: stopped register: server - name: Verify update a stopped server idempotence assert: that: - server is not changed - server.state == 'stopped' - server.flavor.slug == '{{ cloudscale_test_flavor }}' - server.name == '{{ cloudscale_resource_prefix }}-test' - name: Test server running in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' state: running register: server check_mode: yes - name: Verify server running in check mode assert: that: - server is changed - server.state == 'stopped' - name: Test server running cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' state: running register: server - name: Verify server running assert: that: - server is changed - server.state == 'running' - name: Test server running idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' state: running register: server - name: Verify server running idempotence assert: that: - server is not changed - server.state == 'running' - name: Test running server deletion by name in check mode cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' state: absent register: server check_mode: yes - name: Verify running server deletion by name in check mode assert: that: - server is changed - server.state == 'running' - name: Test running server deletion by name cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' state: absent register: server - name: Verify running server deletion by name assert: that: - server is changed - server.state == 'absent' - name: Test running server deletion by name idempotence cloudscale_server: name: '{{ cloudscale_resource_prefix }}-test' state: absent register: server - name: Verify running server deletion by name idempotence assert: that: - server is not changed - server.state == 'absent' - name: Test stopped server deletion by uuid in check mode cloudscale_server: uuid: '{{ server_stopped.uuid }}' state: absent register: server_stopped check_mode: yes - name: Verify stopped server deletion by uuid in check mode assert: that: - server_stopped is changed - server_stopped.state == 'stopped' - name: Test stopped server deletion by uuid cloudscale_server: uuid: '{{ server_stopped.uuid }}' state: absent register: server_stopped - name: Verify stopped server deletion by uuid assert: that: - server_stopped is changed - server_stopped.state == 'absent' - name: Test stopped server deletion by uuid idempotence cloudscale_server: uuid: '{{ server_stopped.uuid }}' state: absent register: server_stopped - name: Verify stopped server deletion by uuid idempotence assert: that: - server_stopped is not changed - server_stopped.state == 'absent'