From 4321471a13eb949c2f5d57784557ddebb9b682f0 Mon Sep 17 00:00:00 2001 From: Kayobe deployment user Date: Thu, 28 Oct 2021 13:42:24 +0000 Subject: [PATCH] Generate kolla config when running database commands Change-Id: Ief9adfcff28d269fc80a073cdde536e8e803ca37 Story: 2009648 Task: 43807 --- kayobe/cli/commands.py | 8 ++ kayobe/tests/unit/cli/test_commands.py | 86 +++++++++++++++++-- ...with-no-kolla-config-4f857915adabad41.yaml | 6 ++ 3 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 releasenotes/notes/fix-overcloud-database-backup-with-no-kolla-config-4f857915adabad41.yaml diff --git a/kayobe/cli/commands.py b/kayobe/cli/commands.py index 066f8e666..9b178ae19 100644 --- a/kayobe/cli/commands.py +++ b/kayobe/cli/commands.py @@ -1264,6 +1264,10 @@ class OvercloudDatabaseBackup(KollaAnsibleMixin, KayobeAnsibleMixin, def take_action(self, parsed_args): self.app.LOG.debug("Performing overcloud database backup") + + # First prepare configuration. + self.generate_kolla_ansible_config(parsed_args, service_config=False) + extra_args = [] if parsed_args.incremental: extra_args.append('--incremental') @@ -1288,6 +1292,10 @@ class OvercloudDatabaseRecover(KollaAnsibleMixin, KayobeAnsibleMixin, def take_action(self, parsed_args): self.app.LOG.debug("Performing overcloud database recovery") extra_vars = {} + + # First prepare configuration. + self.generate_kolla_ansible_config(parsed_args, service_config=True) + if parsed_args.force_recovery_host: extra_vars['mariadb_recover_inventory_name'] = ( parsed_args.force_recovery_host) diff --git a/kayobe/tests/unit/cli/test_commands.py b/kayobe/tests/unit/cli/test_commands.py index f40144f4a..d3a518cb0 100644 --- a/kayobe/tests/unit/cli/test_commands.py +++ b/kayobe/tests/unit/cli/test_commands.py @@ -1476,14 +1476,27 @@ class TestCase(unittest.TestCase): ] self.assertEqual(expected_calls, mock_kolla_run.call_args_list) + @mock.patch.object(commands.KayobeAnsibleMixin, + "run_kayobe_playbooks") @mock.patch.object(commands.KollaAnsibleMixin, "run_kolla_ansible_overcloud") - def test_overcloud_database_backup(self, mock_run): + def test_overcloud_database_backup(self, mock_kolla_run, mock_run): command = commands.OvercloudDatabaseBackup(TestApp(), []) parser = command.get_parser("test") parsed_args = parser.parse_args([]) result = command.run(parsed_args) self.assertEqual(0, result) + + expected_calls = [ + mock.call( + mock.ANY, + [utils.get_data_files_path("ansible", "kolla-ansible.yml")], + tags="config", + ignore_limit=True, + ), + ] + self.assertEqual(expected_calls, mock_run.call_args_list) + expected_calls = [ mock.call( mock.ANY, @@ -1491,16 +1504,30 @@ class TestCase(unittest.TestCase): extra_args=[] ), ] - self.assertEqual(expected_calls, mock_run.call_args_list) + self.assertEqual(expected_calls, mock_kolla_run.call_args_list) + @mock.patch.object(commands.KayobeAnsibleMixin, + "run_kayobe_playbooks") @mock.patch.object(commands.KollaAnsibleMixin, "run_kolla_ansible_overcloud") - def test_overcloud_database_backup_incremental(self, mock_run): + def test_overcloud_database_backup_incremental(self, mock_kolla_run, + mock_run): command = commands.OvercloudDatabaseBackup(TestApp(), []) parser = command.get_parser("test") parsed_args = parser.parse_args(["--incremental"]) result = command.run(parsed_args) self.assertEqual(0, result) + + expected_calls = [ + mock.call( + mock.ANY, + [utils.get_data_files_path("ansible", "kolla-ansible.yml")], + tags="config", + ignore_limit=True, + ), + ] + self.assertEqual(expected_calls, mock_run.call_args_list) + expected_calls = [ mock.call( mock.ANY, @@ -1508,16 +1535,37 @@ class TestCase(unittest.TestCase): extra_args=["--incremental"] ), ] - self.assertEqual(expected_calls, mock_run.call_args_list) + self.assertEqual(expected_calls, mock_kolla_run.call_args_list) + @mock.patch.object(commands.KayobeAnsibleMixin, + "run_kayobe_playbooks") @mock.patch.object(commands.KollaAnsibleMixin, "run_kolla_ansible_overcloud") - def test_overcloud_database_recover(self, mock_run): + def test_overcloud_database_recover(self, mock_kolla_run, mock_run): command = commands.OvercloudDatabaseRecover(TestApp(), []) parser = command.get_parser("test") parsed_args = parser.parse_args([]) result = command.run(parsed_args) self.assertEqual(0, result) + + expected_calls = [ + mock.call( + mock.ANY, + [utils.get_data_files_path("ansible", "kolla-ansible.yml")], + tags="config", + ignore_limit=True, + ), + mock.call( + mock.ANY, + [ + utils.get_data_files_path("ansible", + "kolla-openstack.yml"), + ], + ignore_limit=True, + ), + ] + self.assertEqual(expected_calls, mock_run.call_args_list) + expected_calls = [ mock.call( mock.ANY, @@ -1525,16 +1573,38 @@ class TestCase(unittest.TestCase): extra_vars={} ), ] - self.assertEqual(expected_calls, mock_run.call_args_list) + self.assertEqual(expected_calls, mock_kolla_run.call_args_list) + @mock.patch.object(commands.KayobeAnsibleMixin, + "run_kayobe_playbooks") @mock.patch.object(commands.KollaAnsibleMixin, "run_kolla_ansible_overcloud") - def test_overcloud_database_recover_force_host(self, mock_run): + def test_overcloud_database_recover_force_host(self, mock_kolla_run, + mock_run): command = commands.OvercloudDatabaseRecover(TestApp(), []) parser = command.get_parser("test") parsed_args = parser.parse_args(["--force-recovery-host", "foo"]) result = command.run(parsed_args) self.assertEqual(0, result) + + expected_calls = [ + mock.call( + mock.ANY, + [utils.get_data_files_path("ansible", "kolla-ansible.yml")], + tags="config", + ignore_limit=True, + ), + mock.call( + mock.ANY, + [ + utils.get_data_files_path("ansible", + "kolla-openstack.yml"), + ], + ignore_limit=True, + ), + ] + self.assertEqual(expected_calls, mock_run.call_args_list) + expected_calls = [ mock.call( mock.ANY, @@ -1544,7 +1614,7 @@ class TestCase(unittest.TestCase): } ), ] - self.assertEqual(expected_calls, mock_run.call_args_list) + self.assertEqual(expected_calls, mock_kolla_run.call_args_list) @mock.patch.object(commands.KayobeAnsibleMixin, "run_kayobe_playbooks") diff --git a/releasenotes/notes/fix-overcloud-database-backup-with-no-kolla-config-4f857915adabad41.yaml b/releasenotes/notes/fix-overcloud-database-backup-with-no-kolla-config-4f857915adabad41.yaml new file mode 100644 index 000000000..55652e54f --- /dev/null +++ b/releasenotes/notes/fix-overcloud-database-backup-with-no-kolla-config-4f857915adabad41.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + The set of commands starting with ``kayobe overcloud database`` now + generate the kolla configuration necessary to login to the nodes + running the database.