summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xplugins.d/python.d.plugin52
1 files changed, 37 insertions, 15 deletions
diff --git a/plugins.d/python.d.plugin b/plugins.d/python.d.plugin
index 957d7e2645..84668c63ae 100755
--- a/plugins.d/python.d.plugin
+++ b/plugins.d/python.d.plugin
@@ -65,6 +65,14 @@ def multi_job_check(config):
return next((True for key in config if isinstance(config[key], dict)), False)
+class RawModule:
+ def __init__(self, name, path, conf_path, explicitly_enabled=True):
+ self.name = name
+ self.path = path
+ self.conf_path = conf_path
+ self.explicitly_enabled = explicitly_enabled
+
+
class Job(object):
def __init__(self, initialized_job, job_id):
"""
@@ -224,43 +232,57 @@ class Plugin(object):
conf_path = ''.join([CHARTS_PY_CONFIG_DIR, mod_name, '.conf'])
if DEBUG:
- yield mod, mod_name, mod_path, conf_path
+ yield RawModule(
+ name=mod_name,
+ path=mod_path,
+ conf_path=conf_path,
+ )
else:
- if all([self.config.get('default_run', True),
- self.config.get(mod_name, True)]):
- yield mod, mod_name, mod_path, conf_path
-
- elif all([not self.config.get('default_run'),
- self.config.get(mod_name)]):
- yield mod, mod_name, mod_path, conf_path
+ if any(
+ [
+ self.config.get('default_run', True) and self.config.get(mod_name, True),
+ (not self.config.get('default_run')) and self.config.get(mod_name),
+ ]
+ ):
+ yield RawModule(
+ name=mod_name,
+ path=mod_path,
+ conf_path=conf_path,
+ explicitly_enabled=self.config.get(mod_name),
+ )
def load_and_initialize_modules(self):
- for mod, mod_name, mod_path, conf_path in self.enabled_modules():
+ for mod in self.enabled_modules():
# Load module from file ------------------------------------------------------------
- loaded_module, error = self.loader.load_module_from_file(mod_name, mod_path)
+ loaded_module, error = self.loader.load_module_from_file(mod.name, mod.path)
log = Logger.error if error else Logger.debug
log("module load source: '{module_name}' => [{status}]".format(status='FAILED' if error else 'OK',
- module_name=mod_name))
+ module_name=mod.name))
if error:
Logger.error("load source error : {0}".format(error))
continue
# Load module config from file ------------------------------------------------------
- loaded_config, error = self.loader.load_config_from_file(conf_path)
+ loaded_config, error = self.loader.load_config_from_file(mod.conf_path)
log = Logger.error if error else Logger.debug
log("module load config: '{module_name}' => [{status}]".format(status='FAILED' if error else 'OK',
- module_name=mod_name))
+ module_name=mod.name))
if error:
Logger.error('load config error : {0}'.format(error))
- # Service instance initialization ---------------------------------------------------
+ # Skip disabled modules
+ if getattr(loaded_module, 'disabled_by_default', False) and not mod.explicitly_enabled:
+ Logger.info("module '{0}' disabled by default".format(loaded_module.__name__))
+ continue
+
+ # Module initialization ---------------------------------------------------
+
initialized_module = Module(service=loaded_module, config=loaded_config)
Logger.debug("module status: '{module_name}' => [{status}] "
"(jobs: {jobs_number})".format(status='OK' if initialized_module else 'FAILED',
module_name=initialized_module.name,
jobs_number=len(initialized_module)))
-
if initialized_module:
self.modules[initialized_module.name] = initialized_module