mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
Merge branch 'master' into route53-max-attempts
This commit is contained in:
@@ -81,16 +81,16 @@ class _AzureRecord(object):
|
||||
self.params['ttl'] = record.ttl
|
||||
|
||||
def _params(self, data, key_name, azure_class):
|
||||
if 'values' in data:
|
||||
return {key_name: [azure_class(v) for v in data['values']]}
|
||||
else: # Else there is a singular data point keyed by 'value'.
|
||||
return {key_name: [azure_class(data['value'])]}
|
||||
try:
|
||||
values = data['values']
|
||||
except KeyError:
|
||||
values = [data['value']]
|
||||
return {key_name: [azure_class(v) for v in values]}
|
||||
|
||||
_params_for_A = _params
|
||||
_params_for_AAAA = _params
|
||||
_params_for_NS = _params
|
||||
_params_for_PTR = _params
|
||||
_params_for_TXT = _params
|
||||
|
||||
def _params_for_CNAME(self, data, key_name, azure_class):
|
||||
return {key_name: azure_class(data['value'])}
|
||||
@@ -121,6 +121,13 @@ class _AzureRecord(object):
|
||||
data['value']['target']))
|
||||
return {key_name: params}
|
||||
|
||||
def _params_for_TXT(self, data, key_name, azure_class):
|
||||
try: # API for TxtRecord has list of str, even for singleton
|
||||
values = data['values']
|
||||
except KeyError:
|
||||
values = [data['value']]
|
||||
return {key_name: [azure_class([v]) for v in values]}
|
||||
|
||||
def _equals(self, b):
|
||||
'''Checks whether two records are equal by comparing all fields.
|
||||
:param b: Another _AzureRecord object
|
||||
|
||||
@@ -18,11 +18,13 @@ class PowerDnsBaseProvider(BaseProvider):
|
||||
'SPF', 'SSHFP', 'SRV', 'TXT'))
|
||||
TIMEOUT = 5
|
||||
|
||||
def __init__(self, id, host, api_key, port=8081, *args, **kwargs):
|
||||
def __init__(self, id, host, api_key, port=8081, scheme="http", *args,
|
||||
**kwargs):
|
||||
super(PowerDnsBaseProvider, self).__init__(id, *args, **kwargs)
|
||||
|
||||
self.host = host
|
||||
self.port = port
|
||||
self.scheme = scheme
|
||||
|
||||
sess = Session()
|
||||
sess.headers.update({'X-API-Key': api_key})
|
||||
@@ -31,8 +33,8 @@ class PowerDnsBaseProvider(BaseProvider):
|
||||
def _request(self, method, path, data=None):
|
||||
self.log.debug('_request: method=%s, path=%s', method, path)
|
||||
|
||||
url = 'http://{}:{}/api/v1/servers/localhost/{}' \
|
||||
.format(self.host, self.port, path)
|
||||
url = '{}://{}:{}/api/v1/servers/localhost/{}' \
|
||||
.format(self.scheme, self.host, self.port, path)
|
||||
resp = self._sess.request(method, url, json=data, timeout=self.TIMEOUT)
|
||||
self.log.debug('_request: status=%d', resp.status_code)
|
||||
resp.raise_for_status()
|
||||
|
||||
@@ -90,6 +90,14 @@ octo_records.append(Record.new(zone, '_srv2._tcp', {
|
||||
'port': 1,
|
||||
'target': 'srvfoo.unit.tests.',
|
||||
}]}))
|
||||
octo_records.append(Record.new(zone, 'txt1', {
|
||||
'ttl': 8,
|
||||
'type': 'TXT',
|
||||
'value': 'txt singleton test'}))
|
||||
octo_records.append(Record.new(zone, 'txt2', {
|
||||
'ttl': 9,
|
||||
'type': 'TXT',
|
||||
'values': ['txt multiple test', 'txt multiple test 2']}))
|
||||
|
||||
azure_records = []
|
||||
_base0 = _AzureRecord('TestAzure', octo_records[0])
|
||||
@@ -183,6 +191,23 @@ _base10.params['ttl'] = 7
|
||||
_base10.params['srv_records'] = [SrvRecord(12, 17, 1, 'srvfoo.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'])]
|
||||
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'])]
|
||||
azure_records.append(_base12)
|
||||
|
||||
|
||||
class Test_AzureRecord(TestCase):
|
||||
def test_azure_record(self):
|
||||
@@ -190,8 +215,6 @@ class Test_AzureRecord(TestCase):
|
||||
for i in range(len(azure_records)):
|
||||
octo = _AzureRecord('TestAzure', octo_records[i])
|
||||
assert(azure_records[i]._equals(octo))
|
||||
string = str(azure_records[i])
|
||||
assert(('Ttl: ' in string))
|
||||
|
||||
|
||||
class Test_ParseAzureType(TestCase):
|
||||
@@ -315,8 +338,8 @@ class TestAzureDnsProvider(TestCase):
|
||||
changes.append(Create(i))
|
||||
deletes.append(Delete(i))
|
||||
|
||||
self.assertEquals(11, provider.apply(Plan(None, zone, changes)))
|
||||
self.assertEquals(11, provider.apply(Plan(zone, zone, deletes)))
|
||||
self.assertEquals(13, provider.apply(Plan(None, zone, changes)))
|
||||
self.assertEquals(13, provider.apply(Plan(zone, zone, deletes)))
|
||||
|
||||
def test_create_zone(self):
|
||||
provider = self._get_provider()
|
||||
@@ -331,7 +354,7 @@ class TestAzureDnsProvider(TestCase):
|
||||
_get = provider._dns_client.zones.get
|
||||
_get.side_effect = CloudError(Mock(status=404), err_msg)
|
||||
|
||||
self.assertEquals(11, provider.apply(Plan(None, desired, changes)))
|
||||
self.assertEquals(13, provider.apply(Plan(None, desired, changes)))
|
||||
|
||||
def test_check_zone_no_create(self):
|
||||
provider = self._get_provider()
|
||||
|
||||
Reference in New Issue
Block a user