aboutsummaryrefslogtreecommitdiff
path: root/ansible/module_utils
diff options
context:
space:
mode:
authorMarek Buch <marek.buch@tietoevry.com>2025-03-05 13:49:41 +0000
committerMarek Buch <marek.buch@tietoevry.com>2025-03-27 07:51:50 +0000
commitbff6ee9d7ec61864ba00b44029c1a1eca97c0378 (patch)
treefdf621504ea6fe007e20e63770863ba3959b798a /ansible/module_utils
parent005978608d500d9771a2db1413fbf414bf825797 (diff)
downloadkolla-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.py19
-rw-r--r--ansible/module_utils/kolla_podman_worker.py28
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