mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
Add auth config opts to googlecloud provider
Also make _data_for_SPF and _data_for_TXT the same method.
This commit is contained in:
@@ -98,20 +98,32 @@ class GoogleCloudProvider(BaseProvider):
|
||||
#
|
||||
# The project to work on (not required)
|
||||
# project: foobar
|
||||
#
|
||||
# The File with the google credentials (not required). If used, the
|
||||
# "project" parameter needs to be set, else it will fall back to the
|
||||
# "default credentials"
|
||||
# credentials_file: ~/google_cloud_credentials_file.json
|
||||
#
|
||||
"""
|
||||
|
||||
SUPPORTS = set(('A', 'AAAA', 'CAA', 'CNAME', 'MX', 'NAPTR',
|
||||
'NS', 'PTR', 'SPF', 'SRV', 'TXT'))
|
||||
SUPPORTS_GEO = False
|
||||
|
||||
def __init__(self, id, project=None, *args, **kwargs):
|
||||
def __init__(self, id, project=None, credentials_file=None,
|
||||
*args, **kwargs):
|
||||
|
||||
if credentials_file:
|
||||
self.gcloud_client = dns.Client.from_service_account_json(
|
||||
credentials_file, project=project)
|
||||
else:
|
||||
self.gcloud_client = dns.Client(project=project)
|
||||
|
||||
# Logger
|
||||
self.log = getLogger('GoogleCloudProvider[{}]'.format(id))
|
||||
self.id = id
|
||||
|
||||
super(GoogleCloudProvider, self).__init__(id, *args, **kwargs)
|
||||
self.gcloud_client = dns.Client(project=project)
|
||||
|
||||
def _apply(self, plan):
|
||||
"""Required function of manager.py to actually apply a record change.
|
||||
@@ -345,7 +357,12 @@ class GoogleCloudProvider(BaseProvider):
|
||||
|
||||
_data_for_PTR = _data_for_CNAME
|
||||
|
||||
_data_for_SPF = _data_for_A
|
||||
def _data_for_SPF(self, gcloud_record):
|
||||
if len(gcloud_record.rrdatas) > 1:
|
||||
return {
|
||||
'values': gcloud_record.rrdatas}
|
||||
return {
|
||||
'value': gcloud_record.rrdatas[0]}
|
||||
|
||||
def _data_for_SRV(self, gcloud_record):
|
||||
return {'values': [{
|
||||
@@ -355,9 +372,4 @@ class GoogleCloudProvider(BaseProvider):
|
||||
'target': v[3]}
|
||||
for v in [shlex.split(g) for g in gcloud_record.rrdatas]]}
|
||||
|
||||
def _data_for_TXT(self, gcloud_record):
|
||||
if len(gcloud_record.rrdatas) > 1:
|
||||
return {
|
||||
'values': gcloud_record.rrdatas}
|
||||
return {
|
||||
'value': gcloud_record.rrdatas[0]}
|
||||
_data_for_TXT = _data_for_SPF
|
||||
|
||||
@@ -10,7 +10,7 @@ from octodns.provider.googlecloud import GoogleCloudProvider, \
|
||||
_GoogleCloudRecordSetMaker
|
||||
|
||||
from octodns.zone import Zone
|
||||
from octodns.provider.base import Plan
|
||||
from octodns.provider.base import Plan, BaseProvider
|
||||
|
||||
from unittest import TestCase
|
||||
from mock import Mock, patch, PropertyMock
|
||||
@@ -216,6 +216,17 @@ class TestGoogleCloudProvider(TestCase):
|
||||
'''
|
||||
return GoogleCloudProvider(id=1, project="mock")
|
||||
|
||||
@patch('octodns.provider.googlecloud.time.sleep')
|
||||
@patch('octodns.provider.googlecloud.dns')
|
||||
def test___init__(self, *_):
|
||||
self.assertIsInstance(GoogleCloudProvider(id=1,
|
||||
credentials_file="test",
|
||||
project="unit test"),
|
||||
BaseProvider)
|
||||
|
||||
self.assertIsInstance(GoogleCloudProvider(id=1),
|
||||
BaseProvider)
|
||||
|
||||
@patch('octodns.provider.googlecloud.time.sleep')
|
||||
@patch('octodns.provider.googlecloud.dns')
|
||||
def test__apply(self, *_):
|
||||
|
||||
Reference in New Issue
Block a user