Skip to content

Commit

Permalink
Allow updating hcloud_server_network
Browse files Browse the repository at this point in the history
Signed-off-by: Lukas Kämmerling <lukas.kaemmerling@hetzner-cloud.de>
  • Loading branch information
LKaemmerling committed Nov 27, 2020
1 parent 0617bc6 commit 3c2b775
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 0 deletions.
19 changes: 19 additions & 0 deletions plugins/modules/hcloud_server_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,11 +173,30 @@ def _create_server_network(self):
self._get_server_and_network()
self._get_server_network()

def _update_server_network(self):
params = {
"network": self.hcloud_network
}
if self.module.params.get("alias_ips") is not None and self.hcloud_server_network.alias_ips.sort() != self.module.params.get("alias_ips"):
params["alias_ips"] = self.module.params.get("alias_ips")

if not self.module.check_mode:
try:
self.hcloud_server.change_alias_ips(**params).wait_until_finished()
except APIException as e:
self.module.fail_json(msg=e.message)

self._mark_as_changed()
self._get_server_and_network()
self._get_server_network()

def present_server_network(self):
self._get_server_and_network()
self._get_server_network()
if self.hcloud_server_network is None:
self._create_server_network()
else:
self._update_server_network()

def delete_server_network(self):
self._get_server_and_network()
Expand Down
35 changes: 35 additions & 0 deletions tests/integration/targets/hcloud_server_network/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,41 @@
- 'serverNetwork.hcloud_server_network.alias_ips[0] == "10.0.2.3"'
- 'serverNetwork.hcloud_server_network.alias_ips[1] == "10.0.1.2"'

- name: test update server network with alias ips
hcloud_server_network:
network: "{{ hcloud_network_name }}"
server: "{{hcloud_server_name}}"
ip: "10.0.0.2"
alias_ips:
- "10.0.2.3"
- "10.0.3.1"
state: present
register: serverNetwork
- name: verify create server network with alias ips
assert:
that:
- serverNetwork is changed
- serverNetwork.hcloud_server_network.network == hcloud_network_name
- serverNetwork.hcloud_server_network.server == hcloud_server_name
- serverNetwork.hcloud_server_network.ip == "10.0.0.2"
- 'serverNetwork.hcloud_server_network.alias_ips[0] == "10.0.2.3"'
- 'serverNetwork.hcloud_server_network.alias_ips[1] == "10.0.3.1"'

- name: test update server network with alias ips idempotency
hcloud_server_network:
network: "{{ hcloud_network_name }}"
server: "{{hcloud_server_name}}"
ip: "10.0.0.2"
alias_ips:
- "10.0.2.3"
- "10.0.3.1"
state: present
register: serverNetwork
- name: verify create server network with alias ips idempotency
assert:
that:
- serverNetwork is not changed

- name: cleanup create server network with alias ips
hcloud_server_network:
network: "{{ hcloud_network_name }}"
Expand Down

0 comments on commit 3c2b775

Please sign in to comment.