diff --git a/tripleoclient/tests/v1/overcloud_deploy/test_overcloud_deploy.py b/tripleoclient/tests/v1/overcloud_deploy/test_overcloud_deploy.py index dd76c4602..e836fdaaa 100644 --- a/tripleoclient/tests/v1/overcloud_deploy/test_overcloud_deploy.py +++ b/tripleoclient/tests/v1/overcloud_deploy/test_overcloud_deploy.py @@ -1660,7 +1660,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud): inventory='localhost,', playbook='cli-overcloud-node-provision.yaml', playbook_dir='/usr/share/ansible/tripleo-playbooks', - verbosity=0, + verbosity=3, workdir=mock.ANY ), mock.call( @@ -1675,7 +1675,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud): inventory='localhost,', playbook='cli-overcloud-node-unprovision.yaml', playbook_dir='/usr/share/ansible/tripleo-playbooks', - verbosity=0, + verbosity=3, workdir=mock.ANY ) ]) diff --git a/tripleoclient/tests/v1/overcloud_ffwd_upgrade/test_overcloud_ffwd_upgrade.py b/tripleoclient/tests/v1/overcloud_ffwd_upgrade/test_overcloud_ffwd_upgrade.py index de7300a5f..7de8d2859 100644 --- a/tripleoclient/tests/v1/overcloud_ffwd_upgrade/test_overcloud_ffwd_upgrade.py +++ b/tripleoclient/tests/v1/overcloud_ffwd_upgrade/test_overcloud_ffwd_upgrade.py @@ -101,7 +101,8 @@ class TestFFWDUpgradePrepare(fakes.TestFFWDUpgradePrepare): parsed_args.overcloud_ssh_network, parsed_args.overcloud_ssh_user, mock.ANY, - parsed_args.overcloud_ssh_port_timeout + parsed_args.overcloud_ssh_port_timeout, + mock.ANY ) mock_overcloud_deploy.assert_called_once_with(parsed_args) diff --git a/tripleoclient/tests/v1/overcloud_node/test_overcloud_node.py b/tripleoclient/tests/v1/overcloud_node/test_overcloud_node.py index f592bdf53..1467dda9d 100644 --- a/tripleoclient/tests/v1/overcloud_node/test_overcloud_node.py +++ b/tripleoclient/tests/v1/overcloud_node/test_overcloud_node.py @@ -199,7 +199,7 @@ class TestDeleteNode(fakes.TestDeleteNode): mock.call( playbook='cli-overcloud-node-unprovision.yaml', inventory='localhost,', - verbosity=0, + verbosity=mock.ANY, workdir=mock.ANY, playbook_dir='/usr/share/ansible/tripleo-playbooks', extra_vars={ @@ -229,6 +229,7 @@ class TestDeleteNode(fakes.TestDeleteNode): inventory='localhost,', workdir=mock.ANY, playbook_dir='/usr/share/ansible/tripleo-playbooks', + verbosity=mock.ANY, extra_vars={ 'access_path': '/var/lib/mistral', 'execution_user': mock.ANY}, @@ -240,7 +241,7 @@ class TestDeleteNode(fakes.TestDeleteNode): playbook_dir=mock.ANY, skip_tags='opendev-validation', ansible_cfg=None, - verbosity=1, + verbosity=mock.ANY, ssh_user='tripleo-admin', key=mock.ANY, limit_hosts='overcast-controller-1:overcast-compute-0', @@ -253,7 +254,7 @@ class TestDeleteNode(fakes.TestDeleteNode): mock.call( inventory='localhost,', playbook='cli-overcloud-node-unprovision.yaml', - verbosity=0, + verbosity=mock.ANY, workdir=mock.ANY, playbook_dir='/usr/share/ansible/tripleo-playbooks', extra_vars={ diff --git a/tripleoclient/tests/v1/overcloud_upgrade/test_overcloud_upgrade.py b/tripleoclient/tests/v1/overcloud_upgrade/test_overcloud_upgrade.py index e87fe92fb..c54b59ddb 100644 --- a/tripleoclient/tests/v1/overcloud_upgrade/test_overcloud_upgrade.py +++ b/tripleoclient/tests/v1/overcloud_upgrade/test_overcloud_upgrade.py @@ -106,7 +106,8 @@ class TestOvercloudUpgradePrepare(fakes.TestOvercloudUpgradePrepare): parsed_args.overcloud_ssh_network, parsed_args.overcloud_ssh_user, mock.ANY, - parsed_args.overcloud_ssh_port_timeout + parsed_args.overcloud_ssh_port_timeout, + mock.ANY ) @mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.' diff --git a/tripleoclient/tests/v1/test_overcloud_admin.py b/tripleoclient/tests/v1/test_overcloud_admin.py index 0a6985c98..a03924d2a 100644 --- a/tripleoclient/tests/v1/test_overcloud_admin.py +++ b/tripleoclient/tests/v1/test_overcloud_admin.py @@ -38,5 +38,6 @@ class TestAdminAuthorize(test_plugin.TestPluginV1): parsed_args.overcloud_ssh_network, parsed_args.overcloud_ssh_user, mock.ANY, - parsed_args.overcloud_ssh_port_timeout + parsed_args.overcloud_ssh_port_timeout, + mock.ANY ) diff --git a/tripleoclient/tests/v1/test_overcloud_bios.py b/tripleoclient/tests/v1/test_overcloud_bios.py index 035d1ae72..44ade07cc 100644 --- a/tripleoclient/tests/v1/test_overcloud_bios.py +++ b/tripleoclient/tests/v1/test_overcloud_bios.py @@ -16,6 +16,7 @@ import tempfile from osc_lib.tests import utils as test_utils +from tripleoclient.tests import fakes as ooofakes from tripleoclient.tests.v1.baremetal import fakes from tripleoclient.v1 import overcloud_bios @@ -48,7 +49,10 @@ class TestConfigureBIOS(Base): def setUp(self): super(TestConfigureBIOS, self).setUp() - self.cmd = overcloud_bios.ConfigureBIOS(self.app, None) + app_args = mock.Mock() + app_args.verbose_level = 1 + self.app.options = ooofakes.FakeOptions() + self.cmd = overcloud_bios.ConfigureBIOS(self.app, app_args) playbook_runner = mock.patch( 'tripleoclient.utils.run_ansible_playbook', autospec=True @@ -144,7 +148,10 @@ class TestResetBIOS(Base): def setUp(self): super(TestResetBIOS, self).setUp() - self.cmd = overcloud_bios.ResetBIOS(self.app, None) + app_args = mock.Mock() + app_args.verbose_level = 1 + self.app.options = ooofakes.FakeOptions() + self.cmd = overcloud_bios.ResetBIOS(self.app, app_args) playbook_runner = mock.patch( 'tripleoclient.utils.run_ansible_playbook', autospec=True diff --git a/tripleoclient/tests/v1/test_overcloud_parameters.py b/tripleoclient/tests/v1/test_overcloud_parameters.py index 7a840210e..038d42744 100644 --- a/tripleoclient/tests/v1/test_overcloud_parameters.py +++ b/tripleoclient/tests/v1/test_overcloud_parameters.py @@ -19,6 +19,7 @@ from osc_lib.tests import utils import yaml from tripleoclient import exceptions +from tripleoclient.tests import fakes from tripleoclient.v1 import overcloud_parameters @@ -26,8 +27,10 @@ class TestSetParameters(utils.TestCommand): def setUp(self): super(TestSetParameters, self).setUp() - - self.cmd = overcloud_parameters.SetParameters(self.app, None) + app_args = mock.Mock() + app_args.verbose_level = 1 + self.app.options = fakes.FakeOptions() + self.cmd = overcloud_parameters.SetParameters(self.app, app_args) self.app.client_manager.workflow_engine = mock.Mock() self.workflow = self.app.client_manager.workflow_engine diff --git a/tripleoclient/tests/v1/test_overcloud_plan.py b/tripleoclient/tests/v1/test_overcloud_plan.py index 43d6f5685..de8e086db 100644 --- a/tripleoclient/tests/v1/test_overcloud_plan.py +++ b/tripleoclient/tests/v1/test_overcloud_plan.py @@ -95,7 +95,10 @@ class TestOvercloudCreatePlan(utils.TestCommand): def setUp(self): super(TestOvercloudCreatePlan, self).setUp() - self.cmd = overcloud_plan.CreatePlan(self.app, None) + app_args = mock.Mock() + app_args.verbose_level = 1 + self.app.options = fakes.FakeOptions() + self.cmd = overcloud_plan.CreatePlan(self.app, app_args) self.app.client_manager.workflow_engine = mock.Mock() self.tripleoclient = mock.Mock() self.app.client_manager.tripleoclient = self.tripleoclient @@ -172,6 +175,7 @@ class TestOvercloudCreatePlan(utils.TestCommand): ('templates', '/fake/path'), ('plan_environment_file', 'the_plan_environment.yaml') ] + self.app.options = fakes.FakeOptions() parsed_args = self.check_parser(self.cmd, arglist, verifylist) mock_open = mock.mock_open() @@ -211,6 +215,7 @@ class TestOvercloudCreatePlan(utils.TestCommand): parsed_args = self.check_parser(self.cmd, arglist, verifylist) # Run + self.app.options = fakes.FakeOptions() self.cmd.take_action(parsed_args) # Verify mock_run_playbook.assert_called_once_with( @@ -233,6 +238,7 @@ class TestOvercloudDeployPlan(utils.TestCommand): app_args = mock.Mock() app_args.verbose_level = 1 + self.app.options = fakes.FakeOptions() self.cmd = overcloud_plan.DeployPlan(self.app, app_args) sleep_patch = mock.patch('time.sleep') @@ -270,7 +276,7 @@ class TestOvercloudDeployPlan(utils.TestCommand): "container": "overcast", "run_validations": True, "skip_deploy_identifier": False, - "timeout_mins": 240 + "ansible_timeout": 240 }, verbosity=3, ) diff --git a/tripleoclient/tests/v1/test_overcloud_raid.py b/tripleoclient/tests/v1/test_overcloud_raid.py index 14bc234eb..d0956a874 100644 --- a/tripleoclient/tests/v1/test_overcloud_raid.py +++ b/tripleoclient/tests/v1/test_overcloud_raid.py @@ -16,6 +16,7 @@ import tempfile from osc_lib.tests import utils as test_utils +from tripleoclient.tests import fakes as ooofakes from tripleoclient.tests.v1.baremetal import fakes from tripleoclient.v1 import overcloud_raid @@ -24,8 +25,10 @@ class TestCreateRAID(fakes.TestBaremetal): def setUp(self): super(TestCreateRAID, self).setUp() - - self.cmd = overcloud_raid.CreateRAID(self.app, None) + app_args = mock.Mock() + app_args.verbose_level = 1 + self.app.options = ooofakes.FakeOptions() + self.cmd = overcloud_raid.CreateRAID(self.app, app_args) self.workflow = self.app.client_manager.workflow_engine self.conf = { diff --git a/tripleoclient/tests/v2/overcloud_node/test_overcloud_node.py b/tripleoclient/tests/v2/overcloud_node/test_overcloud_node.py index 473bb40b5..8d40c5f90 100644 --- a/tripleoclient/tests/v2/overcloud_node/test_overcloud_node.py +++ b/tripleoclient/tests/v2/overcloud_node/test_overcloud_node.py @@ -113,6 +113,7 @@ class TestImportNode(fakes.TestOvercloudNode): playbook=mock.ANY, inventory=mock.ANY, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=mock.ANY, extra_vars={ 'node_uuids': ['MOCK_NODE_UUID'], 'run_validations': False, @@ -145,6 +146,7 @@ class TestImportNode(fakes.TestOvercloudNode): playbook=mock.ANY, inventory=mock.ANY, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=mock.ANY, extra_vars={ 'node_uuids': ['MOCK_NODE_UUID'] } @@ -205,6 +207,7 @@ class TestIntrospectNode(fakes.TestOvercloudNode): playbook=mock.ANY, inventory=mock.ANY, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=mock.ANY, extra_vars={ 'node_uuids': [], 'run_validations': False, @@ -226,6 +229,7 @@ class TestIntrospectNode(fakes.TestOvercloudNode): playbook='cli-overcloud-node-provide.yaml', inventory=mock.ANY, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=mock.ANY, extra_vars={ 'node_uuids': [] } @@ -244,6 +248,7 @@ class TestIntrospectNode(fakes.TestOvercloudNode): playbook='cli-baremetal-introspect.yaml', inventory=mock.ANY, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=mock.ANY, extra_vars={ 'node_uuids': nodes, 'run_validations': False, @@ -266,6 +271,7 @@ class TestIntrospectNode(fakes.TestOvercloudNode): playbook='cli-overcloud-node-provide.yaml', inventory=mock.ANY, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=mock.ANY, extra_vars={ 'node_uuids': nodes } @@ -387,7 +393,7 @@ class TestProvisionNode(fakes.TestOvercloudNode): inventory='localhost,', playbook='cli-overcloud-node-provision.yaml', playbook_dir='/usr/share/ansible/tripleo-playbooks', - verbosity=0, + verbosity=mock.ANY, workdir=mock.ANY ) @@ -438,7 +444,7 @@ class TestUnprovisionNode(fakes.TestOvercloudNode): inventory='localhost,', playbook='cli-overcloud-node-unprovision.yaml', playbook_dir='/usr/share/ansible/tripleo-playbooks', - verbosity=0, + verbosity=mock.ANY, workdir=tmp ), mock.call( @@ -454,7 +460,7 @@ class TestUnprovisionNode(fakes.TestOvercloudNode): inventory='localhost,', playbook='cli-overcloud-node-unprovision.yaml', playbook_dir='/usr/share/ansible/tripleo-playbooks', - verbosity=0, + verbosity=mock.ANY, workdir=tmp ) ]) diff --git a/tripleoclient/tests/v2/overcloud_support/test_overcloud_support.py b/tripleoclient/tests/v2/overcloud_support/test_overcloud_support.py index 6996fc7c5..cecd2abde 100644 --- a/tripleoclient/tests/v2/overcloud_support/test_overcloud_support.py +++ b/tripleoclient/tests/v2/overcloud_support/test_overcloud_support.py @@ -17,6 +17,7 @@ import mock from osc_lib.tests import utils +from tripleoclient.tests import fakes from tripleoclient.v2 import overcloud_support @@ -26,7 +27,10 @@ class TestOvercloudSupportReport(utils.TestCommand): super(TestOvercloudSupportReport, self).setUp() # Get the command object to test - self.cmd = overcloud_support.ReportExecute(self.app, None) + app_args = mock.Mock() + app_args.verbose_level = 1 + self.app.options = fakes.FakeOptions() + self.cmd = overcloud_support.ReportExecute(self.app, app_args) @mock.patch('tripleoclient.utils.run_ansible_playbook', autospec=True) @@ -38,6 +42,7 @@ class TestOvercloudSupportReport(utils.TestCommand): playbook='cli-support-collect-logs.yaml', inventory=mock.ANY, playbook_dir=mock.ANY, + verbosity=3, extra_vars={ 'server_name': 'all', 'sos_destination': '/var/lib/tripleo/support' @@ -55,6 +60,7 @@ class TestOvercloudSupportReport(utils.TestCommand): playbook='cli-support-collect-logs.yaml', inventory=mock.ANY, playbook_dir=mock.ANY, + verbosity=3, extra_vars={ 'server_name': 'server1', 'sos_destination': 'test' diff --git a/tripleoclient/tests/v2/undercloud/test_backup.py b/tripleoclient/tests/v2/undercloud/test_backup.py index f0e4d4509..b606913f3 100644 --- a/tripleoclient/tests/v2/undercloud/test_backup.py +++ b/tripleoclient/tests/v2/undercloud/test_backup.py @@ -18,6 +18,7 @@ import mock from osc_lib.tests import utils from tripleoclient import constants +from tripleoclient.tests import fakes from tripleoclient.v2 import undercloud_backup @@ -27,7 +28,10 @@ class TestUndercloudBackup(utils.TestCommand): super(TestUndercloudBackup, self).setUp() # Get the command object to test - self.cmd = undercloud_backup.BackupUndercloud(self.app, None) + app_args = mock.Mock() + app_args.verbose_level = 1 + self.app.options = fakes.FakeOptions() + self.cmd = undercloud_backup.BackupUndercloud(self.app, app_args) self.app.client_manager.workflow_engine = mock.Mock() self.workflow = self.app.client_manager.workflow_engine @@ -45,6 +49,7 @@ class TestUndercloudBackup(utils.TestCommand): playbook='cli-undercloud-backup.yaml', inventory='localhost,', playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=3, extra_vars={ 'sources_path': '/home/stack/' } @@ -69,6 +74,7 @@ class TestUndercloudBackup(utils.TestCommand): playbook=mock.ANY, inventory=mock.ANY, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=3, extra_vars={'sources_path': '/home/stack/,/tmp/bar.yaml,/tmp/foo.yaml'}) @@ -94,6 +100,7 @@ class TestUndercloudBackup(utils.TestCommand): workdir=mock.ANY, playbook=mock.ANY, inventory=mock.ANY, + verbosity=3, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, extra_vars={'sources_path': '/tmp/foo.yaml'}) @@ -121,6 +128,7 @@ class TestUndercloudBackup(utils.TestCommand): playbook=mock.ANY, inventory=mock.ANY, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=3, extra_vars={'sources_path': '/home/stack/,/tmp/bar.yaml'}) @@ -143,5 +151,6 @@ class TestUndercloudBackup(utils.TestCommand): playbook=mock.ANY, inventory=mock.ANY, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=3, extra_vars={'sources_path': '/home/stack/,/tmp/foo.yaml'}) diff --git a/tripleoclient/tests/workflows/test_baremetal.py b/tripleoclient/tests/workflows/test_baremetal.py index 11389a38f..d7b537e97 100644 --- a/tripleoclient/tests/workflows/test_baremetal.py +++ b/tripleoclient/tests/workflows/test_baremetal.py @@ -91,7 +91,7 @@ class TestBaremetalWorkflows(fakes.FakePlaybookExecution): baremetal.configure_manageable_nodes(self.app.client_manager) def test_clean_nodes_success(self): - baremetal.clean_nodes(self.app.client_manager, node_uuids=[]) + baremetal.clean_nodes(node_uuids=[]) def test_clean_manageable_nodes_success(self): baremetal.clean_manageable_nodes( diff --git a/tripleoclient/tests/workflows/test_parameters.py b/tripleoclient/tests/workflows/test_parameters.py index e65fa905f..6946998ad 100644 --- a/tripleoclient/tests/workflows/test_parameters.py +++ b/tripleoclient/tests/workflows/test_parameters.py @@ -141,6 +141,7 @@ class TestParameterWorkflows(utils.TestCommand): inventory=mock.ANY, workdir=mock.ANY, playbook_dir=mock.ANY, + verbosity=0, extra_vars={'num_phy_cores_per_numa_node_for_pmd': 2} ) ] @@ -179,6 +180,7 @@ class TestParameterWorkflows(utils.TestCommand): inventory=mock.ANY, workdir=mock.ANY, playbook_dir=mock.ANY, + verbosity=0, extra_vars={'num_phy_cores_per_numa_node_for_pmd': 2} ), mock.call( @@ -186,6 +188,7 @@ class TestParameterWorkflows(utils.TestCommand): inventory=mock.ANY, workdir=mock.ANY, playbook_dir='/playbook/dir-1', + verbosity=0, extra_vars={'some_opt': 0} ) ] diff --git a/tripleoclient/tests/workflows/test_plan_management.py b/tripleoclient/tests/workflows/test_plan_management.py index bd70292af..89ac2a929 100644 --- a/tripleoclient/tests/workflows/test_plan_management.py +++ b/tripleoclient/tests/workflows/test_plan_management.py @@ -49,7 +49,7 @@ class TestPlanCreationWorkflows(utils.TestCommand): "generate_passwords": True, "validate": False }, - verbosity=3, + verbosity=0, ) @mock.patch("tripleoclient.utils.run_ansible_playbook", autospec=True) @@ -77,7 +77,7 @@ class TestPlanCreationWorkflows(utils.TestCommand): "generate_passwords": True, "validate": False }, - verbosity=3, + verbosity=0, ) self.assertIn(mock.call('the_roles_file.yaml', '/tht-root/'), @@ -110,7 +110,7 @@ class TestPlanCreationWorkflows(utils.TestCommand): "plan_environment": "the-plan-environment.yaml", "validate": False }, - verbosity=3, + verbosity=0, ) mock_open_context.assert_has_calls( [mock.call('the-plan-environment.yaml', 'rb')]) @@ -141,7 +141,7 @@ class TestPlanCreationWorkflows(utils.TestCommand): "generate_passwords": True, "validate": False }, - verbosity=3, + verbosity=0, ) mock_open_context.assert_has_calls( [mock.call('the-network-data.yaml', 'rb')]) @@ -170,7 +170,7 @@ class TestPlanCreationWorkflows(utils.TestCommand): "generate_passwords": False, "validate": False }, - verbosity=3, + verbosity=0, ) @@ -252,7 +252,7 @@ class TestPlanUpdateWorkflows(base.TestCommand): "generate_passwords": True, "validate": False }, - verbosity=3, + verbosity=1, ) @mock.patch("tripleoclient.utils.run_ansible_playbook", autospec=True) @@ -288,7 +288,7 @@ class TestPlanUpdateWorkflows(base.TestCommand): "generate_passwords": True, "validate": False }, - verbosity=3, + verbosity=1, ) @mock.patch("tripleoclient.utils.run_ansible_playbook", autospec=True) @@ -323,7 +323,7 @@ class TestPlanUpdateWorkflows(base.TestCommand): "generate_passwords": True, "validate": False }, - verbosity=3, + verbosity=1, ) diff --git a/tripleoclient/utils.py b/tripleoclient/utils.py index 1a8baa07e..ae296281f 100644 --- a/tripleoclient/utils.py +++ b/tripleoclient/utils.py @@ -204,6 +204,24 @@ def makedirs(dir_path): return True +def playbook_verbosity(self): + """Return an integer for playbook verbosity levels. + + :param self: Class object used to interpret the runtime state. + :type self: Object + + :returns: Integer + """ + + if self.app.options.debug: + return 3 + else: + if self.app_args.verbose_level <= 1: + return 0 + else: + return self.app_args.verbose_level + + def run_ansible_playbook(playbook, inventory, workdir, playbook_dir=None, connection='smart', output_callback='yaml', ssh_user='root', key=None, module_path=None, diff --git a/tripleoclient/v1/overcloud_admin.py b/tripleoclient/v1/overcloud_admin.py index 8a4386ff5..ac28d8b6c 100644 --- a/tripleoclient/v1/overcloud_admin.py +++ b/tripleoclient/v1/overcloud_admin.py @@ -84,5 +84,6 @@ class Authorize(command.Command): parsed_args.overcloud_ssh_network, parsed_args.overcloud_ssh_user, self.get_key_pair(parsed_args), - parsed_args.overcloud_ssh_port_timeout + parsed_args.overcloud_ssh_port_timeout, + verbosity=oooutils.playbook_verbosity(self=self) ) diff --git a/tripleoclient/v1/overcloud_bios.py b/tripleoclient/v1/overcloud_bios.py index c62740cf4..81867933f 100644 --- a/tripleoclient/v1/overcloud_bios.py +++ b/tripleoclient/v1/overcloud_bios.py @@ -20,6 +20,7 @@ from osc_lib.i18n import _ import yaml from tripleoclient import command +from tripleoclient import utils from tripleoclient.workflows import baremetal @@ -81,11 +82,16 @@ class ConfigureBIOS(command.Command): clients = self.app.client_manager if parsed_args.node_uuids: baremetal.apply_bios_configuration( - clients, node_uuids=parsed_args.node_uuids, - configuration=configuration) + node_uuids=parsed_args.node_uuids, + configuration=configuration, + verbosity=utils.playbook_verbosity(self=self) + ) else: baremetal.apply_bios_configuration_on_manageable_nodes( - clients, configuration=configuration) + clients, + configuration=configuration, + verbosity=utils.playbook_verbosity(self=self) + ) class ResetBIOS(command.Command): @@ -114,6 +120,11 @@ class ResetBIOS(command.Command): clients = self.app.client_manager if parsed_args.node_uuids: baremetal.reset_bios_configuration( - clients, node_uuids=parsed_args.node_uuids) + node_uuids=parsed_args.node_uuids, + verbosity=utils.playbook_verbosity(self=self) + ) else: - baremetal.reset_bios_configuration_on_manageable_nodes(clients) + baremetal.reset_bios_configuration_on_manageable_nodes( + clients=clients, + verbosity=utils.playbook_verbosity(self=self) + ) diff --git a/tripleoclient/v1/overcloud_deploy.py b/tripleoclient/v1/overcloud_deploy.py index 89ed56e54..ef2f151d9 100644 --- a/tripleoclient/v1/overcloud_deploy.py +++ b/tripleoclient/v1/overcloud_deploy.py @@ -222,9 +222,12 @@ class DeployOvercloud(command.Command): # Invokes the workflows specified in plan environment file if plan_env_file: - workflow_params.invoke_plan_env_workflows(self.clients, - stack_name, - plan_env_file) + workflow_params.invoke_plan_env_workflows( + self.clients, + stack_name, + plan_env_file, + verbosity=utils.playbook_verbosity(self=self) + ) workflow_params.check_deprecated_parameters(self.clients, stack_name) @@ -232,12 +235,16 @@ class DeployOvercloud(command.Command): print("Deploying templates in the directory {0}".format( os.path.abspath(tht_root))) deployment.deploy_and_wait( - self.log, self.clients, stack, - stack_name, self.app_args.verbose_level, + log=self.log, + clients=self.clients, + stack=stack, + plan_name=stack_name, + verbose_level=utils.playbook_verbosity(self=self), timeout=timeout, run_validations=run_validations, skip_deploy_identifier=skip_deploy_identifier, - deployment_options=deployment_options) + deployment_options=deployment_options + ) def _process_and_upload_environment(self, container_name, env, moved_files, tht_root): @@ -299,6 +306,7 @@ class DeployOvercloud(command.Command): inventory='localhost,', workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=utils.playbook_verbosity(self=self), extra_vars={ "container": container_name, "parameters": params @@ -397,14 +405,18 @@ class DeployOvercloud(command.Command): parsed_args.plan_environment_file, parsed_args.networks_file, type(self)._keep_env_on_update, - validate_stack=False) + validate_stack=False, + verbosity_level=utils.playbook_verbosity(self=self) + ) else: plan_management.create_plan_from_templates( self.clients, parsed_args.stack, tht_root, parsed_args.roles_file, generate_passwords, parsed_args.plan_environment_file, parsed_args.networks_file, - validate_stack=False) + validate_stack=False, + verbosity_level=utils.playbook_verbosity(self=self) + ) # Get any missing (e.g j2 rendered) files from the plan to tht_root self._download_missing_files_from_plan( @@ -646,9 +658,9 @@ class DeployOvercloud(command.Command): utils.run_ansible_playbook( playbook='cli-overcloud-node-provision.yaml', inventory='localhost,', - verbosity=self.app_args.verbose_level - 1, workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=utils.playbook_verbosity(self=self), extra_vars=extra_vars, ) @@ -677,9 +689,9 @@ class DeployOvercloud(command.Command): utils.run_ansible_playbook( playbook='cli-overcloud-node-unprovision.yaml', inventory='localhost,', - verbosity=self.app_args.verbose_level - 1, workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=utils.playbook_verbosity(self=self), extra_vars={ "stack_name": parsed_args.stack, "baremetal_deployment": roles, @@ -1006,7 +1018,8 @@ class DeployOvercloud(command.Command): parsed_args.overcloud_ssh_network, parsed_args.overcloud_ssh_user, self.get_key_pair(parsed_args), - parsed_args.overcloud_ssh_port_timeout + parsed_args.overcloud_ssh_port_timeout, + verbosity=utils.playbook_verbosity(self=self) ) if parsed_args.config_download_timeout: @@ -1028,7 +1041,7 @@ class DeployOvercloud(command.Command): parsed_args.output_dir, parsed_args.override_ansible_cfg, timeout, - verbosity=self.app_args.verbose_level, + verbosity=utils.playbook_verbosity(self=self), deployment_options=deployment_options, in_flight_validations=parsed_args.inflight ) diff --git a/tripleoclient/v1/overcloud_external_update.py b/tripleoclient/v1/overcloud_external_update.py index 108f2720e..dac1a4897 100644 --- a/tripleoclient/v1/overcloud_external_update.py +++ b/tripleoclient/v1/overcloud_external_update.py @@ -109,7 +109,7 @@ class ExternalUpdateRun(command.Command): parsed_args.stack ), output_dir=ansible_dir, - verbosity=self.app_args.verbose_level, + verbosity=oooutils.playbook_verbosity(self=self), ansible_playbook_name=constants.EXTERNAL_UPDATE_PLAYBOOKS, extra_vars=oooutils.parse_extra_vars( extra_var_strings=parsed_args.extra_vars diff --git a/tripleoclient/v1/overcloud_external_upgrade.py b/tripleoclient/v1/overcloud_external_upgrade.py index a19fdb053..c05ba3fde 100644 --- a/tripleoclient/v1/overcloud_external_upgrade.py +++ b/tripleoclient/v1/overcloud_external_upgrade.py @@ -108,7 +108,7 @@ class ExternalUpgradeRun(command.Command): parsed_args.stack ), output_dir=ansible_dir, - verbosity=self.app_args.verbose_level, + verbosity=oooutils.playbook_verbosity(self=self), ansible_playbook_name=constants.EXTERNAL_UPGRADE_PLAYBOOKS, inventory_path=oooutils.get_tripleo_ansible_inventory( parsed_args.static_inventory, diff --git a/tripleoclient/v1/overcloud_ffwd_upgrade.py b/tripleoclient/v1/overcloud_ffwd_upgrade.py index 47f19915d..a7f68dbc6 100644 --- a/tripleoclient/v1/overcloud_ffwd_upgrade.py +++ b/tripleoclient/v1/overcloud_ffwd_upgrade.py @@ -92,7 +92,8 @@ class FFWDUpgradePrepare(DeployOvercloud): parsed_args.overcloud_ssh_network, parsed_args.overcloud_ssh_user, self.get_key_pair(parsed_args), - parsed_args.overcloud_ssh_port_timeout + parsed_args.overcloud_ssh_port_timeout, + verbosity=oooutils.playbook_verbosity(self=self) ) self.log.info("FFWD Upgrade Prepare on stack {0} complete.".format( @@ -161,7 +162,7 @@ class FFWDUpgradeRun(command.Command): parsed_args.stack ), output_dir=ansible_dir, - verbosity=self.app_args.verbose_level, + verbosity=oooutils.playbook_verbosity(self=self), ansible_playbook_name=constants.FFWD_UPGRADE_PLAYBOOK, inventory_path=oooutils.get_tripleo_ansible_inventory( parsed_args.static_inventory, diff --git a/tripleoclient/v1/overcloud_node.py b/tripleoclient/v1/overcloud_node.py index f323199db..f6bbe9512 100644 --- a/tripleoclient/v1/overcloud_node.py +++ b/tripleoclient/v1/overcloud_node.py @@ -95,9 +95,9 @@ class DeleteNode(command.Command): oooutils.run_ansible_playbook( playbook='cli-overcloud-node-unprovision.yaml', inventory='localhost,', - verbosity=self.app_args.verbose_level - 1, workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=oooutils.playbook_verbosity(self=self), extra_vars={ "stack_name": parsed_args.stack, "baremetal_deployment": roles, @@ -169,7 +169,8 @@ class DeleteNode(command.Command): clients=clients, stack=stack, nodes=nodes, - timeout=parsed_args.timeout + timeout=parsed_args.timeout, + verbosity=oooutils.playbook_verbosity(self=self) ) if parsed_args.baremetal_deployment: @@ -177,9 +178,9 @@ class DeleteNode(command.Command): oooutils.run_ansible_playbook( playbook='cli-overcloud-node-unprovision.yaml', inventory='localhost,', - verbosity=self.app_args.verbose_level - 1, workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=oooutils.playbook_verbosity(self=self), extra_vars={ "stack_name": parsed_args.stack, "baremetal_deployment": roles, @@ -248,10 +249,15 @@ class CleanNode(command.Command): nodes = parsed_args.node_uuids if nodes: - baremetal.clean_nodes(self.app.client_manager, - node_uuids=parsed_args.node_uuids) + baremetal.clean_nodes( + node_uuids=parsed_args.node_uuids, + verbosity=oooutils.playbook_verbosity(self=self) + ) else: - baremetal.clean_manageable_nodes(self.app.client_manager) + baremetal.clean_manageable_nodes( + clients=self.app.client_manager, + verbosity=oooutils.playbook_verbosity(self=self) + ) if parsed_args.provide: if nodes: diff --git a/tripleoclient/v1/overcloud_parameters.py b/tripleoclient/v1/overcloud_parameters.py index 71246b205..95a314e19 100644 --- a/tripleoclient/v1/overcloud_parameters.py +++ b/tripleoclient/v1/overcloud_parameters.py @@ -60,6 +60,7 @@ class SetParameters(command.Command): inventory='localhost,', workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=utils.playbook_verbosity(self=self), extra_vars={ "container": parsed_args.name, "parameters": params diff --git a/tripleoclient/v1/overcloud_plan.py b/tripleoclient/v1/overcloud_plan.py index 38df0b5b1..ce3aaed4c 100644 --- a/tripleoclient/v1/overcloud_plan.py +++ b/tripleoclient/v1/overcloud_plan.py @@ -127,14 +127,18 @@ class CreatePlan(command.Command): clients, name, parsed_args.templates, generate_passwords=generate_passwords, plan_env_file=parsed_args.plan_environment_file, - validate_stack=False) + validate_stack=False, + verbosity_level=utils.playbook_verbosity(self=self) + ) else: plan_management.create_deployment_plan( - clients, container=name, + container=name, generate_passwords=generate_passwords, source_url=source_url, use_default_templates=use_default_templates, - validate_stack=False) + validate_stack=False, + verbosity_level=utils.playbook_verbosity(self=self) + ) class DeployPlan(command.Command): @@ -163,10 +167,15 @@ class DeployPlan(command.Command): stack = utils.get_stack(orchestration_client, parsed_args.name) print("Starting to deploy plan: {}".format(parsed_args.name)) - deployment.deploy_and_wait(self.log, clients, stack, parsed_args.name, - self.app_args.verbose_level, - timeout=parsed_args.timeout, - run_validations=parsed_args.run_validations) + deployment.deploy_and_wait( + log=self.log, + clients=clients, + stack=stack, + plan_name=parsed_args.name, + verbose_level=utils.playbook_verbosity(self=self), + timeout=parsed_args.timeout, + run_validations=parsed_args.run_validations, + ) class ExportPlan(command.Command): diff --git a/tripleoclient/v1/overcloud_raid.py b/tripleoclient/v1/overcloud_raid.py index 55d9901a3..2fee463c2 100644 --- a/tripleoclient/v1/overcloud_raid.py +++ b/tripleoclient/v1/overcloud_raid.py @@ -20,6 +20,7 @@ from osc_lib.i18n import _ import yaml from tripleoclient import command +from tripleoclient import utils from tripleoclient.workflows import baremetal @@ -70,7 +71,9 @@ class CreateRAID(command.Command): _('Logical disks list is expected to be a list of objects, ' 'got %r instead') % disks) - clients = self.app.client_manager - baremetal.create_raid_configuration(clients, - node_uuids=parsed_args.node, - configuration=configuration) + baremetal.create_raid_configuration( + clients=self.app.client_manager, + node_uuids=parsed_args.node, + configuration=configuration, + verbosity=utils.playbook_verbosity(self=self) + ) diff --git a/tripleoclient/v1/overcloud_update.py b/tripleoclient/v1/overcloud_update.py index 6676da0d6..3dadb5c03 100644 --- a/tripleoclient/v1/overcloud_update.py +++ b/tripleoclient/v1/overcloud_update.py @@ -160,7 +160,7 @@ class UpdateRun(command.Command): parsed_args.stack ), output_dir=ansible_dir, - verbosity=self.app_args.verbose_level, + verbosity=oooutils.playbook_verbosity(self=self), ansible_playbook_name=playbook, inventory_path=oooutils.get_tripleo_ansible_inventory( parsed_args.static_inventory, diff --git a/tripleoclient/v1/overcloud_upgrade.py b/tripleoclient/v1/overcloud_upgrade.py index 9460bb425..ceba4b87d 100644 --- a/tripleoclient/v1/overcloud_upgrade.py +++ b/tripleoclient/v1/overcloud_upgrade.py @@ -88,7 +88,8 @@ class UpgradePrepare(DeployOvercloud): parsed_args.overcloud_ssh_network, parsed_args.overcloud_ssh_user, self.get_key_pair(parsed_args), - parsed_args.overcloud_ssh_port_timeout + parsed_args.overcloud_ssh_port_timeout, + verbosity=oooutils.playbook_verbosity(self=self) ) self.log.info("Completed Overcloud Upgrade Prepare for stack " @@ -214,7 +215,7 @@ class UpgradeRun(command.Command): parsed_args.stack ), output_dir=ansible_dir, - verbosity=self.app_args.verbose_level, + verbosity=oooutils.playbook_verbosity(self=self), ansible_playbook_name=playbook, inventory_path=oooutils.get_tripleo_ansible_inventory( parsed_args.static_inventory, diff --git a/tripleoclient/v1/tripleo_deploy.py b/tripleoclient/v1/tripleo_deploy.py index c413f6dbe..f620a0b29 100644 --- a/tripleoclient/v1/tripleo_deploy.py +++ b/tripleoclient/v1/tripleo_deploy.py @@ -1319,6 +1319,7 @@ class Deploy(command.Command): 'inventory.yaml' ), workdir=self.ansible_dir, + verbosity=utils.playbook_verbosity(self=self), extra_env_variables=extra_env_var, fail_on_rc=False, **operation diff --git a/tripleoclient/v1/undercloud_preflight.py b/tripleoclient/v1/undercloud_preflight.py index 52333b895..5b44c2fd1 100644 --- a/tripleoclient/v1/undercloud_preflight.py +++ b/tripleoclient/v1/undercloud_preflight.py @@ -75,7 +75,7 @@ def _run_live_command(args, env=None, name=None, cwd=None, wait=True): raise RuntimeError(message) -def _check_diskspace(upgrade=False): +def _check_diskspace(upgrade=False, verbose_level=0): """Check undercloud disk space This runs a simple ansible playbook located in tripleo-validations @@ -97,6 +97,7 @@ def _check_diskspace(upgrade=False): connection='local', output_callback='validation_output', playbook_dir=constants.ANSIBLE_VALIDATION_DIR, + verbosity=verbose_level, **playbook_args ) @@ -492,7 +493,7 @@ def check(verbose_level, upgrade=False): _checking_status('Memory') _check_memory() _checking_status('Disk space') - _check_diskspace(upgrade) + _check_diskspace(upgrade, verbose_level) _checking_status('Sysctl') _check_sysctl() _checking_status('Password file') diff --git a/tripleoclient/v2/overcloud_delete.py b/tripleoclient/v2/overcloud_delete.py index fdd4d3215..a72e096cc 100644 --- a/tripleoclient/v2/overcloud_delete.py +++ b/tripleoclient/v2/overcloud_delete.py @@ -62,10 +62,11 @@ class DeleteOvercloud(command.Command): "cli-overcloud-delete.yaml", 'undercloud,', constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=utils.playbook_verbosity(self=self), extra_vars={ "stack_name": parsed_args.stack - }, - verbosity=3 if self.app.options.debug else 1 + } + ) print("Success.") diff --git a/tripleoclient/v2/overcloud_node.py b/tripleoclient/v2/overcloud_node.py index 655b181e9..f53ad2b70 100644 --- a/tripleoclient/v2/overcloud_node.py +++ b/tripleoclient/v2/overcloud_node.py @@ -122,12 +122,13 @@ class ImportNode(command.Command): inventory='localhost,', workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=oooutils.playbook_verbosity(self=self), extra_vars=extra_vars ) if parsed_args.provide: baremetal.provide( - self.app.client_manager, + verbosity=oooutils.playbook_verbosity(self=self), node_uuids=nodes_uuids ) @@ -172,14 +173,16 @@ class IntrospectNode(command.Command): baremetal.introspect_manageable_nodes( self.app.client_manager, run_validations=parsed_args.run_validations, - concurrency=parsed_args.concurrency + concurrency=parsed_args.concurrency, + verbosity=oooutils.playbook_verbosity(self=self) ) else: baremetal.introspect( self.app.client_manager, node_uuids=parsed_args.node_uuids, run_validations=parsed_args.run_validations, - concurrency=parsed_args.concurrency + concurrency=parsed_args.concurrency, + verbosity=oooutils.playbook_verbosity(self=self) ) # NOTE(cloudnull): This is using the old provide function, in a future @@ -191,7 +194,10 @@ class IntrospectNode(command.Command): node_uuids=parsed_args.node_uuids, ) else: - baremetal.provide_manageable_nodes(self.app.client_manager) + baremetal.provide_manageable_nodes( + clients=self.app.client_manager, + verbosity=oooutils.playbook_verbosity(self=self) + ) class ProvisionNode(command.Command): @@ -258,9 +264,9 @@ class ProvisionNode(command.Command): oooutils.run_ansible_playbook( playbook='cli-overcloud-node-provision.yaml', inventory='localhost,', - verbosity=self.app_args.verbose_level - 1, workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=oooutils.playbook_verbosity(self=self), extra_vars=extra_vars, ) @@ -308,9 +314,9 @@ class UnprovisionNode(command.Command): oooutils.run_ansible_playbook( playbook='cli-overcloud-node-unprovision.yaml', inventory='localhost,', - verbosity=self.app_args.verbose_level - 1, workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=oooutils.playbook_verbosity(self=self), extra_vars={ "stack_name": parsed_args.stack, "baremetal_deployment": roles, @@ -336,9 +342,9 @@ class UnprovisionNode(command.Command): oooutils.run_ansible_playbook( playbook='cli-overcloud-node-unprovision.yaml', inventory='localhost,', - verbosity=self.app_args.verbose_level - 1, workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=oooutils.playbook_verbosity(self=self), extra_vars={ "stack_name": parsed_args.stack, "baremetal_deployment": roles, diff --git a/tripleoclient/v2/overcloud_support.py b/tripleoclient/v2/overcloud_support.py index 4c852ec58..647c75b10 100644 --- a/tripleoclient/v2/overcloud_support.py +++ b/tripleoclient/v2/overcloud_support.py @@ -93,5 +93,6 @@ class ReportExecute(command.Command): inventory=constants.ANSIBLE_INVENTORY, workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=utils.playbook_verbosity(self=self), extra_vars=extra_vars ) diff --git a/tripleoclient/v2/undercloud_backup.py b/tripleoclient/v2/undercloud_backup.py index dd2b1b438..155911ecb 100644 --- a/tripleoclient/v2/undercloud_backup.py +++ b/tripleoclient/v2/undercloud_backup.py @@ -90,6 +90,7 @@ class BackupUndercloud(command.Command): inventory='localhost,', workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=utils.playbook_verbosity(self=self), extra_vars=extra_vars ) diff --git a/tripleoclient/workflows/baremetal.py b/tripleoclient/workflows/baremetal.py index d439c67b8..70512f736 100644 --- a/tripleoclient/workflows/baremetal.py +++ b/tripleoclient/workflows/baremetal.py @@ -113,11 +113,11 @@ def _format_errors(payload): return '\n'.join(errors) -def provide(clients, node_uuids): +def provide(verbosity, node_uuids): """Provide Baremetal Nodes - :param clients: Application client object. - :type clients: Object + :param verbosity: Verbosity level + :type verbosity: Integer :param node_uuids: List of instance UUID(s). :type node_uuids: List @@ -129,6 +129,7 @@ def provide(clients, node_uuids): inventory='localhost,', workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=verbosity, extra_vars={ 'node_uuids': node_uuids } @@ -137,18 +138,18 @@ def provide(clients, node_uuids): print('Successfully provided nodes: {}'.format(node_uuids)) -def provide_manageable_nodes(clients): +def provide_manageable_nodes(clients, verbosity=0): """Provide all manageable Nodes :param clients: Application client object. :type clients: Object - :param node_uuids: List of instance UUID(s). - :type node_uuids: List + :param verbosity: Verbosity level + :type verbosity: Integer """ provide( - clients, + verbosity=verbosity, node_uuids=[ i.uuid for i in clients.baremetal.node.list() if i.provision_state == "manageable" and not i.maintenance @@ -156,10 +157,24 @@ def provide_manageable_nodes(clients): ) -def introspect(clients, node_uuids, run_validations, concurrency): +def introspect(clients, node_uuids, run_validations, concurrency, + verbosity=0): """Introspect Baremetal Nodes - Run the tripleo.baremetal.v1.introspect Mistral workflow. + :param clients: Application client object. + :type clients: Object + + :param node_uuids: List of instance UUID(s). + :type node_uuids: List + + :param run_validations: Enable or disable validations + :type run_validations: Boolean + + :param concurrency: concurrency level + :type concurrency: Integer + + :param verbosity: Verbosity level + :type verbosity: Integer """ with utils.TempDirs() as tmp: @@ -168,6 +183,7 @@ def introspect(clients, node_uuids, run_validations, concurrency): inventory='localhost,', workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=verbosity, extra_vars={ "node_uuids": node_uuids, "run_validations": run_validations, @@ -178,10 +194,21 @@ def introspect(clients, node_uuids, run_validations, concurrency): print('Successfully introspected nodes: {}'.format(node_uuids)) -def introspect_manageable_nodes(clients, run_validations, concurrency): +def introspect_manageable_nodes(clients, run_validations, concurrency, + verbosity=0): """Introspect all manageable nodes - Run the tripleo.baremetal.v1.introspect_manageable_nodes Mistral workflow. + :param clients: Application client object. + :type clients: Object + + :param verbosity: Enable or disable validations + :type verbosity: Boolean + + :param verbosity: concurrency level + :type verbosity: Integer + + :param verbosity: Verbosity level + :type verbosity: Integer """ introspect( @@ -191,7 +218,8 @@ def introspect_manageable_nodes(clients, run_validations, concurrency): if i.provision_state == "manageable" and not i.maintenance ], run_validations=run_validations, - concurrency=concurrency + concurrency=concurrency, + verbosity=verbosity ) @@ -296,7 +324,8 @@ def configure_manageable_nodes(clients, kernel_name='bm-deploy-kernel', ) -def create_raid_configuration(clients, node_uuids, configuration): +def create_raid_configuration(clients, node_uuids, configuration, + verbosity=0): """Create RAID configuration on nodes. :param clients: application client object. @@ -305,8 +334,11 @@ def create_raid_configuration(clients, node_uuids, configuration): :param node_uuids: List of instance UUID(s). :type node_uuids: List - :param node_uuids: List of instance UUID(s). - :type node_uuids: List + :param configuration: RAID configuration object. + :type configuration: Object + + :param verbosity: Verbosity level + :type verbosity: Integer """ with utils.TempDirs() as tmp: @@ -315,6 +347,7 @@ def create_raid_configuration(clients, node_uuids, configuration): inventory='localhost,', workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=verbosity, extra_vars={ 'node_uuids': node_uuids, 'raid_configuration': configuration @@ -389,14 +422,14 @@ def discover_and_enroll(clients, ip_addresses, credentials, kernel_name, ) -def clean_nodes(clients, node_uuids): +def clean_nodes(node_uuids, verbosity=0): """Clean Baremetal Nodes - :param clients: application client object. - :type clients: Object - :param node_uuids: List of instance UUID(s). :type node_uuids: List + + :param verbosity: Verbosity level + :type verbosity: Integer """ with utils.TempDirs() as tmp: @@ -405,6 +438,7 @@ def clean_nodes(clients, node_uuids): inventory='localhost,', workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=verbosity, extra_vars={ 'node_uuids': node_uuids } @@ -413,26 +447,36 @@ def clean_nodes(clients, node_uuids): print('Successfully cleaned nodes: {}'.format(node_uuids)) -def clean_manageable_nodes(clients): +def clean_manageable_nodes(clients, verbosity=0): """Clean all manageable Nodes :param clients: application client object. :type clients: Object + + :param verbosity: Verbosity level + :type verbosity: Integer """ clean_nodes( - clients=clients, node_uuids=[ i.uuid for i in clients.baremetal.node.list() if i.provision_state == "manageable" and not i.maintenance - ] + ], + verbosity=verbosity ) -def apply_bios_configuration(clients, node_uuids, configuration): +def apply_bios_configuration(node_uuids, configuration, verbosity=0): """Apply BIOS settings on nodes. - Run the tripleo.baremetal.v1.apply_bios_settings Mistral workflow. + :param node_uuids: List of instance UUID(s). + :type node_uuids: List + + :param configuration: BIOS configuration object. + :type configuration: Object + + :param verbosity: Verbosity level + :type verbosity: Integer """ print('Applying BIOS settings for given nodes, this may take time') @@ -443,6 +487,7 @@ def apply_bios_configuration(clients, node_uuids, configuration): inventory='localhost,', workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=verbosity, extra_vars={ 'node_uuids': node_uuids, 'bios_configuration': configuration @@ -452,31 +497,38 @@ def apply_bios_configuration(clients, node_uuids, configuration): print('Successfully applied the BIOS for nodes: {}'.format(node_uuids)) -def apply_bios_configuration_on_manageable_nodes(clients, configuration): +def apply_bios_configuration_on_manageable_nodes(clients, configuration, + verbosity=0): """Apply BIOS settings on manageable nodes. - Run the tripleo.baremetal.v1.apply_bios_settings_on_manageable_nodes - Mistral workflow. - """ - - apply_bios_configuration( - clients=clients, - node_uuids=[ - i.uuid for i in clients.baremetal.node.list() - if i.provision_state == "manageable" and not i.maintenance - ], - configuration=configuration - ) - - -def reset_bios_configuration(clients, node_uuids): - """Reset BIOS settings on nodes. - :param clients: application client object. :type clients: Object + :param configuration: BIOS configuration object. + :type configuration: Object + + :param verbosity: Verbosity level + :type verbosity: Integer + """ + + apply_bios_configuration( + node_uuids=[ + i.uuid for i in clients.baremetal.node.list() + if i.provision_state == "manageable" and not i.maintenance + ], + configuration=configuration, + verbosity=verbosity + ) + + +def reset_bios_configuration(node_uuids, verbosity=0): + """Reset BIOS settings on nodes. + :param node_uuids: List of instance UUID(s). :type node_uuids: List + + :param verbosity: Verbosity level + :type verbosity: Integer """ with utils.TempDirs() as tmp: @@ -485,6 +537,7 @@ def reset_bios_configuration(clients, node_uuids): inventory='localhost,', workdir=tmp, playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=verbosity, extra_vars={ 'node_uuids': node_uuids } @@ -493,17 +546,20 @@ def reset_bios_configuration(clients, node_uuids): print('Successfully reset the BIOS for nodes: {}'.format(node_uuids)) -def reset_bios_configuration_on_manageable_nodes(clients, **workflow_input): +def reset_bios_configuration_on_manageable_nodes(clients, verbosity=0): """Reset BIOS settings on manageable nodes. :param clients: application client object. :type clients: Object + + :param verbosity: Verbosity level + :type verbosity: Integer """ reset_bios_configuration( - clients=clients, node_uuids=[ i.uuid for i in clients.baremetal.node.list() if i.provision_state == "manageable" and not i.maintenance ], + verbosity=verbosity ) diff --git a/tripleoclient/workflows/deployment.py b/tripleoclient/workflows/deployment.py index d2f43f24e..b8c10580b 100644 --- a/tripleoclient/workflows/deployment.py +++ b/tripleoclient/workflows/deployment.py @@ -33,18 +33,37 @@ from tripleoclient import utils _WORKFLOW_TIMEOUT = 360 # 6 * 60 seconds -def deploy(log, clients, **workflow_input): +def deploy(container, run_validations, skip_deploy_identifier, + timeout, verbosity=0): + """Run the deployment playbook. + + :param container: Name of the container + :type container: String + + :param run_validations: Enable or disable validations + :type run_validations: Boolean + + :param skip_deploy_identifier: Enable or disable validations + :type skip_deploy_identifier: Boolean + + :param timeout: Timeout + :type timeout: Integer + + :param verbosity: Verbosity level + :type verbosity: Integer + """ + utils.run_ansible_playbook( "cli-deploy-deployment-plan.yaml", 'undercloud,', ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=verbosity, extra_vars={ - "container": workflow_input['container'], - "run_validations": workflow_input['run_validations'], - "skip_deploy_identifier": workflow_input['skip_deploy_identifier'], - "timeout_mins": workflow_input['timeout'], - }, - verbosity=3 + "container": container, + "run_validations": run_validations, + "skip_deploy_identifier": skip_deploy_identifier, + "ansible_timeout": timeout, + } ) print("Success.") @@ -72,17 +91,13 @@ def deploy_and_wait(log, clients, stack, plan_name, verbose_level, marker = events[0].id if events else None action = 'UPDATE' - workflow_input = { - "container": plan_name, - "run_validations": run_validations, - "skip_deploy_identifier": skip_deploy_identifier, - "timeout": timeout - } - - if timeout is not None: - workflow_input['timeout'] = timeout - - deploy(log, clients, **workflow_input) + deploy( + container=plan_name, + run_validations=run_validations, + skip_deploy_identifier=skip_deploy_identifier, + timeout=timeout, + verbosity=verbose_level + ) verbose_events = verbose_level >= 1 @@ -136,7 +151,8 @@ def get_overcloud_hosts(stack, ssh_network): def get_hosts_and_enable_ssh_admin(stack, overcloud_ssh_network, overcloud_ssh_user, overcloud_ssh_key, - overcloud_ssh_port_timeout): + overcloud_ssh_port_timeout, + verbosity=0): """Enable ssh admin access. Get a list of hosts from a given stack and enable admin ssh across all of @@ -156,6 +172,9 @@ def get_hosts_and_enable_ssh_admin(stack, overcloud_ssh_network, :param overcloud_ssh_port_timeout: Ansible connection timeout :type overcloud_ssh_port_timeout: Int + + :param verbosity: Verbosity level + :type verbosity: Integer """ hosts = get_overcloud_hosts(stack, overcloud_ssh_network) @@ -165,7 +184,8 @@ def get_hosts_and_enable_ssh_admin(stack, overcloud_ssh_network, hosts, overcloud_ssh_user, overcloud_ssh_key, - overcloud_ssh_port_timeout + overcloud_ssh_port_timeout, + verbosity=verbosity ) else: raise exceptions.DeploymentError( @@ -176,7 +196,8 @@ def get_hosts_and_enable_ssh_admin(stack, overcloud_ssh_network, ) -def enable_ssh_admin(stack, hosts, ssh_user, ssh_key, timeout): +def enable_ssh_admin(stack, hosts, ssh_user, ssh_key, timeout, + verbosity=0): """Run enable ssh admin access playbook. :param stack: Stack data. @@ -193,6 +214,9 @@ def enable_ssh_admin(stack, hosts, ssh_user, ssh_key, timeout): :param timeout: Ansible connection timeout :type timeout: int + + :param verbosity: Verbosity level + :type verbosity: Integer """ print( @@ -213,6 +237,7 @@ def enable_ssh_admin(stack, hosts, ssh_user, ssh_key, timeout): playbook_dir=ANSIBLE_TRIPLEO_PLAYBOOKS, key=ssh_key, ssh_user=ssh_user, + verbosity=verbosity, extra_vars={ "ssh_user": ssh_user, "ssh_servers": hosts, @@ -225,7 +250,7 @@ def enable_ssh_admin(stack, hosts, ssh_user, ssh_key, timeout): def config_download(log, clients, stack, ssh_network=None, output_dir=None, override_ansible_cfg=None, - timeout=None, verbosity=1, deployment_options=None, + timeout=None, verbosity=0, deployment_options=None, in_flight_validations=False, ansible_playbook_name='deploy_steps_playbook.yaml', limit_list=None, extra_vars=None, inventory_path=None, @@ -339,6 +364,7 @@ def config_download(log, clients, stack, ssh_network=None, inventory='localhost,', workdir=tmp, playbook_dir=ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=verbosity, extra_vars={ 'access_path': output_dir, 'execution_user': getpass.getuser() @@ -498,7 +524,7 @@ def config_download_export(clients, plan, config_type): object_name='{}.tar.gz'.format(container_config)) -def get_horizon_url(stack): +def get_horizon_url(stack, verbosity=0): """Return horizon URL string. :params stack: Stack name @@ -513,6 +539,7 @@ def get_horizon_url(stack): inventory='localhost,', workdir=tmp, playbook_dir=ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=verbosity, extra_vars={ 'stack_name': stack, 'horizon_url_output_file': horizon_tmp_file diff --git a/tripleoclient/workflows/parameters.py b/tripleoclient/workflows/parameters.py index a18dff2fd..06a249be4 100644 --- a/tripleoclient/workflows/parameters.py +++ b/tripleoclient/workflows/parameters.py @@ -28,7 +28,8 @@ from tripleoclient.workflows import roles LOG = logging.getLogger(__name__) -def invoke_plan_env_workflows(clients, stack_name, plan_env_file): +def invoke_plan_env_workflows(clients, stack_name, plan_env_file, + verbosity=0): """Invokes the workflows in plan environment file""" try: @@ -65,6 +66,7 @@ def invoke_plan_env_workflows(clients, stack_name, plan_env_file): inventory=static_inventory, workdir=tmp, playbook_dir=playbook_dir, + verbosity=verbosity, extra_vars=pb_vars ) diff --git a/tripleoclient/workflows/plan_management.py b/tripleoclient/workflows/plan_management.py index 3b689a70e..d23aefcdf 100644 --- a/tripleoclient/workflows/plan_management.py +++ b/tripleoclient/workflows/plan_management.py @@ -64,22 +64,25 @@ def _upload_templates(swift_client, container_name, tht_root, roles_file=None, constants.PLAN_ENVIRONMENT, plan_env_file) -def create_deployment_plan(clients, **workflow_input): +def create_deployment_plan(container, generate_passwords, + use_default_templates=False, source_url=None, + validate_stack=True, verbosity_level=0, + plan_env_file=None): extra_vars = { - "container": workflow_input['container'], - "validate": workflow_input['validate_stack'], - "generate_passwords": workflow_input["generate_passwords"]} + "container": container, + "validate": validate_stack, + "generate_passwords": generate_passwords + } - if 'plan_env_file' in workflow_input and workflow_input[ - 'plan_env_file'] is not None: - extra_vars.update(plan_environment=workflow_input['plan_env_file']) + if plan_env_file: + extra_vars['plan_environment'] = plan_env_file utils.run_ansible_playbook( "cli-create-deployment-plan.yaml", 'undercloud,', constants.ANSIBLE_TRIPLEO_PLAYBOOKS, extra_vars=extra_vars, - verbosity=3 + verbosity=verbosity_level ) print("Success.") @@ -102,7 +105,7 @@ def delete_deployment_plan(clients, container): raise RuntimeError(result) -def update_deployment_plan(clients, **workflow_input): +def update_deployment_plan(clients, verbosity_level=0, **workflow_input): utils.run_ansible_playbook( "cli-update-deployment-plan.yaml", 'undercloud,', @@ -112,7 +115,7 @@ def update_deployment_plan(clients, **workflow_input): "validate": workflow_input['validate_stack'], "generate_passwords": workflow_input["generate_passwords"], }, - verbosity=3 + verbosity=verbosity_level ) print("Success.") @@ -125,7 +128,8 @@ def list_deployment_plans(clients): def create_plan_from_templates(clients, name, tht_root, roles_file=None, generate_passwords=True, plan_env_file=None, - networks_file=None, validate_stack=True): + networks_file=None, validate_stack=True, + verbosity_level=0): swift_client = clients.tripleoclient.object_store print("Creating Swift container to store the plan") @@ -137,10 +141,11 @@ def create_plan_from_templates(clients, name, tht_root, roles_file=None, plan_env_file, networks_file) try: - create_deployment_plan(clients, container=name, + create_deployment_plan(container=name, generate_passwords=generate_passwords, plan_env_file=plan_env_file, - validate_stack=validate_stack) + validate_stack=validate_stack, + verbosity_level=verbosity_level) except exceptions.WorkflowServiceError: swiftutils.delete_container(swift_client, name) raise @@ -149,7 +154,7 @@ def create_plan_from_templates(clients, name, tht_root, roles_file=None, def update_plan_from_templates(clients, name, tht_root, roles_file=None, generate_passwords=True, plan_env_file=None, networks_file=None, keep_env=False, - validate_stack=True): + validate_stack=True, verbosity_level=1): swift_client = clients.tripleoclient.object_store passwords = None keep_file_contents = {} @@ -204,7 +209,8 @@ def update_plan_from_templates(clients, name, tht_root, roles_file=None, update_deployment_plan(clients, container=name, generate_passwords=generate_passwords, source_url=None, - validate_stack=validate_stack) + validate_stack=validate_stack, + verbosity_level=verbosity_level) def _load_content_or_file(swift_client, container, remote_and_local_map): diff --git a/tripleoclient/workflows/scale.py b/tripleoclient/workflows/scale.py index feb28a621..d9e590b8d 100644 --- a/tripleoclient/workflows/scale.py +++ b/tripleoclient/workflows/scale.py @@ -20,7 +20,7 @@ from tripleoclient import utils from tripleoclient.workflows import deployment -def scale_down(log, clients, stack, nodes, timeout=None): +def scale_down(log, clients, stack, nodes, timeout=None, verbosity=0): """Unprovision and deletes overcloud nodes from a heat stack. :param log: Logging object @@ -40,6 +40,9 @@ def scale_down(log, clients, stack, nodes, timeout=None): :param timeout: Timeout to use when deleting nodes. If timeout is None it will be set to 240. :type timeout: Integer + + :param verbosity: Verbosity level + :type verbosity: Integer """ if not timeout: @@ -59,7 +62,8 @@ def scale_down(log, clients, stack, nodes, timeout=None): stack=stack, timeout=timeout, ansible_playbook_name='scale_playbook.yaml', - limit_list=limit_list + limit_list=limit_list, + verbosity=verbosity ) print('Running scale down')