diff options
| author | Ivan Halomi <ivan.halomi@tietoevry.com> | 2024-03-11 15:29:17 +0100 |
|---|---|---|
| committer | Roman Krcek <roman.krcek@tietoevry.com> | 2025-03-19 14:06:06 +0000 |
| commit | 32cdbd23d5dee8dbfe22570b61981f3e7000aa68 (patch) | |
| tree | 2c3011ce33b5903137d2a35666eefa71e09b074c /tests | |
| parent | 8f2781f25e6d74cdf6f80750d2456144967c8ba4 (diff) | |
| download | kolla-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.py | 112 |
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']) |
