diff --git a/tripleoclient/tests/v1/overcloud_upgrade/test_overcloud_upgrade.py b/tripleoclient/tests/v1/overcloud_upgrade/test_overcloud_upgrade.py index 28c044e53..8b0b17b0e 100644 --- a/tripleoclient/tests/v1/overcloud_upgrade/test_overcloud_upgrade.py +++ b/tripleoclient/tests/v1/overcloud_upgrade/test_overcloud_upgrade.py @@ -207,6 +207,39 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun): verbosity=1 ) + @mock.patch('tripleoclient.workflows.package_update.update_ansible', + autospec=True) + @mock.patch('os.path.expanduser') + @mock.patch('oslo_concurrency.processutils.execute') + @mock.patch('six.moves.builtins.open') + def test_upgrade_role_all_playbooks_only_validation( + self, mock_open, mock_execute, mock_expanduser, upgrade_ansible): + mock_expanduser.return_value = '/home/fake/' + argslist = ['--roles', 'Compute', '--playbook', 'all', + '--tags', 'validation'] + verifylist = [ + ('roles', 'Compute'), + ('static_inventory', None), + ('playbook', 'all'), + ('tags', 'validation') + ] + + parsed_args = self.check_parser(self.cmd, argslist, verifylist) + with mock.patch('os.path.exists') as mock_exists: + mock_exists.return_value = True + self.cmd.take_action(parsed_args) + for book in constants.MAJOR_UPGRADE_PLAYBOOKS: + upgrade_ansible.assert_any_call( + self.app.client_manager, + nodes='Compute', + inventory_file=mock_open().read(), + playbook=book, + node_user='tripleo-admin', + tags='validation', + skip_tags='', + verbosity=1, + ) + @mock.patch('tripleoclient.workflows.package_update.update_ansible', autospec=True) @mock.patch('os.path.expanduser') diff --git a/tripleoclient/v1/overcloud_upgrade.py b/tripleoclient/v1/overcloud_upgrade.py index f2e544104..55c7c5f57 100644 --- a/tripleoclient/v1/overcloud_upgrade.py +++ b/tripleoclient/v1/overcloud_upgrade.py @@ -166,6 +166,14 @@ class UpgradeRun(command.Command): help=_("DEPRECATED: Only tripleo-admin should be " "used as ssh user.") ) + parser.add_argument('--tags', + dest='tags', + action="store", + default="", + help=_('A string specifying the tag or comma ' + 'separated list of tags to be passed ' + 'as --tags to ansible-playbook.') + ) parser.add_argument('--skip-tags', dest='skip_tags', action="store", @@ -221,8 +229,9 @@ class UpgradeRun(command.Command): constants.MAJOR_UPGRADE_PLAYBOOKS, package_update, parsed_args.ssh_user, - skip_tags=skip_tags, - verbosity=verbosity) + parsed_args.tags, + skip_tags, + verbosity) playbooks = (constants.MAJOR_UPGRADE_PLAYBOOKS if playbook == 'all' else playbook)