diff options
| author | Michal Nasiadka <mnasiadka@gmail.com> | 2025-09-10 07:44:04 +0200 |
|---|---|---|
| committer | Michal Nasiadka <mnasiadka@gmail.com> | 2025-10-28 11:26:36 +0000 |
| commit | 3380770aeef5eebc4fd0dd1f7b6c36cde0c881fa (patch) | |
| tree | 1ded558649c141bb80019d49ea92a71743e6ec16 /tests/test_kolla_toolbox.py | |
| parent | 011034a141b385ed4c86fd832425e800484efdb6 (diff) | |
| download | kolla-ansible-3380770aeef5eebc4fd0dd1f7b6c36cde0c881fa.tar.gz kolla-ansible-3380770aeef5eebc4fd0dd1f7b6c36cde0c881fa.zip | |
Bump ansible-core to 2.18/2.19
Bumped collections in requirements-core.yml to Ansible 12 major versions,
see [1].
[1]: https://github.com/ansible-community/ansible-build-data/blob/main/12/ansible-12.1.0.yaml
Depends-On: https://review.opendev.org/c/openstack/kolla/+/960307
Co-authored-by: Doug Szumski doug@stackhpc.com
Change-Id: If8a29052d8a43ffc0fef11514adabb5e4ab9d977
Signed-off-by: Michal Nasiadka <mnasiadka@gmail.com>
Diffstat (limited to 'tests/test_kolla_toolbox.py')
| -rw-r--r-- | tests/test_kolla_toolbox.py | 99 |
1 files changed, 52 insertions, 47 deletions
diff --git a/tests/test_kolla_toolbox.py b/tests/test_kolla_toolbox.py index 112bd403c..9dca821cc 100644 --- a/tests/test_kolla_toolbox.py +++ b/tests/test_kolla_toolbox.py @@ -13,6 +13,7 @@ # limitations under the License. import builtins +import contextlib import json import os import sys @@ -20,6 +21,18 @@ import sys from ansible.module_utils import basic from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.common.text.converters import to_bytes +try: + from ansible.module_utils.testing import patch_module_args +except ImportError: + # TODO(dougszu): Remove this exception handler when Python 3.10 support + # is not required. Python 3.10 isn't supported by Ansible Core 2.18 which + # provides patch_module_args + @contextlib.contextmanager + def patch_module_args(args): + serialized_args = to_bytes(json.dumps({'ANSIBLE_MODULE_ARGS': args})) + with mock.patch.object(basic, '_ANSIBLE_ARGS', serialized_args): + yield + from importlib.machinery import SourceFileLoader from oslotest import base from unittest import mock @@ -33,13 +46,6 @@ kolla_toolbox = SourceFileLoader('kolla_toolbox', kolla_toolbox_file).load_module() -def set_module_args(args): - """Prepare arguments so they will be picked up during module creation.""" - - args = json.dumps({'ANSIBLE_MODULE_ARGS': args}) - basic._ANSIBLE_ARGS = to_bytes(args) - - class AnsibleExitJson(BaseException): """Exception to be raised by module.exit_json and caught by a test case.""" @@ -307,40 +313,40 @@ class TestModuleInteraction(TestKollaToolboxModule): """Class focused on testing user input data from playbook.""" def test_create_ansible_module_missing_required_module_name(self): - set_module_args({ + ansible_module_args = { 'container_engine': 'docker' - }) - - error = self.assertRaises(AnsibleFailJson, - kolla_toolbox.create_ansible_module) + } + with patch_module_args(ansible_module_args): + error = self.assertRaises(AnsibleFailJson, + kolla_toolbox.create_ansible_module) self.assertIn('missing required arguments: module_name', error.result['msg']) def test_create_ansible_module_missing_required_container_engine(self): - set_module_args({ + ansible_module_args = { 'module_name': 'url' - }) - - error = self.assertRaises(AnsibleFailJson, - kolla_toolbox.create_ansible_module) + } + with patch_module_args(ansible_module_args): + error = self.assertRaises(AnsibleFailJson, + kolla_toolbox.create_ansible_module) self.assertIn('missing required arguments: container_engine', error.result['msg']) def test_create_ansible_module_invalid_container_engine(self): - set_module_args({ + ansible_module_args = { 'module_name': 'url', 'container_engine': 'podmano' - }) - - error = self.assertRaises(AnsibleFailJson, - kolla_toolbox.create_ansible_module) + } + with patch_module_args(ansible_module_args): + error = self.assertRaises(AnsibleFailJson, + kolla_toolbox.create_ansible_module) self.assertIn( 'value of container_engine must be one of: podman, docker', error.result['msg'] ) def test_create_ansible_module_success(self): - args = { + ansible_module_args = { 'container_engine': 'docker', 'module_name': 'file', 'module_args': { @@ -357,12 +363,10 @@ class TestModuleInteraction(TestKollaToolboxModule): 'timeout': 180, 'api_version': '1.5' } - set_module_args(args) - - module = kolla_toolbox.create_ansible_module() - + with patch_module_args(ansible_module_args): + module = kolla_toolbox.create_ansible_module() self.assertIsInstance(module, AnsibleModule) - self.assertEqual(args, module.params) + self.assertEqual(ansible_module_args, module.params) class TestContainerEngineClientIntraction(TestKollaToolboxModule): @@ -381,14 +385,14 @@ class TestContainerEngineClientIntraction(TestKollaToolboxModule): return self.original_import(name, globals, locals, fromlist, level) def test_podman_client_params(self): - set_module_args({ + ansible_module_args = { 'module_name': 'ping', 'container_engine': 'podman', 'api_version': '1.47', 'timeout': 155 - }) - - module = kolla_toolbox.create_ansible_module() + } + with patch_module_args(ansible_module_args): + module = kolla_toolbox.create_ansible_module() mock_podman = mock.MagicMock() mock_podman_errors = mock.MagicMock() import_dict = {'podman': mock_podman, @@ -403,14 +407,14 @@ class TestContainerEngineClientIntraction(TestKollaToolboxModule): ) def test_docker_client_params(self): - set_module_args({ + ansible_module_args = { 'module_name': 'ping', 'container_engine': 'docker', 'api_version': '1.47', 'timeout': 155 - }) - - module = kolla_toolbox.create_ansible_module() + } + with patch_module_args(ansible_module_args): + module = kolla_toolbox.create_ansible_module() mock_docker = mock.MagicMock() mock_docker_errors = mock.MagicMock() import_dict = {'docker': mock_docker, @@ -425,14 +429,14 @@ class TestContainerEngineClientIntraction(TestKollaToolboxModule): ) def test_create_container_client_podman_not_called_with_auto(self): - set_module_args({ + ansible_module_args = { 'module_name': 'ping', 'container_engine': 'podman', 'api_version': 'auto', 'timeout': 90 - }) - - module = kolla_toolbox.create_ansible_module() + } + with patch_module_args(ansible_module_args): + module = kolla_toolbox.create_ansible_module() mock_podman = mock.MagicMock() mock_podman_errors = mock.MagicMock() import_dict = {'podman': mock_podman, @@ -446,12 +450,13 @@ class TestContainerEngineClientIntraction(TestKollaToolboxModule): ) def test_create_container_client_podman_importerror(self): - set_module_args({ + ansible_module_args = { 'module_name': 'ping', 'container_engine': 'podman' - }) + } self.module_to_mock_import = 'podman' - module = kolla_toolbox.create_ansible_module() + with patch_module_args(ansible_module_args): + module = kolla_toolbox.create_ansible_module() with mock.patch('builtins.__import__', side_effect=self.mock_import_error): @@ -462,13 +467,13 @@ class TestContainerEngineClientIntraction(TestKollaToolboxModule): error.result['msg']) def test_create_container_client_docker_importerror(self): - set_module_args({ + ansible_module_args = { 'module_name': 'ping', 'container_engine': 'docker' - }) - + } self.module_to_mock_import = 'docker' - module = kolla_toolbox.create_ansible_module() + with patch_module_args(ansible_module_args): + module = kolla_toolbox.create_ansible_module() with mock.patch('builtins.__import__', side_effect=self.mock_import_error): |
