Support GeoLocation and Failover on Route 53
This commit is contained in:
parent
f8af496445
commit
9fdeaca589
@ -88,6 +88,8 @@ class RecordSet(BaseModel):
|
||||
self.hosted_zone_name = kwargs.get("HostedZoneName")
|
||||
self.hosted_zone_id = kwargs.get("HostedZoneId")
|
||||
self.alias_target = kwargs.get("AliasTarget")
|
||||
self.failover = kwargs.get("Failover")
|
||||
self.geo_location = kwargs.get("GeoLocation")
|
||||
|
||||
@classmethod
|
||||
def create_from_cloudformation_json(
|
||||
@ -154,6 +156,16 @@ class RecordSet(BaseModel):
|
||||
{% if record_set.ttl %}
|
||||
<TTL>{{ record_set.ttl }}</TTL>
|
||||
{% endif %}
|
||||
{% if record_set.failover %}
|
||||
<Failover>{{ record_set.failover }}</Failover>
|
||||
{% endif %}
|
||||
{% if record_set.geo_location %}
|
||||
<GeoLocation>
|
||||
{% for geo_key in ['ContinentCode','CountryCode','SubdivisionCode'] %}
|
||||
{% if record_set.geo_location[geo_key] %}<{{ geo_key }}>{{ record_set.geo_location[geo_key] }}</{{ geo_key }}>{% endif %}
|
||||
{% endfor %}
|
||||
</GeoLocation>
|
||||
{% endif %}
|
||||
{% if record_set.alias_target %}
|
||||
<AliasTarget>
|
||||
<HostedZoneId>{{ record_set.alias_target['HostedZoneId'] }}</HostedZoneId>
|
||||
|
@ -753,6 +753,88 @@ def test_change_weighted_resource_record_sets():
|
||||
record["Weight"].should.equal(10)
|
||||
|
||||
|
||||
@mock_route53
|
||||
def test_failover_record_sets():
|
||||
conn = boto3.client("route53", region_name="us-east-2")
|
||||
conn.create_hosted_zone(
|
||||
Name="test.zone.", CallerReference=str(hash("test"))
|
||||
)
|
||||
zones = conn.list_hosted_zones_by_name(DNSName="test.zone.")
|
||||
hosted_zone_id = zones["HostedZones"][0]["Id"]
|
||||
|
||||
# Create geolocation record
|
||||
conn.change_resource_record_sets(
|
||||
HostedZoneId=hosted_zone_id,
|
||||
ChangeBatch={
|
||||
"Changes": [
|
||||
{
|
||||
"Action": "CREATE",
|
||||
"ResourceRecordSet": {
|
||||
"Name": "failover.test.zone.",
|
||||
"Type": "A",
|
||||
"TTL": 10,
|
||||
"ResourceRecords": [{"Value": "127.0.0.1"}],
|
||||
"Failover": "PRIMARY"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
)
|
||||
|
||||
response = conn.list_resource_record_sets(HostedZoneId=hosted_zone_id)
|
||||
record = response["ResourceRecordSets"][0]
|
||||
record["Failover"].should.equal("PRIMARY")
|
||||
|
||||
|
||||
@mock_route53
|
||||
def test_geolocation_record_sets():
|
||||
conn = boto3.client("route53", region_name="us-east-2")
|
||||
conn.create_hosted_zone(
|
||||
Name="test.zone.", CallerReference=str(hash("test"))
|
||||
)
|
||||
zones = conn.list_hosted_zones_by_name(DNSName="test.zone.")
|
||||
hosted_zone_id = zones["HostedZones"][0]["Id"]
|
||||
|
||||
# Create geolocation record
|
||||
conn.change_resource_record_sets(
|
||||
HostedZoneId=hosted_zone_id,
|
||||
ChangeBatch={
|
||||
"Changes": [
|
||||
{
|
||||
"Action": "CREATE",
|
||||
"ResourceRecordSet": {
|
||||
"Name": "georecord1.test.zone.",
|
||||
"Type": "A",
|
||||
"TTL": 10,
|
||||
"ResourceRecords": [{"Value": "127.0.0.1"}],
|
||||
"GeoLocation": {
|
||||
"ContinentCode": "EU"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Action": "CREATE",
|
||||
"ResourceRecordSet": {
|
||||
"Name": "georecord2.test.zone.",
|
||||
"Type": "A",
|
||||
"TTL": 10,
|
||||
"ResourceRecords": [{"Value": "127.0.0.2"}],
|
||||
"GeoLocation": {
|
||||
"CountryCode": "US",
|
||||
"SubdivisionCode": "NY"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
)
|
||||
|
||||
response = conn.list_resource_record_sets(HostedZoneId=hosted_zone_id)
|
||||
rrs = response["ResourceRecordSets"]
|
||||
rrs[0]["GeoLocation"].should.equal({"ContinentCode": "EU"})
|
||||
rrs[1]["GeoLocation"].should.equal({"CountryCode": "US", "SubdivisionCode": "NY"})
|
||||
|
||||
|
||||
@mock_route53
|
||||
def test_change_resource_record_invalid():
|
||||
conn = boto3.client("route53", region_name="us-east-1")
|
||||
|
Loading…
Reference in New Issue
Block a user