diff --git a/octodns/provider/azuredns.py b/octodns/provider/azuredns.py index 30e9af5..2fca5af 100644 --- a/octodns/provider/azuredns.py +++ b/octodns/provider/azuredns.py @@ -329,13 +329,31 @@ 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 = None + self._resource_group = resource_group self._azure_zones = set() + @property + def _dns_client(self): + if self.__dns_client is None: + credentials = ServicePrincipalCredentials( + self._dns_client_client_id, + secret=self._dns_client_key, + tenant=self._dns_client_directory_id + ) + self.__dns_client = DnsManagementClient( + credentials, + self._dns_client_subscription_id + ) + return self.__dns_client + def _populate_zones(self): self.log.debug('azure_zones: loading') list_zones = self._dns_client.zones.list_by_resource_group diff --git a/tests/test_octodns_provider_azuredns.py b/tests/test_octodns_provider_azuredns.py index b62762e..9523b51 100644 --- a/tests/test_octodns_provider_azuredns.py +++ b/tests/test_octodns_provider_azuredns.py @@ -388,8 +388,12 @@ class TestAzureDnsProvider(TestCase): :type return: AzureProvider ''' - return AzureProvider('mock_id', 'mock_client', 'mock_key', - 'mock_directory', 'mock_sub', 'mock_rg') + provider = AzureProvider('mock_id', 'mock_client', 'mock_key', + 'mock_directory', 'mock_sub', 'mock_rg' + ) + # Fetch the client to force it to load the creds + provider._dns_client + return provider def test_populate_records(self): provider = self._get_provider()