Add route53 health checks.
This commit is contained in:
parent
adb26986eb
commit
585ef7b768
7 changed files with 277 additions and 5 deletions
39
tests/test_cloudformation/fixtures/route53_health_check.py
Normal file
39
tests/test_cloudformation/fixtures/route53_health_check.py
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
template = {
|
||||
"Resources" : {
|
||||
"HostedZone": {
|
||||
"Type" : "AWS::Route53::HostedZone",
|
||||
"Properties" : {
|
||||
"Name" : "my_zone"
|
||||
}
|
||||
},
|
||||
|
||||
"my_health_check": {
|
||||
"Type": "AWS::Route53::HealthCheck",
|
||||
"Properties" : {
|
||||
"HealthCheckConfig" : {
|
||||
"FailureThreshold" : 3,
|
||||
"IPAddress" : "10.0.0.4",
|
||||
"Port" : 80,
|
||||
"RequestInterval" : 10,
|
||||
"ResourcePath" : "/",
|
||||
"Type" : "HTTP",
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"myDNSRecord" : {
|
||||
"Type" : "AWS::Route53::RecordSet",
|
||||
"Properties" : {
|
||||
"HostedZoneName" : { "Ref" : "HostedZone" },
|
||||
"Comment" : "DNS name for my instance.",
|
||||
"Name" : "my_record_set",
|
||||
"Type" : "A",
|
||||
"TTL" : "900",
|
||||
"ResourceRecords" : ["my.example.com"],
|
||||
"HealthCheckId": {"Ref": "my_health_check"},
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
@ -28,6 +28,7 @@ from .fixtures import (
|
|||
fn_join,
|
||||
rds_mysql_with_read_replica,
|
||||
route53_ec2_instance_with_public_ip,
|
||||
route53_health_check,
|
||||
route53_roundrobin,
|
||||
single_instance_with_ebs_volume,
|
||||
vpc_eip,
|
||||
|
|
@ -845,3 +846,38 @@ def test_route53_ec2_instance_with_public_ip():
|
|||
record_set1.ttl.should.equal('900')
|
||||
record_set1.weight.should.equal(None)
|
||||
record_set1.resource_records[0].should.equal("10.0.0.25")
|
||||
|
||||
|
||||
@mock_cloudformation()
|
||||
@mock_route53()
|
||||
def test_route53_associate_health_check():
|
||||
route53_conn = boto.connect_route53()
|
||||
|
||||
template_json = json.dumps(route53_health_check.template)
|
||||
conn = boto.cloudformation.connect_to_region("us-west-1")
|
||||
stack = conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=template_json,
|
||||
)
|
||||
|
||||
checks = route53_conn.get_list_health_checks()['ListHealthChecksResponse']['HealthChecks']
|
||||
list(checks).should.have.length_of(1)
|
||||
check = checks[0]
|
||||
health_check_id = check['Id']
|
||||
config = check['HealthCheckConfig']
|
||||
config["FailureThreshold"].should.equal("3")
|
||||
config["IPAddress"].should.equal("10.0.0.4")
|
||||
config["Port"].should.equal("80")
|
||||
config["RequestInterval"].should.equal("10")
|
||||
config["ResourcePath"].should.equal("/")
|
||||
config["Type"].should.equal("HTTP")
|
||||
|
||||
zones = route53_conn.get_all_hosted_zones()['ListHostedZonesResponse']['HostedZones']
|
||||
list(zones).should.have.length_of(1)
|
||||
zone_id = zones[0]['Id']
|
||||
|
||||
rrsets = route53_conn.get_all_rrsets(zone_id)
|
||||
rrsets.should.have.length_of(1)
|
||||
|
||||
record_set = rrsets[0]
|
||||
record_set.health_check.should.equal(health_check_id)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
import boto
|
||||
from boto.route53.healthcheck import HealthCheck
|
||||
from boto.route53.record import ResourceRecordSets
|
||||
|
||||
import sure # noqa
|
||||
|
|
@ -89,3 +90,79 @@ def test_rrset():
|
|||
|
||||
rrsets = conn.get_all_rrsets(zoneid, name="foo.foo.testdns.aws.com", type="A")
|
||||
rrsets.should.have.length_of(0)
|
||||
|
||||
|
||||
@mock_route53
|
||||
def test_create_health_check():
|
||||
conn = boto.connect_route53('the_key', 'the_secret')
|
||||
|
||||
check = HealthCheck(
|
||||
ip_addr="10.0.0.25",
|
||||
port=80,
|
||||
hc_type="HTTP",
|
||||
resource_path="/",
|
||||
fqdn="example.com",
|
||||
string_match="a good response",
|
||||
request_interval=10,
|
||||
failure_threshold=2,
|
||||
)
|
||||
conn.create_health_check(check)
|
||||
|
||||
checks = conn.get_list_health_checks()['ListHealthChecksResponse']['HealthChecks']
|
||||
list(checks).should.have.length_of(1)
|
||||
check = checks[0]
|
||||
config = check['HealthCheckConfig']
|
||||
config['IPAddress'].should.equal("10.0.0.25")
|
||||
config['Port'].should.equal("80")
|
||||
config['Type'].should.equal("HTTP")
|
||||
config['ResourcePath'].should.equal("/")
|
||||
config['FullyQualifiedDomainName'].should.equal("example.com")
|
||||
config['SearchString'].should.equal("a good response")
|
||||
config['RequestInterval'].should.equal("10")
|
||||
config['FailureThreshold'].should.equal("2")
|
||||
|
||||
|
||||
@mock_route53
|
||||
def test_delete_health_check():
|
||||
conn = boto.connect_route53('the_key', 'the_secret')
|
||||
|
||||
check = HealthCheck(
|
||||
ip_addr="10.0.0.25",
|
||||
port=80,
|
||||
hc_type="HTTP",
|
||||
resource_path="/",
|
||||
)
|
||||
conn.create_health_check(check)
|
||||
|
||||
checks = conn.get_list_health_checks()['ListHealthChecksResponse']['HealthChecks']
|
||||
list(checks).should.have.length_of(1)
|
||||
health_check_id = checks[0]['Id']
|
||||
|
||||
conn.delete_health_check(health_check_id)
|
||||
checks = conn.get_list_health_checks()['ListHealthChecksResponse']['HealthChecks']
|
||||
list(checks).should.have.length_of(0)
|
||||
|
||||
|
||||
@mock_route53
|
||||
def test_use_health_check_in_resource_record_set():
|
||||
conn = boto.connect_route53('the_key', 'the_secret')
|
||||
|
||||
check = HealthCheck(
|
||||
ip_addr="10.0.0.25",
|
||||
port=80,
|
||||
hc_type="HTTP",
|
||||
resource_path="/",
|
||||
)
|
||||
check = conn.create_health_check(check)['CreateHealthCheckResponse']['HealthCheck']
|
||||
check_id = check['Id']
|
||||
|
||||
zone = conn.create_hosted_zone("testdns.aws.com")
|
||||
zone_id = zone["CreateHostedZoneResponse"]["HostedZone"]["Id"].split("/")[-1]
|
||||
|
||||
changes = ResourceRecordSets(conn, zone_id)
|
||||
change = changes.add_change("CREATE", "foo.bar.testdns.aws.com", "A", health_check=check_id)
|
||||
change.add_value("1.2.3.4")
|
||||
changes.commit()
|
||||
|
||||
record_sets = conn.get_all_rrsets(zone_id)
|
||||
record_sets[0].health_check.should.equal(check_id)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue