Module: check_mk
Branch: master
Commit: 00a05075fc1720a8fe78417421a5dacf1921e60e
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=00a05075fc1720…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Jul 25 11:43:07 2016 +0200
Cleaned up host macro and attribute computation
---
modules/check_mk.py | 31 ++++++++++++++++++++++++-------
modules/nagios.py | 17 +----------------
2 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/modules/check_mk.py b/modules/check_mk.py
index fc6beef..3261a82 100755
--- a/modules/check_mk.py
+++ b/modules/check_mk.py
@@ -2126,9 +2126,8 @@ def get_sorted_check_table(hostname, remove_duplicates=False,
world="config"):
-# Determine, which program to call to get data. Should
-# be None in most cases -> to TCP connect on port 6556
-
+# Determine, which program to call to get the agent data. This is an alternative to
fetch
+# the agent data via TCP port, mostly used for special agents.
def get_datasource_program(hostname, ipaddress):
special_agents_dir = agents_dir + "/special"
@@ -2143,13 +2142,19 @@ def get_datasource_program(hostname, ipaddress):
path = local_special_agents_dir + "/agent_" + agentname
else:
path = special_agents_dir + "/agent_" + agentname
- return path + " " + cmd_arguments
+ return replace_datasource_program_macros(path + " " +
cmd_arguments)
programs = host_extra_conf(hostname, datasource_programs)
- if len(programs) == 0:
+ if not programs:
return None
else:
- return programs[0].replace("<IP>",
ipaddress).replace("<HOST>", hostname)
+ return replace_datasource_program_macros(
+ programs[0].replace("<IP>",
ipaddress).replace("<HOST>", hostname))
+
+
+def replace_datasource_program_macros(cmd):
+ return cmd
+
# Variables needed during the renaming of hosts (see automation.py)
ignore_ip_lookup_failures = False
@@ -3405,9 +3410,11 @@ def get_basic_host_macros_from_attributes(hostname, attrs):
return macros
-def get_host_attributes(hostname):
+def get_host_attributes(hostname, tags):
attrs = extra_host_attributes(hostname)
+ attrs["_TAGS"] = " ".join(tags)
+
if "alias" not in attrs:
attrs["alias"] = alias_of(hostname, hostname)
@@ -3430,6 +3437,16 @@ def get_host_attributes(hostname):
attrs["address"] = attrs["_ADDRESS_4"]
attrs["_ADDRESS_FAMILY"] = "4"
+ # Add the optional WATO folder path
+ path = host_paths.get(hostname)
+ if path:
+ attrs["_FILENAME"] = path
+
+ # Add custom user icons and actions
+ actions = icons_and_actions_of("host", hostname)
+ if actions:
+ attrs["_ACTIONS"] = ",".join(actions)
+
return attrs
diff --git a/modules/nagios.py b/modules/nagios.py
index 2a6ee1a..da657cb 100644
--- a/modules/nagios.py
+++ b/modules/nagios.py
@@ -113,7 +113,7 @@ def create_nagios_config_host(outfile, hostname):
outfile.write("\n#
----------------------------------------------------\n")
outfile.write("# %s\n" % hostname)
outfile.write("# ----------------------------------------------------\n")
- host_attrs = get_host_attributes(hostname)
+ host_attrs = get_host_attributes(hostname, tags_of_host(hostname))
if generate_hostconf:
create_nagios_hostdefs(outfile, hostname, host_attrs)
create_nagios_servicedefs(outfile, hostname, host_attrs)
@@ -139,7 +139,6 @@ def create_nagios_hostdefs(outfile, hostname, attrs):
outfile.write(" host_name\t\t\t%s\n" % hostname)
outfile.write(" use\t\t\t\t%s\n" % (is_clust and cluster_template or
host_template))
outfile.write(" address\t\t\t%s\n" % (ip and make_utf8(ip) or
fallback_ip_for(hostname)))
- outfile.write(" _TAGS\t\t\t\t%s\n" % "
".join(tags_of_host(hostname)))
# Add custom macros
for key, value in attrs.items():
@@ -152,11 +151,6 @@ def create_nagios_hostdefs(outfile, hostname, attrs):
if command:
outfile.write(" check_command\t\t\t%s\n" % command)
- # WATO folder path
- path = host_paths.get(hostname)
- if path:
- outfile.write(" _FILENAME\t\t\t%s\n" % path)
-
# Host groups: If the host has no hostgroups it gets the default
# hostgroup (Nagios requires each host to be member of at least on
# group.
@@ -198,11 +192,6 @@ def create_nagios_hostdefs(outfile, hostname, attrs):
else:
alias = make_utf8(alias)
- # Add custom user icons and actions
- actions = icons_and_actions_of('host', hostname)
- if actions:
- outfile.write(" _ACTIONS\t\t\t%s\n" % ','.join(actions))
-
# Custom configuration last -> user may override all other values
outfile.write(make_utf8(extra_host_conf_of(hostname)))
@@ -220,7 +209,6 @@ def create_nagios_hostdefs(outfile, hostname, attrs):
outfile.write(" use\t\t\t\t%s-summary\n" % (is_clust and
cluster_template or host_template))
outfile.write(" alias\t\t\t\tSummary of %s\n" % alias)
outfile.write(" address\t\t\t%s\n" % (ip and ip or
fallback_ip_for(hostname)))
- outfile.write(" _TAGS\t\t\t\t%s\n" % "
".join(tags_of_host(hostname)))
outfile.write(" __REALNAME\t\t\t%s\n" % hostname)
outfile.write(" parents\t\t\t%s\n" % hostname)
@@ -229,9 +217,6 @@ def create_nagios_hostdefs(outfile, hostname, attrs):
if key[0] == '_':
outfile.write(" %s\t\t\t%s\n" % (key, value))
- if path:
- outfile.write(" _FILENAME\t\t\t%s\n" % path)
-
hgs = summary_hostgroups_of(hostname)
hostgroups = ",".join(hgs)
if len(hgs) == 0: