1
0
Fork 0
mirror of https://github.com/ansible-collections/hetzner.hcloud.git synced 2026-02-04 08:01:49 +00:00

rename server_volume to volume attachment

This commit is contained in:
jo 2025-04-28 10:47:37 +02:00
parent 8b9f348f6f
commit f2b9ccdacb
No known key found for this signature in database
GPG key ID: B2FEC9B22722B984
7 changed files with 41 additions and 38 deletions

View file

@ -8,7 +8,7 @@ from __future__ import annotations
DOCUMENTATION = """
---
module: server_volume
module: volume_attachment
short_description: Manage the relationship between Hetzner Cloud Volumes and Servers
@ -48,18 +48,18 @@ extends_documentation_fragment:
EXAMPLES = """
- name: Attach my-volume to my-server
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: my-volume
server: my-server
- name: Detach my-volume from my-server
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: my-volume
server: my-server
state: absent
- name: Attach my-volume using id to my-server with automount enabled
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: 123456
server: my-server
automount: true
@ -67,7 +67,7 @@ EXAMPLES = """
"""
RETURN = """
hcloud_server_volume:
hcloud_volume_attachment:
description: The relationship between a Server and a Volume
returned: always
type: complex
@ -92,21 +92,24 @@ from ..module_utils.vendor.hcloud.servers import BoundServer
from ..module_utils.vendor.hcloud.volumes import BoundVolume
class AnsibleHCloudServerVolume(AnsibleHCloud):
represent = "hcloud_server_volume"
class AnsibleHcloudVolumeAttachment(AnsibleHCloud):
represent = "hcloud_volume_attachment"
hcloud_volume: BoundVolume | None = None
hcloud_server: BoundServer | None = None
hcloud_server_volume: BoundVolume | None = None
def _prepare_result(self):
return {
"volume": self.hcloud_server_volume.name,
"volume": self.hcloud_volume.name,
"server": self.hcloud_server.name,
}
def _get_server_and_volume(self):
try:
self.hcloud_server_volume = self._client_get_by_name_or_id("volumes", self.module.params.get("volume"))
self.hcloud_volume = self._client_get_by_name_or_id(
"volumes",
self.module.params.get("volume"),
)
self.hcloud_server = self._client_get_by_name_or_id(
"servers",
@ -120,10 +123,10 @@ class AnsibleHCloudServerVolume(AnsibleHCloud):
self._get_server_and_volume()
server_name = self.module.params.get("server")
server = self.client.servers.get_by_name(server_name)
if self.hcloud_server_volume.server is None or self.hcloud_server.name != server.name:
if self.hcloud_volume.server is None or self.hcloud_server.name != server.name:
if not self.module.check_mode:
automount = self.module.params.get("automount", False)
action = self.hcloud_server_volume.attach(server=server, automount=automount)
action = self.hcloud_volume.attach(server=server, automount=automount)
action.wait_until_finished()
self._mark_as_changed()
except HCloudException as exception:
@ -132,9 +135,9 @@ class AnsibleHCloudServerVolume(AnsibleHCloud):
def detach_volume(self):
try:
self._get_server_and_volume()
if self.hcloud_server_volume.server is not None:
if self.hcloud_volume.server is not None:
if not self.module.check_mode:
action = self.hcloud_server_volume.detach()
action = self.hcloud_volume.detach()
action.wait_until_finished()
self._mark_as_changed()
except HCloudException as exception:
@ -158,9 +161,9 @@ class AnsibleHCloudServerVolume(AnsibleHCloud):
def main():
module = AnsibleHCloudServerVolume.define_module()
module = AnsibleHcloudVolumeAttachment.define_module()
hcloud = AnsibleHCloudServerVolume(module)
hcloud = AnsibleHcloudVolumeAttachment(module)
state = module.params["state"]
if state == "present":
hcloud.attach_volume()

View file

@ -26,7 +26,7 @@
- vol_volume is changed
- name: Test missing volume name # noqa: args[module]
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
server: "{{ hcloud_server_name }}"
register: result
ignore_errors: true
@ -37,7 +37,7 @@
- 'result.msg == "missing required arguments: volume"'
- name: Test missing server name # noqa: args[module]
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ hcloud_volume_name }}"
register: result
ignore_errors: true
@ -48,7 +48,7 @@
- 'result.msg == "missing required arguments: server"'
- name: Test attach Volume with check mode (Volume)
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ hcloud_volume_name }}"
server: "{{ hcloud_server_name }}"
register: result
@ -59,7 +59,7 @@
- result is changed
- name: Test attach Volume (Volume)
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ hcloud_volume_name }}"
server: "{{ hcloud_server_name }}"
register: volume
@ -67,11 +67,11 @@
ansible.builtin.assert:
that:
- volume is changed
- volume.hcloud_server_volume.volume == hcloud_volume_name
- volume.hcloud_server_volume.server == hcloud_server_name
- volume.hcloud_volume_attachment.volume == hcloud_volume_name
- volume.hcloud_volume_attachment.server == hcloud_server_name
- name: Test attach Volume idempotence (Volume)
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ hcloud_volume_name }}"
server: "{{ hcloud_server_name }}"
register: volume
@ -81,7 +81,7 @@
- volume is not changed
- name: Test detach Volume with checkmode (Volume)
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ hcloud_volume_name }}"
server: "{{ hcloud_server_name }}"
state: "absent"
@ -91,10 +91,10 @@
ansible.builtin.assert:
that:
- volume is changed
- volume.hcloud_server_volume.server == hcloud_server_name
- volume.hcloud_volume_attachment.server == hcloud_server_name
- name: Test detach Volume (Volume)
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ hcloud_volume_name }}"
server: "{{ hcloud_server_name }}"
state: "absent"
@ -103,10 +103,10 @@
ansible.builtin.assert:
that:
- volume is changed
- volume.hcloud_server_volume.server == hcloud_server_name
- volume.hcloud_volume_attachment.server == hcloud_server_name
- name: Test detach Volume idempotency (Volume)
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ hcloud_volume_name }}"
server: "{{ hcloud_server_name }}"
state: "absent"
@ -117,7 +117,7 @@
- volume is not changed
- name: Test attach Volume with check mode (ID)
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ vol_volume.hcloud_volume.id }}"
server: "{{ hcloud_server_name }}"
register: result
@ -128,7 +128,7 @@
- result is changed
- name: Test attach Volume (ID)
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ vol_volume.hcloud_volume.id }}"
server: "{{ hcloud_server_name }}"
register: volume
@ -136,11 +136,11 @@
ansible.builtin.assert:
that:
- volume is changed
- volume.hcloud_server_volume.volume == hcloud_volume_name
- volume.hcloud_server_volume.server == hcloud_server_name
- volume.hcloud_volume_attachment.volume == hcloud_volume_name
- volume.hcloud_volume_attachment.server == hcloud_server_name
- name: Test attach Volume idempotence (ID)
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ vol_volume.hcloud_volume.id }}"
server: "{{ hcloud_server_name }}"
register: volume
@ -150,7 +150,7 @@
- volume is not changed
- name: Test detach Volume with checkmode (ID)
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ vol_volume.hcloud_volume.id }}"
server: "{{ hcloud_server_name }}"
state: "absent"
@ -160,10 +160,10 @@
ansible.builtin.assert:
that:
- volume is changed
- volume.hcloud_server_volume.server == hcloud_server_name
- volume.hcloud_volume_attachment.server == hcloud_server_name
- name: Test detach Volume (ID)
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ vol_volume.hcloud_volume.id }}"
server: "{{ hcloud_server_name }}"
state: "absent"
@ -172,10 +172,10 @@
ansible.builtin.assert:
that:
- volume is changed
- volume.hcloud_server_volume.server == hcloud_server_name
- volume.hcloud_volume_attachment.server == hcloud_server_name
- name: Test detach Volume idempotency (ID)
hetzner.hcloud.server_volume:
hetzner.hcloud.volume_attachment:
volume: "{{ vol_volume.hcloud_volume.id }}"
server: "{{ hcloud_server_name }}"
state: "absent"