Module: check_mk
Branch: master
Commit: 908d2df4db5351d1668372858c84b2e043fa4a96
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=908d2df4db5351…
Author: Moritz Kiemer <mo(a)mathias-kettner.de>
Date: Thu Feb 14 12:01:11 2019 +0100
mk_docker.py: clean up inventory
Also fix some bugs in docker_node_network on the way.
CMK-1662
Change-Id: Ic8a06223984624d97021f7d9c9a0c77830edf9b7
---
cmk/gui/plugins/views/inventory.py | 11 +++++++++--
inventory/docker_node_images | 4 ++--
inventory/docker_node_network | 36 ++++++++++++++++++------------------
3 files changed, 29 insertions(+), 22 deletions(-)
diff --git a/cmk/gui/plugins/views/inventory.py b/cmk/gui/plugins/views/inventory.py
index 33d55c8..2d27714 100644
--- a/cmk/gui/plugins/views/inventory.py
+++ b/cmk/gui/plugins/views/inventory.py
@@ -535,6 +535,11 @@ def inv_paint_docker_labels(labels):
return "labels", html.render_br().join(sorted(labels.split(",
")))
+@decorate_inv_paint
+def inv_paint_lines_csv(lines):
+ return "", lines.replace(",", "<br>")
+
+
#.
# .--display hints-------------------------------------------------------.
# | _ _ _ _ _ _ |
@@ -1033,17 +1038,19 @@ inventory_displayhints.update({
".software.applications.docker.num_images": {"title": _("#
Images")},
".software.applications.docker.images:": {
"title": _("Images"),
- "keyorder": ["id", "repository", "tag",
"creation", "size", "labels",
"amount_containers"],
+ "keyorder": ["id", "creation", "size",
"labels", "amount_containers", "repotags",
"repodigests"],
"view": "invdockerimages_of_host",
},
".software.applications.docker.images:*.id": {"title":
_("ID")},
".software.applications.docker.images:*.labels": {"paint":
"docker_labels"},
".software.applications.docker.images:*.amount_containers":
{"title": _("# Containers")},
+ ".software.applications.docker.images:*.repotags": {"title":
_("Repository/Tag"), "paint": "lines_csv"},
+ ".software.applications.docker.images:*.repodigests": {"title":
_("Digests"), "paint": "lines_csv"},
# Node containers
".software.applications.docker.containers:": {
"title": _("Containers"),
- "keyorder": ["id", "repository", "tag",
"creation", "name", "creation", "labels",
"status"],
+ "keyorder": ["id", "creation", "name",
"labels", "status", "image"],
"view": "invdockercontainers_of_host",
},
".software.applications.docker.containers:*.id": {"title":
_("ID")},
diff --git a/inventory/docker_node_images b/inventory/docker_node_images
index addcf62..20c40f4 100644
--- a/inventory/docker_node_images
+++ b/inventory/docker_node_images
@@ -69,8 +69,8 @@ def inv_docker_node_images(info, inventory_tree, status_data_tree):
for image_id, image in sorted(images.iteritems()):
inv_node.append({
- "repotags": image.get("RepoTags", []),
- "repodigests": image.get("RepoDigests", []),
+ "repotags": ", ".join(image.get("RepoTags",
[])),
+ "repodigests": ",
".join(image.get("RepoDigests", [])),
"id": docker_get_short_id(image_id), # pylint:
disable=undefined-variable
"creation": image["Created"],
"size": image["VirtualSize"],
diff --git a/inventory/docker_node_network b/inventory/docker_node_network
index a585fb8..de08fe5 100644
--- a/inventory/docker_node_network
+++ b/inventory/docker_node_network
@@ -26,13 +26,14 @@
def parse_docker_network(info):
- version = docker_get_version(info) # pylint: disable=undefined-variable
+ # pylint: disable=undefined-variable
+ version = docker_get_version(info)
if version is None:
- networks = parse_legacy_docker_network_inspect(info) # pylint:
disable=undefined-variable
+ networks = parse_legacy_docker_network_inspect(info)
return DeprecatedDict((n["Id"], n) for n in networks)
- networks = (docker_json_get_obj(line) for line in info[1:]) # pylint:
disable=undefined-variable
+ networks = (docker_json_get_obj(line) for line in info[1:])
return {n["Id"]: n for n in networks if n is not None}
@@ -41,43 +42,42 @@ def inv_docker_node_network_networks(info, inventory_tree,
status_data_tree):
for network_id, network in parsed.iteritems():
- containers = []
- for container_id, container in network["Containers"].iteritems():
- containers.append({
+ sorted_container_items = sorted(network["Containers"].items())
+
+ containers = [
+ {
"name": container["Name"],
"id": docker_get_short_id(container_id), # pylint:
disable=undefined-variable
"ipv4_address": container["IPv4Address"],
"ipv6_address": container["IPv6Address"],
"mac_address": container["MacAddress"],
- })
+ } for container_id, container in sorted_container_items
+ ]
network_name = network["Name"]
path = "software.applications.docker.networks.%s." % network_name
- inventory_networks = inventory_tree.get_dict(path)
- status_networks = status_data_tree.get_dict(path)
+ inventory_network = inventory_tree.get_dict(path)
+ status_network = status_data_tree.get_dict(path)
- status_networks.update({
+ status_network.update({
"name": network_name,
- "containers": [{
- "name": 1
- }],
+ "containers": containers,
})
- network_ = {
+ inventory_network.update({
"name": network_name,
"network_id": docker_get_short_id(network_id), # pylint:
disable=undefined-variable
"scope": network["Scope"],
- }
+ })
try:
- network_["host_ifname"] =
network["Options"]["com.docker.network.bridge.name"]
+ inventory_network["host_ifname"] =
network["Options"]["com.docker.network.bridge.name"]
except KeyError:
pass
labels = docker_format_labels(network) # pylint: disable=undefined-variable
if labels:
- network_["labels"] = labels
- inventory_networks.update(network_)
+ inventory_network["labels"] = labels
inv_info["docker_node_network.networks"] = { # pylint:
disable=undefined-variable