Merge "Add --override-ansible-cfg"

This commit is contained in:
Zuul 2018-08-31 23:51:42 +00:00 committed by Gerrit Code Review
commit 48719ad942
3 changed files with 55 additions and 1 deletions

View File

@ -1664,6 +1664,46 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
self.assertTrue(fixture.mock_get_overcloud_hosts.called)
self.assertTrue(fixture.mock_config_download.called)
@mock.patch('tripleoclient.workflows.deployment.get_overcloud_hosts')
@mock.patch('tripleoclient.workflows.deployment.enable_ssh_admin')
@mock.patch('tripleoclient.workflows.deployment.get_horizon_url',
autospec=True)
@mock.patch('tripleoclient.workflows.deployment.config_download')
@mock.patch('tripleoclient.utils.create_tempest_deployer_input',
autospec=True)
@mock.patch('tripleoclient.utils.get_overcloud_endpoint', autospec=True)
@mock.patch('tripleoclient.utils.write_overcloudrc', autospec=True)
@mock.patch('tripleoclient.workflows.deployment.create_overcloudrc',
autospec=True)
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
'_deploy_tripleo_heat_templates_tmpdir', autospec=True)
def test_override_ansible_cfg(
self, mock_deploy_tmpdir,
mock_overcloudrc, mock_write_overcloudrc,
mock_overcloud_endpoint,
mock_create_tempest_deployer_input,
mock_config_download, mock_get_horizon_url,
mock_enable_ssh_admin,
mock_get_overcloud_hosts):
clients = self.app.client_manager
orchestration_client = clients.orchestration
orchestration_client.stacks.get.return_value = mock.Mock()
arglist = ['--templates',
'--override-ansible-cfg', 'ansible.cfg']
verifylist = [
('templates', '/usr/share/openstack-tripleo-heat-templates/'),
('override_ansible_cfg', 'ansible.cfg')
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.assertTrue(mock_enable_ssh_admin.called)
self.assertTrue(mock_get_overcloud_hosts.called)
self.assertTrue(mock_config_download.called)
self.assertEqual('ansible.cfg',
mock_config_download.call_args[0][8])
def test_download_missing_files_from_plan(self):
# Restore the real function so we don't accidentally call the mock
self.cmd._download_missing_files_from_plan = self.real_download_missing

View File

@ -812,6 +812,14 @@ class DeployOvercloud(command.Command):
'specified, the default server side value '
'will be used (/var/lib/mistral/<execution id>.')
)
parser.add_argument(
'--override-ansible-cfg',
action='store',
default=None,
help=_('Path to ansible configuration file. The configuration '
'in the file will override any configuration used by '
'config-download by default.')
)
return parser
def take_action(self, parsed_args):
@ -893,6 +901,7 @@ class DeployOvercloud(command.Command):
parsed_args.overcloud_ssh_key,
parsed_args.overcloud_ssh_network,
parsed_args.output_dir,
parsed_args.override_ansible_cfg,
verbosity=self.app_args.verbose_level)
# Force fetching of attributes

View File

@ -243,7 +243,8 @@ def enable_ssh_admin(log, clients, hosts, ssh_user, ssh_key):
def config_download(log, clients, stack, templates,
ssh_user, ssh_key, ssh_network, output_dir, verbosity=1):
ssh_user, ssh_key, ssh_network, output_dir,
override_ansible_cfg, verbosity=1):
workflow_client = clients.workflow_engine
tripleoclients = clients.tripleoclient
@ -254,6 +255,10 @@ def config_download(log, clients, stack, templates,
}
if output_dir:
workflow_input.update(dict(work_dir=output_dir))
if override_ansible_cfg:
override_ansible_cfg_contents = open(override_ansible_cfg).read()
workflow_input.update(
dict(override_ansible_cfg=override_ansible_cfg_contents))
with tripleoclients.messaging_websocket() as ws:
execution = base.start_workflow(