X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ee347878e1ad3b6f82787ac27b6d3b6510401ecd..780e83dab0e48e6fbcd156d55c36122390b4f258:/src/store/processes/processes-actions.ts diff --git a/src/store/processes/processes-actions.ts b/src/store/processes/processes-actions.ts index dbca03ab63..f7822e06ee 100644 --- a/src/store/processes/processes-actions.ts +++ b/src/store/processes/processes-actions.ts @@ -35,6 +35,10 @@ export const loadProcess = (containerRequestUuid: string) => if (containerRequest.containerUuid) { const container = await services.containerService.get(containerRequest.containerUuid); dispatch(updateResources([container])); + if (container.runtimeUserUuid) { + const runtimeUser = await services.userService.get(container.runtimeUserUuid); + dispatch(updateResources([runtimeUser])); + } return { containerRequest, container }; } return { containerRequest }; @@ -56,6 +60,7 @@ const containerFieldsNoMounts = [ "auth_uuid", "command", "container_image", + "cost", "created_at", "cwd", "environment", @@ -133,8 +138,25 @@ export const reRunProcess = (processUuid: string, workflowUuid: string) => } }; +/* + * Fetches raw inputs from containerRequest mounts with fallback to properties + * Returns undefined if containerRequest not loaded + * Returns [] if inputs not found in mounts or props + */ +export const getRawInputs = (data: any): CommandInputParameter[] | undefined => { + if (!data) { return undefined; } + const mountInput = data.mounts?.[MOUNT_PATH_CWL_INPUT]?.content; + const propsInput = data.properties?.cwl_input; + if (!mountInput && !propsInput) { return []; } + return (mountInput || propsInput); +} + export const getInputs = (data: any): CommandInputParameter[] => { + // Definitions from mounts are needed so we return early if missing if (!data || !data.mounts || !data.mounts[MOUNT_PATH_CWL_WORKFLOW]) { return []; } + const content = getRawInputs(data) as any; + if (!content) { return []; } + const inputs = getWorkflowInputs(data.mounts[MOUNT_PATH_CWL_WORKFLOW].content); return inputs ? inputs.map( (it: any) => ( @@ -142,14 +164,23 @@ export const getInputs = (data: any): CommandInputParameter[] => { type: it.type, id: it.id, label: it.label, - default: data.mounts[MOUNT_PATH_CWL_INPUT].content[it.id], - value: data.mounts[MOUNT_PATH_CWL_INPUT].content[it.id.split('/').pop()] || [], + default: content[it.id], + value: content[it.id.split('/').pop()] || [], doc: it.doc } ) ) : []; }; +/* + * Fetches raw outputs from containerRequest properties + * Assumes containerRequest is loaded + */ +export const getRawOutputs = (data: any): CommandInputParameter[] | undefined => { + if (!data || !data.properties || !data.properties.cwl_output) { return undefined; } + return (data.properties.cwl_output); +} + export type InputCollectionMount = { path: string; pdh: string;