diff --git a/pyproject.toml b/pyproject.toml index 38793a1b9..598c98f06 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -90,6 +90,7 @@ box = "waterbutler.providers.box:BoxProvider" googledrive = "waterbutler.providers.googledrive:GoogleDriveProvider" onedrive = "waterbutler.providers.onedrive:OneDriveProvider" googlecloud = "waterbutler.providers.googlecloud:GoogleCloudProvider" +azureblobstorage = "waterbutler.providers.azureblobstorage:AzureBlobStorageProvider" [tool.pytest.ini_options] asyncio_default_fixture_loop_scope = "function" diff --git a/tests/providers/azureblobstorage/test_metadata.py b/tests/providers/azureblobstorage/test_metadata.py index a7307fb34..b65193530 100644 --- a/tests/providers/azureblobstorage/test_metadata.py +++ b/tests/providers/azureblobstorage/test_metadata.py @@ -19,7 +19,7 @@ def test_file_metadata_from_headers(self, blob_properties_headers): """Test creating file metadata from HTTP headers""" path = WaterButlerPath('/test-file.xlsx') - metadata = AzureBlobStorageFileMetadataHeaders(path.path, blob_properties_headers) + metadata = AzureBlobStorageFileMetadataHeaders(blob_properties_headers, path.path) assert metadata.name == 'test-file.xlsx' assert metadata.path == '/test-file.xlsx' @@ -74,7 +74,7 @@ def test_file_metadata_minimal(self): } path = WaterButlerPath('/minimal.txt') - metadata = AzureBlobStorageFileMetadataHeaders(path.path, headers) + metadata = AzureBlobStorageFileMetadataHeaders(headers, path.path) assert metadata.name == 'minimal.txt' assert metadata.size == 100 @@ -108,7 +108,7 @@ def test_file_metadata_serialization(self): } path = WaterButlerPath('/report.pdf') - metadata = AzureBlobStorageFileMetadataHeaders(path.path, headers) + metadata = AzureBlobStorageFileMetadataHeaders(headers, path.path) assert metadata.name == 'report.pdf' assert metadata.size == 2048000 diff --git a/waterbutler/providers/azureblobstorage/metadata.py b/waterbutler/providers/azureblobstorage/metadata.py index ccff59805..b1936cfdd 100644 --- a/waterbutler/providers/azureblobstorage/metadata.py +++ b/waterbutler/providers/azureblobstorage/metadata.py @@ -2,9 +2,6 @@ from waterbutler.core import utils from waterbutler.core import metadata -import logging - -logger = logging.getLogger(__name__) def strip_char(str, chars): @@ -30,10 +27,21 @@ def created_utc(self): class AzureBlobStorageFileMetadataHeaders(AzureBlobStorageMetadata, metadata.BaseFileMetadata): - def __init__(self, path, headers): + def __init__(self, headers, path): self._path = path super().__init__(dict(headers)) + def _dehydrate(self): + payload = super()._dehydrate() + payload['_path'] = self._path + return payload + + @classmethod + def _rehydrate(cls, payload): + args = super()._rehydrate(payload) + args.append(payload['_path']) + return args + @property def path(self): return '/' + strip_char(self._path, self.raw.get('base_folder', '')) diff --git a/waterbutler/providers/azureblobstorage/provider.py b/waterbutler/providers/azureblobstorage/provider.py index 261b8b488..965f1ed5f 100644 --- a/waterbutler/providers/azureblobstorage/provider.py +++ b/waterbutler/providers/azureblobstorage/provider.py @@ -327,7 +327,7 @@ async def _metadata_file(self, path, revision=None): expects=(200,), throws=exceptions.MetadataError ) - return AzureBlobStorageFileMetadataHeaders(path.path, resp.headers) + return AzureBlobStorageFileMetadataHeaders(resp.headers, path.path) async def _metadata_folder(self, path): """Get metadata for a folder (list contents).""" @@ -462,7 +462,6 @@ def _convert_xml_to_blob_list(self, xml_body): name_elem = prefix.find('Name') if name_elem is not None: result['BlobPrefix'].append({'Name': name_elem.text}) - logger.info(f'Parsed XML to blob list: {result}') return result except ET.ParseError as e: