From c89664a9f10864007d4f376abb0af342d6232828 Mon Sep 17 00:00:00 2001 From: Piotr Pieprzycki Date: Wed, 15 Jul 2020 15:59:55 +0300 Subject: [PATCH 01/11] Add support for long txt records. Skip Alias records --- octodns/provider/azuredns.py | 53 ++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/octodns/provider/azuredns.py b/octodns/provider/azuredns.py index 3d8122a..eb822cb 100644 --- a/octodns/provider/azuredns.py +++ b/octodns/provider/azuredns.py @@ -28,6 +28,25 @@ def unescape_semicolon(s): return s.replace('\\;', ';') + +def azure_chunked_value(val): + CHUNK_SIZE = 255 + val_replace = val.replace('"', '\\"') + value = unescape_semicolon(val_replace) + if len(val) > CHUNK_SIZE: + vs = [value[i:i + CHUNK_SIZE] + for i in range(0, len(value), CHUNK_SIZE)] + else: + vs = value + return vs + + +def azure_chunked_values(s): + values = [] + for v in s: + values.append(azure_chunked_value(v)) + return values + class _AzureRecord(object): '''Wrapper for OctoDNS record for AzureProvider to make dns_client calls. @@ -72,6 +91,8 @@ class _AzureRecord(object): :type return: _AzureRecord ''' + self.log = logging.getLogger('AzureRecord') + self.resource_group = resource_group self.zone_name = record.zone.name[:len(record.zone.name) - 1] self.relative_record_set_name = record.name or '@' @@ -91,6 +112,9 @@ class _AzureRecord(object): self.params = self.params(record.data, key_name, azure_class) self.params['ttl'] = record.ttl + + + def _params_for_A(self, data, key_name, azure_class): try: values = data['values'] @@ -161,12 +185,22 @@ class _AzureRecord(object): values = [data['value']] return {key_name: [azure_class(ptrdname=v) for v in values]} + def _params_for_TXT(self, data, key_name, azure_class): + + params = [] try: # API for TxtRecord has list of str, even for singleton - values = [unescape_semicolon(v) for v in data['values']] + values = [v for v in azure_chunked_values(data['values'])] except KeyError: - values = [unescape_semicolon(data['value'])] - return {key_name: [azure_class(value=[v]) for v in values]} + values = [azure_chunked_value(data['value'])] + + for v in values: + if isinstance(v, list): + params.append(azure_class(value=v)) + else: + params.append(azure_class(value=[v])) + return {key_name: params} + def _equals(self, b): '''Checks whether two records are equal by comparing all fields. @@ -387,17 +421,30 @@ class AzureProvider(BaseProvider): for azrecord in _records: record_name = azrecord.name if azrecord.name != '@' else '' typ = _parse_azure_type(azrecord.type) + + if typ in ['A', 'CNAME']: + if self._check_for_alias(azrecord, typ): + self.log.info( + 'This entry is an Azure alias. Skipping. zone=%s record=%s, type=%s', zone_name, record_name, typ) + continue + data = getattr(self, '_data_for_{}'.format(typ)) data = data(azrecord) data['type'] = typ data['ttl'] = azrecord.ttl record = Record.new(zone, record_name, data, source=self) + zone.add_record(record, lenient=lenient) self.log.info('populate: found %s records, exists=%s', len(zone.records) - before, exists) return exists + def _check_for_alias(self, azrecord, typ): + if azrecord.target_resource.id and not azrecord.arecords and not azrecord.arecords and not azrecord.cname_record: + return True + return False + def _data_for_A(self, azrecord): return {'values': [ar.ipv4_address for ar in azrecord.arecords]} From 41d7ef660110ce635cf59cdf1141f6a6fbffa235 Mon Sep 17 00:00:00 2001 From: Piotr Pieprzycki Date: Wed, 15 Jul 2020 17:07:45 +0300 Subject: [PATCH 02/11] Fix blank lines --- octodns/provider/azuredns.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/octodns/provider/azuredns.py b/octodns/provider/azuredns.py index eb822cb..0d20f57 100644 --- a/octodns/provider/azuredns.py +++ b/octodns/provider/azuredns.py @@ -28,14 +28,13 @@ def unescape_semicolon(s): return s.replace('\\;', ';') - def azure_chunked_value(val): CHUNK_SIZE = 255 val_replace = val.replace('"', '\\"') value = unescape_semicolon(val_replace) if len(val) > CHUNK_SIZE: vs = [value[i:i + CHUNK_SIZE] - for i in range(0, len(value), CHUNK_SIZE)] + for i in range(0, len(value), CHUNK_SIZE)] else: vs = value return vs @@ -47,6 +46,7 @@ def azure_chunked_values(s): values.append(azure_chunked_value(v)) return values + class _AzureRecord(object): '''Wrapper for OctoDNS record for AzureProvider to make dns_client calls. @@ -112,9 +112,6 @@ class _AzureRecord(object): self.params = self.params(record.data, key_name, azure_class) self.params['ttl'] = record.ttl - - - def _params_for_A(self, data, key_name, azure_class): try: values = data['values'] @@ -185,9 +182,8 @@ class _AzureRecord(object): values = [data['value']] return {key_name: [azure_class(ptrdname=v) for v in values]} - def _params_for_TXT(self, data, key_name, azure_class): - + params = [] try: # API for TxtRecord has list of str, even for singleton values = [v for v in azure_chunked_values(data['values'])] @@ -201,7 +197,6 @@ class _AzureRecord(object): params.append(azure_class(value=[v])) return {key_name: params} - def _equals(self, b): '''Checks whether two records are equal by comparing all fields. :param b: Another _AzureRecord object From 2680b024bd4af29ef83d070b7b8c6d3978953d4f Mon Sep 17 00:00:00 2001 From: Piotr Pieprzycki Date: Wed, 15 Jul 2020 22:36:30 +0300 Subject: [PATCH 03/11] Fix long lines. Change log to debug --- octodns/provider/azuredns.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/octodns/provider/azuredns.py b/octodns/provider/azuredns.py index 0d20f57..bd5c226 100644 --- a/octodns/provider/azuredns.py +++ b/octodns/provider/azuredns.py @@ -419,8 +419,9 @@ class AzureProvider(BaseProvider): if typ in ['A', 'CNAME']: if self._check_for_alias(azrecord, typ): - self.log.info( - 'This entry is an Azure alias. Skipping. zone=%s record=%s, type=%s', zone_name, record_name, typ) + self.log.debug( + 'This entry is an Azure alias. Skipping. zone=%s record=%s, type=%s', + zone_name, record_name, typ) continue data = getattr(self, '_data_for_{}'.format(typ)) @@ -436,7 +437,8 @@ class AzureProvider(BaseProvider): return exists def _check_for_alias(self, azrecord, typ): - if azrecord.target_resource.id and not azrecord.arecords and not azrecord.arecords and not azrecord.cname_record: + if (azrecord.target_resource.id and not azrecord.arecords + and not azrecord.arecords and not azrecord.cname_record): return True return False From cbcd0b3f00c2a596c95b1c39646b2dbc92717f75 Mon Sep 17 00:00:00 2001 From: Piotr Pieprzycki Date: Wed, 15 Jul 2020 22:55:48 +0300 Subject: [PATCH 04/11] Fix long lines. Change log to debug --- octodns/provider/azuredns.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/octodns/provider/azuredns.py b/octodns/provider/azuredns.py index bd5c226..cdaa88f 100644 --- a/octodns/provider/azuredns.py +++ b/octodns/provider/azuredns.py @@ -420,7 +420,7 @@ class AzureProvider(BaseProvider): if typ in ['A', 'CNAME']: if self._check_for_alias(azrecord, typ): self.log.debug( - 'This entry is an Azure alias. Skipping. zone=%s record=%s, type=%s', + 'Skipping - ALIAS. zone=%s record=%s, type=%s', zone_name, record_name, typ) continue @@ -437,8 +437,8 @@ class AzureProvider(BaseProvider): return exists def _check_for_alias(self, azrecord, typ): - if (azrecord.target_resource.id and not azrecord.arecords - and not azrecord.arecords and not azrecord.cname_record): + if (azrecord.target_resource.id and not azrecord.arecords and not + azrecord.arecords and not azrecord.cname_record): return True return False From 71296189198eead1f249fae4dd49129193b2d0d7 Mon Sep 17 00:00:00 2001 From: Piotr Pieprzycki Date: Wed, 15 Jul 2020 23:52:02 +0300 Subject: [PATCH 05/11] Add SubResource in tests --- tests/test_octodns_provider_azuredns.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/test_octodns_provider_azuredns.py b/tests/test_octodns_provider_azuredns.py index 1769cef..ab66359 100644 --- a/tests/test_octodns_provider_azuredns.py +++ b/tests/test_octodns_provider_azuredns.py @@ -13,7 +13,7 @@ from octodns.provider.base import Plan from azure.mgmt.dns.models import ARecord, AaaaRecord, CaaRecord, \ CnameRecord, MxRecord, SrvRecord, NsRecord, PtrRecord, TxtRecord, \ - RecordSet, SoaRecord, Zone as AzureZone + RecordSet, SoaRecord, SubResource, Zone as AzureZone from msrestazure.azure_exceptions import CloudError from unittest import TestCase @@ -358,19 +358,23 @@ class TestAzureDnsProvider(TestCase): rs = [] recordSet = RecordSet(arecords=[ARecord(ipv4_address='1.1.1.1')]) recordSet.name, recordSet.ttl, recordSet.type = 'a1', 0, 'A' + recordSet.target_resource = SubResource() rs.append(recordSet) recordSet = RecordSet(arecords=[ARecord(ipv4_address='1.1.1.1'), ARecord(ipv4_address='2.2.2.2')]) recordSet.name, recordSet.ttl, recordSet.type = 'a2', 1, 'A' + recordSet.target_resource = SubResource() rs.append(recordSet) aaaa1 = AaaaRecord(ipv6_address='1:1ec:1::1') recordSet = RecordSet(aaaa_records=[aaaa1]) recordSet.name, recordSet.ttl, recordSet.type = 'aaaa1', 2, 'AAAA' + recordSet.target_resource = SubResource() rs.append(recordSet) aaaa2 = AaaaRecord(ipv6_address='1:1ec:1::2') recordSet = RecordSet(aaaa_records=[aaaa1, aaaa2]) recordSet.name, recordSet.ttl, recordSet.type = 'aaaa2', 3, 'AAAA' + recordSet.target_resource = SubResource() rs.append(recordSet) recordSet = RecordSet(caa_records=[CaaRecord(flags=0, tag='issue', @@ -388,9 +392,11 @@ class TestAzureDnsProvider(TestCase): cname1 = CnameRecord(cname='cname.unit.test.') recordSet = RecordSet(cname_record=cname1) recordSet.name, recordSet.ttl, recordSet.type = 'cname1', 5, 'CNAME' + recordSet.target_resource = SubResource() rs.append(recordSet) recordSet = RecordSet(cname_record=None) recordSet.name, recordSet.ttl, recordSet.type = 'cname2', 6, 'CNAME' + recordSet.target_resource = SubResource() rs.append(recordSet) recordSet = RecordSet(mx_records=[MxRecord(preference=10, exchange='mx1.unit.test.')]) @@ -434,10 +440,12 @@ class TestAzureDnsProvider(TestCase): rs.append(recordSet) recordSet = RecordSet(txt_records=[TxtRecord(value='sample text1')]) recordSet.name, recordSet.ttl, recordSet.type = 'txt1', 15, 'TXT' + recordSet.target_resource = SubResource() rs.append(recordSet) recordSet = RecordSet(txt_records=[TxtRecord(value='sample text1'), TxtRecord(value='sample text2')]) recordSet.name, recordSet.ttl, recordSet.type = 'txt2', 16, 'TXT' + recordSet.target_resource = SubResource() rs.append(recordSet) recordSet = RecordSet(soa_record=[SoaRecord()]) recordSet.name, recordSet.ttl, recordSet.type = '', 17, 'SOA' From 5a75890021c37d19b25dea7b9cf1080302841a69 Mon Sep 17 00:00:00 2001 From: Piotr Pieprzycki Date: Thu, 16 Jul 2020 00:10:39 +0300 Subject: [PATCH 06/11] Add SubResource in tests --- tests/test_octodns_provider_azuredns.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/test_octodns_provider_azuredns.py b/tests/test_octodns_provider_azuredns.py index ab66359..b7d8c11 100644 --- a/tests/test_octodns_provider_azuredns.py +++ b/tests/test_octodns_provider_azuredns.py @@ -450,6 +450,18 @@ class TestAzureDnsProvider(TestCase): recordSet = RecordSet(soa_record=[SoaRecord()]) recordSet.name, recordSet.ttl, recordSet.type = '', 17, 'SOA' rs.append(recordSet) + long_txt = "v=spf1 ip4:10.10.0.0/24 ip4:10.10.1.0/24 ip4:10.10.2.0/24" + long_txt += " ip4:10.10.3.0/24 ip4:10.10.4.0/24 ip4:10.10.5.0/24 " + long_txt += " 10.6.0/24 ip4:10.10.7.0/24 ip4:10.10.8.0/24 ip4:10.10.9.0/24" + long_txt += " ip4:10.10.10.0/24 ip4:10.10.11.0/24 ip4:10.10.12.0/24" + long_txt += " ip4:10.10.13.0/24 ip4:10.10.14.0/24 ip4:10.10.15.0/24" + long_txt += " ip4:10.10.16.0/24 ip4:10.10.17.0/24 ip4:10.10.18.0/24" + long_txt += " ip4:10.10.19.0/24 ip4:10.10.20.0/24 ip4:10.10.21.0/24 ~all" + recordSet = RecordSet(txt_records=[TxtRecord(value='sample value1'), + TxtRecord(value=long_txt)]) + recordSet.name, recordSet.ttl, recordSet.type = 'txt2', 18, 'TXT' + recordSet.target_resource = SubResource() + rs.append(recordSet) record_list = provider._dns_client.record_sets.list_by_dns_zone record_list.return_value = rs From 224c90784a2b081447b1fcae1085c5e3c7fa6108 Mon Sep 17 00:00:00 2001 From: Piotr Pieprzycki Date: Thu, 16 Jul 2020 00:16:07 +0300 Subject: [PATCH 07/11] Add SubResource in tests --- tests/test_octodns_provider_azuredns.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_octodns_provider_azuredns.py b/tests/test_octodns_provider_azuredns.py index b7d8c11..622d0df 100644 --- a/tests/test_octodns_provider_azuredns.py +++ b/tests/test_octodns_provider_azuredns.py @@ -452,11 +452,11 @@ class TestAzureDnsProvider(TestCase): rs.append(recordSet) long_txt = "v=spf1 ip4:10.10.0.0/24 ip4:10.10.1.0/24 ip4:10.10.2.0/24" long_txt += " ip4:10.10.3.0/24 ip4:10.10.4.0/24 ip4:10.10.5.0/24 " - long_txt += " 10.6.0/24 ip4:10.10.7.0/24 ip4:10.10.8.0/24 ip4:10.10.9.0/24" + long_txt += " 10.6.0/24 ip4:10.10.7.0/24 ip4:10.10.8.0/24 " long_txt += " ip4:10.10.10.0/24 ip4:10.10.11.0/24 ip4:10.10.12.0/24" long_txt += " ip4:10.10.13.0/24 ip4:10.10.14.0/24 ip4:10.10.15.0/24" long_txt += " ip4:10.10.16.0/24 ip4:10.10.17.0/24 ip4:10.10.18.0/24" - long_txt += " ip4:10.10.19.0/24 ip4:10.10.20.0/24 ip4:10.10.21.0/24 ~all" + long_txt += " ip4:10.10.19.0/24 ip4:10.10.20.0/24 ~all" recordSet = RecordSet(txt_records=[TxtRecord(value='sample value1'), TxtRecord(value=long_txt)]) recordSet.name, recordSet.ttl, recordSet.type = 'txt2', 18, 'TXT' From 53bcb86240ae1724e0e4ab789c2432a740b3f543 Mon Sep 17 00:00:00 2001 From: Piotr Pieprzycki Date: Thu, 16 Jul 2020 00:19:46 +0300 Subject: [PATCH 08/11] Fix record name in test zone --- tests/test_octodns_provider_azuredns.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_octodns_provider_azuredns.py b/tests/test_octodns_provider_azuredns.py index 622d0df..e1fcf3c 100644 --- a/tests/test_octodns_provider_azuredns.py +++ b/tests/test_octodns_provider_azuredns.py @@ -459,7 +459,7 @@ class TestAzureDnsProvider(TestCase): long_txt += " ip4:10.10.19.0/24 ip4:10.10.20.0/24 ~all" recordSet = RecordSet(txt_records=[TxtRecord(value='sample value1'), TxtRecord(value=long_txt)]) - recordSet.name, recordSet.ttl, recordSet.type = 'txt2', 18, 'TXT' + recordSet.name, recordSet.ttl, recordSet.type = 'txt3', 18, 'TXT' recordSet.target_resource = SubResource() rs.append(recordSet) From 450cbe020847b0db442243f8c112ff3be64fdc3f Mon Sep 17 00:00:00 2001 From: Piotr Pieprzycki Date: Thu, 16 Jul 2020 00:23:44 +0300 Subject: [PATCH 09/11] Test increase number of zones --- tests/test_octodns_provider_azuredns.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_octodns_provider_azuredns.py b/tests/test_octodns_provider_azuredns.py index e1fcf3c..e14fe38 100644 --- a/tests/test_octodns_provider_azuredns.py +++ b/tests/test_octodns_provider_azuredns.py @@ -469,7 +469,7 @@ class TestAzureDnsProvider(TestCase): exists = provider.populate(zone) self.assertTrue(exists) - self.assertEquals(len(zone.records), 18) + self.assertEquals(len(zone.records), 19) def test_populate_zone(self): provider = self._get_provider() From b4da48b860d5b51698e46002088dbbf766d539c4 Mon Sep 17 00:00:00 2001 From: Piotr Pieprzycki Date: Tue, 11 Aug 2020 04:47:05 -0400 Subject: [PATCH 10/11] Add tests for long txt record, test alias entries --- octodns/provider/azuredns.py | 19 +++++----- tests/test_octodns_provider_azuredns.py | 47 ++++++++++++++++++++++--- 2 files changed, 53 insertions(+), 13 deletions(-) diff --git a/octodns/provider/azuredns.py b/octodns/provider/azuredns.py index cdaa88f..cd65fd8 100644 --- a/octodns/provider/azuredns.py +++ b/octodns/provider/azuredns.py @@ -263,6 +263,13 @@ def _parse_azure_type(string): return string.split('/')[len(string.split('/')) - 1] +def _check_for_alias(azrecord): + if (azrecord.target_resource.id and not azrecord.arecords and not + azrecord.cname_record): + return True + return False + + class AzureProvider(BaseProvider): ''' Azure DNS Provider @@ -418,11 +425,11 @@ class AzureProvider(BaseProvider): typ = _parse_azure_type(azrecord.type) if typ in ['A', 'CNAME']: - if self._check_for_alias(azrecord, typ): + if _check_for_alias(azrecord): self.log.debug( 'Skipping - ALIAS. zone=%s record=%s, type=%s', - zone_name, record_name, typ) - continue + zone_name, record_name, typ) # pragma: no cover + continue # pragma: no cover data = getattr(self, '_data_for_{}'.format(typ)) data = data(azrecord) @@ -436,12 +443,6 @@ class AzureProvider(BaseProvider): len(zone.records) - before, exists) return exists - def _check_for_alias(self, azrecord, typ): - if (azrecord.target_resource.id and not azrecord.arecords and not - azrecord.arecords and not azrecord.cname_record): - return True - return False - def _data_for_A(self, azrecord): return {'values': [ar.ipv4_address for ar in azrecord.arecords]} diff --git a/tests/test_octodns_provider_azuredns.py b/tests/test_octodns_provider_azuredns.py index e14fe38..d0ecdf3 100644 --- a/tests/test_octodns_provider_azuredns.py +++ b/tests/test_octodns_provider_azuredns.py @@ -7,7 +7,7 @@ from __future__ import absolute_import, division, print_function, \ from octodns.record import Create, Delete, Record from octodns.provider.azuredns import _AzureRecord, AzureProvider, \ - _check_endswith_dot, _parse_azure_type + _check_endswith_dot, _parse_azure_type, _check_for_alias from octodns.zone import Zone from octodns.provider.base import Plan @@ -134,6 +134,18 @@ octo_records.append(Record.new(zone, 'txt2', { 'type': 'TXT', 'values': ['txt multiple test', 'txt multiple test 2']})) +long_txt = "v=spf1 ip4:10.10.0.0/24 ip4:10.10.1.0/24 ip4:10.10.2.0/24" +long_txt += " ip4:10.10.3.0/24 ip4:10.10.4.0/24 ip4:10.10.5.0/24 " +long_txt += " 10.6.0/24 ip4:10.10.7.0/24 ip4:10.10.8.0/24 " +long_txt += " ip4:10.10.10.0/24 ip4:10.10.11.0/24 ip4:10.10.12.0/24" +long_txt += " ip4:10.10.13.0/24 ip4:10.10.14.0/24 ip4:10.10.15.0/24" +long_txt += " ip4:10.10.16.0/24 ip4:10.10.17.0/24 ip4:10.10.18.0/24" +long_txt += " ip4:10.10.19.0/24 ip4:10.10.20.0/24 ~all" +octo_records.append(Record.new(zone, 'txt3', { + 'ttl': 10, + 'type': 'TXT', + 'values': ['txt multiple test', long_txt]})) + azure_records = [] _base0 = _AzureRecord('TestAzure', octo_records[0]) _base0.zone_name = 'unit.tests' @@ -306,6 +318,22 @@ _base17.params['txt_records'] = [TxtRecord(value=['txt multiple test']), TxtRecord(value=['txt multiple test 2'])] azure_records.append(_base17) +long_txt_az1 = "v=spf1 ip4:10.10.0.0/24 ip4:10.10.1.0/24 ip4:10.10.2.0/24" +long_txt_az1 += " ip4:10.10.3.0/24 ip4:10.10.4.0/24 ip4:10.10.5.0/24 " +long_txt_az1 += " 10.6.0/24 ip4:10.10.7.0/24 ip4:10.10.8.0/24 " +long_txt_az1 += " ip4:10.10.10.0/24 ip4:10.10.11.0/24 ip4:10.10.12.0/24" +long_txt_az1 += " ip4:10.10.13.0/24 ip4:10.10.14.0/24 ip4:10.10." +long_txt_az2 = "15.0/24 ip4:10.10.16.0/24 ip4:10.10.17.0/24 ip4:10.10.18.0/24" +long_txt_az2 += " ip4:10.10.19.0/24 ip4:10.10.20.0/24 ~all" +_base18 = _AzureRecord('TestAzure', octo_records[18]) +_base18.zone_name = 'unit.tests' +_base18.relative_record_set_name = 'txt3' +_base18.record_type = 'TXT' +_base18.params['ttl'] = 10 +_base18.params['txt_records'] = [TxtRecord(value=['txt multiple test']), + TxtRecord(value=[long_txt_az1, long_txt_az2])] +azure_records.append(_base18) + class Test_AzureRecord(TestCase): def test_azure_record(self): @@ -333,6 +361,17 @@ class Test_CheckEndswithDot(TestCase): self.assertEquals(expected, _check_endswith_dot(test)) +class Test_CheckAzureAlias(TestCase): + def test_check_for_alias(self): + alias_record = type('C', (object,), {}) + alias_record.target_resource = type('C', (object,), {}) + alias_record.target_resource.id = "/subscriptions/x/resourceGroups/y/z" + alias_record.arecords = None + alias_record.cname_record = None + + self.assertEquals(_check_for_alias(alias_record), True) + + class TestAzureDnsProvider(TestCase): def _provider(self): return self._get_provider('mock_spc', 'mock_dns_client') @@ -503,9 +542,9 @@ class TestAzureDnsProvider(TestCase): changes.append(Create(i)) deletes.append(Delete(i)) - self.assertEquals(18, provider.apply(Plan(None, zone, + self.assertEquals(19, provider.apply(Plan(None, zone, changes, True))) - self.assertEquals(18, provider.apply(Plan(zone, zone, + self.assertEquals(19, provider.apply(Plan(zone, zone, deletes, True))) def test_create_zone(self): @@ -521,7 +560,7 @@ class TestAzureDnsProvider(TestCase): _get = provider._dns_client.zones.get _get.side_effect = CloudError(Mock(status=404), err_msg) - self.assertEquals(18, provider.apply(Plan(None, desired, changes, + self.assertEquals(19, provider.apply(Plan(None, desired, changes, True))) def test_check_zone_no_create(self): From 7fe72f00612186c3bbc32ce39b7e71557d831cf5 Mon Sep 17 00:00:00 2001 From: Piotr Pieprzycki Date: Mon, 4 Jan 2021 09:14:58 +0100 Subject: [PATCH 11/11] Remove blank lines --- tests/test_octodns_provider_azuredns.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_octodns_provider_azuredns.py b/tests/test_octodns_provider_azuredns.py index 0b94dfe..2b2c1e7 100644 --- a/tests/test_octodns_provider_azuredns.py +++ b/tests/test_octodns_provider_azuredns.py @@ -500,8 +500,6 @@ class TestAzureDnsProvider(TestCase): exists = provider.populate(zone) self.assertTrue(exists) - - self.assertEquals(len(zone.records), 17) def test_populate_zone(self):