def my_async(**kwargs): to_artifacts(kwargs) rc = RunnerConfig(**kwargs) rc.prepare() r = MyRunner(rc) runner_thread = threading.Thread(target=r.run, args=(True,)) return runner_thread, r
def test_to_artifacts_ssh_key(): with patch('ansible_runner.utils.dump_artifact') as mock_dump_artifact: ssh_key = '1234567890' kwargs = {'private_data_dir': '/tmp', 'ssh_key': ssh_key} to_artifacts(kwargs) assert mock_dump_artifact.call_count == 1 data, fp, fn = mock_dump_artifact.call_args[0] assert data == ssh_key assert fp == '/tmp/env' assert fn == 'ssh_key' assert 'ssh_key' not in kwargs
def test_to_artifacts_settings(): with patch('ansible_runner.utils.dump_artifact') as mock_dump_artifact: settings = {'foo': 'bar'} kwargs = {'private_data_dir': '/tmp', 'settings': settings} to_artifacts(kwargs) assert mock_dump_artifact.call_count == 1 data, fp, fn = mock_dump_artifact.call_args[0] assert data == json.dumps(settings) assert fp == '/tmp/env' assert fn == 'settings' assert 'settings' not in kwargs
def test_to_artifacts_inventory(): with patch('ansible_runner.utils.dump_artifact') as mock_dump_artifact: # inventory as a string (INI) inv = '[all]\nlocalhost' kwargs = {'private_data_dir': '/tmp', 'inventory': inv} to_artifacts(kwargs) assert mock_dump_artifact.call_count == 1 data, fp, fn = mock_dump_artifact.call_args[0] assert data == inv assert fp == '/tmp/inventory' assert fn == 'hosts' mock_dump_artifact.reset_mock() # inventory as a path inv = '/tmp' kwargs = {'private_data_dir': '/tmp', 'inventory': inv} to_artifacts(kwargs) assert mock_dump_artifact.call_count == 0 assert mock_dump_artifact.called is False assert kwargs['inventory'] == inv mock_dump_artifact.reset_mock() # inventory as a native object inv = {'foo': 'bar'} kwargs = {'private_data_dir': '/tmp', 'inventory': inv} to_artifacts(kwargs) assert mock_dump_artifact.call_count == 1 data, fp, fn = mock_dump_artifact.call_args[0] assert data == json.dumps(inv) assert fp == '/tmp/inventory' assert fn == 'hosts.json'
def test_to_artifacts_playbook(): with patch('ansible_runner.utils.dump_artifact') as mock_dump_artifact: # playbook as a native object pb = [{'playbook': [{'hosts': 'all'}]}] kwargs = {'private_data_dir': '/tmp', 'playbook': pb} to_artifacts(kwargs) assert mock_dump_artifact.call_count == 1 data, fp, fn = mock_dump_artifact.call_args[0] assert data == json.dumps(pb) assert fp == '/tmp/project' assert fn == 'main.json' mock_dump_artifact.reset_mock() # playbook as a path pb = 'test.yml' kwargs = {'private_data_dir': '/tmp', 'playbook': pb} to_artifacts(kwargs) assert mock_dump_artifact.call_count == 0 assert mock_dump_artifact.called is False mock_dump_artifact.reset_mock() # invalid playbook structures for obj in ({'foo': 'bar'}, None, True, False, 'foo', []): mock_dump_artifact.reset_mock() kwargs = {'private_data_dir': '/tmp', 'playbook': obj} to_artifacts(kwargs) assert mock_dump_artifact.call_count == 0 assert mock_dump_artifact.called is False
def test_to_artifacts_private_data_dir(): data_dir = '/tmp' kwargs = {'private_data_dir': data_dir} to_artifacts(kwargs) assert kwargs['private_data_dir'] == data_dir kwargs = {'private_data_dir': None} to_artifacts(kwargs) assert kwargs['private_data_dir'].startswith('/tmp/tmp') shutil.rmtree(kwargs['private_data_dir']) with raises(ValueError): data_dir = '/foo' kwargs = {'private_data_dir': data_dir} to_artifacts(kwargs)