- name: Create server openstack.cloud.server: cloud: "{{ cloud }}" state: present name: "{{ server_name }}" image: "{{ image_name }}" flavor: "{{ flavor_name }}" network: "{{ server_network }}" auto_floating_ip: false wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info1 - name: Ensure status for server is ACTIVE assert: that: - info1.openstack_servers.0.status == 'ACTIVE' - name: Stop server openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: stop wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info2 - name: Ensure status for server is SHUTOFF assert: that: - info2.openstack_servers.0.status == 'SHUTOFF' - server is changed - name: Stop server again openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: stop wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info3 - name: Ensure status for server is SHUTOFF assert: that: - info3.openstack_servers.0.status == 'SHUTOFF' - server is not changed - name: Start server openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: start wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info4 - name: Ensure status for server is ACTIVE assert: that: - info4.openstack_servers.0.status == 'ACTIVE' - server is changed - name: Start server again openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: start wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info5 - name: Ensure status for server is ACTIVE assert: that: - info5.openstack_servers.0.status == 'ACTIVE' - server is not changed - name: Pause server openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: pause wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info6 - name: Ensure status for server is PAUSED assert: that: - info6.openstack_servers.0.status == 'PAUSED' - server is changed - name: Pause server again openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: pause wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info7 - name: Ensure status for server is PAUSED assert: that: - info7.openstack_servers.0.status == 'PAUSED' - server is not changed - name: Unpause server openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: unpause wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info8 - name: Ensure status for server is ACTIVE assert: that: - info8.openstack_servers.0.status == 'ACTIVE' - server is changed - name: Unpause server again openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: unpause wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info9 - name: Ensure status for server is ACTIVE assert: that: - info9.openstack_servers.0.status == 'ACTIVE' - server is not changed - name: Lock server openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: lock wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info10 - name: Ensure status for server is ACTIVE assert: that: - info10.openstack_servers.0.status == 'ACTIVE' # not in all versions 'locked' is supported - >- (info10.openstack_server[0]['locked'] is defined and info10.openstack_server[0]['locked']|bool) or (info10.openstack_server[0]['locked'] is not defined) - server is changed - name: Lock server again openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: lock wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info11 - name: Ensure status for server is ACTIVE assert: that: - info11.openstack_servers.0.status == 'ACTIVE' # not in all versions 'locked' is supported - >- (info11.openstack_server[0]['locked'] is defined and info11.openstack_server[0]['locked']|bool) or (info11.openstack_server[0]['locked'] is not defined) - server is changed # no support for lock idempotency - name: Unock server openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: unlock wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info12 - name: Ensure status for server is ACTIVE assert: that: - info12.openstack_servers.0.status == 'ACTIVE' # not in all versions 'locked' is supported - >- (info12.openstack_server[0]['locked'] is defined and not info12.openstack_server[0]['locked']|bool) or (info12.openstack_server[0]['locked'] is not defined) - server is changed - name: Unlock server again openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: unlock wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info13 - name: Ensure status for server is ACTIVE assert: that: - info13.openstack_servers.0.status == 'ACTIVE' - server is changed # no support for unlock idempotency # not in all versions 'locked' is supported - >- (info13.openstack_server[0]['locked'] is defined and not info13.openstack_server[0]['locked']|bool) or (info13.openstack_server[0]['locked'] is not defined) - name: Suspend server openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: suspend wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info14 - name: Ensure status for server is SUSPENDED assert: that: - info14.openstack_servers.0.status == 'SUSPENDED' - server is changed - name: Suspend server again openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: suspend wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info15 - name: Ensure status for server is SUSPENDED assert: that: - info15.openstack_servers.0.status == 'SUSPENDED' - server is not changed - name: Resume server openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: resume wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info16 - name: Ensure status for server is ACTIVE assert: that: - info16.openstack_servers.0.status == 'ACTIVE' - server is changed - name: Resume server again openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: resume wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info17 - name: Ensure status for server is ACTIVE assert: that: - info17.openstack_servers.0.status == 'ACTIVE' - server is not changed - name: Rebuild server - error openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: rebuild wait: true register: server ignore_errors: true - name: Ensure server rebuild failed assert: that: - server is failed - "'missing: image' in server.msg " - name: Rebuild server openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" image: "{{ image_name }}" action: rebuild wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info18 - name: Ensure status for server is ACTIVE assert: that: - info18.openstack_servers.0.status in ('ACTIVE', 'REBUILD') - server is changed - name: Rebuild server with admin password openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" image: "{{ image_name }}" action: rebuild wait: true admin_password: random register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info19 - name: Ensure status for server is ACTIVE assert: that: - info19.openstack_servers.0.status in ('ACTIVE', 'REBUILD') - server is changed - name: Shelve server openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: shelve wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info20 - name: Ensure status for server is SHELVED or SHELVED_OFFLOADED assert: that: - info20.openstack_servers.0.status in ['SHELVED', 'SHELVED_OFFLOADED'] - server is changed - name: Shelve offload server openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: shelve_offload wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info21 - name: Ensure status for server is SHELVED_OFFLOADED # no change if server has been offloaded automatically after first shelve command assert: that: - info21.openstack_servers.0.status == 'SHELVED_OFFLOADED' - name: Shelve offload server again openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: shelve_offload wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info22 - name: Ensure status for server is SHELVED_OFFLOADED assert: that: - info22.openstack_servers.0.status == 'SHELVED_OFFLOADED' - server is not changed - name: Unshelve server openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: unshelve wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info23 - name: Ensure status for server is ACTIVE assert: that: - info23.openstack_servers.0.status == 'ACTIVE' - server is changed - name: Unshelve server again openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_name }}" action: unshelve wait: true register: server - name: Get info about server openstack.cloud.server_info: cloud: "{{ cloud }}" server: "{{ server_name }}" register: info24 - name: Ensure status for server is ACTIVE assert: that: - info24.openstack_servers.0.status == 'ACTIVE' - server is not changed - name: Create network for alternate server openstack.cloud.network: cloud: "{{ cloud_alt }}" name: "{{ server_alt_network }}" state: present - name: Create subnet for alternate server openstack.cloud.subnet: cloud: "{{ cloud_alt }}" network_name: "{{ server_alt_network }}" name: "{{ server_alt_subnet }}" state: present cidr: 192.168.0.0/24 - name: Create server in alternate project openstack.cloud.server: cloud: "{{ cloud_alt }}" state: present name: "{{ server_alt_name }}" image: "{{ image_name }}" flavor: "{{ flavor_name }}" network: "{{ server_alt_network }}" auto_floating_ip: false wait: true register: server_alt - name: Get info about server in alternate project openstack.cloud.server_info: cloud: "{{ cloud_alt }}" server: "{{ server_alt_name }}" register: info25 - name: Ensure status for server in alternate project is ACTIVE assert: that: - info25.openstack_servers.0.status == 'ACTIVE' - name: Try to stop server in alternate project openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_alt_name }}" action: stop wait: true ignore_errors: true register: server_alt - name: Ensure server was not stopped assert: that: - server_alt is failed - server_alt.msg == "Could not find server {{ server_alt_name }}" - name: Stop server in alternate project with all_projects=true openstack.cloud.server_action: cloud: "{{ cloud }}" server: "{{ server_alt_name }}" action: stop wait: true all_projects: True register: server_alt - name: Get info about server in alternate project openstack.cloud.server_info: cloud: "{{ cloud_alt }}" server: "{{ server_alt_name }}" register: info26 - name: Ensure status for server is SHUTOFF assert: that: - info26.openstack_servers.0.status == 'SHUTOFF' - server_alt is changed - name: Delete server in alternate project openstack.cloud.server: cloud: "{{ cloud_alt }}" state: absent name: "{{ server_alt_name }}" wait: true - name: Delete subnet for alternate server openstack.cloud.subnet: cloud: "{{ cloud_alt }}" name: "{{ server_alt_subnet }}" state: absent - name: Delete network for alternate server openstack.cloud.network: cloud: "{{ cloud_alt }}" name: "{{ server_alt_network }}" state: absent