From 6c91a92a72f3e297e44d669964ac06a9ad32c291 Mon Sep 17 00:00:00 2001 From: Stephen Coursen Date: Fri, 5 Jan 2018 19:24:38 +0000 Subject: [PATCH 1/3] Add geotarget filter, change log level to debug --- octodns/provider/ns1.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/octodns/provider/ns1.py b/octodns/provider/ns1.py index 6b0fe7e..d022e78 100644 --- a/octodns/provider/ns1.py +++ b/octodns/provider/ns1.py @@ -50,6 +50,10 @@ class Ns1Provider(BaseProvider): for answer in record.get('answers', []): meta = answer.get('meta', {}) if meta: + # country + state and country + province are allowed + # in that case though, supplying a state/province would + # be redundant since the country would supercede in when + # resolving the record. it is syntactically valid, however. country = meta.get('country', []) us_state = meta.get('us_state', []) ca_province = meta.get('ca_province', []) @@ -204,16 +208,32 @@ class Ns1Provider(BaseProvider): # so that we know we did this on purpose if/when troubleshooting params['answers'] = [{"answer": [x], "meta": {}} for x in record.values] + has_country = False for iso_region, target in record.geo.items(): key = 'iso_region_code' value = iso_region + if not has_country and len(value.split('-')) > 1: + has_country = True params['answers'].append( { 'answer': target.values, 'meta': {key: [value]}, }, ) - self.log.info("params for A: %s", params) + params['filters'] = [] + if len(params['answers']) > 1: + params['filters'].append( + {"filter": "shuffle", "config":{}} + ) + if has_country: + params['filters'].append( + {"filter": "geotarget_country", "config": {}} + ) + params['filters'].append( + {"filter": "select_first_n", + "config": {"N": 1}} + ) + self.log.debug("params for A: %s", params) return params _params_for_AAAA = _params_for_A From e6cda62284043303af06da207b73e90bad617f70 Mon Sep 17 00:00:00 2001 From: Stephen Coursen Date: Fri, 5 Jan 2018 22:34:15 +0000 Subject: [PATCH 2/3] Only add shuffle if there is more than 1 answer *and* any of the answers have geo --- octodns/provider/ns1.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/octodns/provider/ns1.py b/octodns/provider/ns1.py index d022e78..1206c2f 100644 --- a/octodns/provider/ns1.py +++ b/octodns/provider/ns1.py @@ -221,11 +221,11 @@ class Ns1Provider(BaseProvider): }, ) params['filters'] = [] - if len(params['answers']) > 1: - params['filters'].append( - {"filter": "shuffle", "config":{}} - ) if has_country: + if len(params['answers']) > 1: + params['filters'].append( + {"filter": "shuffle", "config":{}} + ) params['filters'].append( {"filter": "geotarget_country", "config": {}} ) From 34f2432c3f99c7189eedbce3b40ab1fda9c38fdf Mon Sep 17 00:00:00 2001 From: Stephen Coursen Date: Fri, 5 Jan 2018 22:45:00 +0000 Subject: [PATCH 3/3] after discussion, we should shuffle if there's more than 1 answer --- octodns/provider/ns1.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/octodns/provider/ns1.py b/octodns/provider/ns1.py index 1206c2f..d022e78 100644 --- a/octodns/provider/ns1.py +++ b/octodns/provider/ns1.py @@ -221,11 +221,11 @@ class Ns1Provider(BaseProvider): }, ) params['filters'] = [] + if len(params['answers']) > 1: + params['filters'].append( + {"filter": "shuffle", "config":{}} + ) if has_country: - if len(params['answers']) > 1: - params['filters'].append( - {"filter": "shuffle", "config":{}} - ) params['filters'].append( {"filter": "geotarget_country", "config": {}} )