From 857d9396fa669abd03a142c25a656f04ad14f7b3 Mon Sep 17 00:00:00 2001 From: Peter Amstutz Date: Wed, 12 Jun 2024 18:00:36 -0400 Subject: [PATCH] Fix integration tests and add output_glob to wb2 API Details, refs #9964 Arvados-DCO-1.1-Signed-off-by: Peter Amstutz --- sdk/cwl/arvados_cwl/arvcontainer.py | 5 ++ .../src/models/container-request.ts | 60 +++++++++---------- .../src/store/advanced-tab/advanced-tab.tsx | 5 +- 3 files changed, 38 insertions(+), 32 deletions(-) diff --git a/sdk/cwl/arvados_cwl/arvcontainer.py b/sdk/cwl/arvados_cwl/arvcontainer.py index 61ab55f766..a340f30e95 100644 --- a/sdk/cwl/arvados_cwl/arvcontainer.py +++ b/sdk/cwl/arvados_cwl/arvcontainer.py @@ -376,8 +376,13 @@ class ArvadosContainer(JobBase): for gbeval in aslist(gb): if gbeval.startswith(self.outdir+"/"): gbeval = gbeval[len(self.outdir)+1:] + while gbeval.startswith("./"): + gbeval = gbeval[2:] + if gbeval in (self.outdir, "", "."): output_glob.append("**") + elif gbeval.endswith("/"): + output_glob.append(gbeval+"**") else: output_glob.append(gbeval) output_glob.append(gbeval + "/**") diff --git a/services/workbench2/src/models/container-request.ts b/services/workbench2/src/models/container-request.ts index d3adb03a92..8ddb1d689e 100644 --- a/services/workbench2/src/models/container-request.ts +++ b/services/workbench2/src/models/container-request.ts @@ -14,36 +14,35 @@ export enum ContainerRequestState { } export interface ContainerRequestResource - extends Resource, - ResourceWithProperties { - command: string[]; - containerCountMax: number; - containerCount: number; - containerImage: string; - containerUuid: string | null; - cumulativeCost: number; - cwd: string; - description: string; - environment: any; - expiresAt: string; - filters: string; - kind: ResourceKind.CONTAINER_REQUEST; - logUuid: string | null; - mounts: { [path: string]: MountType }; - name: string; - outputName: string; - outputPath: string; - outputProperties: any; - outputStorageClasses: string[]; - outputTtl: number; - outputUuid: string | null; - priority: number | null; - requestingContainerUuid: string | null; - runtimeConstraints: RuntimeConstraints; - schedulingParameters: SchedulingParameters; - state: ContainerRequestState; - useExisting: boolean; -} +extends Resource, ResourceWithProperties { + command: string[]; + containerCountMax: number; + containerCount: number; + containerImage: string; + containerUuid: string | null; + cumulativeCost: number; + cwd: string; + description: string; + environment: any; + expiresAt: string; + filters: string; + kind: ResourceKind.CONTAINER_REQUEST; + logUuid: string | null; + mounts: { [path: string]: MountType }; + name: string; + outputName: string; + outputPath: string; + outputProperties: any; + outputStorageClasses: string[]; + outputTtl: number; + outputGlob: string[]; + priority: number | null; + requestingContainerUuid: string | null; + runtimeConstraints: RuntimeConstraints; + schedulingParameters: SchedulingParameters; + state: ContainerRequestState; + useExisting: boolean; + } // Until the api supports unselecting fields, we need a list of all other fields to omit mounts export const containerRequestFieldsNoMounts = [ @@ -73,6 +72,7 @@ export const containerRequestFieldsNoMounts = [ "output_storage_classes", "output_ttl", "output_uuid", + "output_glob", "owner_uuid", "priority", "properties", diff --git a/services/workbench2/src/store/advanced-tab/advanced-tab.tsx b/services/workbench2/src/store/advanced-tab/advanced-tab.tsx index 80a95e3c2a..ee4f6276fa 100644 --- a/services/workbench2/src/store/advanced-tab/advanced-tab.tsx +++ b/services/workbench2/src/store/advanced-tab/advanced-tab.tsx @@ -397,7 +397,7 @@ const stringifyObject = (item: any) => const containerRequestApiResponse = (apiResponse: ContainerRequestResource): JSX.Element => { const { uuid, ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid, name, description, properties, state, requestingContainerUuid, containerUuid, containerCountMax, mounts, runtimeConstraints, containerImage, environment, cwd, command, outputPath, priority, expiresAt, filters, containerCount, - useExisting, schedulingParameters, outputUuid, logUuid, outputName, outputTtl } = apiResponse; + useExisting, schedulingParameters, outputUuid, logUuid, outputName, outputTtl, outputGlob } = apiResponse; const response = ` "uuid": "${uuid}", "owner_uuid": "${ownerUuid}", @@ -428,7 +428,8 @@ const containerRequestApiResponse = (apiResponse: ContainerRequestResource): JSX "output_uuid": ${stringify(outputUuid)}, "log_uuid": ${stringify(logUuid)}, "output_name": ${stringify(outputName)}, -"output_ttl": ${stringify(outputTtl)}`; +"output_ttl": ${stringify(outputTtl)}, +"output_glob": ${stringify(outputGlob)}`; return {'{'} {response} {'\n'} {'}'}; }; -- 2.30.2