Browse Source

Modify Azure DNS Client logic to lazy load

Lazy loading the Azure DNS client ensures that the necessary network calls only occur when it is time to actually do something with the client.
pull/669/head
Robert Reichel 5 years ago
parent
commit
0b116a57b9
1 changed files with 23 additions and 4 deletions
  1. +23
    -4
      octodns/provider/azuredns.py

+ 23
- 4
octodns/provider/azuredns.py View File

@ -323,6 +323,22 @@ class AzureProvider(BaseProvider):
SUPPORTS = set(('A', 'AAAA', 'CAA', 'CNAME', 'MX', 'NS', 'PTR', 'SRV',
'TXT'))
def _get_dns_client(self):
if not self._dns_client_handle:
# Not initialized yet, we need to do that.
credentials = ServicePrincipalCredentials(
self._dns_client_client_id,
secret=self._dns_client_key,
tenant=self._dns_client_directory_id
)
self._dns_client_handle = DnsManagementClient(
credentials,
self._dns_client_subscription_id
)
return self._dns_client_handle
def __init__(self, id, client_id, key, directory_id, sub_id,
resource_group, *args, **kwargs):
self.log = logging.getLogger('AzureProvider[{}]'.format(id))
@ -330,10 +346,13 @@ class AzureProvider(BaseProvider):
'key=***, directory_id:%s', id, client_id, directory_id)
super(AzureProvider, self).__init__(id, *args, **kwargs)
credentials = ServicePrincipalCredentials(
client_id, secret=key, tenant=directory_id
)
self._dns_client = DnsManagementClient(credentials, sub_id)
# Store necessary initialization params
self._dns_client_handle = None
self._dns_client_client_id = client_id
self._dns_client_key = key
self._dns_client_directory_id = directory_id
self._dns_client_subscription_id = sub_id
self._dns_client = property(_get_dns_client, _set_dns_client)
self._resource_group = resource_group
self._azure_zones = set()


Loading…
Cancel
Save