# Copyright: (c) 2019, Hetzner Cloud GmbH # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) --- - name: setup ensure network is absent hetzner.hcloud.network: name: "{{ item }}" state: absent with_items: - "{{ hcloud_network_name }}" - "{{ hcloud_network_name_with_vswitch }}" - name: test missing ip_range parameter on create Network hetzner.hcloud.network: name: "{{hcloud_network_name}}" register: result ignore_errors: true - name: verify fail missing ip_range parameter on create Network result assert: that: - result is failed - 'result.msg == "missing required arguments: ip_range"' - name: test create Network with check mode hetzner.hcloud.network: name: "{{hcloud_network_name}}" ip_range: "10.0.0.0/16" register: result check_mode: true - name: verify create Network with check mode result assert: that: - result is changed - name: test create Network hetzner.hcloud.network: name: "{{hcloud_network_name}}" ip_range: "10.0.0.0/16" register: network - name: verify test create Network result assert: that: - network is changed - network.hcloud_network.name == "{{hcloud_network_name}}" - network.hcloud_network.ip_range == "10.0.0.0/16" - name: test create Network idempotence hetzner.hcloud.network: name: "{{hcloud_network_name}}" ip_range: "10.0.0.0/16" register: network - name: verify test create network assert: that: - network is not changed - name: test create Network with expose_routes_to_vswitch hetzner.hcloud.network: name: "{{hcloud_network_name_with_vswitch}}" ip_range: "10.0.0.0/16" expose_routes_to_vswitch: true register: network - name: verify test create Network with vSwitch result assert: that: - network is changed - network.hcloud_network.name == "{{hcloud_network_name_with_vswitch}}" - network.hcloud_network.ip_range == "10.0.0.0/16" - network.hcloud_network.expose_routes_to_vswitch is true - name: test create Network with expose_routes_to_vswitch idempotence hetzner.hcloud.network: name: "{{hcloud_network_name_with_vswitch}}" ip_range: "10.0.0.0/16" expose_routes_to_vswitch: true register: network - name: verify test create network idempotency assert: that: - network is not changed - name: test update Network label hetzner.hcloud.network: name: "{{hcloud_network_name}}" labels: key: value register: network - name: verify test update Network label assert: that: - network is changed - network.hcloud_network.labels.key == "value" - name: test update Network label idempotency hetzner.hcloud.network: name: "{{hcloud_network_name}}" labels: key: value register: network - name: verify test update Network label idempotency assert: that: - network is not changed - name: test update Network ip range hetzner.hcloud.network: name: "{{hcloud_network_name}}" ip_range: "10.0.0.0/8" register: network - name: verify test update Network ip range assert: that: - network is changed - network.hcloud_network.ip_range == "10.0.0.0/8" - name: test update Network ip range idempotency hetzner.hcloud.network: name: "{{hcloud_network_name}}" ip_range: "10.0.0.0/8" register: network - name: verify test update Network ip range idempotency assert: that: - network is not changed - name: test update Network expose_routes_to_vswitch hetzner.hcloud.network: name: "{{hcloud_network_name_with_vswitch}}" expose_routes_to_vswitch: false register: network - name: verify test update Network expose_routes_to_vswitch assert: that: - network is changed - network.hcloud_network.expose_routes_to_vswitch is false - name: test update Network expose_routes_to_vswitch idempotency hetzner.hcloud.network: name: "{{hcloud_network_name_with_vswitch}}" expose_routes_to_vswitch: false register: network - name: verify test update Network expose_routes_to_vswitch idempotency assert: that: - network is not changed - name: test update Network delete protection hetzner.hcloud.network: name: "{{hcloud_network_name}}" ip_range: "10.0.0.0/8" delete_protection: true register: network - name: verify test update Network delete protection assert: that: - network is changed - network.hcloud_network.delete_protection is sameas true - name: test update Network delete protection idempotency hetzner.hcloud.network: name: "{{hcloud_network_name}}" ip_range: "10.0.0.0/8" delete_protection: true register: network - name: verify test update Network delete protection idempotency assert: that: - network is not changed - network.hcloud_network.delete_protection is sameas true - name: test Network without delete protection set to be idempotent hetzner.hcloud.network: name: "{{hcloud_network_name}}" ip_range: "10.0.0.0/8" register: network - name: verify test Network without delete protection set to be idempotent assert: that: - network is not changed - network.hcloud_network.delete_protection is sameas true - name: test delete Network fails if it is protected hetzner.hcloud.network: name: "{{hcloud_network_name}}" state: absent ignore_errors: true register: result - name: verify delete Network assert: that: - result is failed - 'result.msg == "network deletion is protected"' - name: test update Network delete protection hetzner.hcloud.network: name: "{{hcloud_network_name}}" ip_range: "10.0.0.0/8" delete_protection: false register: network - name: verify test update Network delete protection assert: that: - network is changed - network.hcloud_network.delete_protection is sameas false - name: test delete Network hetzner.hcloud.network: name: "{{hcloud_network_name}}" state: absent register: result - name: verify delete Network assert: that: - result is success - name: test create Network with delete protection hetzner.hcloud.network: name: "{{hcloud_network_name}}" ip_range: "10.0.0.0/8" delete_protection: true register: network - name: verify create Network with delete protection assert: that: - network is changed - network.hcloud_network.delete_protection is sameas true - name: test delete Network fails if it is protected hetzner.hcloud.network: name: "{{hcloud_network_name}}" state: absent ignore_errors: true register: result - name: verify delete Network assert: that: - result is failed - 'result.msg == "network deletion is protected"' - name: test update Network delete protection hetzner.hcloud.network: name: "{{hcloud_network_name}}" delete_protection: false register: network - name: verify test update Network delete protection assert: that: - network is changed - network.hcloud_network.delete_protection is sameas false - name: test delete Network hetzner.hcloud.network: name: "{{hcloud_network_name}}" state: absent register: result - name: verify delete Network assert: that: - result is success - name: test delete Network with expose_routes_to_vswitch hetzner.hcloud.network: name: "{{hcloud_network_name_with_vswitch}}" state: absent register: result - name: verify delete Network with expose_routes_to_vswitch assert: that: - result is success