option.long_desc = PyString_AsString(p);
}
p = PyDict_GetItemString(pOption, "default");
- if (p && PyObject_TypeCheck(p, &PyString_Type)) {
- option.default_value = PyString_AsString(p);
+ if (p) {
+ auto q = PyObject_Str(p);
+ option.default_value = PyString_AsString(q);
+ Py_DECREF(q);
}
p = PyDict_GetItemString(pOption, "min");
- if (p && PyObject_TypeCheck(p, &PyString_Type)) {
- option.min = PyString_AsString(p);
+ if (p) {
+ auto q = PyObject_Str(p);
+ option.min = PyString_AsString(q);
+ Py_DECREF(q);
}
p = PyDict_GetItemString(pOption, "max");
- if (p && PyObject_TypeCheck(p, &PyString_Type)) {
- option.max = PyString_AsString(p);
+ if (p) {
+ auto q = PyObject_Str(p);
+ option.max = PyString_AsString(q);
+ Py_DECREF(q);
}
p = PyDict_GetItemString(pOption, "enum_allowed");
if (p && PyObject_TypeCheck(p, &PyList_Type)) {
for (unsigned i = 0; i < PyList_Size(p); ++i) {
auto q = PyList_GetItem(p, i);
- if (q && PyObject_TypeCheck(q, &PyString_Type)) {
- option.enum_allowed.insert(PyString_AsString(q));
+ if (q) {
+ auto r = PyObject_Str(q);
+ option.enum_allowed.insert(PyString_AsString(r));
+ Py_DECREF(r);
}
}
}
"""
r = self._ceph_get_module_option(key)
if r is None:
- return default
+ final_key = key.split('/')[-1]
+ return str(self.MODULE_OPTION_DEFAULTS.get(final_key, default))
else:
return r
class MgrModule(ceph_module.BaseMgrModule):
COMMANDS = []
MODULE_OPTIONS = []
+ MODULE_OPTION_DEFAULTS = {}
# Priority definitions for perf counters
PRIO_CRITICAL = 10
# Keep a librados instance for those that need it.
self._rados = None
+ for o in self.MODULE_OPTIONS:
+ if 'default' in o:
+ self.MODULE_OPTION_DEFAULTS[o['name']] = o['default']
+
def __del__(self):
unconfigure_logger(self, self.module_name)
def _get_module_option(self, key, default):
r = self._ceph_get_module_option(key)
if r is None:
- return default
+ final_key = key.split('/')[-1]
+ return str(self.MODULE_OPTION_DEFAULTS.get(final_key, default))
else:
return r