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

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.
This commit is contained in:
Robert Reichel
2021-02-02 12:18:40 -05:00
parent e232d595de
commit 0b116a57b9

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()