]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: Fix get/set for boolean settings 22298/head
authorPatrick Nawracay <pnawracay@suse.com>
Tue, 29 May 2018 13:45:35 +0000 (15:45 +0200)
committerPatrick Nawracay <pnawracay@suse.com>
Tue, 29 May 2018 13:45:35 +0000 (15:45 +0200)
Signed-off-by: Patrick Nawracay <pnawracay@suse.com>
src/pybind/mgr/dashboard/settings.py
src/pybind/mgr/dashboard/tests/test_settings.py

index c9cdfd668c8ca62c230b1781cde4f118c1501d5c..c060501224fd119d75f543bccd101fc06a5e7cf4 100644 (file)
@@ -38,7 +38,12 @@ class Options(object):
 class SettingsMeta(type):
     def __getattr__(cls, attr):
         default, stype = getattr(Options, attr)
-        return stype(mgr.get_config(attr, default))
+        if stype == bool and str(mgr.get_config(attr,
+                                                default)).lower() == 'false':
+            value = False
+        else:
+            value = stype(mgr.get_config(attr, default))
+        return value
 
     def __setattr__(cls, attr, value):
         if not attr.startswith('_') and hasattr(Options, attr):
@@ -141,5 +146,8 @@ def handle_option_command(cmd):
     elif cmd['prefix'].startswith('dashboard get'):
         return 0, str(getattr(Settings, opt['name'])), ''
     elif cmd['prefix'].startswith('dashboard set'):
-        setattr(Settings, opt['name'], opt['type'](cmd['value']))
+        value = opt['type'](cmd['value'])
+        if opt['type'] == bool and cmd['value'].lower() == 'false':
+            value = False
+        setattr(Settings, opt['name'], value)
         return 0, 'Option {} updated'.format(opt['name']), ''
index 13c569e520a391d3644942a161670ad31b60633d..0087f7e6d59e9b96f16c619b92a5ce55b87dd85a 100644 (file)
@@ -17,6 +17,7 @@ class SettingsTest(unittest.TestCase):
         # pylint: disable=protected-access
         settings.Options.GRAFANA_API_HOST = ('localhost', str)
         settings.Options.GRAFANA_API_PORT = (3000, int)
+        settings.Options.GRAFANA_ENABLED = (False, bool)
         settings._OPTIONS_COMMAND_MAP = settings._options_command_map()
 
     @classmethod
@@ -38,11 +39,19 @@ class SettingsTest(unittest.TestCase):
 
     def test_get_setting(self):
         self.assertEqual(Settings.GRAFANA_API_HOST, 'localhost')
+        self.assertEqual(Settings.GRAFANA_API_PORT, 3000)
+        self.assertEqual(Settings.GRAFANA_ENABLED, False)
 
     def test_set_setting(self):
         Settings.GRAFANA_API_HOST = 'grafanahost'
         self.assertEqual(Settings.GRAFANA_API_HOST, 'grafanahost')
 
+        Settings.GRAFANA_API_PORT = 50
+        self.assertEqual(Settings.GRAFANA_API_PORT, 50)
+
+        Settings.GRAFANA_ENABLED = True
+        self.assertEqual(Settings.GRAFANA_ENABLED, True)
+
     def test_get_cmd(self):
         r, out, err = handle_option_command(
             {'prefix': 'dashboard get-grafana-api-port'})