return r;
}
+ register_options(pClass);
r = load_options();
if (r != 0) {
derr << "Missing or invalid MODULE_OPTIONS attribute in module '"
if (!r) {
dout(4) << "Standby mode available in module '" << module_name
<< "'" << dendl;
+ register_options(pStandbyClass);
} else {
dout(4) << "Standby mode not provided by module '" << module_name
<< "'" << dendl;
return r;
}
+int PyModule::register_options(PyObject *cls)
+{
+ PyObject *pRegCmd = PyObject_CallMethod(
+ cls,
+ const_cast<char*>("_register_options"), const_cast<char*>("(s)"),
+ module_name.c_str());
+ if (pRegCmd != nullptr) {
+ Py_DECREF(pRegCmd);
+ } else {
+ derr << "Exception calling _register_options on " << get_name()
+ << dendl;
+ derr << handle_pyerror() << dendl;
+ }
+ return 0;
+}
+
int PyModule::load_commands()
{
PyObject *pRegCmd = PyObject_CallMethod(pClass,
def __del__(self):
self._unconfigure_logging()
+ @classmethod
+ def _register_options(cls, module_name):
+ cls.MODULE_OPTIONS.append(
+ Option(name='log_level', type='str', default="", runtime=True,
+ enum_allowed=['info', 'debug', 'critical', 'error',
+ 'warning', '']))
+ cls.MODULE_OPTIONS.append(
+ Option(name='log_to_file', type='bool', default=False, runtime=True))
+ if not [x for x in cls.MODULE_OPTIONS if x['name'] == 'log_to_cluster']:
+ cls.MODULE_OPTIONS.append(
+ Option(name='log_to_cluster', type='bool', default=False,
+ runtime=True))
+ cls.MODULE_OPTIONS.append(
+ Option(name='log_to_cluster_level', type='str', default='info',
+ runtime=True,
+ enum_allowed=['info', 'debug', 'critical', 'error',
+ 'warning', '']))
+
@property
def log(self):
return self._logger
self._unconfigure_logging()
@classmethod
- def _register_commands(cls, module_name):
+ def _register_options(cls, module_name):
cls.MODULE_OPTIONS.append(
Option(name='log_level', type='str', default="", runtime=True,
enum_allowed=['info', 'debug', 'critical', 'error',
enum_allowed=['info', 'debug', 'critical', 'error',
'warning', '']))
+ @classmethod
+ def _register_commands(cls, module_name):
cls.COMMANDS.extend(CLICommand.dump_cmd_list())
@property