Skip to content

Commit b6056bf

Browse files
authored
Merge pull request #24 from Australian-Imaging-Service/no-direct-access
Adds `--no-direct-archive` option
2 parents a2cd941 + 85ddc2d commit b6056bf

File tree

3 files changed

+40
-8
lines changed

3 files changed

+40
-8
lines changed

xnat4tests/cli.py

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,17 @@ def cli(ctx, config):
8585
default="info",
8686
help="Set the level of logging detail",
8787
)
88+
@click.option(
89+
"--direct-archive/--no-direct-archive",
90+
type=bool,
91+
default=True,
92+
help=(
93+
"Whether to use direct-to-archive uploads when adding sample data. This is "
94+
"faster but requires XNAT 1.8.2 or later"
95+
),
96+
)
8897
@click.pass_context
89-
def start_cli(ctx, loglevel, keep_mounts, rebuild, relaunch, with_data):
98+
def start_cli(ctx, loglevel, keep_mounts, rebuild, relaunch, with_data, direct_archive):
9099

91100
set_loggers(loglevel)
92101

@@ -95,7 +104,7 @@ def start_cli(ctx, loglevel, keep_mounts, rebuild, relaunch, with_data):
95104
)
96105

97106
for dataset in with_data:
98-
add_data(dataset, config_name=ctx.obj)
107+
add_data(dataset, config_name=ctx.obj, direct_archive=direct_archive)
99108

100109

101110
@cli.command(
@@ -151,11 +160,20 @@ def restart_cli(ctx, loglevel):
151160
default="info",
152161
help="Set the level of logging detail",
153162
)
163+
@click.option(
164+
"--direct-archive/--no-direct-archive",
165+
type=bool,
166+
default=True,
167+
help=(
168+
"Whether to use direct-to-archive uploads when adding sample data. This is "
169+
"faster but requires XNAT 1.8.2 or later"
170+
),
171+
)
154172
@click.pass_context
155-
def add_data_cli(ctx, loglevel, dataset):
173+
def add_data_cli(ctx, loglevel, dataset, direct_archive):
156174

157175
set_loggers(loglevel)
158-
add_data(dataset, config_name=ctx.obj)
176+
add_data(dataset, config_name=ctx.obj, direct_archive=direct_archive)
159177

160178

161179
@cli.group(

xnat4tests/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
class BuildArgs:
1515
xnat_version: str = "1.9.2.1"
1616
xnat_cs_plugin_version: str = "3.7.2"
17-
xnat_batch_launch_plugin_version: str = "0.8.0"
17+
xnat_batch_launch_plugin_version: str = "0.8.0-xpl"
1818
java_ms: str = "256m"
1919
java_mx: str = "2g"
2020

xnat4tests/data.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ def set_cwd(path):
3232
os.chdir(pwd)
3333

3434

35-
def add_data(dataset: str, config_name: str or dict = "default"):
35+
def add_data(
36+
dataset: str,
37+
config_name: ty.Union[str, dict] = "default",
38+
direct_archive: bool = True,
39+
):
3640
"""Uploads sample test data into the XNAT repository for use in test regimes
3741
3842
Parameters
@@ -70,6 +74,7 @@ def add_data(dataset: str, config_name: str or dict = "default"):
7074
project_id="dummydicomproject",
7175
subject_id="dummydicomsubject",
7276
session_id="dummydicomsession",
77+
direct_archive=direct_archive,
7378
)
7479

7580
elif dataset == "openneuro-t1w":
@@ -129,6 +134,7 @@ def add_data(dataset: str, config_name: str or dict = "default"):
129134
project_id="TRAINING",
130135
subject_id="CONT01",
131136
session_id="CONT01_MR01",
137+
direct_archive=direct_archive,
132138
)
133139

134140
_upload_dicom_data(
@@ -137,6 +143,7 @@ def add_data(dataset: str, config_name: str or dict = "default"):
137143
project_id="TRAINING",
138144
subject_id="CONT02",
139145
session_id="CONT02_MR01",
146+
direct_archive=direct_archive,
140147
)
141148

142149
_upload_dicom_data(
@@ -145,6 +152,7 @@ def add_data(dataset: str, config_name: str or dict = "default"):
145152
project_id="TRAINING",
146153
subject_id="CONT01",
147154
session_id="CONT01_MR02",
155+
direct_archive=direct_archive,
148156
)
149157

150158
_upload_dicom_data(
@@ -153,6 +161,7 @@ def add_data(dataset: str, config_name: str or dict = "default"):
153161
project_id="TRAINING",
154162
subject_id="CONT02",
155163
session_id="CONT02_MR02",
164+
direct_archive=direct_archive,
156165
)
157166

158167
_upload_dicom_data(
@@ -161,6 +170,7 @@ def add_data(dataset: str, config_name: str or dict = "default"):
161170
project_id="TRAINING",
162171
subject_id="TEST01",
163172
session_id="TEST01_MR01",
173+
direct_archive=direct_archive,
164174
)
165175

166176
_upload_dicom_data(
@@ -169,6 +179,7 @@ def add_data(dataset: str, config_name: str or dict = "default"):
169179
project_id="TRAINING",
170180
subject_id="TEST01",
171181
session_id="TEST01_MR02",
182+
direct_archive=direct_archive,
172183
)
173184

174185
_upload_dicom_data(
@@ -177,6 +188,7 @@ def add_data(dataset: str, config_name: str or dict = "default"):
177188
project_id="TRAINING",
178189
subject_id="TEST02",
179190
session_id="TEST02_MR01",
191+
direct_archive=direct_archive,
180192
)
181193

182194
_upload_dicom_data(
@@ -185,6 +197,7 @@ def add_data(dataset: str, config_name: str or dict = "default"):
185197
project_id="TRAINING",
186198
subject_id="TEST02",
187199
session_id="TEST02_MR02",
200+
direct_archive=direct_archive,
188201
)
189202

190203
else:
@@ -199,6 +212,7 @@ def _upload_dicom_data(
199212
project_id: str,
200213
subject_id: str,
201214
session_id: str,
215+
direct_archive: bool = True,
202216
):
203217

204218
if isinstance(to_upload, str):
@@ -269,10 +283,10 @@ def _upload_dicom_data(
269283
f"/archive/projects/{project_id}/subjects"
270284
f"/{subject_id}/experiments/{session_id}"
271285
),
272-
"Direct-Archive": True,
286+
"Direct-Archive": direct_archive,
273287
"overwrite": True,
274288
},
275-
file_=f,
289+
stream=f,
276290
content_type="application/zip",
277291
method="post",
278292
)

0 commit comments

Comments
 (0)