return r
class Module(MgrModule):
+ OPTIONS = [
+ {'name': 'active'},
+ {'name': 'begin_time'},
+ {'name': 'crush_compat_max_iteratons'},
+ {'name': 'crush_compat_step'},
+ {'name': 'end_time'},
+ {'name': 'max_misplaced'},
+ {'name': 'min_score'},
+ {'name': 'mode'},
+ {'name': 'sleep_interval'},
+ {'name': 'upmap_max_iterations'},
+ {'name': 'upmap_max_deviations'},
+ ]
+
COMMANDS = [
{
"cmd": "balancer status",
from .controllers.auth import Auth
from .tools import SessionExpireAtBrowserCloseTool, NotificationQueue, \
RequestLoggingTool, TaskManager
-from .settings import options_command_list, handle_option_command
+from .settings import options_command_list, options_schema_list, \
+ handle_option_command
# cherrypy likes to sys.exit on error. don't let it take us down too!
]
COMMANDS.extend(options_command_list())
+ OPTIONS = [
+ {'name': 'server_addr'},
+ {'name': 'server_port'},
+ {'name': 'session-expire'},
+ {'name': 'password'},
+ {'name': 'url_prefix'},
+ {'name': 'username'},
+ ]
+ OPTIONS.extend(options_schema_list())
+
@property
def url_prefix(self):
return self._url_prefix
return cmd_list
+def options_schema_list():
+ def filter_attr(member):
+ return not inspect.isroutine(member)
+
+ result = []
+ for option, value in inspect.getmembers(Options, filter_attr):
+ if option.startswith('_'):
+ continue
+ result.append({'name': option, 'default': value[0]})
+
+ return result
+
+
def handle_option_command(cmd):
if cmd['prefix'] not in _OPTIONS_COMMAND_MAP:
return (-errno.ENOSYS, '', "Command not found '{}'".format(cmd['prefix']))
class Module(MgrModule):
+ OPTIONS = [
+ {
+ 'name': 'hostname',
+ 'default': None
+ },
+ {
+ 'name': 'port',
+ 'default': 8086
+ },
+ {
+ 'name': 'database',
+ 'default': 'ceph'
+ },
+ {
+ 'name': 'username',
+ 'default': None
+ },
+ {
+ 'name': 'password',
+ 'default': None
+ },
+ {
+ 'name': 'interval',
+ 'default': 30
+ },
+ {
+ 'name': 'ssl',
+ 'default': 'false'
+ },
+ {
+ 'name': 'verify_ssl',
+ 'default': 'true'
+ },
+ ]
+
+ @property
+ def config_keys(self):
+ return dict((o['name'], o.get('default', None))
+ for o in self.OPTIONS)
+
COMMANDS = [
{
"cmd": "influx config-set name=key,type=CephString "
},
]
- config_keys = {
- 'hostname': None,
- 'port': 8086,
- 'database': 'ceph',
- 'username': None,
- 'password': None,
- 'interval': 30,
- 'ssl': 'false',
- 'verify_ssl': 'true'
- }
-
def __init__(self, *args, **kwargs):
super(Module, self).__init__(*args, **kwargs)
self.event = Event()
import threading
class Module(MgrModule):
+
+ OPTIONS = [
+ {'name': 'failure_domain'},
+ {'name': 'min_size'},
+ {'name': 'num_rep'},
+ {'name': 'pg_num'},
+ {'name': 'prefix'},
+ {'name': 'subtree'},
+ ]
+
def __init__(self, *args, **kwargs):
super(Module, self).__init__(*args, **kwargs)
self.serve_event = threading.Event()
},
]
+ OPTIONS = [
+ {'name': 'server_addr'},
+ {'name': 'server_port'},
+ ]
+
def __init__(self, *args, **kwargs):
super(Module, self).__init__(*args, **kwargs)
self.metrics = Metrics()
class Module(MgrModule):
+ OPTIONS = [
+ {'name': 'server_addr'},
+ {'name': 'server_port'},
+ {'name': 'key_file'},
+ ]
+
COMMANDS = [
{
"cmd": "restful create-key name=key_name,type=CephString",
WORKLOADS = (WORKLOAD_COMMAND_SPAM, WORKLOAD_THROW_EXCEPTION)
+ # The test code in qa/ relies on these options existing -- they
+ # are of course not really used for anything in the module
+ OPTIONS = [
+ {'name': 'testkey'},
+ {'name': 'testlkey'},
+ {'name': 'testnewline'}
+ ]
+
COMMANDS = [
{
"cmd": "mgr self-test run",
config = dict()
ceph_health_mapping = {'HEALTH_OK': 0, 'HEALTH_WARN': 1, 'HEALTH_ERR': 2}
- config_keys = {
- 'zabbix_sender': '/usr/bin/zabbix_sender',
- 'zabbix_host': None,
- 'zabbix_port': 10051,
- 'identifier': "",
- 'interval': 60
- }
+ @property
+ def config_keys(self):
+ return dict((o['name'], o.get('default', None))
+ for o in self.OPTIONS)
+
+ OPTIONS = [
+ {
+ 'name': 'zabbix_sender',
+ 'default': '/usr/bin/zabbix_sender'
+ },
+ {
+ 'name': 'zabbix_host',
+ 'default': None
+ },
+ {
+ 'name': 'zabbix_port',
+ 'default': 10051
+ },
+ {
+ 'name': 'identifier',
+ 'default': ""
+ },
+ {
+ 'name': 'interval',
+ 'default': 60
+ }
+ ]
COMMANDS = [
{