Module: check_mk
Branch: master
Commit: 18f386f194289025ebeae4db846d66d0ccc69641
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=18f386f1942890…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Fri Dec 21 11:12:16 2018 +0100
agent_aws: Refactored ELB sections; summary section collects state information
Change-Id: I40b7c99d9fec8859bef89c6b872d0ab490e912e6
---
agents/special/agent_aws | 59 ++++++++++++++++++++++++++++--------------------
1 file changed, 34 insertions(+), 25 deletions(-)
diff --git a/agents/special/agent_aws b/agents/special/agent_aws
index ddaa32f..b559b57 100755
--- a/agents/special/agent_aws
+++ b/agents/special/agent_aws
@@ -357,15 +357,15 @@ class S3(AWSSection):
logging.info("%s: KeyError %s; Available are %s", self.name, e,
response.keys())
return []
- for entry in buckets:
- bucket_name = entry['Name']
+ for bucket in buckets:
+ bucket_name = bucket['Name']
response = self._client.get_bucket_location(Bucket=bucket_name)
try:
location = response['LocationConstraint']
except KeyError as e:
logging.info("%s: KeyError %s; Available are %s", self.name, e,
response.keys())
else:
- entry['LocationConstraint'] = location
+ bucket['LocationConstraint'] = location
response = self._client.list_objects(Bucket=bucket_name)
try:
@@ -373,8 +373,7 @@ class S3(AWSSection):
except KeyError as e:
logging.info("%s: KeyError %s; Available are %s", self.name, e,
response.keys())
else:
- entry['Contents'] = objects
-
+ bucket['Contents'] = objects
return buckets
def _extract_content_from(self, raw_result):
@@ -405,15 +404,27 @@ class ELBSummary(AWSSection):
return 300
def _get_raw_result(self):
- return self._client.describe_load_balancers()
-
- def _extract_content_from(self, raw_result):
+ response = self._client.describe_load_balancers()
try:
- return raw_result['LoadBalancerDescriptions']
+ load_balancers = response['LoadBalancerDescriptions']
except KeyError, e:
- logging.info("%s: KeyError %s; Available are %s", self.name, e,
raw_result.keys())
+ logging.info("%s: KeyError %s; Available are %s", self.name, e,
response.keys())
return []
+ for load_balancer in load_balancers:
+ load_balancer_name = load_balancer['LoadBalancerName']
+ response =
self._client.describe_instance_health(LoadBalancerName=load_balancer_name)
+ try:
+ states = response['InstanceStates']
+ except KeyError, e:
+ logging.info("%s: KeyError %s; Available are %s", self.name, e,
response.keys())
+ else:
+ load_balancer['InstanceStates'] = states
+ return load_balancers
+
+ def _extract_content_from(self, raw_result):
+ return raw_result
+
def _format_content(self, content):
return [AWSSectionResult("", content)]
@@ -428,26 +439,23 @@ class ELBHealth(AWSSection):
return 300
def _get_raw_result(self):
- load_balancers = {}
- for entry in self._received_results.get('elb_summary', []):
- name = entry['LoadBalancerName']
- load_balancers.setdefault(name,
-
self._client.describe_instance_health(LoadBalancerName=name))
- return load_balancers
+ return self._received_results.get('elb_summary', [])
def _extract_content_from(self, raw_result):
- content = {}
- for name, row in raw_result.iteritems():
- try:
- content.setdefault(name, row['InstanceStates'])
- except KeyError, e:
- logging.info("%s: KeyError %s; Available are %s", self.name, e,
row.keys())
- return content
+ return raw_result
def _format_content(self, content):
+ content_by_piggyback_hosts = {}
+ for load_balancer in content:
+ try:
+
content_by_piggyback_hosts.setdefault(load_balancer['LoadBalancerName'],
+
load_balancer['InstanceStates'])
+ except KeyError, e:
+ logging.info("%s: KeyError %s; Available are %s", self.name,
e,
+ load_balancer.keys())
return [
AWSSectionResult(piggyback_hostname, rows)
- for piggyback_hostname, rows in content.iteritems()
+ for piggyback_hostname, rows in content_by_piggyback_hosts.iteritems()
]
@@ -956,7 +964,8 @@ class AWSSections(object):
logging.info(msg)
raise AWSSectionError(msg)
- self._write_section_result(section_name, int(now + section_interval + 60),
result)
+ if any([r.content for r in result]):
+ self._write_section_result(section_name, int(now + section_interval +
60), result)
def _write_section_result(self, section_name, until, result):
section_header = "<<<aws_%s:persist(%s)>>>\n" %
(section_name, until)