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_name = kwargs.get("HostedZoneName")
|
||||||
self.hosted_zone_id = kwargs.get("HostedZoneId")
|
self.hosted_zone_id = kwargs.get("HostedZoneId")
|
||||||
self.alias_target = kwargs.get("AliasTarget")
|
self.alias_target = kwargs.get("AliasTarget")
|
||||||
|
self.failover = kwargs.get("Failover")
|
||||||
|
self.geo_location = kwargs.get("GeoLocation")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_from_cloudformation_json(
|
def create_from_cloudformation_json(
|
||||||
@ -154,6 +156,16 @@ class RecordSet(BaseModel):
|
|||||||
{% if record_set.ttl %}
|
{% if record_set.ttl %}
|
||||||
<TTL>{{ record_set.ttl }}</TTL>
|
<TTL>{{ record_set.ttl }}</TTL>
|
||||||
{% endif %}
|
{% 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 %}
|
{% if record_set.alias_target %}
|
||||||
<AliasTarget>
|
<AliasTarget>
|
||||||
<HostedZoneId>{{ record_set.alias_target['HostedZoneId'] }}</HostedZoneId>
|
<HostedZoneId>{{ record_set.alias_target['HostedZoneId'] }}</HostedZoneId>
|
||||||
|
@ -753,6 +753,88 @@ def test_change_weighted_resource_record_sets():
|
|||||||
record["Weight"].should.equal(10)
|
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
|
@mock_route53
|
||||||
def test_change_resource_record_invalid():
|
def test_change_resource_record_invalid():
|
||||||
conn = boto3.client("route53", region_name="us-east-1")
|
conn = boto3.client("route53", region_name="us-east-1")
|
||||||
|
Loading…
Reference in New Issue
Block a user