--- - name: Create network - generic openstack.cloud.network: cloud: "{{ cloud }}" name: "{{ network_name }}" state: present shared: "{{ network_shared }}" external: false register: infonet - name: Check output of creating network assert: that: - infonet.network is defined - item in infonet.network loop: "{{ expected_fields }}" - name: Gather networks info openstack.cloud.networks_info: cloud: "{{ cloud }}" name: "{{ infonet.network.id }}" register: result - name: Check output of network info # TODO: Remove ignore_errors once SDK's search_networks() (re)implemented searching by id ignore_errors: true assert: that: - result.networks|length == 1 - infonet.network.id == result.networks[0].id - name: Gather networks info - generic openstack.cloud.networks_info: cloud: "{{ cloud }}" name: "{{ network_name }}" filters: shared: "{{ network_shared|string|capitalize }}" register: result - name: Check output of network info assert: that: - item in result.networks[0] loop: "{{ expected_fields }}" - name: Gather networks info openstack.cloud.networks_info: cloud: "{{ cloud }}" name: "{{ network_name }}" filters: shared: "False" register: result - name: Verify networks info - generic assert: that: - result.networks.0.name == network_name - "'is_shared' in result.networks.0" - result.networks.0['is_shared']|lower == network_shared|lower - "'is_router_external' in result.networks.0" - not (result.networks[0]['is_router_external'] | bool) - name: Create network - with new SDK params openstack.cloud.network: cloud: "{{ cloud }}" name: "{{ network_name_newparams }}" state: present shared: "{{ network_shared }}" external: false mtu: "{{ mtu }}" port_security_enabled: "{{ port_security_enabled }}" register: result_create_nw_with_new_params ignore_errors: true - name: Gather networks info - with new SDK params openstack.cloud.networks_info: cloud: "{{ cloud }}" name: "{{ network_name_newparams }}" register: result_newparams - name: Verify networks info - with new SDK params assert: that: - result_newparams.networks.0.name == network_name_newparams - result_newparams.networks.0.mtu == mtu - "'is_port_security_enabled' in result_newparams.networks.0" - result_newparams.networks.0['is_port_security_enabled'] == port_security_enabled - name: Delete network - generic and with new SDK params openstack.cloud.network: cloud: "{{ cloud }}" name: "{{ item }}" state: absent with_items: - "{{ network_name }}" - "{{ network_name_newparams }}" - name: Gather networks info - deleted openstack.cloud.networks_info: cloud: "{{ cloud }}" name: "{{ network_name }}" register: result_nonet - name: Verify networks info - deleted assert: that: - result_nonet.networks == [] - name: Create network - updates openstack.cloud.network: cloud: "{{ cloud }}" name: "{{ network_name_updates }}" state: present shared: "{{ network_shared }}" external: false mtu: "{{ mtu }}" port_security_enabled: "{{ port_security_enabled }}" register: result_create_nw_for_updates - name: Update network - update failure openstack.cloud.network: cloud: "{{ cloud }}" name: "{{ network_name_updates }}" state: present shared: "{{ network_shared }}" external: false mtu: "{{ mtu }}" port_security_enabled: "{{ port_security_enabled }}" # You cannot update this property. provider_physical_network: cannot_be_updated ignore_errors: true register: result_nw_update_failure - name: Verify networks info - update fail assert: that: - result_nw_update_failure is failed - name: Update network - update success openstack.cloud.network: cloud: "{{ cloud }}" name: "{{ network_name_updates }}" state: present shared: "{{ network_shared }}" external: false # NOTE: This property should be updated mtu: "{{ mtu - 50 }}" # NOTE: This property should be updated port_security_enabled: "{{ not port_security_enabled }}" register: result_nw_update_success - name: Gather networks info - updates openstack.cloud.networks_info: cloud: "{{ cloud }}" name: "{{ network_name_updates }}" register: result_network_updates_info - name: Verify networks info - update success assert: that: - result_nw_update_success is changed - result_network_updates_info.networks.0.name == network_name_updates - result_network_updates_info.networks.0.mtu == mtu - 50 - result_network_updates_info.networks.0['is_port_security_enabled'] == (not port_security_enabled) - name: Delete network - updates openstack.cloud.network: cloud: "{{ cloud }}" name: "{{ network_name_updates }}" state: absent