Skip to content

Commit 9f501ac

Browse files
committed
squashme: cleanup
1 parent c318e8c commit 9f501ac

File tree

3 files changed

+27
-13
lines changed

3 files changed

+27
-13
lines changed

components/renku_data_services/data_connectors/core.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -374,15 +374,8 @@ def handle_data(self, data: str) -> None:
374374
async def convert_envidat_v1_data_connector_to_s3(
375375
payload: apispec.CloudStorageCorePost,
376376
) -> apispec.CloudStorageCorePost:
377-
"""Converts a doi-like configuration for Envidat to S3.
378-
379-
If the paylaod that is passed in is not of the expected type nothing is changed
380-
and the same payload that was passed in is returned.
381-
"""
377+
"""Converts a doi-like configuration for Envidat to S3."""
382378
config = payload.configuration
383-
if config.get("type") != ENVIDAT_V1_PROVIDER:
384-
return payload
385-
386379
doi = config.get("doi")
387380
if not isinstance(doi, str):
388381
raise errors.ValidationError()
@@ -402,7 +395,7 @@ async def convert_envidat_v1_data_connector_to_s3(
402395
res = await clnt.get(envidat_url, params=query_params, headers=headers)
403396
if res.status_code != 200:
404397
raise errors.ProgrammingError()
405-
dataset = SchemaOrgDataset.model_validate_strings(res.text)
398+
dataset = SchemaOrgDataset.model_validate_json(res.text)
406399
s3_config = schema_org.get_rclone_config(
407400
dataset,
408401
schema_org.DatasetProvider.envidat,

components/renku_data_services/data_connectors/doi/schema_org.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class S3Config:
2525
@property
2626
def path(self) -> str:
2727
"""Return the path including the bucket name and the prefix."""
28-
return f"{self.bucket}/{self.prefix}"
28+
return f"{self.bucket}{self.prefix}"
2929

3030

3131
def get_rclone_config(dataset: SchemaOrgDataset, provider: DatasetProvider) -> S3Config:
@@ -62,14 +62,14 @@ def __get_rclone_s3_config_envidat(dataset: SchemaOrgDataset) -> S3Config:
6262
message="The envidat s3 url is expected to have a host name with at least two parts."
6363
)
6464
s3_host = ".".join(host_split[1:])
65-
bucket = host_split[0]
65+
bucket = host_split[0].strip("/")
6666
prefix = "/" + prefix.strip("/")
6767
return S3Config(
6868
{
6969
"type": "s3",
7070
"provider": "Other",
7171
"endpoint": f"{url_parsed.scheme}://{s3_host}",
7272
},
73-
bucket.strip("/"),
73+
bucket,
7474
prefix,
7575
)

test/bases/renku_data_services/data_api/test_data_connectors.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@
44

55
import pytest
66
from httpx import Response
7+
from renku_data_services.data_connectors.apispec import CloudStorageCorePost, GlobalDataConnectorPost
8+
from renku_data_services.data_connectors.models import GlobalDataConnector
79
from sanic_testing.testing import SanicASGITestClient
810

911
from renku_data_services.authz.models import Visibility
1012
from renku_data_services.base_models.core import NamespacePath, ProjectPath
1113
from renku_data_services.data_connectors import core
1214
from renku_data_services.data_connectors.doi.models import DOIMetadata
1315
from renku_data_services.namespace.models import NamespaceKind
14-
from renku_data_services.storage.rclone import RCloneDOIMetadata
16+
from renku_data_services.storage.rclone import RCloneDOIMetadata, RCloneValidator
1517
from renku_data_services.users.models import UserInfo
1618
from test.bases.renku_data_services.data_api.utils import merge_headers
1719

@@ -2431,3 +2433,22 @@ async def _mock(*args, **kwargs) -> DOIMetadata | None:
24312433
"_get_dataset_metadata_dataverse",
24322434
_mock_get_dataset_metadata(_orig_get_dataset_metadata_dataverse),
24332435
)
2436+
2437+
2438+
async def test_prevalidate_envidat_data_connector() -> None:
2439+
body = GlobalDataConnectorPost(
2440+
storage=CloudStorageCorePost(
2441+
storage_type="doi",
2442+
configuration={"type": "doi", "doi": "10.16904/12"},
2443+
source_path="/",
2444+
target_path="/",
2445+
readonly=True,
2446+
)
2447+
)
2448+
validator = RCloneValidator()
2449+
res = await core.prevalidate_unsaved_global_data_connector(body, validator)
2450+
config = res.storage.configuration
2451+
assert config["type"] == "s3"
2452+
assert config["provider"] == "Other"
2453+
assert config["endpoint"].find("zhdk.cloud.switch.ch") >= 0
2454+
assert res.storage.source_path == "envidat-doi/10.16904_12"

0 commit comments

Comments
 (0)