Merge branch 'master' into constellix_healthcheck

This commit is contained in:
Artem Patserkovskyi
2021-10-25 21:41:23 +03:00
committed by GitHub
co-authored by GitHub
14 changed files with 354 additions and 130 deletions
+6 -6
View File
@@ -1934,8 +1934,8 @@ class TestAzureDnsProvider(TestCase):
ttl=60, target_resource=SubResource(id=None))
azrecord.name = record.name or '@'
azrecord.type = f'Microsoft.Network/dnszones/{record._type}'
record2 = provider._populate_record(zone, azrecord)
self.assertEqual(record2.values, ['255.255.255.255'])
record2 = provider._populate_record(zone, azrecord, lenient=True)
self.assertEqual(record2.values, [])
# test that same record gets populated back from traffic managers
tm_list = provider._tm_client.profiles.list_by_resource_group
@@ -2016,8 +2016,8 @@ class TestAzureDnsProvider(TestCase):
ttl=60, target_resource=SubResource(id=None))
azrecord.name = record.name or '@'
azrecord.type = f'Microsoft.Network/dnszones/{record._type}'
record2 = provider._populate_record(zone, azrecord)
self.assertEqual(record2.values, ['::1'])
record2 = provider._populate_record(zone, azrecord, lenient=True)
self.assertEqual(record2.values, [])
# test that same record gets populated back from traffic managers
tm_list = provider._tm_client.profiles.list_by_resource_group
@@ -2259,8 +2259,8 @@ class TestAzureDnsProvider(TestCase):
azrecord.name = record1.name or '@'
azrecord.type = f'Microsoft.Network/dnszones/{record1._type}'
record2 = provider._populate_record(zone, azrecord)
self.assertEqual(record2.value, 'iam.invalid.')
record2 = provider._populate_record(zone, azrecord, lenient=True)
self.assertIsNone(record2.value)
change = Update(record2, record1)
provider._apply_Update(change)
+40 -1
View File
@@ -1961,7 +1961,7 @@ class TestNs1ProviderDynamic(TestCase):
'meta': {
'priority': 1,
'weight': 12,
'note': f'from:{catchall_pool_name}',
'note': f'pool:iad from:{catchall_pool_name}',
'up': {},
},
'region': catchall_pool_name,
@@ -2009,6 +2009,45 @@ class TestNs1ProviderDynamic(TestCase):
'value': 'value.unit.tests.',
}, data)
def test_data_for_invalid_dynamic_CNAME(self):
provider = Ns1Provider('test', 'api-key')
# Potential setup created outside of octoDNS, so it could be missing
# notes and region names can be arbitrary
filters = provider._get_updated_filter_chain(False, False)
ns1_record = {
'answers': [{
'answer': ['iad.unit.tests.'],
'meta': {
'priority': 1,
'weight': 12,
'up': {},
},
'region': 'global',
}, {
'answer': ['value.unit.tests.'],
'meta': {
'priority': 2,
'up': {},
},
'region': 'global',
}],
'domain': 'foo.unit.tests',
'filters': filters,
'regions': {
'global': {},
},
'tier': 3,
'ttl': 44,
'type': 'CNAME',
}
data = provider._data_for_CNAME('CNAME', ns1_record)
self.assertEquals({
'ttl': 44,
'type': 'CNAME',
'value': None,
}, data)
@patch('ns1.rest.records.Records.retrieve')
@patch('ns1.rest.zones.Zones.retrieve')
@patch('octodns.provider.ns1.Ns1Provider._monitors_for')
+134 -1
View File
@@ -1847,7 +1847,7 @@ class TestRoute53Provider(TestCase):
self.assertEquals([], extra)
stubber.assert_no_pending_responses()
def test_plan_with_get_zones_by_name(self):
def test_plan_apply_with_get_zones_by_name_zone_not_exists(self):
provider = Route53Provider(
'test', 'abc', '123', get_zones_by_name=True)
@@ -1874,6 +1874,139 @@ class TestRoute53Provider(TestCase):
plan = provider.plan(self.expected)
self.assertEquals(9, len(plan.changes))
create_hosted_zone_resp = {
'HostedZone': {
'Name': 'unit.tests.',
'Id': 'z42',
'CallerReference': 'abc',
},
'ChangeInfo': {
'Id': 'a12',
'Status': 'PENDING',
'SubmittedAt': '2017-01-29T01:02:03Z',
'Comment': 'hrm',
},
'DelegationSet': {
'Id': 'b23',
'CallerReference': 'blip',
'NameServers': [
'n12.unit.tests.',
],
},
'Location': 'us-east-1',
}
stubber.add_response('create_hosted_zone',
create_hosted_zone_resp, {
'Name': 'unit.tests.',
'CallerReference': ANY,
})
list_resource_record_sets_resp = {
'ResourceRecordSets': [{
'Name': 'a.unit.tests.',
'Type': 'A',
'GeoLocation': {
'ContinentCode': 'NA',
},
'ResourceRecords': [{
'Value': '2.2.3.4',
}],
'TTL': 61,
}],
'IsTruncated': False,
'MaxItems': '100',
}
stubber.add_response('list_resource_record_sets',
list_resource_record_sets_resp,
{'HostedZoneId': 'z42'})
stubber.add_response('list_health_checks',
{
'HealthChecks': self.health_checks,
'IsTruncated': False,
'MaxItems': '100',
'Marker': '',
})
stubber.add_response('change_resource_record_sets',
{'ChangeInfo': {
'Id': 'id',
'Status': 'PENDING',
'SubmittedAt': '2017-01-29T01:02:03Z',
}}, {'HostedZoneId': 'z42', 'ChangeBatch': ANY})
self.assertEquals(9, provider.apply(plan))
stubber.assert_no_pending_responses()
def test_plan_apply_with_get_zones_by_name_zone_exists(self):
provider = Route53Provider(
'test', 'abc', '123', get_zones_by_name=True)
# Use the stubber
stubber = Stubber(provider._conn)
stubber.activate()
list_hosted_zones_by_name_resp = {
'HostedZones': [{
'Id': 'z42',
'Name': 'unit.tests.',
'CallerReference': 'abc',
'Config': {
'Comment': 'string',
'PrivateZone': False
},
'ResourceRecordSetCount': 123,
}, ],
'DNSName': 'unit.tests.',
'HostedZoneId': 'z42',
'IsTruncated': False,
'MaxItems': 'string'
}
list_resource_record_sets_resp = {
'ResourceRecordSets': [{
'Name': 'a.unit.tests.',
'Type': 'A',
'ResourceRecords': [{
'Value': '2.2.3.4',
}],
'TTL': 61,
}],
'IsTruncated': False,
'MaxItems': '100',
}
stubber.add_response(
'list_hosted_zones_by_name',
list_hosted_zones_by_name_resp,
{'DNSName': 'unit.tests.', 'MaxItems': '1'}
)
stubber.add_response('list_resource_record_sets',
list_resource_record_sets_resp,
{'HostedZoneId': 'z42'})
plan = provider.plan(self.expected)
self.assertEquals(10, len(plan.changes))
stubber.add_response('list_health_checks',
{
'HealthChecks': self.health_checks,
'IsTruncated': False,
'MaxItems': '100',
'Marker': '',
})
stubber.add_response('change_resource_record_sets',
{'ChangeInfo': {
'Id': 'id',
'Status': 'PENDING',
'SubmittedAt': '2017-01-29T01:02:03Z',
}}, {'HostedZoneId': 'z42', 'ChangeBatch': ANY})
self.assertEquals(10, provider.apply(plan))
stubber.assert_no_pending_responses()
def test_extra_change_no_health_check(self):
provider, stubber = self._get_stubbed_provider()
+2 -2
View File
@@ -3895,7 +3895,7 @@ class TestDynamicRecords(TestCase):
'weight': 1,
'value': '6.6.6.6',
}, {
'weight': 16,
'weight': 101,
'value': '7.7.7.7',
}],
},
@@ -3919,7 +3919,7 @@ class TestDynamicRecords(TestCase):
}
with self.assertRaises(ValidationError) as ctx:
Record.new(self.zone, 'bad', a_data)
self.assertEquals(['invalid weight "16" in pool "three" value 2'],
self.assertEquals(['invalid weight "101" in pool "three" value 2'],
ctx.exception.reasons)
# invalid non-int weight