diff --git a/changelogs/fragments/renaming-a-server.yml b/changelogs/fragments/renaming-a-server.yml new file mode 100644 index 0000000..e7319a8 --- /dev/null +++ b/changelogs/fragments/renaming-a-server.yml @@ -0,0 +1,2 @@ +minor_changes: + - server - Allow renaming a server. diff --git a/plugins/modules/server.py b/plugins/modules/server.py index e01079d..ec847dc 100644 --- a/plugins/modules/server.py +++ b/plugins/modules/server.py @@ -564,10 +564,20 @@ class AnsibleHCloudServer(AnsibleHCloud): try: previous_server_status = self.hcloud_server.status + update_params = {} + + name = self.module.params.get("name") + if name is not None and self.hcloud_server.name != name: + self.module.fail_on_missing_params(required_params=["id"]) + update_params["name"] = name + labels = self.module.params.get("labels") if labels is not None and labels != self.hcloud_server.labels: + update_params["labels"] = labels + + if update_params: if not self.module.check_mode: - self.hcloud_server.update(labels=labels) + self.hcloud_server.update(**update_params) self._mark_as_changed() rescue_mode = self.module.params.get("rescue_mode") diff --git a/tests/integration/targets/server/tasks/test_basic.yml b/tests/integration/targets/server/tasks/test_basic.yml index 5fe9a41..025cdf1 100644 --- a/tests/integration/targets/server/tasks/test_basic.yml +++ b/tests/integration/targets/server/tasks/test_basic.yml @@ -40,6 +40,28 @@ that: - result is not changed +- name: test rename server + hetzner.hcloud.server: + id: "{{ main_server.hcloud_server.id }}" + name: "{{ hcloud_server_name }}-new" + register: result +- name: verify rename server + assert: + that: + - result is changed + - result.hcloud_server.name == hcloud_server_name + '-new' + +- name: reset server name + hetzner.hcloud.server: + id: "{{ main_server.hcloud_server.id }}" + name: "{{ hcloud_server_name }}" + register: result +- name: verify reset server name + assert: + that: + - result is changed + - result.hcloud_server.name == hcloud_server_name + - name: test stop server with check mode hetzner.hcloud.server: name: "{{ hcloud_server_name }}"