Module: check_mk
Branch: master
Commit: e21408ed669f62d7742341c5004e875b8c324cd2
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e21408ed669f62…
Author: Tom Baerwinkel <tb(a)mathias-kettner.de>
Date: Fri Mar 29 13:56:49 2019 +0100
agent_kubernetes: add logic to match and group by selectors
Change-Id: Iff7c83f01cfa65fa8c6980c87edc3277db08f909
---
cmk/special_agents/agent_kubernetes.py | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/cmk/special_agents/agent_kubernetes.py
b/cmk/special_agents/agent_kubernetes.py
index 8168506..01b995b 100644
--- a/cmk/special_agents/agent_kubernetes.py
+++ b/cmk/special_agents/agent_kubernetes.py
@@ -181,6 +181,15 @@ class Metadata(object):
self.creation_timestamp = None
self.labels = {}
+ def matches(self, selectors):
+ if not selectors:
+ return False
+
+ for name, value in selectors.iteritems():
+ if name not in self.labels or self.labels[name] != value:
+ return False
+ return True
+
class Node(Metadata):
def __init__(self, node, stats):
@@ -575,6 +584,14 @@ class K8sList(Generic[ListElem], MutableSequence):
def labels(self):
return {item.name: item.labels for item in self}
+ def group_by(self, selectors):
+ grouped = {}
+ for element in self:
+ for name, selector in selectors.iteritems():
+ if element.matches(selector):
+ grouped.setdefault(name,
self.__class__(elements=[])).append(element)
+ return grouped
+
class NodeList(K8sList[Node]):
def list_nodes(self):