aboutsummaryrefslogtreecommitdiffstats
path: root/app/monitoring/setup/monitoring_handler.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/monitoring/setup/monitoring_handler.py')
-rw-r--r--app/monitoring/setup/monitoring_handler.py27
1 files changed, 20 insertions, 7 deletions
diff --git a/app/monitoring/setup/monitoring_handler.py b/app/monitoring/setup/monitoring_handler.py
index 903b8d8..0eeb668 100644
--- a/app/monitoring/setup/monitoring_handler.py
+++ b/app/monitoring/setup/monitoring_handler.py
@@ -105,13 +105,25 @@ class MonitoringHandler(MongoAccess, CliAccess, BinaryConverter):
if 'condition' not in doc:
return True
condition = doc['condition']
- if 'mechanism_drivers' not in condition:
- return True
- required_mechanism_drivers = condition['mechanism_drivers']
- if not isinstance(required_mechanism_drivers, list):
- required_mechanism_drivers = [required_mechanism_drivers]
- intersection = [val for val in required_mechanism_drivers
- if val in self.mechanism_drivers]
+ if not isinstance(condition, dict):
+ self.log.error('incorrect condition in monitoring ({}): '
+ 'condition must be a dict'
+ .format(doc.get(doc.get('type'), '')))
+ return False
+ for key, required_value in condition.items():
+ if not self.check_env_config(key, required_value):
+ return False
+ return True
+
+ def check_env_config(self, config_name, required_config_value):
+ required_config_values = required_config_value \
+ if isinstance(required_config_value, list) \
+ else [required_config_value]
+ conf_values = self.configuration.environment.get(config_name, [])
+ conf_values = conf_values if isinstance(conf_values, list) \
+ else [conf_values]
+ intersection = [val for val in required_config_values
+ if val in conf_values]
return bool(intersection)
def content_replace(self, content):
@@ -435,6 +447,7 @@ class MonitoringHandler(MongoAccess, CliAccess, BinaryConverter):
if '/*' in local_dir else local_dir
if local_dir_base.strip('/*') == remote_path.strip('/*'):
return # same directory - nothing to do
+ self.make_remote_dir(host, remote_path)
cmd = 'cp {} {}'.format(what_to_copy, remote_path)
self.run(cmd, ssh=ssh)
return