diff options
| author | Marek Buch <marek.buch@tietoevry.com> | 2025-03-05 13:49:41 +0000 |
|---|---|---|
| committer | Marek Buch <marek.buch@tietoevry.com> | 2025-03-27 07:51:50 +0000 |
| commit | bff6ee9d7ec61864ba00b44029c1a1eca97c0378 (patch) | |
| tree | fdf621504ea6fe007e20e63770863ba3959b798a /ansible/module_utils | |
| parent | 005978608d500d9771a2db1413fbf414bf825797 (diff) | |
| download | kolla-ansible-bff6ee9d7ec61864ba00b44029c1a1eca97c0378.tar.gz kolla-ansible-bff6ee9d7ec61864ba00b44029c1a1eca97c0378.zip | |
Assign labels to kolla volumes
Kolla volumes do not have assigned any labels, that makes
identification and filtering for kolla specific volumes hard.
This change allows for easier volume management.
Closes-bug: #1630545
Change-Id: I6b536f73433cfc64881ac66e53aa0a5eed709ce6
Signed-off-by: Marek Buch <marek.buch@tietoevry.com>
Diffstat (limited to 'ansible/module_utils')
| -rw-r--r-- | ansible/module_utils/kolla_docker_worker.py | 19 | ||||
| -rw-r--r-- | ansible/module_utils/kolla_podman_worker.py | 28 |
2 files changed, 39 insertions, 8 deletions
diff --git a/ansible/module_utils/kolla_docker_worker.py b/ansible/module_utils/kolla_docker_worker.py index cd8fdbb57..f0799f064 100644 --- a/ansible/module_utils/kolla_docker_worker.py +++ b/ansible/module_utils/kolla_docker_worker.py @@ -333,6 +333,9 @@ class DockerWorker(ContainerWorker): def create_container(self): self.changed = True + # ensure volumes are pre-created before container creation + self.create_container_volumes() + options = self.build_container_options() self.dc.create_container(**options) if self.params.get('restart_policy') != 'oneshot': @@ -458,10 +461,22 @@ class DockerWorker(ContainerWorker): self.dc.stop(name, timeout=graceful_timeout) self.dc.start(name) - def create_volume(self): + def create_volume(self, name=None): + volume_name = name if name else self.params.get('name') if not self.check_volume(): self.changed = True - self.dc.create_volume(name=self.params.get('name'), driver='local') + self.dc.create_volume(name=volume_name, driver='local', + labels={'kolla_managed': 'true'}) + + def create_container_volumes(self): + volumes = self.params.get("volumes", []) + + for volume in volumes: + volume_name = volume.split(":")[0] + if "/" in volume_name: + continue + + self.create_volume(name=volume_name) def remove_volume(self): if self.check_volume(): diff --git a/ansible/module_utils/kolla_podman_worker.py b/ansible/module_utils/kolla_podman_worker.py index f0073cef6..2f323eff2 100644 --- a/ansible/module_utils/kolla_podman_worker.py +++ b/ansible/module_utils/kolla_podman_worker.py @@ -274,9 +274,10 @@ class PodmanWorker(ContainerWorker): ) ) - def check_volume(self): + def check_volume(self, name=None): + volume_name = name if name else self.params.get('name') try: - vol = self.pc.volumes.get(self.params.get('name')) + vol = self.pc.volumes.get(volume_name) return vol.attrs except APIError as e: if e.status_code == 404: @@ -503,6 +504,9 @@ class PodmanWorker(ContainerWorker): return ulimits_opt def create_container(self): + # ensure volumes are pre-created before container creation + self.create_container_volumes() + args = self.prepare_container_args() container = self.pc.containers.create(**args) if container.attrs == {}: @@ -624,17 +628,29 @@ class PodmanWorker(ContainerWorker): msg="Container timed out", **container.attrs) - def create_volume(self): - if not self.check_volume(): + def create_volume(self, name=None): + volume_name = name if name else self.params.get('name') + if not self.check_volume(name=volume_name): self.changed = True args = dict( - name=self.params.get('name'), - driver='local' + name=volume_name, + driver='local', + labels={'kolla_managed': 'true'} ) vol = self.pc.volumes.create(**args) self.result = vol.attrs + def create_container_volumes(self): + volumes = self.params.get("volumes", []) or [] + + for volume in volumes: + volume_name = volume.split(":")[0] + if "/" in volume_name: + continue + + self.create_volume(name=volume_name) + def remove_volume(self): if self.check_volume(): self.changed = True |
