# 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 server hetzner.hcloud.server: name: "{{hcloud_server_name}}" server_type: "{{ hcloud_server_type_name }}" image: "{{ hcloud_image_name }}" state: created location: "{{ hcloud_location_name }}" register: vol_server - name: verify setup server assert: that: - vol_server is changed - name: test missing size parameter on create Volume hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" server: "{{hcloud_server_name}}" register: result ignore_errors: true - name: verify fail test missing size parameter on create Volume assert: that: - result is failed - 'result.msg == "missing required arguments: size"' - name: test create Volume with check mode hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" size: 10 location: "{{ hcloud_location_name }}" register: result check_mode: true - name: verify create Volume with check mode result assert: that: - result is changed - name: test create Volume hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" size: 10 location: "{{ hcloud_location_name }}" register: volume - name: verify test create Volume assert: that: - volume is changed - volume.hcloud_volume.name == hcloud_volume_name - volume.hcloud_volume.location == hcloud_location_name - volume.hcloud_volume.size == 10 - volume.hcloud_volume.server != hcloud_server_name - volume.hcloud_volume.linux_device is defined - name: test create Volume idempotence hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" size: 10 location: "{{ hcloud_location_name }}" register: volume - name: verify test create Volume assert: that: - volume is not changed - name: test attach Volume with checkmode hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" server: "{{hcloud_server_name}}" check_mode: true register: volume - name: verify test attach Volume with checkmode assert: that: - volume is changed - volume.hcloud_volume.server != hcloud_server_name - name: test attach Volume hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" server: "{{hcloud_server_name}}" register: volume - name: verify attach volume assert: that: - volume is changed - volume.hcloud_volume.server == hcloud_server_name - name: test attach Volume idempotence hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" server: "{{hcloud_server_name}}" register: volume - name: verify attach Volume idempotence assert: that: - volume is not changed - volume.hcloud_volume.server == hcloud_server_name - name: test update Volume label hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" labels: key: value register: volume - name: verify test update Volume label assert: that: - volume is changed - volume.hcloud_volume.labels.key == "value" - name: test update Volume label with the same label hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" labels: key: value register: volume - name: verify test update Volume lable with the same label assert: that: - volume is not changed - name: test update Volume name hetzner.hcloud.volume: id: "{{ volume.hcloud_volume.id }}" name: "{{ hcloud_volume_name }}-new" register: result - name: verify test update Volume name assert: that: - result is changed - result.hcloud_volume.name == hcloud_volume_name + '-new' - name: reset volume name hetzner.hcloud.volume: id: "{{ volume.hcloud_volume.id }}" name: "{{ hcloud_server_name }}" register: result - name: verify reset volume name assert: that: - result is changed - result.hcloud_volume.name == hcloud_volume_name - name: test increase Volume size hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" size: 11 register: volume - name: verify test increase Volume size assert: that: - volume is changed - volume.hcloud_volume.size == 11 - name: test decreace Volume size hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" size: 10 register: volume - name: verify test decreace Volume size assert: that: - volume is not changed - volume.hcloud_volume.size == 11 - name: test update Volume delete protection hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" delete_protection: true register: volume - name: verify test update Volume delete protection assert: that: - volume is changed - volume.hcloud_volume.delete_protection is sameas true - name: test update Volume delete protection idempotency hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" delete_protection: true register: volume - name: verify test update Volume delete protection idempotency assert: that: - volume is not changed - volume.hcloud_volume.delete_protection is sameas true - name: test Volume without delete protection set to be idempotent hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" register: volume - name: verify test Volume without delete protection set to be idempotent assert: that: - volume is not changed - volume.hcloud_volume.delete_protection is sameas true - name: test delete Volume fails if it is protected hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" state: absent ignore_errors: true register: result - name: verify delete Volume fails if it is protected assert: that: - result is failed - result.failure.code == "protected" - name: test update Volume delete protection hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" delete_protection: false register: volume - name: verify test update Volume delete protection assert: that: - volume is changed - volume.hcloud_volume.delete_protection is sameas false - name: test delete Volume hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" state: absent register: result - name: verify delete Volume assert: that: - result is success - name: test create Volume with delete protection hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" size: 10 location: "{{ hcloud_location_name }}" delete_protection: true register: volume - name: verify create Volume with delete protection assert: that: - volume is changed - volume.hcloud_volume.delete_protection is sameas true - name: test delete Volume fails if it is protected hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" state: absent ignore_errors: true register: result - name: verify delete Volume fails if it is protected assert: that: - result is failed - result.failure.code == "protected" - name: test update Volume delete protection hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" delete_protection: false register: volume - name: verify test update Volume delete protection assert: that: - volume is changed - volume.hcloud_volume.delete_protection is sameas false - name: test delete Volume hetzner.hcloud.volume: name: "{{hcloud_volume_name}}" state: absent register: result - name: verify delete Volume assert: that: - result is success - name: cleanup hetzner.hcloud.server: name: "{{ hcloud_server_name }}" state: absent register: result - name: verify cleanup assert: that: - result is success