From f71e4f15e57c08324fe5e41e5dcbd59779b07ba1 Mon Sep 17 00:00:00 2001 From: Tatjana Dehler Date: Thu, 25 Oct 2018 10:29:15 +0200 Subject: [PATCH] mgr/dashboard: add config option bulk_set Signed-off-by: Tatjana Dehler --- .../dashboard/test_cluster_configuration.py | 27 +++++++++++++++++++ .../controllers/cluster_configuration.py | 5 ++++ 2 files changed, 32 insertions(+) diff --git a/qa/tasks/mgr/dashboard/test_cluster_configuration.py b/qa/tasks/mgr/dashboard/test_cluster_configuration.py index 223f8f907ef0..6e30e4edccc6 100644 --- a/qa/tasks/mgr/dashboard/test_cluster_configuration.py +++ b/qa/tasks/mgr/dashboard/test_cluster_configuration.py @@ -133,6 +133,33 @@ class ClusterConfigurationTest(DashboardTestCase): self._clear_all_values_for_config_option(config_name) self._reset_original_values(config_name, orig_value) + def test_bulk_set(self): + expected_result = { + 'osd_max_backfills': {'section': 'osd', 'value': '1'}, + 'osd_recovery_max_active': {'section': 'osd', 'value': '3'}, + 'osd_recovery_max_single_start': {'section': 'osd', 'value': '1'}, + 'osd_recovery_sleep': {'section': 'osd', 'value': '2.000000'} + } + orig_values = dict() + + for config_name in expected_result: + orig_values[config_name] = self._get_config_by_name(config_name) + + # remove all existing settings for equal preconditions + self._clear_all_values_for_config_option(config_name) + + self._put('/api/cluster_conf', {'options': expected_result}) + self.assertStatus(200) + + for config_name, value in expected_result.items(): + result = self._wait_for_expected_get_result(self._get_config_by_name, config_name, + [value]) + self.assertEqual(result, [value]) + + # reset original value + self._clear_all_values_for_config_option(config_name) + self._reset_original_values(config_name, orig_values[config_name]) + def _validate_single(self, data): self.assertIn('name', data) self.assertIn('daemon_default', data) diff --git a/src/pybind/mgr/dashboard/controllers/cluster_configuration.py b/src/pybind/mgr/dashboard/controllers/cluster_configuration.py index 8ac52e5feded..2d93b51ea4f1 100644 --- a/src/pybind/mgr/dashboard/controllers/cluster_configuration.py +++ b/src/pybind/mgr/dashboard/controllers/cluster_configuration.py @@ -55,3 +55,8 @@ class ClusterConfiguration(RESTController): break else: CephService.send_command('mon', 'config rm', who=section, name=name) + + def bulk_set(self, options): + for name, value in options.items(): + CephService.send_command('mon', 'config set', who=value['section'], + name=name, value=str(value['value'])) -- 2.47.3