1
0
mirror of https://github.com/github/octodns.git synced 2024-05-11 05:55:00 +00:00

Refactor GoogleCloudProvider

* in _rrset_for_X functions, use values instead of data attribute.
* Small typo fixes and removals of redundant steps etc.
* Unset GOOGLE_APPLICATION_CREDENTIALS in coverage script.
This commit is contained in:
Petter Hassberg
2017-10-07 16:13:11 +02:00
parent 8230700ad1
commit aabab63003
3 changed files with 26 additions and 21 deletions

View File

@@ -79,7 +79,7 @@ class GoogleCloudProvider(BaseProvider):
_rrset_func = getattr(
self, '_rrset_for_{}'.format(change.record._type))
if class_name in 'Create':
if class_name == 'Create':
gcloud_changes.add_record_set(
_rrset_func(gcloud_zone, change.record))
elif class_name == 'Delete':
@@ -212,17 +212,16 @@ class GoogleCloudProvider(BaseProvider):
gcloud_zone = self._get_gcloud_zone(zone.name)
_records = set()
if gcloud_zone:
for gcloud_record in self._get_gcloud_records(gcloud_zone):
if gcloud_record.record_type.upper() in self.SUPPORTS:
_records.add(gcloud_record)
for gcloud_record in _records:
if gcloud_record.record_type.upper() not in self.SUPPORTS:
continue
record_name = gcloud_record.name
if record_name.endswith(zone.name):
# google cloud always return fqdn. Make relative record
# here. "root" records will then get the '' record_name,
# which is also the way dyn likes it.
# which is also the way octodns likes it.
record_name = record_name[:-(len(zone.name) + 1)]
typ = gcloud_record.record_type.upper()
data = getattr(self, '_data_for_{}'.format(typ))
@@ -302,7 +301,8 @@ class GoogleCloudProvider(BaseProvider):
def _rrset_for_CAA(self, gcloud_zone, record):
return gcloud_zone.resource_record_set(
record.fqdn, record._type, record.ttl, [
'{flags} {tag} {value}'.format(**record.data['value'])])
'{} {} {}'.format(v.flags, v.tag, v.value)
for v in record.values])
def _rrset_for_CNAME(self, gcloud_zone, record):
return gcloud_zone.resource_record_set(
@@ -311,33 +311,29 @@ class GoogleCloudProvider(BaseProvider):
def _rrset_for_MX(self, gcloud_zone, record):
return gcloud_zone.resource_record_set(
record.fqdn, record._type, record.ttl, [
'{preference} {exchange}'.format(**v.data)
'{} {}'.format(v.preference, v.exchange)
for v in record.values])
def _rrset_for_NAPTR(self, gcloud_zone, record):
return gcloud_zone.resource_record_set(
record.fqdn, record._type, record.ttl, [
'{order} {preference} "{flags}" "{service}" '
'"{regexp}" {replacement}'
.format(**v.data) for v in record.values])
'{} {} "{}" "{}" "{}" {}'.format(
v.order, v.preference, v.flags, v.service,
v.regexp, v.replacement) for v in record.values])
_rrset_for_NS = _rrset_for_A
_rrset_for_PTR = _rrset_for_CNAME
def _rrset_for_SPF(self, gcloud_zone, record):
if 'values' in record.data:
val = record.data['values']
else:
val = [record.data['value']]
return gcloud_zone.resource_record_set(
record.fqdn, record._type, record.ttl, val)
record.fqdn, record._type, record.ttl, record.values)
def _rrset_for_SRV(self, gcloud_zone, record):
return gcloud_zone.resource_record_set(
record.fqdn, record._type, record.ttl, [
'{priority} {weight} {port} {target}'
.format(**v.data) for v in record.values])
'{} {} {} {}'
.format(v.priority, v.weight, v.port, v.target)
for v in record.values])
_rrset_for_TXT = _rrset_for_SPF

View File

@@ -24,6 +24,7 @@ export DNSIMPLE_TOKEN=
export DYN_CUSTOMER=
export DYN_PASSWORD=
export DYN_USERNAME=
export GOOGLE_APPLICATION_CREDENTIALS=
coverage run --branch --source=octodns `which nosetests` --with-xunit "$@"
coverage html

View File

@@ -313,8 +313,11 @@ class TestGoogleCloudProvider(TestCase):
if not page_token:
return DummyIterator([
DummyGoogleCloudZone('example.com.'),
], page_token="MOCK_PAGE_TOKEN")
elif page_token == "MOCK_PAGE_TOKEN":
return DummyIterator([
DummyGoogleCloudZone('example2.com.'),
], page_token="DUMMY_PAGE_TOKEN")
], page_token="MOCK_PAGE_TOKEN2")
return DummyIterator([
google_cloud_zone
@@ -324,7 +327,12 @@ class TestGoogleCloudProvider(TestCase):
if not page_token:
return DummyIterator(
[DummyResourceRecordSet(*v) for v in
resource_record_sets[:5]], page_token="DUMMY_PAGE_TOKEN")
resource_record_sets[:3]], page_token="MOCK_PAGE_TOKEN")
elif page_token == "MOCK_PAGE_TOKEN":
return DummyIterator(
[DummyResourceRecordSet(*v) for v in
resource_record_sets[3:5]], page_token="MOCK_PAGE_TOKEN2")
return DummyIterator(
[DummyResourceRecordSet(*v) for v in resource_record_sets[5:]])