diff options
author | Costa Tsaousis <costa@tsaousis.gr> | 2018-06-22 12:31:42 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-22 12:31:42 +0300 |
commit | b92138d793532a6b88221884c3f25a6b15a251ec (patch) | |
tree | 269cb8f7290996d6fb84d47cfa58db37f53b78cb | |
parent | 47f1dd0d2f568bd3a1f4ced7657fc84f27cb5c70 (diff) | |
parent | 571d85d26deeb7c943fd25c43d91f3232d0571e0 (diff) |
Merge pull request #3869 from l2isbad/python.d.disabled_by_default
python.d: disabled_by_default feature added
-rwxr-xr-x | plugins.d/python.d.plugin | 52 |
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 |