Module: check_mk
Branch: master
Commit: 365f44a605f4ae311751d573f23ce2ddec533d0f
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=365f44a605f4ae…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Wed Nov 15 07:15:49 2017 +0100
Renamed piggyback functions
Change-Id: Id77f49be994bb677572a427ce5cf112c679181c4
---
cmk_base/check_table.py | 2 +-
cmk_base/config.py | 2 +-
cmk_base/data_sources/__init__.py | 28 ++++++++++++++++++----------
cmk_base/data_sources/piggyback.py | 5 ++---
cmk_base/modes/check_mk.py | 2 +-
cmk_base/piggyback.py | 18 +++++++++---------
6 files changed, 32 insertions(+), 25 deletions(-)
diff --git a/cmk_base/check_table.py b/cmk_base/check_table.py
index 9d5964d..1c1ec05 100644
--- a/cmk_base/check_table.py
+++ b/cmk_base/check_table.py
@@ -73,7 +73,7 @@ def get_check_table(hostname, remove_duplicates=False, use_cache=True,
world='co
if not config.is_snmp_host(hostname) and checks.is_snmp_check(checkname) and \
(not config.has_management_board(hostname) or
config.management_protocol(hostname) != "snmp"):
passed = False
- if not config.is_tcp_host(hostname) and not
piggyback.has_piggyback_info(hostname) \
+ if not config.is_tcp_host(hostname) and not
piggyback.has_piggyback_raw_data(hostname) \
and checks.is_tcp_check(checkname):
passed = False
is_checkname_valid_cache[the_id] = passed
diff --git a/cmk_base/config.py b/cmk_base/config.py
index c9fde66..73fce5d 100644
--- a/cmk_base/config.py
+++ b/cmk_base/config.py
@@ -602,7 +602,7 @@ def is_ping_host(hostname):
import cmk_base.piggyback as piggyback
return not is_snmp_host(hostname) \
and not is_tcp_host(hostname) \
- and not piggyback.has_piggyback_info(hostname) \
+ and not piggyback.has_piggyback_raw_data(hostname) \
and not has_management_board(hostname)
diff --git a/cmk_base/data_sources/__init__.py b/cmk_base/data_sources/__init__.py
index ba17f5b..51c0181 100644
--- a/cmk_base/data_sources/__init__.py
+++ b/cmk_base/data_sources/__init__.py
@@ -24,6 +24,19 @@
# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301 USA.
+# Naming:
+#
+# raw data: The raw unparsed data produced by the data source (_execute()).
+# For the agent this is the whole byte string received from the
+# agent. For SNMP this is a python data structure containing
+# all OID/values received from SNMP.
+# info: The parsed raw data recevied from the data source (run()).
+# The transformation from the raw data is done by the
+# _convert_to_infos() method of the source.
+# host_info A wrapper object for the "info" and other information like
+# cache info and piggyback lines that is used to process the
+# data within Check_MK.
+
import ast
import os
import signal
@@ -75,16 +88,7 @@ g_data_source_errors = {}
def get_host_infos(sources, hostname, ipaddress, max_cachefile_age=None):
"""Generic function to gather ALL host info data for any host (hosts,
nodes, clusters) in Check_MK.
- Returns a dictionary of already parsed info constructs. The structure looks like
this:
-
- {
- ("hostname", "ipaddress"): {
- "section_name": [
- [ "line1field1", ... ],
- [ "line2field1", ... ],
- ]
- }
- }
+ Returns a HostInfo() object of already parsed info constructs.
Communication errors are not raised through by this functions. All agent related
errors are
stored in the g_data_source_errors construct which can be accessed by the caller to
get
@@ -123,6 +127,10 @@ def get_host_infos(sources, hostname, ipaddress,
max_cachefile_age=None):
host_info = all_host_infos.setdefault((this_hostname, this_ipaddress),
HostInfo())
host_info.update(host_info_of_source)
+ # Store piggyback information received from all sources of this host. This
+ # also implies a removal of piggyback files received during previous calls.
+ piggyback.store_piggyback_raw_data(this_hostname, host_info.piggybacked_lines)
+
return all_host_infos
diff --git a/cmk_base/data_sources/piggyback.py b/cmk_base/data_sources/piggyback.py
index 3c9a1c5..c80fbd5 100644
--- a/cmk_base/data_sources/piggyback.py
+++ b/cmk_base/data_sources/piggyback.py
@@ -33,9 +33,8 @@ class PiggyBackDataSource(CheckMKAgentDataSource):
return "piggyback"
def _execute(self, hostname, ipaddress):
- # TODO: Rename to get_piggyback_data()
- return piggyback.get_piggyback_info(hostname) \
- + piggyback.get_piggyback_info(ipaddress)
+ return piggyback.get_piggyback_raw_data(hostname) \
+ + piggyback.get_piggyback_raw_data(ipaddress)
def _cache_raw_data(self):
diff --git a/cmk_base/modes/check_mk.py b/cmk_base/modes/check_mk.py
index a692714..102dcb3 100644
--- a/cmk_base/modes/check_mk.py
+++ b/cmk_base/modes/check_mk.py
@@ -873,7 +873,7 @@ def mode_flush(hosts):
console.output(tty.bold + tty.green + " cache(%d)" % d)
# piggy files from this as source host
- d = piggyback.remove_piggyback_info_from(host)
+ d = piggyback.remove_piggyback_raw_data_from(host)
if d:
console.output(tty.bold + tty.magenta + " piggyback(%d)" % d)
diff --git a/cmk_base/piggyback.py b/cmk_base/piggyback.py
index 0fd8d10..fb1a780 100644
--- a/cmk_base/piggyback.py
+++ b/cmk_base/piggyback.py
@@ -36,25 +36,25 @@ import cmk_base.console as console
import cmk_base.config as config
-def get_piggyback_info(hostname):
+def get_piggyback_raw_data(hostname):
output = ""
if not hostname:
return output
- for sourcehost, file_path in get_piggyback_files(hostname):
+ for sourcehost, file_path in _get_piggyback_files(hostname):
console.verbose("Using piggyback information from host %s.\n" %
sourcehost)
output += file(file_path).read()
return output
-def has_piggyback_info(hostname):
- return get_piggyback_files(hostname) != []
+def has_piggyback_raw_data(hostname):
+ return _get_piggyback_files(hostname) != []
-def get_piggyback_files(hostname):
+def _get_piggyback_files(hostname):
files = []
dir = cmk.paths.tmp_dir + "/piggyback/" + hostname
- # remove_piggyback_info_from() may remove stale piggyback files of one source
+ # remove_piggyback_raw_data_from() may remove stale piggyback files of one source
# host and also the directory "hostname" when the last piggyback file for
the
# current host was removed. This may cause the os.listdir() to fail. We treat
# this as regular case: No piggyback files for the current host.
@@ -97,7 +97,7 @@ def get_piggyback_files(hostname):
return files
-def store_piggyback_info(sourcehost, piggybacked):
+def store_piggyback_raw_data(sourcehost, piggybacked):
for backedhost, lines in piggybacked.items():
console.verbose("Storing piggyback data for %s.\n" % backedhost)
content = "\n".join(lines) + "\n"
@@ -105,10 +105,10 @@ def store_piggyback_info(sourcehost, piggybacked):
# Remove piggybacked information that is not
# being sent this turn
- remove_piggyback_info_from(sourcehost, keep=piggybacked.keys())
+ remove_piggyback_raw_data_from(sourcehost, keep=piggybacked.keys())
-def remove_piggyback_info_from(sourcehost, keep=None):
+def remove_piggyback_raw_data_from(sourcehost, keep=None):
if keep is None:
keep = []