From 5f57b52d07f5a75777e36837a76828c3af9c48a3 Mon Sep 17 00:00:00 2001 From: Viranch Mehta Date: Tue, 18 May 2021 10:12:59 -0700 Subject: [PATCH] map Oceania to Australia/Pacific in Azure --- octodns/provider/azuredns.py | 21 +++++++++++++++++++-- tests/test_octodns_provider_azuredns.py | 6 +++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/octodns/provider/azuredns.py b/octodns/provider/azuredns.py index 5c2d23c..8eeba02 100644 --- a/octodns/provider/azuredns.py +++ b/octodns/provider/azuredns.py @@ -655,12 +655,22 @@ class AzureProvider(BaseProvider): geos = rule.setdefault('geos', []) for code in geo_map: if code.startswith('GEO-'): - geos.append(code[len('GEO-'):]) + # continent + if code == 'GEO-AP': + # Azure uses Australia/Pacific (AP) instead of + # Oceania https://docs.microsoft.com/en-us/azure/ + # traffic-manager/ + # traffic-manager-geographic-regions + geos.append('OC') + else: + geos.append(code[len('GEO-'):]) elif '-' in code: + # state country, province = code.split('-', 1) country = GeoCodes.country_to_code(country) geos.append('{}-{}'.format(country, province)) else: + # country geos.append(GeoCodes.country_to_code(code)) # second level priority profile @@ -872,15 +882,22 @@ class AzureProvider(BaseProvider): if len(rule_geos) > 0: for geo in rule_geos: if '-' in geo: + # country or state geos.append(geo.split('-', 1)[-1]) else: - geos.append('GEO-{}'.format(geo)) + # continent if geo == 'AS': # Middle East is part of Asia in octoDNS, but # Azure treats it as a separate "group", so let's # add it in the list of geo mappings. We will drop # it when we later parse the list of regions. geos.append('GEO-ME') + elif geo == 'OC': + # Azure uses Australia/Pacific (AP) instead of + # Oceania + geo = 'AP' + + geos.append('GEO-{}'.format(geo)) else: geos.append('WORLD') geo_endpoints.append(Endpoint( diff --git a/tests/test_octodns_provider_azuredns.py b/tests/test_octodns_provider_azuredns.py index 609fc5c..e8e5281 100644 --- a/tests/test_octodns_provider_azuredns.py +++ b/tests/test_octodns_provider_azuredns.py @@ -573,7 +573,7 @@ class TestAzureDnsProvider(TestCase): }, }, 'rules': [ - {'geos': ['AF', 'EU-DE', 'NA-US-CA'], 'pool': 'one'}, + {'geos': ['AF', 'EU-DE', 'NA-US-CA', 'OC'], 'pool': 'one'}, {'pool': 'two'}, ], }, @@ -694,7 +694,7 @@ class TestAzureDnsProvider(TestCase): monitor_config=monitor, endpoints=[ Endpoint( - geo_mapping=['GEO-AF', 'DE', 'US-CA'], + geo_mapping=['GEO-AF', 'DE', 'US-CA', 'GEO-AP'], name='rule-one', type=nested, target_resource_id=id_format.format('rule-one'), @@ -944,7 +944,7 @@ class TestAzureDnsProvider(TestCase): }, }, 'rules': [ - {'geos': ['AF', 'EU-DE', 'NA-US-CA'], 'pool': 'one'}, + {'geos': ['AF', 'EU-DE', 'NA-US-CA', 'OC'], 'pool': 'one'}, {'pool': 'two'}, ], })