diff --git a/ansible_runner/config/_base.py b/ansible_runner/config/_base.py index 556ace4c9..e62c32a78 100644 --- a/ansible_runner/config/_base.py +++ b/ansible_runner/config/_base.py @@ -39,7 +39,7 @@ from ansible_runner.defaults import registry_auth_prefix from ansible_runner.loader import ArtifactLoader from ansible_runner.utils import ( - get_plugin_dir, + callback_mount, get_callback_dir, open_fifo_write, args2cmdline, @@ -495,7 +495,7 @@ def wrap_args_for_containerization(self, args, execution_mode, cmdline_args): self._update_volume_mount_paths(new_args, "{}".format(self.private_data_dir), dst_mount_path="/runner", labels=":Z") # Mount the stdout callback plugin from the ansible-runner code base - self._update_volume_mount_paths(new_args, "{}".format(get_plugin_dir()), dst_mount_path="/home/runner/.ansible/plugins", labels=":Z") + self._update_volume_mount_paths(new_args, callback_mount()[0], dst_mount_path=callback_mount()[1], labels=":Z") if self.container_auth_data: # Pull in the necessary registry auth info, if there is a container cred diff --git a/ansible_runner/utils/__init__.py b/ansible_runner/utils/__init__.py index c0c64e815..9436dfc9f 100644 --- a/ansible_runner/utils/__init__.py +++ b/ansible_runner/utils/__init__.py @@ -54,6 +54,18 @@ def get_callback_dir(): return os.path.join(get_plugin_dir(), 'callback') +def callback_mount(): + ''' + Return a tuple that gives mount points for the standard out callback + in the form of (, ) + ''' + container_dot_ansible = '/home/runner/.ansible' + rel_path = ('callback', '',) + callback_file = os.path.join(get_plugin_dir(), *rel_path) + container_path = os.path.join(container_dot_ansible, 'plugins', *rel_path) + return (callback_file, container_path) + + class Bunch(object): ''' diff --git a/test/unit/config/test__base.py b/test/unit/config/test__base.py index 594e2266c..5c2c8c407 100644 --- a/test/unit/config/test__base.py +++ b/test/unit/config/test__base.py @@ -13,7 +13,7 @@ from ansible_runner.config._base import BaseConfig, BaseExecutionMode from ansible_runner.loader import ArtifactLoader from ansible_runner.exceptions import ConfigurationError -from ansible_runner.utils import get_plugin_dir +from ansible_runner.utils import callback_mount try: Pattern = re._pattern_type @@ -317,7 +317,7 @@ def test_containerization_settings(tmp_path, runtime, mocker): expected_command_start.extend([ '-v', '{}/artifacts/:/runner/artifacts/:Z'.format(rc.private_data_dir), '-v', '{}/:/runner/:Z'.format(rc.private_data_dir), - '-v', '{}/:/home/runner/.ansible/plugins/:Z'.format(get_plugin_dir()), + '-v', '{0}:{1}:Z'.format(*callback_mount()), '--env-file', '{}/env.list'.format(rc.artifact_dir), ]) diff --git a/test/unit/config/test_ansible_cfg.py b/test/unit/config/test_ansible_cfg.py index 7d8302790..da7e7e0cb 100644 --- a/test/unit/config/test_ansible_cfg.py +++ b/test/unit/config/test_ansible_cfg.py @@ -6,7 +6,7 @@ from ansible_runner.config.ansible_cfg import AnsibleCfgConfig from ansible_runner.config._base import BaseExecutionMode from ansible_runner.exceptions import ConfigurationError -from ansible_runner.utils import get_executable_path, get_plugin_dir +from ansible_runner.utils import get_executable_path, callback_mount def test_ansible_cfg_init_defaults(tmp_path, patch_private_data_dir): @@ -91,7 +91,7 @@ def test_prepare_config_command_with_containerization(tmp_path, runtime, mocker) expected_command_start.extend([ '-v', '{}/artifacts/:/runner/artifacts/:Z'.format(rc.private_data_dir), '-v', '{}/:/runner/:Z'.format(rc.private_data_dir), - '-v', '{}/:/home/runner/.ansible/plugins/:Z'.format(get_plugin_dir()), + '-v', '{0}:{1}:Z'.format(*callback_mount()), '--env-file', '{}/env.list'.format(rc.artifact_dir), ]) diff --git a/test/unit/config/test_command.py b/test/unit/config/test_command.py index 6fc49afca..5c2071ea6 100644 --- a/test/unit/config/test_command.py +++ b/test/unit/config/test_command.py @@ -6,7 +6,7 @@ from ansible_runner.config.command import CommandConfig from ansible_runner.config._base import BaseExecutionMode from ansible_runner.exceptions import ConfigurationError -from ansible_runner.utils import get_plugin_dir +from ansible_runner.utils import callback_mount def test_ansible_config_defaults(tmp_path, patch_private_data_dir): @@ -106,7 +106,7 @@ def test_prepare_run_command_with_containerization(tmp_path, runtime, mocker): expected_command_start.extend([ '-v', '{}/artifacts/:/runner/artifacts/:Z'.format(rc.private_data_dir), '-v', '{}/:/runner/:Z'.format(rc.private_data_dir), - '-v', '{}/:/home/runner/.ansible/plugins/:Z'.format(get_plugin_dir()), + '-v', '{0}:{1}:Z'.format(*callback_mount()), '--env-file', '{}/env.list'.format(rc.artifact_dir), ]) diff --git a/test/unit/config/test_doc.py b/test/unit/config/test_doc.py index 0f9a620a1..a1dfd24f1 100755 --- a/test/unit/config/test_doc.py +++ b/test/unit/config/test_doc.py @@ -6,7 +6,7 @@ from ansible_runner.config.doc import DocConfig from ansible_runner.config._base import BaseExecutionMode from ansible_runner.exceptions import ConfigurationError -from ansible_runner.utils import get_executable_path, get_plugin_dir +from ansible_runner.utils import get_executable_path, callback_mount def test_ansible_doc_defaults(tmp_path, patch_private_data_dir): @@ -101,7 +101,7 @@ def test_prepare_plugin_docs_command_with_containerization(tmp_path, runtime, mo expected_command_start.extend([ '-v', '{}/artifacts/:/runner/artifacts/:Z'.format(rc.private_data_dir), '-v', '{}/:/runner/:Z'.format(rc.private_data_dir), - '-v', '{}/:/home/runner/.ansible/plugins/:Z'.format(get_plugin_dir()), + '-v', '{0}:{1}:Z'.format(*callback_mount()), '--env-file', '{}/env.list'.format(rc.artifact_dir), ]) @@ -170,7 +170,7 @@ def test_prepare_plugin_list_command_with_containerization(tmp_path, runtime, mo expected_command_start.extend([ '-v', '{}/artifacts/:/runner/artifacts/:Z'.format(rc.private_data_dir), '-v', '{}/:/runner/:Z'.format(rc.private_data_dir), - '-v', '{}/:/home/runner/.ansible/plugins/:Z'.format(get_plugin_dir()), + '-v', '{0}:{1}:Z'.format(*callback_mount()), '--env-file', '{}/env.list'.format(rc.artifact_dir), ]) diff --git a/test/unit/config/test_inventory.py b/test/unit/config/test_inventory.py index 14d0ff684..dd81027f9 100644 --- a/test/unit/config/test_inventory.py +++ b/test/unit/config/test_inventory.py @@ -6,7 +6,7 @@ from ansible_runner.config.inventory import InventoryConfig from ansible_runner.config._base import BaseExecutionMode from ansible_runner.exceptions import ConfigurationError -from ansible_runner.utils import get_executable_path, get_plugin_dir +from ansible_runner.utils import get_executable_path, callback_mount def test_ansible_inventory_init_defaults(tmp_path, patch_private_data_dir): @@ -126,7 +126,7 @@ def test_prepare_inventory_command_with_containerization(tmp_path, runtime, mock expected_command_start.extend([ '-v', '{}/artifacts/:/runner/artifacts/:Z'.format(rc.private_data_dir), '-v', '{}/:/runner/:Z'.format(rc.private_data_dir), - '-v', '{}/:/home/runner/.ansible/plugins/:Z'.format(get_plugin_dir()), + '-v', '{0}:{1}:Z'.format(*callback_mount()), '--env-file', '{}/env.list'.format(rc.artifact_dir), ]) diff --git a/test/unit/config/test_runner.py b/test/unit/config/test_runner.py index 44b96b8f9..725a7fde5 100644 --- a/test/unit/config/test_runner.py +++ b/test/unit/config/test_runner.py @@ -14,7 +14,7 @@ from ansible_runner.interface import init_runner from ansible_runner.loader import ArtifactLoader from ansible_runner.exceptions import ConfigurationError -from ansible_runner.utils import get_plugin_dir +from ansible_runner.utils import callback_mount try: Pattern = re._pattern_type @@ -732,7 +732,7 @@ def test_containerization_settings(tmp_path, runtime, mocker): expected_command_start = [runtime, 'run', '--rm', '--tty', '--interactive', '--workdir', '/runner/project'] + \ ['-v', '{}/:/runner/:Z'.format(rc.private_data_dir)] + \ - ['-v', '{}/:/home/runner/.ansible/plugins/:Z'.format(get_plugin_dir())] + \ + ['-v', '{0}:{1}:Z'.format(*callback_mount())] + \ ['-v', '/host1/:/container1/', '-v', '/host2/:/container2/'] + \ ['--env-file', '{}/env.list'.format(rc.artifact_dir)] + \ extra_container_args + \