From e59e787d9927041d1c50261476e6df6c58d71869 Mon Sep 17 00:00:00 2001 From: "Jonas L." Date: Tue, 25 Mar 2025 17:34:59 +0100 Subject: [PATCH] feat: allow renaming a server (#619) ##### SUMMARY Fixes #600 Allow renaming a server by passing its id and its new name. ##### ISSUE TYPE - Feature Pull Request ##### COMPONENT NAME server --- changelogs/fragments/renaming-a-server.yml | 2 ++ plugins/modules/server.py | 12 +++++++++- .../targets/server/tasks/test_basic.yml | 22 +++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/renaming-a-server.yml 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 }}"