Skip to content

Commit 5752c17

Browse files
committed
Create file_landing flavor
1 parent 4fca48e commit 5752c17

File tree

8 files changed

+408
-26
lines changed

8 files changed

+408
-26
lines changed

client/src/api/schema/schema.ts

Lines changed: 91 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1090,6 +1090,23 @@ export interface paths {
10901090
patch?: never;
10911091
trace?: never;
10921092
};
1093+
"/api/file_landings": {
1094+
parameters: {
1095+
query?: never;
1096+
header?: never;
1097+
path?: never;
1098+
cookie?: never;
1099+
};
1100+
get?: never;
1101+
put?: never;
1102+
/** Create File Landing */
1103+
post: operations["create_file_landing_api_file_landings_post"];
1104+
delete?: never;
1105+
options?: never;
1106+
head?: never;
1107+
patch?: never;
1108+
trace?: never;
1109+
};
10931110
"/api/file_source_instances": {
10941111
parameters: {
10951112
query?: never;
@@ -8045,11 +8062,7 @@ export interface components {
80458062
* @default false
80468063
*/
80478064
public: boolean;
8048-
/** Request State */
8049-
request_state: (
8050-
| components["schemas"]["FileRequestUri"]
8051-
| components["schemas"]["DataRequestCollectionUri"]
8052-
)[];
8065+
request_state: components["schemas"]["DataLandingRequestState"];
80538066
};
80548067
/** CreateEntryPayload */
80558068
CreateEntryPayload: {
@@ -8064,6 +8077,23 @@ export interface components {
80648077
*/
80658078
target: string;
80668079
};
8080+
/** CreateFileLandingPayload */
8081+
CreateFileLandingPayload: {
8082+
/** Client Secret */
8083+
client_secret?: string | null;
8084+
/** Origin */
8085+
origin?: string | null;
8086+
/**
8087+
* Public
8088+
* @default false
8089+
*/
8090+
public: boolean;
8091+
/** Request State */
8092+
request_state: (
8093+
| components["schemas"]["FileRequestUri"]
8094+
| components["schemas"]["DataRequestCollectionUri"]
8095+
)[];
8096+
};
80678097
/** CreateHistoryContentFromStore */
80688098
CreateHistoryContentFromStore: {
80698099
model_store_format?: components["schemas"]["ModelStoreFormat"] | null;
@@ -9583,6 +9613,17 @@ export interface components {
95839613
* @enum {string}
95849614
*/
95859615
DataItemSourceType: "hda" | "ldda" | "hdca" | "dce" | "dc";
9616+
/** DataLandingRequestState */
9617+
DataLandingRequestState: {
9618+
/** Targets */
9619+
targets: (
9620+
| components["schemas"]["DataElementsTarget"]
9621+
| components["schemas"]["HdcaDataItemsTarget"]
9622+
| components["schemas"]["DataElementsFromTarget"]
9623+
| components["schemas"]["HdcaDataItemsFromTarget"]
9624+
| components["schemas"]["FtpImportTarget"]
9625+
)[];
9626+
};
95869627
/** DataParameterModel */
95879628
DataParameterModel: {
95889629
/**
@@ -26781,6 +26822,51 @@ export interface operations {
2678126822
};
2678226823
};
2678326824
};
26825+
create_file_landing_api_file_landings_post: {
26826+
parameters: {
26827+
query?: never;
26828+
header?: {
26829+
/** @description The user ID that will be used to effectively make this API call. Only admins and designated users can make API calls on behalf of other users. */
26830+
"run-as"?: string | null;
26831+
};
26832+
path?: never;
26833+
cookie?: never;
26834+
};
26835+
requestBody: {
26836+
content: {
26837+
"application/json": components["schemas"]["CreateFileLandingPayload"];
26838+
};
26839+
};
26840+
responses: {
26841+
/** @description Successful Response */
26842+
200: {
26843+
headers: {
26844+
[name: string]: unknown;
26845+
};
26846+
content: {
26847+
"application/json": components["schemas"]["ToolLandingRequest"];
26848+
};
26849+
};
26850+
/** @description Request Error */
26851+
"4XX": {
26852+
headers: {
26853+
[name: string]: unknown;
26854+
};
26855+
content: {
26856+
"application/json": components["schemas"]["MessageExceptionModel"];
26857+
};
26858+
};
26859+
/** @description Server Error */
26860+
"5XX": {
26861+
headers: {
26862+
[name: string]: unknown;
26863+
};
26864+
content: {
26865+
"application/json": components["schemas"]["MessageExceptionModel"];
26866+
};
26867+
};
26868+
};
26869+
};
2678426870
file_sources__instances_index: {
2678526871
parameters: {
2678626872
query?: never;

lib/galaxy/schema/fetch_data.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,10 @@ class FetchDataFormPayload(BaseDataPayload):
304304
targets: Union[Json[Targets], Targets]
305305

306306

307+
class DataLandingRequestState(Model):
308+
targets: Targets
309+
310+
307311
FileOrCollectionRequests = list[FileOrCollectionRequest]
308312

309313
FileOrCollectionRequestsAdapter = TypeAdapter(FileOrCollectionRequests)
@@ -312,6 +316,15 @@ class FetchDataFormPayload(BaseDataPayload):
312316
# Vaguely matches the schema.schema.ToolLandingState but we don't allow data_fetch to be called directly
313317
# via the tool API so we have a more specific model here.
314318
class CreateDataLandingPayload(Model):
319+
request_state: DataLandingRequestState
320+
client_secret: Optional[str] = None
321+
public: bool = False
322+
origin: Optional[HttpUrl] = None
323+
324+
model_config = ConfigDict(extra="forbid")
325+
326+
327+
class CreateFileLandingPayload(Model):
315328
request_state: FileOrCollectionRequests
316329
client_secret: Optional[str] = None
317330
public: bool = False

lib/galaxy/tool_util/client/landing.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ def generate_claim_url(request: Request) -> Response:
6464
template_type = "tool"
6565
elif "workflow_id" in template:
6666
template_type = "workflow"
67+
elif isinstance(template["request_state"], list):
68+
template_type = "file"
6769
else:
6870
template_type = "data"
6971
if client_secret:

lib/galaxy/tool_util/client/landing_library.catalog.yml

Lines changed: 209 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ int_workflow:
1919
workflow_target_type: stored_workflow
2020
request_state:
2121
int_input: 8
22-
upload:
22+
upload_file:
2323
request_state:
2424
- class: File
2525
name: Reference information
@@ -237,7 +237,7 @@ upload:
237237
ext: "txt"
238238
name: "reverse"
239239

240-
upload_one:
240+
upload_one_file:
241241
request_state:
242242
- class: Collection
243243
collection_type: list
@@ -247,3 +247,210 @@ upload_one:
247247
name: "Reference information"
248248
location: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
249249
ext: "txt"
250+
251+
upload:
252+
request_state:
253+
targets:
254+
- destination: {type: "hdas"}
255+
items:
256+
- src: url
257+
name: "Reference information"
258+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
259+
ext: "txt"
260+
- src: url
261+
name: "Reference sequence"
262+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
263+
ext: "fasta"
264+
- src: url
265+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
266+
ext: "fastq.gz"
267+
- destination: {type: "hdca"}
268+
collection_type: list
269+
name: "my collection"
270+
items:
271+
- src: url
272+
name: "sample1"
273+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
274+
ext: "txt"
275+
- src: url
276+
name: sample2
277+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
278+
ext: "txt"
279+
- src: url
280+
name: sample3
281+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
282+
ext: "txt"
283+
- destination: {type: "hdca"}
284+
collection_type: list:paired
285+
name: "The List of Dataset Pairs"
286+
items:
287+
- name: sample1
288+
items:
289+
- src: url
290+
name: forward
291+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
292+
ext: "txt"
293+
- src: url
294+
name: reverse
295+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
296+
ext: "txt"
297+
- name: sample2
298+
items:
299+
- src: url
300+
name: forward
301+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
302+
ext: "txt"
303+
- src: url
304+
name: reverse
305+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
306+
ext: "txt"
307+
- destination: {type: "hdca"}
308+
collection_type: list:list:paired
309+
name: "Nested List of Dataset Pairs"
310+
items:
311+
- name: treatment1
312+
items:
313+
- name: replicate1
314+
items:
315+
- src: url
316+
name: forward
317+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
318+
ext: "txt"
319+
- src: url
320+
name: reverse
321+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
322+
ext: "txt"
323+
- name: replicate2
324+
items:
325+
- src: url
326+
name: forward
327+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
328+
ext: "txt"
329+
- src: url
330+
name: reverse
331+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
332+
ext: "txt"
333+
- name: treatment2
334+
items:
335+
- name: replicate1
336+
items:
337+
- src: url
338+
name: forward
339+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
340+
ext: "txt"
341+
- src: url
342+
name: reverse
343+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
344+
ext: "txt"
345+
- name: replicate2
346+
items:
347+
- src: url
348+
name: forward
349+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
350+
ext: "txt"
351+
- src: url
352+
name: reverse
353+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
354+
ext: "txt"
355+
- destination: {type: "hdas"}
356+
items:
357+
- src: url
358+
name: "sample1.fasta"
359+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
360+
ext: "fasta"
361+
tags: ['name:sample1']
362+
- src: url
363+
name: "sample2.fasta"
364+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
365+
ext: "fasta"
366+
tags: ['name:sample2']
367+
- destination: {type: "hdas"}
368+
items:
369+
- src: url
370+
name: "sample1.fastq"
371+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
372+
ext: "fastq"
373+
tags: ['group:treatment:treatment1', 'group:replicate:replicate1']
374+
- src: url
375+
name: "sample2.fastq"
376+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
377+
ext: "fastq"
378+
tags: ['group:treatment:treatment1', 'group:replicate:replicate2']
379+
- src: url
380+
name: "sample3.fastq"
381+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
382+
ext: "fastq"
383+
tags: ['group:treatment:treatment2', 'group:replicate:replicate1']
384+
- src: url
385+
name: "sample4.fastq"
386+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
387+
ext: "fastq"
388+
tags: ['group:treatment:treatment2', 'group:replicate:replicate2']
389+
- destination: {type: "hdas"}
390+
items:
391+
- src: url
392+
name: "Convert spaces and not newlines"
393+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
394+
ext: "txt"
395+
space_to_tab: true
396+
to_posix_lines: false
397+
- src: url
398+
name: "Convert newlines and not spaces"
399+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
400+
ext: "fasta"
401+
space_to_tab: false
402+
to_posix_lines: true
403+
- src: url
404+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
405+
ext: "fastq.gz"
406+
- destination: {type: "hdas"}
407+
items:
408+
- src: url
409+
name: "Reference information"
410+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
411+
ext: "txt"
412+
dbkey: hg19
413+
- src: url
414+
name: "Reference sequence"
415+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
416+
ext: "fasta"
417+
dbkey: hg19
418+
- src: url
419+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
420+
ext: "fastq.gz"
421+
- destination: {type: "hdca"}
422+
collection_type: paired:paired
423+
name: "esoteric collection type"
424+
items:
425+
- name: "forward"
426+
items:
427+
- src: url
428+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
429+
ext: "txt"
430+
name: "forward"
431+
items:
432+
- src: url
433+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
434+
ext: "txt"
435+
name: "reverse"
436+
- name: "reverse"
437+
items:
438+
- src: url
439+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
440+
ext: "txt"
441+
name: "forward"
442+
items:
443+
- src: url
444+
url: "base64://eyJ0c3JjIjogInRlc3QifQ=="
445+
ext: "txt"
446+
name: "reverse"
447+
448+
upload_one:
449+
request_state:
450+
targets:
451+
- destination: {type: "hdas"}
452+
items:
453+
- src: url
454+
name: "Reference information"
455+
url: "base64://eyJ0ZXN0IjogInRlc3QifQ=="
456+
ext: "txt"

0 commit comments

Comments
 (0)