def test_prepare(): rc = RunnerConfig('/') rc.prepare_inventory = Mock() rc.prepare_env = Mock() rc.prepare_command = Mock() rc.ssh_key_data = None rc.artifact_dir = '/' rc.env = {} rc.playbook = 'main.yaml' os.environ['AWX_LIB_DIRECTORY'] = '/' rc.prepare() assert rc.prepare_inventory.called assert rc.prepare_env.called assert rc.prepare_command.called assert not hasattr(rc, 'ssh_key_path') assert not hasattr(rc, 'ssh_auth_sock') assert not hasattr(rc, 'command') assert rc.env['ANSIBLE_STDOUT_CALLBACK'] == 'awx_display' assert rc.env['ANSIBLE_RETRY_FILES_ENABLED'] == 'False' assert rc.env['ANSIBLE_HOST_KEY_CHECKING'] == 'False' assert rc.env['AWX_ISOLATED_DATA_DIR'] == '/' assert rc.env['PYTHONPATH'] == '/:' os.environ['PYTHONPATH'] = "/foo/bar" rc.prepare() assert rc.env['PYTHONPATH'] == "/foo/bar:/:"
def test_prepare_with_ssh_key(): rc = RunnerConfig('/') rc.prepare_inventory = Mock() rc.prepare_env = Mock() rc.prepare_command = Mock() rc.wrap_args_with_ssh_agent = Mock() rc.open_fifo_write = Mock() rc.ssh_key_data = None rc.artifact_dir = '/' rc.env = {} rc.playbook = 'main.yaml' rc.ssh_key_data = '01234567890' rc.command = 'ansible-playbook' os.environ['AWX_LIB_DIRECTORY'] = '/' rc.prepare() assert rc.ssh_key_path == '/ssh_key_data' assert rc.ssh_auth_sock == '/ssh_auth.sock' assert rc.wrap_args_with_ssh_agent.called assert rc.open_fifo_write.called
def test_prepare(): rc = RunnerConfig('/') rc.prepare_inventory = Mock() rc.prepare_env = Mock() rc.prepare_command = Mock() rc.ssh_key_data = None rc.artifact_dir = '/' rc.env = {} rc.execution_mode = ExecutionMode.ANSIBLE_PLAYBOOK rc.playbook = 'main.yaml' rc.prepare() assert rc.prepare_inventory.called assert rc.prepare_env.called assert rc.prepare_command.called assert not hasattr(rc, 'ssh_key_path') assert not hasattr(rc, 'command') assert rc.env['ANSIBLE_STDOUT_CALLBACK'] == 'awx_display' assert rc.env['ANSIBLE_RETRY_FILES_ENABLED'] == 'False' assert rc.env['ANSIBLE_HOST_KEY_CHECKING'] == 'False' assert rc.env['AWX_ISOLATED_DATA_DIR'] == '/' assert rc.env['PYTHONPATH'] == '/python_path_via_environ:/awx_lib_directory_via_environ', \ "PYTHONPATH is the union of the env PYTHONPATH and AWX_LIB_DIRECTORY" del rc.env['PYTHONPATH'] os.environ['PYTHONPATH'] = "/foo/bar/python_path_via_environ" rc.prepare() assert rc.env['PYTHONPATH'] == "/foo/bar/python_path_via_environ:/awx_lib_directory_via_environ", \ "PYTHONPATH is the union of the explicit env['PYTHONPATH'] override and AWX_LIB_DIRECTORY"
def rc(request, tmpdir): rc = RunnerConfig(str(tmpdir)) rc.suppress_ansible_output = True rc.expect_passwords = {pexpect.TIMEOUT: None, pexpect.EOF: None} rc.cwd = str(tmpdir) rc.env = {} rc.job_timeout = .1 rc.idle_timeout = 0 rc.pexpect_timeout = .1 return rc
def test_prepare_with_defaults(): rc = RunnerConfig('/') rc.prepare_inventory = Mock() rc.prepare_env = Mock() rc.prepare_command = Mock() rc.ssh_key_data = None rc.artifact_dir = '/' rc.env = {} with raises(ConfigurationError) as exc: rc.prepare() assert str(exc) == 'Runner playbook is not defined'
def test_prepare_with_defaults(): rc = RunnerConfig('/') rc.prepare_inventory = Mock() rc.prepare_env = Mock() rc.prepare_command = Mock() rc.ssh_key_data = None rc.artifact_dir = '/' rc.env = {} with pytest.raises(ConfigurationError) as exc: rc.prepare() assert str(exc.value) == 'No executable for runner to run'
def test_container_volume_mounting_with_Z(tmpdir): rc = RunnerConfig(str(tmpdir)) rc.container_volume_mounts = ['project_path:project_path:Z'] rc.container_name = 'foo' rc.env = {} new_args = rc.wrap_args_for_containerization( ['ansible-playbook', 'foo.yml']) assert new_args[0] == 'podman' for i, entry in enumerate(new_args): if entry == '-v': mount = new_args[i + 1] if mount.endswith(':project_path:Z'): break else: raise Exception( 'Could not find expected mount, args: {}'.format(new_args))
def test_prepare_with_ssh_key(open_fifo_write_mock): rc = RunnerConfig('/') rc.prepare_inventory = Mock() rc.prepare_env = Mock() rc.prepare_command = Mock() rc.wrap_args_with_ssh_agent = Mock() rc.ssh_key_data = None rc.artifact_dir = '/' rc.env = {} rc.execution_mode = ExecutionMode.ANSIBLE_PLAYBOOK rc.playbook = 'main.yaml' rc.ssh_key_data = '01234567890' rc.command = 'ansible-playbook' with patch.dict('os.environ', {'AWX_LIB_DIRECTORY': '/'}): rc.prepare() assert rc.ssh_key_path == '/ssh_key_data' assert rc.wrap_args_with_ssh_agent.called assert open_fifo_write_mock.called