mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
Merge pull request #331 from omarkilani/azuredns-updates
AzureProvider: update for azure-mgmt-dns 2.1.0 and add support for CAA records.
This commit is contained in:
@@ -151,7 +151,7 @@ The above command pulled the existing data out of Route53 and placed the results
|
||||
|
||||
| Provider | Requirements | Record Support | Dynamic/Geo Support | Notes |
|
||||
|--|--|--|--|--|
|
||||
| [AzureProvider](/octodns/provider/azuredns.py) | azure-mgmt-dns | A, AAAA, CNAME, MX, NS, PTR, SRV, TXT | No | |
|
||||
| [AzureProvider](/octodns/provider/azuredns.py) | azure-mgmt-dns | A, AAAA, CAA, CNAME, MX, NS, PTR, SRV, TXT | No | |
|
||||
| [CloudflareProvider](/octodns/provider/cloudflare.py) | | A, AAAA, ALIAS, CAA, CNAME, MX, NS, SPF, SRV, TXT | No | CAA tags restricted |
|
||||
| [DigitalOceanProvider](/octodns/provider/digitalocean.py) | | A, AAAA, CAA, CNAME, MX, NS, TXT, SRV | No | CAA tags restricted |
|
||||
| [DnsMadeEasyProvider](/octodns/provider/dnsmadeeasy.py) | | A, AAAA, ALIAS (ANAME), CAA, CNAME, MX, NS, PTR, SPF, SRV, TXT | No | CAA tags restricted |
|
||||
|
||||
@@ -9,8 +9,8 @@ from azure.common.credentials import ServicePrincipalCredentials
|
||||
from azure.mgmt.dns import DnsManagementClient
|
||||
from msrestazure.azure_exceptions import CloudError
|
||||
|
||||
from azure.mgmt.dns.models import ARecord, AaaaRecord, CnameRecord, MxRecord, \
|
||||
SrvRecord, NsRecord, PtrRecord, TxtRecord, Zone
|
||||
from azure.mgmt.dns.models import ARecord, AaaaRecord, CaaRecord, \
|
||||
CnameRecord, MxRecord, SrvRecord, NsRecord, PtrRecord, TxtRecord, Zone
|
||||
|
||||
import logging
|
||||
from functools import reduce
|
||||
@@ -40,6 +40,7 @@ class _AzureRecord(object):
|
||||
TYPE_MAP = {
|
||||
'A': ARecord,
|
||||
'AAAA': AaaaRecord,
|
||||
'CAA': CaaRecord,
|
||||
'CNAME': CnameRecord,
|
||||
'MX': MxRecord,
|
||||
'SRV': SrvRecord,
|
||||
@@ -90,53 +91,82 @@ class _AzureRecord(object):
|
||||
self.params = self.params(record.data, key_name, azure_class)
|
||||
self.params['ttl'] = record.ttl
|
||||
|
||||
def _params(self, data, key_name, azure_class):
|
||||
def _params_for_A(self, data, key_name, azure_class):
|
||||
try:
|
||||
values = data['values']
|
||||
except KeyError:
|
||||
values = [data['value']]
|
||||
return {key_name: [azure_class(v) for v in values]}
|
||||
return {key_name: [azure_class(ipv4_address=v) for v in values]}
|
||||
|
||||
_params_for_A = _params
|
||||
_params_for_AAAA = _params
|
||||
_params_for_NS = _params
|
||||
_params_for_PTR = _params
|
||||
def _params_for_AAAA(self, data, key_name, azure_class):
|
||||
try:
|
||||
values = data['values']
|
||||
except KeyError:
|
||||
values = [data['value']]
|
||||
return {key_name: [azure_class(ipv6_address=v) for v in values]}
|
||||
|
||||
def _params_for_CAA(self, data, key_name, azure_class):
|
||||
params = []
|
||||
if 'values' in data:
|
||||
for vals in data['values']:
|
||||
params.append(azure_class(flags=vals['flags'],
|
||||
tag=vals['tag'],
|
||||
value=vals['value']))
|
||||
else: # Else there is a singular data point keyed by 'value'.
|
||||
params.append(azure_class(flags=data['value']['flags'],
|
||||
tag=data['value']['tag'],
|
||||
value=data['value']['value']))
|
||||
return {key_name: params}
|
||||
|
||||
def _params_for_CNAME(self, data, key_name, azure_class):
|
||||
return {key_name: azure_class(data['value'])}
|
||||
return {key_name: azure_class(cname=data['value'])}
|
||||
|
||||
def _params_for_MX(self, data, key_name, azure_class):
|
||||
params = []
|
||||
if 'values' in data:
|
||||
for vals in data['values']:
|
||||
params.append(azure_class(vals['preference'],
|
||||
vals['exchange']))
|
||||
params.append(azure_class(preference=vals['preference'],
|
||||
exchange=vals['exchange']))
|
||||
else: # Else there is a singular data point keyed by 'value'.
|
||||
params.append(azure_class(data['value']['preference'],
|
||||
data['value']['exchange']))
|
||||
params.append(azure_class(preference=data['value']['preference'],
|
||||
exchange=data['value']['exchange']))
|
||||
return {key_name: params}
|
||||
|
||||
def _params_for_SRV(self, data, key_name, azure_class):
|
||||
params = []
|
||||
if 'values' in data:
|
||||
for vals in data['values']:
|
||||
params.append(azure_class(vals['priority'],
|
||||
vals['weight'],
|
||||
vals['port'],
|
||||
vals['target']))
|
||||
params.append(azure_class(priority=vals['priority'],
|
||||
weight=vals['weight'],
|
||||
port=vals['port'],
|
||||
target=vals['target']))
|
||||
else: # Else there is a singular data point keyed by 'value'.
|
||||
params.append(azure_class(data['value']['priority'],
|
||||
data['value']['weight'],
|
||||
data['value']['port'],
|
||||
data['value']['target']))
|
||||
params.append(azure_class(priority=data['value']['priority'],
|
||||
weight=data['value']['weight'],
|
||||
port=data['value']['port'],
|
||||
target=data['value']['target']))
|
||||
return {key_name: params}
|
||||
|
||||
def _params_for_NS(self, data, key_name, azure_class):
|
||||
try:
|
||||
values = data['values']
|
||||
except KeyError:
|
||||
values = [data['value']]
|
||||
return {key_name: [azure_class(nsdname=v) for v in values]}
|
||||
|
||||
def _params_for_PTR(self, data, key_name, azure_class):
|
||||
try:
|
||||
values = data['values']
|
||||
except KeyError:
|
||||
values = [data['value']]
|
||||
return {key_name: [azure_class(ptrdname=v) for v in values]}
|
||||
|
||||
def _params_for_TXT(self, data, key_name, azure_class):
|
||||
try: # API for TxtRecord has list of str, even for singleton
|
||||
values = [unescape_semicolon(v) for v in data['values']]
|
||||
except KeyError:
|
||||
values = [unescape_semicolon(data['value'])]
|
||||
return {key_name: [azure_class([v]) for v in values]}
|
||||
return {key_name: [azure_class(value=[v]) for v in values]}
|
||||
|
||||
def _equals(self, b):
|
||||
'''Checks whether two records are equal by comparing all fields.
|
||||
@@ -250,7 +280,8 @@ class AzureProvider(BaseProvider):
|
||||
'''
|
||||
SUPPORTS_GEO = False
|
||||
SUPPORTS_DYNAMIC = False
|
||||
SUPPORTS = set(('A', 'AAAA', 'CNAME', 'MX', 'NS', 'PTR', 'SRV', 'TXT'))
|
||||
SUPPORTS = set(('A', 'AAAA', 'CAA', 'CNAME', 'MX', 'NS', 'PTR', 'SRV',
|
||||
'TXT'))
|
||||
|
||||
def __init__(self, id, client_id, key, directory_id, sub_id,
|
||||
resource_group, *args, **kwargs):
|
||||
@@ -302,7 +333,8 @@ class AzureProvider(BaseProvider):
|
||||
self.log.debug('_check_zone:no matching zone; creating %s',
|
||||
name)
|
||||
create_zone = self._dns_client.zones.create_or_update
|
||||
create_zone(self._resource_group, name, Zone('global'))
|
||||
create_zone(self._resource_group, name,
|
||||
Zone(location='global'))
|
||||
return name
|
||||
else:
|
||||
return
|
||||
@@ -368,6 +400,12 @@ class AzureProvider(BaseProvider):
|
||||
def _data_for_AAAA(self, azrecord):
|
||||
return {'values': [ar.ipv6_address for ar in azrecord.aaaa_records]}
|
||||
|
||||
def _data_for_CAA(self, azrecord):
|
||||
return {'values': [{'flags': ar.flags,
|
||||
'tag': ar.tag,
|
||||
'value': ar.value}
|
||||
for ar in azrecord.caa_records]}
|
||||
|
||||
def _data_for_CNAME(self, azrecord):
|
||||
'''Parsing data from Azure DNS Client record call
|
||||
:param azrecord: a return of a call to list azure records
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
PyYaml==4.2b1
|
||||
azure-common==1.1.9
|
||||
azure-mgmt-dns==1.2.0
|
||||
azure-common==1.1.18
|
||||
azure-mgmt-dns==2.1.0
|
||||
boto3==1.7.5
|
||||
botocore==1.10.5
|
||||
dnspython==1.15.0
|
||||
@@ -12,7 +12,7 @@ google-cloud-dns==0.29.0
|
||||
incf.countryutils==1.0
|
||||
ipaddress==1.0.22
|
||||
jmespath==0.9.3
|
||||
msrestazure==0.4.27
|
||||
msrestazure==0.6.0
|
||||
natsort==5.5.0
|
||||
nsone==0.9.100
|
||||
ovh==0.4.8
|
||||
|
||||
@@ -11,9 +11,9 @@ from octodns.provider.azuredns import _AzureRecord, AzureProvider, \
|
||||
from octodns.zone import Zone
|
||||
from octodns.provider.base import Plan
|
||||
|
||||
from azure.mgmt.dns.models import ARecord, AaaaRecord, CnameRecord, MxRecord, \
|
||||
SrvRecord, NsRecord, PtrRecord, TxtRecord, RecordSet, SoaRecord, \
|
||||
Zone as AzureZone
|
||||
from azure.mgmt.dns.models import ARecord, AaaaRecord, CaaRecord, \
|
||||
CnameRecord, MxRecord, SrvRecord, NsRecord, PtrRecord, TxtRecord, \
|
||||
RecordSet, SoaRecord, Zone as AzureZone
|
||||
from msrestazure.azure_exceptions import CloudError
|
||||
|
||||
from unittest import TestCase
|
||||
@@ -38,6 +38,37 @@ octo_records.append(Record.new(zone, 'aaa', {
|
||||
'ttl': 2,
|
||||
'type': 'A',
|
||||
'values': ['1.1.1.3']}))
|
||||
octo_records.append(Record.new(zone, 'aaaa1', {
|
||||
'ttl': 300,
|
||||
'type': 'AAAA',
|
||||
'values': ['2601:644:500:e210:62f8:1dff:feb8:947a',
|
||||
'2601:642:500:e210:62f8:1dff:feb8:947a'],
|
||||
}))
|
||||
octo_records.append(Record.new(zone, 'aaaa2', {
|
||||
'ttl': 300,
|
||||
'type': 'AAAA',
|
||||
'value': '2601:644:500:e210:62f8:1dff:feb8:947a'
|
||||
}))
|
||||
octo_records.append(Record.new(zone, 'caa1', {
|
||||
'ttl': 9,
|
||||
'type': 'CAA',
|
||||
'value': {
|
||||
'flags': 0,
|
||||
'tag': 'issue',
|
||||
'value': 'ca.unit.tests',
|
||||
}}))
|
||||
octo_records.append(Record.new(zone, 'caa2', {
|
||||
'ttl': 9,
|
||||
'type': 'CAA',
|
||||
'values': [{
|
||||
'flags': 0,
|
||||
'tag': 'issue',
|
||||
'value': 'ca1.unit.tests',
|
||||
}, {
|
||||
'flags': 0,
|
||||
'tag': 'issue',
|
||||
'value': 'ca2.unit.tests',
|
||||
}]}))
|
||||
octo_records.append(Record.new(zone, 'cname', {
|
||||
'ttl': 3,
|
||||
'type': 'CNAME',
|
||||
@@ -67,6 +98,10 @@ octo_records.append(Record.new(zone, 'foo', {
|
||||
'ttl': 5,
|
||||
'type': 'NS',
|
||||
'value': 'ns1.unit.tests.'}))
|
||||
octo_records.append(Record.new(zone, 'ptr1', {
|
||||
'ttl': 5,
|
||||
'type': 'PTR',
|
||||
'value': 'ptr1.unit.tests.'}))
|
||||
octo_records.append(Record.new(zone, '_srv._tcp', {
|
||||
'ttl': 6,
|
||||
'type': 'SRV',
|
||||
@@ -105,7 +140,8 @@ _base0.zone_name = 'unit.tests'
|
||||
_base0.relative_record_set_name = '@'
|
||||
_base0.record_type = 'A'
|
||||
_base0.params['ttl'] = 0
|
||||
_base0.params['arecords'] = [ARecord('1.2.3.4'), ARecord('10.10.10.10')]
|
||||
_base0.params['arecords'] = [ARecord(ipv4_address='1.2.3.4'),
|
||||
ARecord(ipv4_address='10.10.10.10')]
|
||||
azure_records.append(_base0)
|
||||
|
||||
_base1 = _AzureRecord('TestAzure', octo_records[1])
|
||||
@@ -113,7 +149,8 @@ _base1.zone_name = 'unit.tests'
|
||||
_base1.relative_record_set_name = 'a'
|
||||
_base1.record_type = 'A'
|
||||
_base1.params['ttl'] = 1
|
||||
_base1.params['arecords'] = [ARecord('1.2.3.4'), ARecord('1.1.1.1')]
|
||||
_base1.params['arecords'] = [ARecord(ipv4_address='1.2.3.4'),
|
||||
ARecord(ipv4_address='1.1.1.1')]
|
||||
azure_records.append(_base1)
|
||||
|
||||
_base2 = _AzureRecord('TestAzure', octo_records[2])
|
||||
@@ -121,7 +158,7 @@ _base2.zone_name = 'unit.tests'
|
||||
_base2.relative_record_set_name = 'aa'
|
||||
_base2.record_type = 'A'
|
||||
_base2.params['ttl'] = 9001
|
||||
_base2.params['arecords'] = ARecord('1.2.4.3')
|
||||
_base2.params['arecords'] = ARecord(ipv4_address='1.2.4.3')
|
||||
azure_records.append(_base2)
|
||||
|
||||
_base3 = _AzureRecord('TestAzure', octo_records[3])
|
||||
@@ -129,85 +166,146 @@ _base3.zone_name = 'unit.tests'
|
||||
_base3.relative_record_set_name = 'aaa'
|
||||
_base3.record_type = 'A'
|
||||
_base3.params['ttl'] = 2
|
||||
_base3.params['arecords'] = ARecord('1.1.1.3')
|
||||
_base3.params['arecords'] = ARecord(ipv4_address='1.1.1.3')
|
||||
azure_records.append(_base3)
|
||||
|
||||
_base4 = _AzureRecord('TestAzure', octo_records[4])
|
||||
_base4.zone_name = 'unit.tests'
|
||||
_base4.relative_record_set_name = 'cname'
|
||||
_base4.record_type = 'CNAME'
|
||||
_base4.params['ttl'] = 3
|
||||
_base4.params['cname_record'] = CnameRecord('a.unit.tests.')
|
||||
_base4.relative_record_set_name = 'aaaa1'
|
||||
_base4.record_type = 'AAAA'
|
||||
_base4.params['ttl'] = 300
|
||||
aaaa1 = AaaaRecord(ipv6_address='2601:644:500:e210:62f8:1dff:feb8:947a')
|
||||
aaaa2 = AaaaRecord(ipv6_address='2601:642:500:e210:62f8:1dff:feb8:947a')
|
||||
_base4.params['aaaa_records'] = [aaaa1, aaaa2]
|
||||
azure_records.append(_base4)
|
||||
|
||||
_base5 = _AzureRecord('TestAzure', octo_records[5])
|
||||
_base5.zone_name = 'unit.tests'
|
||||
_base5.relative_record_set_name = 'mx1'
|
||||
_base5.record_type = 'MX'
|
||||
_base5.params['ttl'] = 3
|
||||
_base5.params['mx_records'] = [MxRecord(10, 'mx1.unit.tests.'),
|
||||
MxRecord(20, 'mx2.unit.tests.')]
|
||||
_base5.relative_record_set_name = 'aaaa2'
|
||||
_base5.record_type = 'AAAA'
|
||||
_base5.params['ttl'] = 300
|
||||
_base5.params['aaaa_records'] = [aaaa1]
|
||||
azure_records.append(_base5)
|
||||
|
||||
_base6 = _AzureRecord('TestAzure', octo_records[6])
|
||||
_base6.zone_name = 'unit.tests'
|
||||
_base6.relative_record_set_name = 'mx2'
|
||||
_base6.record_type = 'MX'
|
||||
_base6.params['ttl'] = 3
|
||||
_base6.params['mx_records'] = [MxRecord(10, 'mx1.unit.tests.')]
|
||||
_base6.relative_record_set_name = 'caa1'
|
||||
_base6.record_type = 'CAA'
|
||||
_base6.params['ttl'] = 9
|
||||
_base6.params['caa_records'] = [CaaRecord(flags=0,
|
||||
tag='issue',
|
||||
value='ca.unit.tests')]
|
||||
azure_records.append(_base6)
|
||||
|
||||
_base7 = _AzureRecord('TestAzure', octo_records[7])
|
||||
_base7.zone_name = 'unit.tests'
|
||||
_base7.relative_record_set_name = '@'
|
||||
_base7.record_type = 'NS'
|
||||
_base7.params['ttl'] = 4
|
||||
_base7.params['ns_records'] = [NsRecord('ns1.unit.tests.'),
|
||||
NsRecord('ns2.unit.tests.')]
|
||||
_base7.relative_record_set_name = 'caa2'
|
||||
_base7.record_type = 'CAA'
|
||||
_base7.params['ttl'] = 9
|
||||
_base7.params['caa_records'] = [CaaRecord(flags=0,
|
||||
tag='issue',
|
||||
value='ca1.unit.tests'),
|
||||
CaaRecord(flags=0,
|
||||
tag='issue',
|
||||
value='ca2.unit.tests')]
|
||||
azure_records.append(_base7)
|
||||
|
||||
_base8 = _AzureRecord('TestAzure', octo_records[8])
|
||||
_base8.zone_name = 'unit.tests'
|
||||
_base8.relative_record_set_name = 'foo'
|
||||
_base8.record_type = 'NS'
|
||||
_base8.params['ttl'] = 5
|
||||
_base8.params['ns_records'] = [NsRecord('ns1.unit.tests.')]
|
||||
_base8.relative_record_set_name = 'cname'
|
||||
_base8.record_type = 'CNAME'
|
||||
_base8.params['ttl'] = 3
|
||||
_base8.params['cname_record'] = CnameRecord(cname='a.unit.tests.')
|
||||
azure_records.append(_base8)
|
||||
|
||||
_base9 = _AzureRecord('TestAzure', octo_records[9])
|
||||
_base9.zone_name = 'unit.tests'
|
||||
_base9.relative_record_set_name = '_srv._tcp'
|
||||
_base9.record_type = 'SRV'
|
||||
_base9.params['ttl'] = 6
|
||||
_base9.params['srv_records'] = [SrvRecord(10, 20, 30, 'foo-1.unit.tests.'),
|
||||
SrvRecord(12, 30, 30, 'foo-2.unit.tests.')]
|
||||
_base9.relative_record_set_name = 'mx1'
|
||||
_base9.record_type = 'MX'
|
||||
_base9.params['ttl'] = 3
|
||||
_base9.params['mx_records'] = [MxRecord(preference=10,
|
||||
exchange='mx1.unit.tests.'),
|
||||
MxRecord(preference=20,
|
||||
exchange='mx2.unit.tests.')]
|
||||
azure_records.append(_base9)
|
||||
|
||||
_base10 = _AzureRecord('TestAzure', octo_records[10])
|
||||
_base10.zone_name = 'unit.tests'
|
||||
_base10.relative_record_set_name = '_srv2._tcp'
|
||||
_base10.record_type = 'SRV'
|
||||
_base10.params['ttl'] = 7
|
||||
_base10.params['srv_records'] = [SrvRecord(12, 17, 1, 'srvfoo.unit.tests.')]
|
||||
_base10.relative_record_set_name = 'mx2'
|
||||
_base10.record_type = 'MX'
|
||||
_base10.params['ttl'] = 3
|
||||
_base10.params['mx_records'] = [MxRecord(preference=10,
|
||||
exchange='mx1.unit.tests.')]
|
||||
azure_records.append(_base10)
|
||||
|
||||
_base11 = _AzureRecord('TestAzure', octo_records[11])
|
||||
_base11.zone_name = 'unit.tests'
|
||||
_base11.relative_record_set_name = 'txt1'
|
||||
_base11.record_type = 'TXT'
|
||||
_base11.params['ttl'] = 8
|
||||
_base11.params['txt_records'] = [TxtRecord(['txt singleton test'])]
|
||||
_base11.relative_record_set_name = '@'
|
||||
_base11.record_type = 'NS'
|
||||
_base11.params['ttl'] = 4
|
||||
_base11.params['ns_records'] = [NsRecord(nsdname='ns1.unit.tests.'),
|
||||
NsRecord(nsdname='ns2.unit.tests.')]
|
||||
azure_records.append(_base11)
|
||||
|
||||
_base12 = _AzureRecord('TestAzure', octo_records[12])
|
||||
_base12.zone_name = 'unit.tests'
|
||||
_base12.relative_record_set_name = 'txt2'
|
||||
_base12.record_type = 'TXT'
|
||||
_base12.params['ttl'] = 9
|
||||
_base12.params['txt_records'] = [TxtRecord(['txt multiple test']),
|
||||
TxtRecord(['txt multiple test 2'])]
|
||||
_base12.relative_record_set_name = 'foo'
|
||||
_base12.record_type = 'NS'
|
||||
_base12.params['ttl'] = 5
|
||||
_base12.params['ns_records'] = [NsRecord(nsdname='ns1.unit.tests.')]
|
||||
azure_records.append(_base12)
|
||||
|
||||
_base13 = _AzureRecord('TestAzure', octo_records[13])
|
||||
_base13.zone_name = 'unit.tests'
|
||||
_base13.relative_record_set_name = 'ptr1'
|
||||
_base13.record_type = 'PTR'
|
||||
_base13.params['ttl'] = 5
|
||||
_base13.params['ptr_records'] = [PtrRecord(ptrdname='ptr1.unit.tests.')]
|
||||
azure_records.append(_base13)
|
||||
|
||||
_base14 = _AzureRecord('TestAzure', octo_records[14])
|
||||
_base14.zone_name = 'unit.tests'
|
||||
_base14.relative_record_set_name = '_srv._tcp'
|
||||
_base14.record_type = 'SRV'
|
||||
_base14.params['ttl'] = 6
|
||||
_base14.params['srv_records'] = [SrvRecord(priority=10,
|
||||
weight=20,
|
||||
port=30,
|
||||
target='foo-1.unit.tests.'),
|
||||
SrvRecord(priority=12,
|
||||
weight=30,
|
||||
port=30,
|
||||
target='foo-2.unit.tests.')]
|
||||
azure_records.append(_base14)
|
||||
|
||||
_base15 = _AzureRecord('TestAzure', octo_records[15])
|
||||
_base15.zone_name = 'unit.tests'
|
||||
_base15.relative_record_set_name = '_srv2._tcp'
|
||||
_base15.record_type = 'SRV'
|
||||
_base15.params['ttl'] = 7
|
||||
_base15.params['srv_records'] = [SrvRecord(priority=12,
|
||||
weight=17,
|
||||
port=1,
|
||||
target='srvfoo.unit.tests.')]
|
||||
azure_records.append(_base15)
|
||||
|
||||
_base16 = _AzureRecord('TestAzure', octo_records[16])
|
||||
_base16.zone_name = 'unit.tests'
|
||||
_base16.relative_record_set_name = 'txt1'
|
||||
_base16.record_type = 'TXT'
|
||||
_base16.params['ttl'] = 8
|
||||
_base16.params['txt_records'] = [TxtRecord(value=['txt singleton test'])]
|
||||
azure_records.append(_base16)
|
||||
|
||||
_base17 = _AzureRecord('TestAzure', octo_records[17])
|
||||
_base17.zone_name = 'unit.tests'
|
||||
_base17.relative_record_set_name = 'txt2'
|
||||
_base17.record_type = 'TXT'
|
||||
_base17.params['ttl'] = 9
|
||||
_base17.params['txt_records'] = [TxtRecord(value=['txt multiple test']),
|
||||
TxtRecord(value=['txt multiple test 2'])]
|
||||
azure_records.append(_base17)
|
||||
|
||||
|
||||
class Test_AzureRecord(TestCase):
|
||||
def test_azure_record(self):
|
||||
@@ -258,62 +356,91 @@ class TestAzureDnsProvider(TestCase):
|
||||
provider = self._get_provider()
|
||||
|
||||
rs = []
|
||||
recordSet = RecordSet(arecords=[ARecord('1.1.1.1')])
|
||||
recordSet = RecordSet(arecords=[ARecord(ipv4_address='1.1.1.1')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'a1', 0, 'A'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(arecords=[ARecord('1.1.1.1'),
|
||||
ARecord('2.2.2.2')])
|
||||
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'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(aaaa_records=[AaaaRecord('1:1ec:1::1')])
|
||||
aaaa1 = AaaaRecord(ipv6_address='1:1ec:1::1')
|
||||
recordSet = RecordSet(aaaa_records=[aaaa1])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'aaaa1', 2, 'AAAA'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(aaaa_records=[AaaaRecord('1:1ec:1::1'),
|
||||
AaaaRecord('1:1ec:1::2')])
|
||||
aaaa2 = AaaaRecord(ipv6_address='1:1ec:1::2')
|
||||
recordSet = RecordSet(aaaa_records=[aaaa1,
|
||||
aaaa2])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'aaaa2', 3, 'AAAA'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(cname_record=CnameRecord('cname.unit.test.'))
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'cname1', 4, 'CNAME'
|
||||
recordSet = RecordSet(caa_records=[CaaRecord(flags=0,
|
||||
tag='issue',
|
||||
value='caa1.unit.tests')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'caa1', 4, 'CAA'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(caa_records=[CaaRecord(flags=0,
|
||||
tag='issue',
|
||||
value='caa1.unit.tests'),
|
||||
CaaRecord(flags=0,
|
||||
tag='issue',
|
||||
value='caa2.unit.tests')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'caa2', 4, 'CAA'
|
||||
rs.append(recordSet)
|
||||
cname1 = CnameRecord(cname='cname.unit.test.')
|
||||
recordSet = RecordSet(cname_record=cname1)
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'cname1', 5, 'CNAME'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(cname_record=None)
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'cname2', 5, 'CNAME'
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'cname2', 6, 'CNAME'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(mx_records=[MxRecord(10, 'mx1.unit.test.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'mx1', 6, 'MX'
|
||||
recordSet = RecordSet(mx_records=[MxRecord(preference=10,
|
||||
exchange='mx1.unit.test.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'mx1', 7, 'MX'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(mx_records=[MxRecord(10, 'mx1.unit.test.'),
|
||||
MxRecord(11, 'mx2.unit.test.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'mx2', 7, 'MX'
|
||||
recordSet = RecordSet(mx_records=[MxRecord(preference=10,
|
||||
exchange='mx1.unit.test.'),
|
||||
MxRecord(preference=11,
|
||||
exchange='mx2.unit.test.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'mx2', 8, 'MX'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(ns_records=[NsRecord('ns1.unit.test.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'ns1', 8, 'NS'
|
||||
recordSet = RecordSet(ns_records=[NsRecord(nsdname='ns1.unit.test.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'ns1', 9, 'NS'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(ns_records=[NsRecord('ns1.unit.test.'),
|
||||
NsRecord('ns2.unit.test.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'ns2', 9, 'NS'
|
||||
recordSet = RecordSet(ns_records=[NsRecord(nsdname='ns1.unit.test.'),
|
||||
NsRecord(nsdname='ns2.unit.test.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'ns2', 10, 'NS'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(ptr_records=[PtrRecord('ptr1.unit.test.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'ptr1', 10, 'PTR'
|
||||
ptr1 = PtrRecord(ptrdname='ptr1.unit.test.')
|
||||
recordSet = RecordSet(ptr_records=[ptr1])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'ptr1', 11, 'PTR'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(ptr_records=[PtrRecord(None)])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'ptr2', 11, 'PTR'
|
||||
recordSet = RecordSet(ptr_records=[PtrRecord(ptrdname=None)])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'ptr2', 12, 'PTR'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(srv_records=[SrvRecord(1, 2, 3, '1unit.tests.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = '_srv1._tcp', 12, 'SRV'
|
||||
recordSet = RecordSet(srv_records=[SrvRecord(priority=1,
|
||||
weight=2,
|
||||
port=3,
|
||||
target='1unit.tests.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = '_srv1._tcp', 13, 'SRV'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(srv_records=[SrvRecord(1, 2, 3, '1unit.tests.'),
|
||||
SrvRecord(4, 5, 6, '2unit.tests.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = '_srv2._tcp', 13, 'SRV'
|
||||
recordSet = RecordSet(srv_records=[SrvRecord(priority=1,
|
||||
weight=2,
|
||||
port=3,
|
||||
target='1unit.tests.'),
|
||||
SrvRecord(priority=4,
|
||||
weight=5,
|
||||
port=6,
|
||||
target='2unit.tests.')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = '_srv2._tcp', 14, 'SRV'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(txt_records=[TxtRecord('sample text1')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'txt1', 14, 'TXT'
|
||||
recordSet = RecordSet(txt_records=[TxtRecord(value='sample text1')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'txt1', 15, 'TXT'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(txt_records=[TxtRecord('sample text1'),
|
||||
TxtRecord('sample text2')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'txt2', 15, 'TXT'
|
||||
recordSet = RecordSet(txt_records=[TxtRecord(value='sample text1'),
|
||||
TxtRecord(value='sample text2')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'txt2', 16, 'TXT'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(soa_record=[SoaRecord()])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = '', 16, 'SOA'
|
||||
recordSet.name, recordSet.ttl, recordSet.type = '', 17, 'SOA'
|
||||
rs.append(recordSet)
|
||||
|
||||
record_list = provider._dns_client.record_sets.list_by_dns_zone
|
||||
@@ -322,7 +449,7 @@ class TestAzureDnsProvider(TestCase):
|
||||
exists = provider.populate(zone)
|
||||
self.assertTrue(exists)
|
||||
|
||||
self.assertEquals(len(zone.records), 16)
|
||||
self.assertEquals(len(zone.records), 18)
|
||||
|
||||
def test_populate_zone(self):
|
||||
provider = self._get_provider()
|
||||
@@ -356,9 +483,9 @@ class TestAzureDnsProvider(TestCase):
|
||||
changes.append(Create(i))
|
||||
deletes.append(Delete(i))
|
||||
|
||||
self.assertEquals(13, provider.apply(Plan(None, zone,
|
||||
self.assertEquals(18, provider.apply(Plan(None, zone,
|
||||
changes, True)))
|
||||
self.assertEquals(13, provider.apply(Plan(zone, zone,
|
||||
self.assertEquals(18, provider.apply(Plan(zone, zone,
|
||||
deletes, True)))
|
||||
|
||||
def test_create_zone(self):
|
||||
@@ -374,18 +501,18 @@ class TestAzureDnsProvider(TestCase):
|
||||
_get = provider._dns_client.zones.get
|
||||
_get.side_effect = CloudError(Mock(status=404), err_msg)
|
||||
|
||||
self.assertEquals(13, provider.apply(Plan(None, desired, changes,
|
||||
self.assertEquals(18, provider.apply(Plan(None, desired, changes,
|
||||
True)))
|
||||
|
||||
def test_check_zone_no_create(self):
|
||||
provider = self._get_provider()
|
||||
|
||||
rs = []
|
||||
recordSet = RecordSet(arecords=[ARecord('1.1.1.1')])
|
||||
recordSet = RecordSet(arecords=[ARecord(ipv4_address='1.1.1.1')])
|
||||
recordSet.name, recordSet.ttl, recordSet.type = 'a1', 0, 'A'
|
||||
rs.append(recordSet)
|
||||
recordSet = RecordSet(arecords=[ARecord('1.1.1.1'),
|
||||
ARecord('2.2.2.2')])
|
||||
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'
|
||||
rs.append(recordSet)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user