Module: check_mk
Branch: master
Commit: 6adf66aa441b5e0cf82d4bc353b132d5cd97455d
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6adf66aa441b5e…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Apr 22 17:43:17 2019 +0200
Start moving config.nodes_of to HostConfig
CMK-2030
Change-Id: Id8d2a947926b2bb31af8816cb0d52400ac3591c1
---
cmk_base/config.py | 14 ++++++++++----
tests/unit/cmk_base/test_config.py | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 44 insertions(+), 4 deletions(-)
diff --git a/cmk_base/config.py b/cmk_base/config.py
index 9920e9d..c5103be 100644
--- a/cmk_base/config.py
+++ b/cmk_base/config.py
@@ -2473,9 +2473,12 @@ class HostConfig(object):
self._config_cache = config_cache
self.alias = self._get_alias()
+ self.parents = self._get_parents()
+
self.is_cluster = self._is_cluster()
+ # TODO: Rename this to self.clusters?
self.part_of_clusters = self._config_cache.clusters_of(hostname)
- self.parents = self._get_parents()
+ self.nodes = self._config_cache.nodes_of(hostname)
# TODO: Rename self.tags to self.tag_list and self.tag_groups to self.tags
self.tags = self._config_cache.tag_list_of_host(self.hostname)
@@ -2556,6 +2559,7 @@ class HostConfig(object):
return aliases[0]
+ # TODO: Move cluster/node parent handling to this function
def _get_parents(self):
# type: () -> List[str]
"""Use only those parents which are defined and active in
all_hosts"""
@@ -3283,12 +3287,14 @@ class ConfigCache(object):
self._nodes_of_cache[clustername] = hosts
def clusters_of(self, hostname):
+ # type: (str) -> List[str]
"""Returns names of cluster hosts the host is a node
of"""
return self._clusters_of_cache.get(hostname, [])
- # TODO: cleanup none
- # Returns the nodes of a cluster. Returns None if no match
+ # TODO: cleanup None case
def nodes_of(self, hostname):
+ # type: (str) -> Optional[List[str]]
+ """Returns the nodes of a cluster. Returns None if no
match"""
return self._nodes_of_cache.get(hostname)
def all_active_clusters(self):
@@ -3331,7 +3337,7 @@ class ConfigCache(object):
# 1. New style: explicitly assigned services
for cluster, conf in clustered_services_of.iteritems():
- nodes = nodes_of(cluster)
+ nodes = self.nodes_of(cluster)
if not nodes:
raise MKGeneralException(
"Invalid entry clustered_services_of['%s']: %s is not a
cluster." % (cluster,
diff --git a/tests/unit/cmk_base/test_config.py b/tests/unit/cmk_base/test_config.py
index b0093b5..d1bed27 100644
--- a/tests/unit/cmk_base/test_config.py
+++ b/tests/unit/cmk_base/test_config.py
@@ -1,4 +1,5 @@
# encoding: utf-8
+# pylint: disable=redefined-outer-name
import pytest # type: ignore
from testlib.base import Scenario
@@ -319,6 +320,39 @@ def test_service_depends_on(monkeypatch):
assert config.service_depends_on("test-host", "svc1-abc") ==
["dep1", "dep2-abc"]
+(a)pytest.fixture()
+def cluster_config(monkeypatch):
+ ts = Scenario().add_host("node1").add_host("host1")
+ ts.add_cluster("cluster1", nodes=["node1"])
+ return ts.apply(monkeypatch)
+
+
+def test_host_config_is_cluster(cluster_config):
+ assert cluster_config.get_host_config("node1").is_cluster is False
+ assert cluster_config.get_host_config("host1").is_cluster is False
+ assert cluster_config.get_host_config("cluster1").is_cluster is True
+
+
+def test_host_config_part_of_clusters(cluster_config):
+ assert cluster_config.get_host_config("node1").part_of_clusters ==
["cluster1"]
+ assert cluster_config.get_host_config("host1").part_of_clusters == []
+ assert cluster_config.get_host_config("cluster1").part_of_clusters == []
+
+
+def test_host_config_nodes(cluster_config):
+ assert cluster_config.get_host_config("node1").nodes is None
+ assert cluster_config.get_host_config("host1").nodes is None
+ assert cluster_config.get_host_config("cluster1").nodes ==
["node1"]
+
+
+def test_host_config_parents(cluster_config):
+ assert cluster_config.get_host_config("node1").parents == []
+ assert cluster_config.get_host_config("host1").parents == []
+ # TODO: Move cluster/node parent handling to HostConfig
+ #assert cluster_config.get_host_config("cluster1").parents ==
["node1"]
+ assert cluster_config.get_host_config("cluster1").parents == []
+
+
def test_host_tags_default():
assert isinstance(config.host_tags, dict)