+export const goToStep = (step: number) =>
+ (dispatch: Dispatch) => {
+ if (step === 1) {
+ dispatch(runProcessPanelActions.SET_STEP_CHANGED(true));
+ }
+ dispatch(runProcessPanelActions.SET_CURRENT_STEP(step));
+ };
+
+export const runProcess = async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
+ const state = getState();
+ const basicForm = getFormValues(RUN_PROCESS_BASIC_FORM)(state) as RunProcessBasicFormData;
+ const inputsForm = getFormValues(RUN_PROCESS_INPUTS_FORM)(state) as WorkflowInputsData;
+ const advancedForm = getFormValues(RUN_PROCESS_ADVANCED_FORM)(state) as RunProcessAdvancedFormData || DEFAULT_ADVANCED_FORM_VALUES;
+ const userUuid = getState().auth.user!.uuid;
+ const router = getState();
+ const properties = getState().properties;
+ const { processOwnerUuid, selectedWorkflow } = state.runProcessPanel;
+ if (selectedWorkflow) {
+ const newProcessData = {
+ ownerUuid: isItemNotInProject(properties) || !isProjectOrRunProcessRoute(router) ? userUuid : processOwnerUuid,
+ name: basicForm.name,
+ description: basicForm.description,
+ state: ContainerRequestState.COMMITTED,
+ mounts: createWorkflowMounts(selectedWorkflow, normalizeInputKeys(inputsForm)),
+ runtimeConstraints: {
+ API: true,
+ vcpus: advancedForm[VCPUS_FIELD],
+ ram: advancedForm[RAM_FIELD],
+ api: advancedForm[API_FIELD],
+ },
+ schedulingParameters: {
+ maxRunTime: advancedForm[RUNTIME_FIELD]
+ },
+ containerImage: 'arvados/jobs',
+ cwd: '/var/spool/cwl',
+ command: [
+ 'arvados-cwl-runner',
+ '--api=containers',
+ '--local',
+ '/var/lib/cwl/workflow.json#main',
+ '/var/lib/cwl/cwl.input.json'
+ ],
+ outputPath: '/var/spool/cwl',
+ priority: 1,
+ outputName: advancedForm[OUTPUT_FIELD] ? advancedForm[OUTPUT_FIELD] : undefined,
+ properties: {
+ workflowUuid: selectedWorkflow.uuid,
+ workflowName: selectedWorkflow.name
+ }
+ };
+ const newProcess = await services.containerRequestService.create(newProcessData);
+ dispatch(navigateToProcess(newProcess.uuid));
+ }
+};
+
+export const DEFAULT_ADVANCED_FORM_VALUES: Partial<RunProcessAdvancedFormData> = {
+ [VCPUS_FIELD]: 1,
+ [RAM_FIELD]: 1073741824,
+ [API_FIELD]: true,
+};