def write_blob_sha256(self, blob: gcs.Blob, force: bool = False) -> None: """ Calculates a blob's SHA256 and writes the value to the blob's custom metadata 'sha256' field. """ current_value = None if blob.metadata is None else blob.metadata.get( 'sha256') log.info('Current SHA256 value: %s', current_value) if current_value is None or force: file_sha256 = self.calculate_blob_sha256(blob) if current_value == file_sha256: log.info('Calculated SHA256 matches current value, no change.') else: log.info('Saving SHA256 value: %s', file_sha256) blob.metadata = {'sha256': file_sha256} blob.patch() else: log.info('Blob SHA256 not calculated or changed.')
def mark_complete(self, blob: storage.Blob): blob.metadata = {"export_completed": True} patch_retryer = retry.Retry( predicate=retry.if_exception_type(ServiceUnavailable), deadline=60) patch_retryer(lambda: blob.patch())()