Skip to content

Commit

Permalink
Merge branch 'zihaoyu-route53_checker_ip_ranges' into develop
Browse files Browse the repository at this point in the history
Adds support for getting health checker IP ranges from Route53. Fixes #2792.
  • Loading branch information
danielgtaylor committed Dec 2, 2014
2 parents 36fae2b + e3fe2c2 commit ee14911
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
17 changes: 17 additions & 0 deletions boto/route53/connection.py
Expand Up @@ -306,6 +306,23 @@ def get_list_health_checks(self, maxitems=None, marker=None):
h.parse(body)
return e

def get_checker_ip_ranges(self):
"""
Return a list of Route53 healthcheck IP ranges
"""
uri = '/%s/checkeripranges' % self.Version
response = self.make_request('GET', uri)
body = response.read()
boto.log.debug(body)
if response.status >= 300:
raise exception.DNSServerError(response.status,
response.reason,
body)
e = boto.jsonresponse.Element(list_marker='CheckerIpRanges', item_marker=('member',))
h = boto.jsonresponse.XmlHandler(e, None)
h.parse(body)
return e

def delete_health_check(self, health_check_id):
"""
Delete a health check
Expand Down
30 changes: 30 additions & 0 deletions tests/unit/route53/test_connection.py
Expand Up @@ -529,6 +529,36 @@ def test_create_health_check_ip_address(self):
self.assertEqual(response['CreateHealthCheckResponse']['HealthCheck']['Id'], '34778cf8-e31e-4974-bad0-b108bd1623d3')


@attr(route53=True)
class TestGetCheckerIpRanges(AWSMockServiceTestCase):
connection_class = Route53Connection

def default_body(self):
return b"""
<GetCheckerIpRangesResponse xmlns="https://route53.amazonaws.com/doc/2013-04-01/">
<CheckerIpRanges>
<member>54.183.255.128/26</member>
<member>54.228.16.0/26</member>
<member>54.232.40.64/26</member>
<member>177.71.207.128/26</member>
<member>176.34.159.192/26</member>
</CheckerIpRanges>
</GetCheckerIpRangesResponse>
"""

def test_get_checker_ip_ranges(self):
self.set_http_response(status_code=200)
response = self.service_connection.get_checker_ip_ranges()
ip_ranges = response['GetCheckerIpRangesResponse']['CheckerIpRanges']

self.assertEqual(len(ip_ranges), 5)
self.assertIn('54.183.255.128/26', ip_ranges)
self.assertIn('54.228.16.0/26', ip_ranges)
self.assertIn('54.232.40.64/26', ip_ranges)
self.assertIn('177.71.207.128/26', ip_ranges)
self.assertIn('176.34.159.192/26', ip_ranges)


@attr(route53=True)
class TestCreateHealthCheckRoute53FQDN(AWSMockServiceTestCase):
connection_class = Route53Connection
Expand Down

0 comments on commit ee14911

Please sign in to comment.