# 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 hcloud_server: name: "{{hcloud_server_name}}" server_type: cx11 image: ubuntu-18.04 state: started location: "fsn1" register: vol_server - name: verify setup server assert: that: - vol_server is changed - name: test missing size parameter on create Volume hcloud_volume: name: "{{hcloud_volume_name}}" server: "{{hcloud_server_name}}" register: result ignore_errors: yes - 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 hcloud_volume: name: "{{hcloud_volume_name}}" size: 10 location: "fsn1" register: result check_mode: yes - name: verify create Volume with check mode result assert: that: - result is changed - name: test create Volume hcloud_volume: name: "{{hcloud_volume_name}}" size: 10 location: "fsn1" register: volume - name: verify test create Volume assert: that: - volume is changed - volume.hcloud_volume.name == "{{hcloud_volume_name}}" - volume.hcloud_volume.location == "fsn1" - volume.hcloud_volume.size == 10 - volume.hcloud_volume.server != "{{hcloud_server_name}}" - volume.hcloud_volume.linux_device is defined - name: test create Volume idempotence hcloud_volume: name: "{{hcloud_volume_name}}" size: 10 location: "fsn1" register: volume - name: verify test create Volume assert: that: - volume is not changed - name: test attach Volume with checkmode hcloud_volume: name: "{{hcloud_volume_name}}" server: "{{hcloud_server_name}}" check_mode: yes 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 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 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 detach Volume with checkmode hcloud_volume: name: "{{hcloud_volume_name}}" check_mode: yes register: volume - name: verify detach Volume with checkmode assert: that: - volume is changed - volume.hcloud_volume.server == "{{hcloud_server_name}}" - name: test detach Volume hcloud_volume: name: "{{hcloud_volume_name}}" register: volume - name: verify detach volume assert: that: - volume is changed - volume.hcloud_volume.location == "fsn1" - volume.hcloud_volume.server != "{{hcloud_server_name}}" - name: test update Volume label 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 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 increase Volume size 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 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 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 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 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 hcloud_volume: name: "{{hcloud_volume_name}}" state: absent ignore_errors: yes register: result - name: verify delete Volume fails if it is protected assert: that: - result is failed - 'result.msg == "volume deletion is protected"' - name: test update Volume delete protection 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 hcloud_volume: name: "{{hcloud_volume_name}}" state: absent register: result - name: verify delete Volume assert: that: - result is success - name: cleanup hcloud_server: name: "{{ hcloud_server_name }}" state: absent register: result - name: verify cleanup assert: that: - result is success