code: def _init_az_api(self):
          
          with self.__lock:
              if self._resource_client is None:
                  log.debug("Making Azure `ServicePrincipalcredentials` object"
                            " with tenant=%r, client_id=%r, secret=%r ...",
                            self.tenant_id, self.client_id,
                            ('<redacted>' if self.secret else None))
                  credentials = ServicePrincipalCredentials(
                      tenant=self.tenant_id,
                      client_id=self.client_id,
                      secret=self.secret,
                  )
                  log.debug("Initializing Azure `ComputeManagementclient` ...")
                  self._compute_client = ComputeManagementClient(credentials, self.subscription_id)
                  log.debug("Initializing Azure `NetworkManagementclient` ...")
                  self._network_client = NetworkManagementClient(credentials, self.subscription_id)
                  log.debug("Initializing Azure `ResourceManagementclient` ...")
                  self._resource_client = ResourceManagementClient(credentials, self.subscription_id)
                  log.info("Azure API clients initialized.")
docs: Initialise client objects for talking to Azure API.
  
          This is in a separate function so to be called by ``__init__``
          and ``__setstate__``.