mirror of
https://github.com/ansible-collections/hetzner.hcloud.git
synced 2026-02-04 08:01:49 +00:00
Placement groups (#102)
* Add placement_groups * Create server with placement_group * Add/remove server to/from placement_group * Remove deprecated tmage test * Add changelogs * Add placement groups to hcloud_server_info * Deprecate force_upgrade flag
This commit is contained in:
parent
8cd7b9f997
commit
7d3828837c
9 changed files with 520 additions and 31 deletions
2
tests/integration/targets/hcloud_placement_group/aliases
Normal file
2
tests/integration/targets/hcloud_placement_group/aliases
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
cloud/hcloud
|
||||
shippable/hcloud/group2
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
---
|
||||
hcloud_prefix: "tests"
|
||||
hcloud_placement_group_name: "{{hcloud_prefix}}-i"
|
||||
hcloud_server_name: "{{hcloud_prefix}}-i"
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
collections:
|
||||
- community.general.ipfilter
|
||||
- hetzner.cloud
|
||||
169
tests/integration/targets/hcloud_placement_group/tasks/main.yml
Normal file
169
tests/integration/targets/hcloud_placement_group/tasks/main.yml
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
# Copyright: (c) 2020, Hetzner Cloud GmbH <info@hetzner-cloud.de>
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
---
|
||||
- name: setup placement group to be absent
|
||||
hcloud_placement_group:
|
||||
name: "{{ hcloud_placement_group_name }}"
|
||||
state: absent
|
||||
|
||||
- name: setup server to be absent
|
||||
hcloud_server:
|
||||
name: "{{ hcloud_server_name }}"
|
||||
state: absent
|
||||
|
||||
- name: test missing required parameters on create placement group
|
||||
hcloud_placement_group:
|
||||
register: result
|
||||
ignore_errors: yes
|
||||
- name: verify fail test missing required parameters on create placement group
|
||||
assert:
|
||||
that:
|
||||
- result is failed
|
||||
- 'result.msg == "one of the following is required: id, name"'
|
||||
|
||||
- name: test create placement group with check mode
|
||||
hcloud_placement_group:
|
||||
name: "{{ hcloud_placement_group_name }}"
|
||||
type: spread
|
||||
register: result
|
||||
check_mode: yes
|
||||
- name: test create placement group with check mode
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: test create placement group
|
||||
hcloud_placement_group:
|
||||
name: "{{ hcloud_placement_group_name }}"
|
||||
type: spread
|
||||
labels:
|
||||
key: value
|
||||
my-label: label
|
||||
register: placement_group
|
||||
- name: verify create placement group
|
||||
assert:
|
||||
that:
|
||||
- placement_group is changed
|
||||
- placement_group.hcloud_placement_group.name == "{{ hcloud_placement_group_name }}"
|
||||
- placement_group.hcloud_placement_group.type == "spread"
|
||||
- placement_group.hcloud_placement_group.servers | list | count == 0
|
||||
|
||||
- name: test create placement group idempotence
|
||||
hcloud_placement_group:
|
||||
name: "{{ hcloud_placement_group_name }}"
|
||||
type: spread
|
||||
labels:
|
||||
key: value
|
||||
my-label: label
|
||||
register: result
|
||||
- name: verify create placement group idempotence
|
||||
assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: test create server with placement group
|
||||
hcloud_server:
|
||||
name: "{{ hcloud_server_name }}"
|
||||
server_type: cpx11
|
||||
placement_group: "{{ hcloud_placement_group_name }}"
|
||||
image: "ubuntu-20.04"
|
||||
ssh_keys:
|
||||
- ci@ansible.hetzner.cloud
|
||||
state: present
|
||||
register: server
|
||||
- name: verify create server with placement group
|
||||
assert:
|
||||
that:
|
||||
- server is changed
|
||||
- server.hcloud_server.placement_group == "{{ hcloud_placement_group_name }}"
|
||||
|
||||
- name: test remove server from placement group
|
||||
hcloud_server:
|
||||
name: "{{ hcloud_server_name }}"
|
||||
placement_group: null
|
||||
state: present
|
||||
register: result
|
||||
- name: verify remove server from placement group
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.hcloud_server.placement_group == None
|
||||
|
||||
- name: test add server to placement group
|
||||
hcloud_server:
|
||||
name: "{{ hcloud_server_name }}"
|
||||
placement_group: "{{ hcloud_server_name }}"
|
||||
force: True
|
||||
state: present
|
||||
register: result
|
||||
- name: verify add server to placement group
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.hcloud_server.placement_group == "{{ hcloud_placement_group_name }}"
|
||||
- result.hcloud_server.status == "running"
|
||||
|
||||
- name: test add server to placement group idempotence
|
||||
hcloud_server:
|
||||
name: "{{ hcloud_server_name }}"
|
||||
placement_group: "{{ hcloud_server_name }}"
|
||||
force: True
|
||||
state: present
|
||||
register: result
|
||||
- name: verify add server to placement group idempotence
|
||||
assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.hcloud_server.placement_group == "{{ hcloud_placement_group_name }}"
|
||||
- result.hcloud_server.status == "running"
|
||||
|
||||
- name: test update placement group with check mode
|
||||
hcloud_placement_group:
|
||||
id: "{{ placement_group.hcloud_placement_group.id }}"
|
||||
name: "changed-{{ hcloud_placement_group_name }}"
|
||||
register: result
|
||||
check_mode: yes
|
||||
- name: verify update placement group with check mode
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: test update placement group
|
||||
hcloud_placement_group:
|
||||
id: "{{ placement_group.hcloud_placement_group.id }}"
|
||||
name: "changed-{{ hcloud_placement_group_name }}"
|
||||
labels:
|
||||
key: value
|
||||
register: result
|
||||
- name: verify update placement group
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.hcloud_placement_group.name == "changed-{{ hcloud_placement_group_name }}"
|
||||
|
||||
- name: test update placement group idempotence
|
||||
hcloud_placement_group:
|
||||
id: "{{ placement_group.hcloud_placement_group.id }}"
|
||||
name: "changed-{{ hcloud_placement_group_name }}"
|
||||
labels:
|
||||
key: value
|
||||
register: result
|
||||
- name: verify update placement group idempotence
|
||||
assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: absent server
|
||||
hcloud_server:
|
||||
id: "{{ server.hcloud_server.id }}"
|
||||
state: absent
|
||||
|
||||
- name: absent placement group
|
||||
hcloud_placement_group:
|
||||
id: "{{ placement_group.hcloud_placement_group.id }}"
|
||||
state: absent
|
||||
register: result
|
||||
- name: verify absent placement group
|
||||
assert:
|
||||
that:
|
||||
- result is success
|
||||
|
|
@ -49,22 +49,6 @@
|
|||
- result is failed
|
||||
- 'result.msg == "Image my-not-existing-image-20.04 was not found"'
|
||||
|
||||
# Temporary test case to test deprecated images. This test will fail when the ubuntu-16.04 image was removed
|
||||
# feel free to remove this test then.
|
||||
- name: test create server with deprecated image
|
||||
hcloud_server:
|
||||
name: "{{ hcloud_server_name }}"
|
||||
server_type: cx11
|
||||
image: ubuntu-16.04
|
||||
state: present
|
||||
register: result
|
||||
ignore_errors: yes
|
||||
- name: verify fail test create server deprecated image
|
||||
assert:
|
||||
that:
|
||||
- result is failed
|
||||
- 'result.msg == "You try to use a deprecated image. The image ubuntu-16.04 will continue to be available until 2021-06-22. If you want to use this image use allow_deprecated_image=yes."'
|
||||
|
||||
- name: test create server with check mode
|
||||
hcloud_server:
|
||||
name: "{{ hcloud_server_name }}"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue