def upload(self, remove_local_data_file=True, overwrite=True): for record in self: try: file_full_path = os.path.join(config.get('data_dir'), record.file) if not os.path.exists(file_full_path): _logger.error( "Cannot find file ({}), thus not uploading".format( file_full_path)) continue blob = BlobClient(account_url=record.storage_account_url, container_name=record.container, blob_name=record.blob_name, credential=record.credential) try: record._do_upload(blob, file_full_path) except ResourceExistsError as ex: if not overwrite: _logger.info( "El fichero existe, no sd sobreescribe por que overwrite=False" ) continue _logger.debug("El fichero existe, hay que sobreescribirlo") blob.delete_blob() _logger.debug( "El fichero se ha borrado para sobreescribirlo") record._do_upload(blob, file_full_path) if remove_local_data_file: os.unlink(file_full_path) except Exception as ex: _logger.error("Error uploading to Blob: type({}), {}".format( type(ex), ex)) continue
def delete_blob(self, blob_name): try: blob = BlobClient(account_url=env.AZURE_STORAGE_ACCOUNT, container_name=self.container_name, blob_name=blob_name, credential=env.STORAGE_SAS_KEY) blob.delete_blob() except azure.core.exceptions.ResourceNotFoundError: logger.info('Blob not found %s', blob_name)
def remove_files(self, location, file_pattern): result, sources, source_names = self.list_files(location=location, file_pattern=file_pattern) if result["code"] == "OK": for file in sources: try: src_blob = BlobClient( self.blob_service_client.url, container_name=self.settings.storage_container, blob_name=file, credential=self.sas_token ) src_blob.delete_blob(delete_snapshots="include") print("blob removed:", file) except Exception as e: print("Exception on blob removal:", e) result = messages.message["remove_files_failed"] return result
def test_upload(self): blob = BlobClient(account_url=self.blob.storage_account_url, container_name=self.blob.container, blob_name=self.blob.blob_name, credential=self.blob.credential) try: blob.get_blob_properties() blob.delete_blob() except ResourceNotFoundError: pass _logger.debug("TEST: Subir fichero sin borrar el local") self.blob.upload(remove_local_data_file=False) assert os.path.exists( _data_path ), "Ha borrado el fichero local tras la subida a Blob Storage" _logger.debug( "TEST: Subir fichero que ya esta subido y se sobreescribe sin problemas y no se borra la copia local" ) try: self.blob.upload(remove_local_data_file=False) except ResourceExistsError: self.fail( "Ha dado un error de blob existente, cuando deberia haberlo sobreescrito" ) assert os.path.exists( _data_path ), "Ha borrado el fichero local tras la subida a Blob storage" _logger.debug( "TEST: Se sube un fichero sobreescribiendo y borrando la copia local" ) self.blob.upload() assert not os.path.exists(_data_path)