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):
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']), ''
# 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
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'})