Module: check_mk
Branch: master
Commit: 4b7a22f37a498c21c3aecd4fd2a593574360fad2
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=4b7a22f37a498c…
Author: Moritz Kiemer <mo(a)mathias-kettner.de>
Date: Fri Apr 26 09:19:35 2019 +0200
agent_aws: move datetime serializer to utils
Change-Id: I561ae83d572679044d86f7bc62d804de8a9ddb77
---
cmk/special_agents/agent_aws.py | 12 ++++--------
cmk/special_agents/utils.py | 9 +++++++++
2 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/cmk/special_agents/agent_aws.py b/cmk/special_agents/agent_aws.py
index 5f900a3..1da0bba 100644
--- a/cmk/special_agents/agent_aws.py
+++ b/cmk/special_agents/agent_aws.py
@@ -29,7 +29,6 @@ Special agent for monitoring Amazon web services (AWS) with Check_MK.
import abc
import argparse
-import datetime
import json
import logging
import sys
@@ -45,6 +44,8 @@ from cmk.utils.paths import tmp_dir
import cmk.utils.store as store
import cmk.utils.password_store
+from cmk.special_agents.utils import datetime_serializer
+
AWSStrings = Union[bytes, unicode]
# TODO
@@ -457,11 +458,6 @@ AWSEC2LimitsSpecial = {
# '----------------------------------------------------------------------'
-def _datetime_converter(o):
- if isinstance(o, datetime.datetime):
- return o.__str__()
-
-
def _chunks(list_, length=100):
return [list_[i:i + length] for i in xrange(0, len(list_), length)]
@@ -683,7 +679,7 @@ class AWSSection(object):
return content, self._cache_file.stat().st_mtime
def _write_to_cache(self, raw_content):
- json_dump = json.dumps(raw_content, default=_datetime_converter)
+ json_dump = json.dumps(raw_content, default=datetime_serializer)
store.save_file(str(self._cache_file), json_dump)
@abc.abstractmethod
@@ -2811,7 +2807,7 @@ class AWSSections(object):
if write_piggyback_header:
sys.stdout.write("<<<<%s>>>>\n" %
row.piggyback_hostname)
sys.stdout.write(section_header)
- sys.stdout.write("%s\n" % json.dumps(row.content,
default=_datetime_converter))
+ sys.stdout.write("%s\n" % json.dumps(row.content,
default=datetime_serializer))
if write_piggyback_header:
sys.stdout.write("<<<<>>>>\n")
diff --git a/cmk/special_agents/utils.py b/cmk/special_agents/utils.py
index 05d930b..907bb52 100644
--- a/cmk/special_agents/utils.py
+++ b/cmk/special_agents/utils.py
@@ -25,6 +25,7 @@
# Boston, MA 02110-1301 USA.
"""Place for common code shared among different Check_MK special
agents"""
+import datetime
import getopt
import json
import pprint
@@ -93,3 +94,11 @@ USAGE: agent_%s --section_url [{section_name},{url}]
print line
else:
return content
+
+
+def datetime_serializer(obj):
+ """Custom serializer to pass to json dump functions"""
+ if isinstance(obj, datetime.datetime):
+ return obj.__str__()
+ # fall back to json default behaviour:
+ raise TypeError("%r is not JSON serializable" % obj)