From 7dc140b74dc34f0c7c29429728dfce1edb1fc65a Mon Sep 17 00:00:00 2001 From: Juan Badia Payno Date: Wed, 13 Oct 2021 12:42:38 +0200 Subject: [PATCH] bnr CLI enable the conf. of ReaR with ironic on nodes Let the CLI configure ReaR on the overcloud nodes with ironic. Change-Id: I9ecb18c713addbafbb004a57439b99aa9aab7520 Depends-On: I958439e017efa45f316750a61fd7dfdee5afdc8e (cherry picked from commit dc26adb0a5babb3ca71cf0156b5253dbef3e6961) --- .../tests/v1/overcloud_backup/test_backup.py | 29 +++++++++++++++++++ tripleoclient/v1/overcloud_backup.py | 26 +++++++++++++++-- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/tripleoclient/tests/v1/overcloud_backup/test_backup.py b/tripleoclient/tests/v1/overcloud_backup/test_backup.py index fe2f8ee9b..7231b4a75 100644 --- a/tripleoclient/tests/v1/overcloud_backup/test_backup.py +++ b/tripleoclient/tests/v1/overcloud_backup/test_backup.py @@ -182,6 +182,35 @@ class TestOvercloudBackup(utils.TestCommand): extra_vars={} ) + @mock.patch('os.path.isfile') + @mock.patch('os.access') + @mock.patch('tripleoclient.utils.run_ansible_playbook', + autospec=True) + def test_overcloud_backup_setup_rear_ironic(self, + mock_playbook, + mock_access, + mock_isfile): + arglist = [ + '--setup-ironic', + ] + verifylist = [] + mock_isfile.return_value = True + mock_access.return_value = True + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + self.cmd.take_action(parsed_args) + mock_playbook.assert_called_once_with( + workdir=mock.ANY, + playbook='cli-overcloud-conf-ironic.yaml', + inventory=parsed_args.inventory, + tags='bar_setup_rear', + skip_tags=None, + playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS, + verbosity=3, + extra_vars={} + ) + @mock.patch('tripleoclient.utils.run_ansible_playbook', autospec=True) def test_overcloud_backup_setup_nfs_rear_with_inventory(self, mock_playbook): diff --git a/tripleoclient/v1/overcloud_backup.py b/tripleoclient/v1/overcloud_backup.py index d03a0f82c..a0b2e141d 100644 --- a/tripleoclient/v1/overcloud_backup.py +++ b/tripleoclient/v1/overcloud_backup.py @@ -43,14 +43,14 @@ class BackupOvercloud(command.Command): nargs='?', action='store', help=_("Initialize environment for backup, " - "using 'rear' or 'nfs' as args " + "using 'rear', 'nfs' or 'ironic' as args " "which will check for package install " "and configured ReaR or NFS server. " "Defaults to: rear. " "i.e. --init rear. " "WARNING: This flag will be deprecated " - "and replaced by '--setup-rear' and " - "'--setup-nfs'.") + "and replaced by '--setup-rear' ," + "'--setup-nfs' and '--setup-ironic'.") ) parser.add_argument( @@ -71,6 +71,14 @@ class BackupOvercloud(command.Command): "install and configure ReaR.") ) + parser.add_argument( + '--setup-ironic', + default=False, + action='store_true', + help=_("Setup ReaR on the overcloud 'Controller' hosts which will " + "install and configure ReaR with ironic") + ) + parser.add_argument( '--cron', default=False, @@ -175,6 +183,17 @@ class BackupOvercloud(command.Command): extra_vars=extra_vars ) + if parsed_args.setup_ironic is True or parsed_args.init == 'ironic': + + LOG.debug(_('Installing and configuring Rear/Ironic on nodes')) + self._run_ansible_playbook( + playbook='cli-overcloud-conf-ironic.yaml', + inventory=parsed_args.inventory, + tags='bar_setup_rear', + skip_tags=None, + extra_vars=extra_vars + ) + if parsed_args.cron is True: LOG.debug(_('Programming cron backup')) @@ -188,6 +207,7 @@ class BackupOvercloud(command.Command): if (parsed_args.setup_nfs is False and parsed_args.setup_rear is False and + parsed_args.setup_ironic is False and parsed_args.cron is False and parsed_args.init is None):