diff --git a/dvc/remote/azure.py b/dvc/remote/azure.py index ded3ad935..f51e0931d 100644 --- a/dvc/remote/azure.py +++ b/dvc/remote/azure.py @@ -6,6 +6,7 @@ import re import logging from datetime import datetime, timedelta +from funcy import cached_property from dvc.scheme import Schemes @@ -72,29 +73,27 @@ class RemoteAZURE(RemoteBASE): if not self.connection_string: raise ValueError("azure storage connection string missing") - self.__blob_service = None self.path_info = ( self.path_cls(url) if path else self.path_cls.from_parts(scheme=self.scheme, netloc=bucket) ) - @property + @cached_property def blob_service(self): - if self.__blob_service is None: - logger.debug("URL {}".format(self.path_info)) - logger.debug("Connection string {}".format(self.connection_string)) - self.__blob_service = BlockBlobService( - connection_string=self.connection_string + logger.debug("URL {}".format(self.path_info)) + logger.debug("Connection string {}".format(self.connection_string)) + blob_service = BlockBlobService( + connection_string=self.connection_string + ) + logger.debug("Container name {}".format(self.path_info.bucket)) + try: # verify that container exists + blob_service.list_blobs( + self.path_info.bucket, delimiter="/", num_results=1 ) - logger.debug("Container name {}".format(self.path_info.bucket)) - try: # verify that container exists - self.__blob_service.list_blobs( - self.path_info.bucket, delimiter="/", num_results=1 - ) - except AzureMissingResourceHttpError: - self.__blob_service.create_container(self.path_info.bucket) - return self.__blob_service + except AzureMissingResourceHttpError: + blob_service.create_container(self.path_info.bucket) + return blob_service def remove(self, path_info): if path_info.scheme != self.scheme: