Repository: ambari Updated Branches: refs/heads/trunk f297c48f0 -> 5d4d99efb
AMBARI-19746 Ambari HDFS Metric alerts turns to UNKNOWN status with error "argument of type 'NoneType' is not iterable" (dsen) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/5d4d99ef Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/5d4d99ef Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/5d4d99ef Branch: refs/heads/trunk Commit: 5d4d99efbd1a7de059c1257c09b396b90bade83e Parents: f297c48 Author: Dmytro Sen <d...@apache.org> Authored: Thu Feb 2 20:12:30 2017 +0200 Committer: Dmytro Sen <d...@apache.org> Committed: Thu Feb 2 20:12:30 2017 +0200 ---------------------------------------------------------------------- .../src/main/python/ambari_agent/ActionQueue.py | 5 +++++ .../ambari_commons/ambari_metrics_helper.py | 19 +++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/5d4d99ef/ambari-agent/src/main/python/ambari_agent/ActionQueue.py ---------------------------------------------------------------------- diff --git a/ambari-agent/src/main/python/ambari_agent/ActionQueue.py b/ambari-agent/src/main/python/ambari_agent/ActionQueue.py index 8514a88..5300b52 100644 --- a/ambari-agent/src/main/python/ambari_agent/ActionQueue.py +++ b/ambari-agent/src/main/python/ambari_agent/ActionQueue.py @@ -36,6 +36,7 @@ from CommandStatusDict import CommandStatusDict from CustomServiceOrchestrator import CustomServiceOrchestrator from ambari_agent.BackgroundCommandExecutionHandle import BackgroundCommandExecutionHandle from ambari_commons.str_utils import split_on_chunks +from resource_management.libraries.script import Script logger = logging.getLogger() @@ -549,6 +550,10 @@ class ActionQueue(threading.Thread): else: globalConfig = {} + if not Script.config : + logger.debug('Setting Script.config to last status command configuration') + Script.config = command + livestatus = LiveStatus(cluster, service, component, globalConfig, self.config, self.configTags) http://git-wip-us.apache.org/repos/asf/ambari/blob/5d4d99ef/ambari-common/src/main/python/ambari_commons/ambari_metrics_helper.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/ambari_commons/ambari_metrics_helper.py b/ambari-common/src/main/python/ambari_commons/ambari_metrics_helper.py index 7841bde..6444dfd 100644 --- a/ambari-common/src/main/python/ambari_commons/ambari_metrics_helper.py +++ b/ambari-common/src/main/python/ambari_commons/ambari_metrics_helper.py @@ -24,7 +24,6 @@ from resource_management.libraries.functions import conf_select DEFAULT_COLLECTOR_SUFFIX = '.sink.timeline.collector.hosts' DEFAULT_METRICS2_PROPERTIES_FILE_NAME = 'hadoop-metrics2.properties' -DEFAULT_HADOOP_CONF_DIR_PATH = '/usr/hdp/current/hadoop-client/conf/' def select_metric_collector_for_sink(sink_name): # TODO check '*' sink_name @@ -46,10 +45,18 @@ def get_metric_collectors_from_properties_file(sink_name): try: hadoop_conf_dir = conf_select.get_hadoop_conf_dir() except Exception as e: - print "Can't get hadoop conf directory from conf_select.get_hadoop_conf_dir() - " + str(e) - hadoop_conf_dir = DEFAULT_HADOOP_CONF_DIR_PATH - props = load_properties_from_file(os.path.join(hadoop_conf_dir, DEFAULT_METRICS2_PROPERTIES_FILE_NAME)) - return props.get(sink_name + DEFAULT_COLLECTOR_SUFFIX) + raise Exception("Couldn't define hadoop_conf_dir: {0}".format(e)) + properties_filepath = os.path.join(hadoop_conf_dir, DEFAULT_METRICS2_PROPERTIES_FILE_NAME) + + if not os.path.exists(properties_filepath): + raise Exception("Properties file doesn't exist : {0}. Can't define metric collector hosts".format(properties_filepath)) + props = load_properties_from_file(properties_filepath) + + property_key = sink_name + DEFAULT_COLLECTOR_SUFFIX + if property_key in props: + return props.get(property_key) + else: + raise Exception("Properties file doesn't contain {0}. Can't define metric collector hosts".format(property_key)) def load_properties_from_file(filepath, sep='=', comment_char='#'): """ @@ -64,4 +71,4 @@ def load_properties_from_file(filepath, sep='=', comment_char='#'): key = key_value[0].strip() value = sep.join(key_value[1:]).strip('" \t') props[key] = value - return props + return props \ No newline at end of file