aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIvan Halomi <ivan.halomi@tietoevry.com>2024-03-11 15:29:17 +0100
committerRoman Krcek <roman.krcek@tietoevry.com>2025-03-19 14:06:06 +0000
commit32cdbd23d5dee8dbfe22570b61981f3e7000aa68 (patch)
tree2c3011ce33b5903137d2a35666eefa71e09b074c /tests
parent8f2781f25e6d74cdf6f80750d2456144967c8ba4 (diff)
downloadkolla-ansible-32cdbd23d5dee8dbfe22570b61981f3e7000aa68.tar.gz
kolla-ansible-32cdbd23d5dee8dbfe22570b61981f3e7000aa68.zip
Merge of container_facts modules
Merge container_facts and container_volume_facts into a single module for retrieving all information about containers and volumes. Change-Id: I5d321b8326edd7f3b7a11dbdc821e534f457f9d7 Signed-off-by: Ivan Halomi <ivan.halomi@tietoevry.com> Signed-off-by: Roman KrĨek <roman.krcek@tietoevry.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/test_kolla_container_facts.py112
1 files changed, 110 insertions, 2 deletions
diff --git a/tests/test_kolla_container_facts.py b/tests/test_kolla_container_facts.py
index 81e6a5009..f1fc59f3e 100644
--- a/tests/test_kolla_container_facts.py
+++ b/tests/test_kolla_container_facts.py
@@ -65,7 +65,23 @@ FAKE_DATA = {
'Volumes': {'/var/lib/kolla/config_files/': {}}},
'Mounts': {},
'NetworkSettings': {}
- }
+ },
+ 'volumes': [
+ {'CreatedAt': '2024-10-10T12:05:46+02:00',
+ 'Driver': 'local',
+ 'Labels': None,
+ 'Mountpoint': '/var/lib/docker/volumes/my_volume/_data',
+ 'Name': 'my_volume',
+ 'Options': None,
+ 'Scope': 'local'},
+ {'CreatedAt': '2023-05-01T14:55:36+02:00',
+ 'Driver': 'local',
+ 'Labels': None,
+ 'Mountpoint': '/var/lib/docker/volumes/another_volume/_data',
+ 'Name': 'another_volume',
+ 'Options': None,
+ 'Scope': 'local'}
+ ]
}
@@ -77,7 +93,7 @@ def get_DockerFactsWorker(mod_param, mock_client):
return dfw
-def construct_container(cont_dict):
+def construct_container(cont_dict) -> mock.Mock:
container = mock.Mock()
container.name = cont_dict['Name']
container.attrs = copy.deepcopy(cont_dict)
@@ -85,6 +101,14 @@ def construct_container(cont_dict):
return container
+def contruct_volume(vol_dict: dict) -> mock.Mock:
+ """Creates volume object that mimics the output of a container client."""
+ volume = mock.Mock()
+ volume.name = vol_dict['Name']
+ volume.attrs = copy.deepcopy(vol_dict)
+ return volume
+
+
def get_containers(override=None):
if override:
cont_dicts = override
@@ -100,6 +124,15 @@ def get_containers(override=None):
return containers
+def get_volumes(override=None):
+ if override:
+ vol_dicts = override
+ else:
+ vol_dicts = copy.deepcopy(FAKE_DATA['volumes'])
+
+ return [contruct_volume(v) for v in vol_dicts]
+
+
class TestContainerFacts(base.BaseTestCase):
def setUp(self):
super(TestContainerFacts, self).setUp()
@@ -202,3 +235,78 @@ class TestContainerFacts(base.BaseTestCase):
'fake_container')
self.dfw.module.fail_json.assert_called_once_with(
msg="No such container: fake_container")
+
+ def test_get_volumes_single(self):
+ """Test fetching a single volume"""
+ self.dfw = get_DockerFactsWorker(
+ {'name': ['my_volume'], 'action': 'get_volumes'})
+ full_vol_list = get_volumes(self.fake_data['volumes'])
+ self.dfw.client.volumes.list.return_value = full_vol_list
+
+ self.dfw.get_volumes()
+
+ self.assertFalse(self.dfw.result['changed'])
+ self.dfw.client.volumes.list.assert_called_once_with()
+ self.assertIn('my_volume', self.dfw.result['volumes'])
+ self.assertNotIn('another_volume', self.dfw.result['volumes'])
+ self.assertEqual(len(self.dfw.result['volumes']), 1)
+ self.assertDictEqual(
+ self.dfw.result['volumes']['my_volume'],
+ self.fake_data['volumes'][0])
+
+ def test_get_volumes_multiple(self):
+ """Test fetching multiple volumes"""
+ self.dfw = get_DockerFactsWorker({
+ 'name': ['my_volume', 'another_volume'],
+ 'action': 'get_volumes'})
+ full_vol_list = get_volumes(self.fake_data['volumes'])
+ self.dfw.client.volumes.list.return_value = full_vol_list
+
+ self.dfw.get_volumes()
+
+ self.assertFalse(self.dfw.result['changed'])
+ self.dfw.client.volumes.list.assert_called_once_with()
+ self.assertIn('my_volume', self.dfw.result['volumes'])
+ self.assertIn('another_volume', self.dfw.result['volumes'])
+ self.assertEqual(len(self.dfw.result['volumes']), 2)
+ self.assertDictEqual(
+ self.dfw.result['volumes']['my_volume'],
+ self.fake_data['volumes'][0])
+ self.assertDictEqual(
+ self.dfw.result['volumes']['another_volume'],
+ self.fake_data['volumes'][1])
+
+ def test_get_volumes_all(self):
+ """Test fetching all volumes when no specific names are provided"""
+ self.dfw = get_DockerFactsWorker({'name': [],
+ 'action': 'get_volumes'})
+ full_vol_list = get_volumes(self.fake_data['volumes'])
+ self.dfw.client.volumes.list.return_value = full_vol_list
+
+ self.dfw.get_volumes()
+
+ self.assertFalse(self.dfw.result['changed'])
+ self.dfw.client.volumes.list.assert_called_once_with()
+ self.assertIn('my_volume', self.dfw.result['volumes'])
+ self.assertIn('another_volume', self.dfw.result['volumes'])
+ self.assertDictEqual(
+ self.dfw.result['volumes']['my_volume'],
+ self.fake_data['volumes'][0])
+ self.assertDictEqual(
+ self.dfw.result['volumes']['another_volume'],
+ self.fake_data['volumes'][1])
+
+ def test_get_volumes_negative(self):
+ """Test fetching a volume that doesn't exist"""
+ self.dfw = get_DockerFactsWorker({'name': ['nonexistent_volume'],
+ 'action': 'get_volumes'})
+ full_vol_list = get_volumes(self.fake_data['volumes'])
+ self.dfw.client.volumes.list.return_value = full_vol_list
+
+ self.dfw.get_volumes()
+
+ self.assertFalse(self.dfw.result['changed'])
+ self.dfw.client.volumes.list.assert_called_once_with()
+ self.assertIn('volumes', self.dfw.result)
+ self.assertEqual(len(self.dfw.result['volumes']), 0)
+ self.assertNotIn('nonexistent_volume', self.dfw.result['volumes'])