From 2e17176442e8d6384b85db2553a2944a0fe1263a Mon Sep 17 00:00:00 2001 From: Steve Coursen Date: Tue, 13 Feb 2018 09:14:05 -0500 Subject: [PATCH 1/5] Move if branch around to avoid creating unnecessary filter chains --- 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 5ea68b6..36ea742 100644 --- a/octodns/provider/ns1.py +++ b/octodns/provider/ns1.py @@ -233,11 +233,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 2a16e988e051a02677b86db830a3c3322887bcc5 Mon Sep 17 00:00:00 2001 From: Masaki Tagawa Date: Wed, 14 Feb 2018 01:16:09 +0900 Subject: [PATCH 2/5] Generate the zone name following the spec of Google Cloud DNS Zone name must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes, and be 63 characters or less. For instance, a reverse zone of IPv6 may violate the spec on the first character and the length of the zone name. --- octodns/provider/googlecloud.py | 7 +++++-- tests/test_octodns_provider_googlecloud.py | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/octodns/provider/googlecloud.py b/octodns/provider/googlecloud.py index 6ca0794..b8f2b97 100644 --- a/octodns/provider/googlecloud.py +++ b/octodns/provider/googlecloud.py @@ -127,9 +127,12 @@ class GoogleCloudProvider(BaseProvider): :type return: new google.cloud.dns.ManagedZone """ # Zone name must begin with a letter, end with a letter or digit, - # and only contain lowercase letters, digits or dashes + # and only contain lowercase letters, digits or dashes, + # and be 63 characters or less zone_name = '{}-{}'.format( - dns_name[:-1].replace('.', '-'), uuid4().hex) + dns_name.replace('.', '-'), uuid4().hex)[:63] + if not zone_name[:1].isalpha(): + zone_name = 'zone-{}'.format(zone_name[:58]) gcloud_zone = self.gcloud_client.zone( name=zone_name, diff --git a/tests/test_octodns_provider_googlecloud.py b/tests/test_octodns_provider_googlecloud.py index adc2112..6c6c2aa 100644 --- a/tests/test_octodns_provider_googlecloud.py +++ b/tests/test_octodns_provider_googlecloud.py @@ -427,3 +427,18 @@ class TestGoogleCloudProvider(TestCase): mock_zone.create.assert_called() provider.gcloud_client.zone.assert_called() + + def test__create_zone_ip6_arpa(self): + def _create_dummy_zone(name, dns_name): + return DummyGoogleCloudZone(name=name, dns_name=dns_name) + + provider = self._get_provider() + + provider.gcloud_client = Mock() + provider.gcloud_client.zone = Mock(side_effect=_create_dummy_zone) + + mock_zone = \ + provider._create_gcloud_zone('0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa') + + self.assertRegexpMatches(mock_zone.name, '^[a-z][a-z0-9-]*[a-z0-9]$') + self.assertEqual(len(mock_zone.name), 63) From c6aae7b9b385f4991f7ecdb7d66e8510e5dd7cb5 Mon Sep 17 00:00:00 2001 From: Masaki Tagawa Date: Wed, 14 Feb 2018 06:24:57 +0900 Subject: [PATCH 3/5] Always prepend a legal name to the zone name --- octodns/provider/googlecloud.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/octodns/provider/googlecloud.py b/octodns/provider/googlecloud.py index b8f2b97..97c8706 100644 --- a/octodns/provider/googlecloud.py +++ b/octodns/provider/googlecloud.py @@ -129,10 +129,8 @@ class GoogleCloudProvider(BaseProvider): # Zone name must begin with a letter, end with a letter or digit, # and only contain lowercase letters, digits or dashes, # and be 63 characters or less - zone_name = '{}-{}'.format( + zone_name = 'zone-{}-{}'.format( dns_name.replace('.', '-'), uuid4().hex)[:63] - if not zone_name[:1].isalpha(): - zone_name = 'zone-{}'.format(zone_name[:58]) gcloud_zone = self.gcloud_client.zone( name=zone_name, From eb97b43d2876c33b82fcf0c4765c33a5738403ea Mon Sep 17 00:00:00 2001 From: Steve Coursen Date: Thu, 15 Feb 2018 10:49:43 -0500 Subject: [PATCH 4/5] length of answers check is unnecessary --- octodns/provider/ns1.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/octodns/provider/ns1.py b/octodns/provider/ns1.py index 36ea742..80797d8 100644 --- a/octodns/provider/ns1.py +++ b/octodns/provider/ns1.py @@ -234,10 +234,9 @@ class Ns1Provider(BaseProvider): ) params['filters'] = [] if has_country: - if len(params['answers']) > 1: - params['filters'].append( - {"filter": "shuffle", "config": {}} - ) + params['filters'].append( + {"filter": "shuffle", "config": {}} + ) params['filters'].append( {"filter": "geotarget_country", "config": {}} ) From 743af639891326506b4f22b9715cac3e2d5031db Mon Sep 17 00:00:00 2001 From: Hirotaka Nakajima Date: Sat, 17 Feb 2018 23:00:31 +0900 Subject: [PATCH 5/5] Remove unnecessary argument "cdn" --- octodns/provider/cloudflare.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/octodns/provider/cloudflare.py b/octodns/provider/cloudflare.py index 3d47629..8df146d 100644 --- a/octodns/provider/cloudflare.py +++ b/octodns/provider/cloudflare.py @@ -56,7 +56,7 @@ class CloudflareProvider(BaseProvider): self.log = getLogger('CloudflareProvider[{}]'.format(id)) self.log.debug('__init__: id=%s, email=%s, token=***, cdn=%s', id, email, cdn) - super(CloudflareProvider, self).__init__(id, cdn, *args, **kwargs) + super(CloudflareProvider, self).__init__(id, *args, **kwargs) sess = Session() sess.headers.update({