Skip to content

Commit a244129

Browse files
committed
patch for external file retriver changes
1 parent 5bbe468 commit a244129

File tree

3 files changed

+18
-19
lines changed

3 files changed

+18
-19
lines changed

docs/howto/externalFileDownloading.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ This is specified in the `external_file_metadata` field. An example is shown bel
2929
}
3030
```
3131

32-
The `'external_oidc_idp'` field is required. It is used to determine how to get a token from the `workspace token service`.
32+
The `'file_retriever'` field is required. It is used to determine how to retrieve the file.
3333

34-
The `'file_retriever'` field is also required. It is used to determine how to retrieve the file.
34+
The `'external_oidc_idp'` field is required if retrieving the file(s) requires to get a token from the `workspace token service`. if the file(s) can be retrieved without any tokens, this field could be omitted.
3535

3636
The `'study_id'` and `'file_id'` fields are allowed but are not required.
3737

gen3/tools/download/external_file_download.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,14 @@
77
88
"""
99
import json
10-
import os
1110
from pathlib import Path
1211
from typing import Any, Dict, List
1312

1413
from cdislogging import get_logger
1514

1615
from gen3.auth import Gen3Auth
1716

18-
REQUIRED_EXTERNAL_FILE_METADATA_KEYS = ["external_oidc_idp", "file_retriever"]
17+
REQUIRED_EXTERNAL_FILE_METADATA_KEYS = ["file_retriever"]
1918

2019
logger = get_logger("__name__", log_level="debug")
2120

@@ -32,21 +31,25 @@ def download_files_from_metadata(
3231
external-file metadata and a retriever function.
3332
3433
The external_file_metadata items should have the following
35-
required keys: 'external_oidc_idp' and 'file_retriever'.
34+
required key: 'file_retriever'.
3635
The items can have an additional optional key of
3736
'study_id' or 'file_id.
3837
3938
An example is shown below:
4039
[
4140
{
42-
"external_oidc_idp": "externaldata-keycloak",
43-
"file_retriever": "QDR",
44-
"study_id": "QDR_study_01"
41+
"external_oidc_idp": "externaldata-keycloak",
42+
"file_retriever": "QDR",
43+
"study_id": "QDR_study_01"
4544
},
4645
{
47-
"external_oidc_idp": "externaldata-keycloak",
48-
"file_retriever": "QDR",
49-
"file_id": "QDR_file_02"
46+
"external_oidc_idp": "externaldata-keycloak",
47+
"file_retriever": "QDR",
48+
"file_id": "QDR_file_02"
49+
},
50+
{
51+
"file_retriever": "Dataverse",
52+
"file_id": "Dataverse_file_01"
5053
},
5154
]
5255
@@ -181,8 +184,7 @@ def extract_external_file_metadata(mds_object: dict) -> List:
181184

182185
def is_valid_external_file_metadata(external_file_metadata: dict) -> bool:
183186
"""
184-
Check that the external_file dict has the required keys:
185-
'external_oidc_idp' and 'file_retriever'.
187+
Check that the external_file dict has the required key(s) as defined in 'REQUIRED_EXTERNAL_FILE_METADATA_KEYS'
186188
187189
Args:
188190
external_file_metadata: dict

tests/download_tests/test_external_download.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,15 @@ def test_load_all_metadata():
4141

4242

4343
def test_is_valid_external_file_metadata_invalid_input():
44-
expected = False
45-
# input is missing one of the required keys, 'external_oidc_idp' or 'file_retriever'
44+
# input is missing one of the required key(s) 'file_retriever'
4645
external_file_metadata = {
4746
"external_oidc_idp": "test-external-idp",
4847
"file_id": "QDR_file_02",
4948
}
50-
assert is_valid_external_file_metadata(external_file_metadata) == expected
51-
external_file_metadata = {"file_retriever": "QDR", "file_id": "QDR_file_02"}
52-
assert is_valid_external_file_metadata(external_file_metadata) == expected
49+
assert is_valid_external_file_metadata(external_file_metadata) is False
5350
# input is not a dict
5451
external_file_metadata = ["some", "list"]
55-
assert is_valid_external_file_metadata(external_file_metadata) == expected
52+
assert is_valid_external_file_metadata(external_file_metadata) is False
5653

5754

5855
def test_is_valid_external_file_metadata(valid_external_file_metadata):

0 commit comments

Comments
 (0)