Module: check_mk
Branch: master
Commit: 5a70d6d4bfad0bb6f5ebae94195bc98b2c0fa04e
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=5a70d6d4bfad0b…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Apr 11 09:42:07 2019 +0200
Export label sources to core
Change-Id: I0935a22215e1dda06dc49c58f11b67a1ec791e2a
---
cmk_base/config.py | 11 +++++++++++
cmk_base/core_config.py | 1 +
tests/unit/cmk_base/test_core_config.py | 1 +
3 files changed, 13 insertions(+)
diff --git a/cmk_base/config.py b/cmk_base/config.py
index 80e0a6f..ce6136d 100644
--- a/cmk_base/config.py
+++ b/cmk_base/config.py
@@ -2730,6 +2730,7 @@ class HostConfig(object):
self.tags = self._config_cache.tag_list_of_host(self.hostname)
self.tag_groups = host_tags.get(hostname, {})
self.labels = self._get_host_labels()
+ self.label_sources = self._get_host_label_sources()
# Basic types
self.is_tcp_host = self._config_cache.in_binary_hostlist(hostname, tcp_hosts)
@@ -2801,6 +2802,16 @@ class HostConfig(object):
labels.update(host_labels.get(self.hostname, {}))
return labels
+ def _get_host_label_sources(self):
+ """Returns the effective set of host label keys with their source
identifier instead of the value
+ Order and merging logic is equal to _get_host_labels()"""
+ labels = {}
+ labels.update({k: "discovered" for k in
self._discovered_labels_of_host().keys()})
+ labels.update({k : "ruleset" \
+ for k in self._config_cache.host_extra_conf_merged(self.hostname,
host_label_rules)})
+ labels.update({k: "explicit" for k in host_labels.get(self.hostname,
{}).keys()})
+ return labels
+
def _discovered_labels_of_host(self):
# type: () -> Dict
return DiscoveredHostLabelsStore(self.hostname).load()
diff --git a/cmk_base/core_config.py b/cmk_base/core_config.py
index 6a258c0..1d1b7c1 100644
--- a/cmk_base/core_config.py
+++ b/cmk_base/core_config.py
@@ -396,6 +396,7 @@ def get_host_attributes(hostname, config_cache):
attrs.update(_get_tag_attributes(config_cache.tags_of_host(hostname),
"TAG"))
attrs.update(_get_tag_attributes(host_config.labels, "LABEL"))
+ attrs.update(_get_tag_attributes(host_config.label_sources, "SOURCES"))
if "alias" not in attrs:
attrs["alias"] = config.alias_of(hostname, hostname)
diff --git a/tests/unit/cmk_base/test_core_config.py
b/tests/unit/cmk_base/test_core_config.py
index ac8e444..6764bb7 100644
--- a/tests/unit/cmk_base/test_core_config.py
+++ b/tests/unit/cmk_base/test_core_config.py
@@ -44,6 +44,7 @@ def test_get_host_attributes(monkeypatch):
'_TAGS': 'abc',
'__TAG_tag_group': 'abc',
'__LABEL_ding': 'dong',
+ '__SOURCES_ding': 'explicit',
'address': '0.0.0.0',
'alias': 'test-host',
}