import { require } from '~/validators/require';
import { min } from '~/validators/min';
import { optional } from '~/validators/optional';
+import { SwitchField } from '~/components/switch-field/switch-field';
export const RUN_PROCESS_ADVANCED_FORM = 'runProcessAdvancedForm';
export const RAM_FIELD = 'ram';
export const VCPUS_FIELD = 'vcpus';
export const KEEP_CACHE_RAM_FIELD = 'keepCacheRam';
+export const API_FIELD = 'api';
export interface RunProcessAdvancedFormData {
[OUTPUT_FIELD]?: string;
[RAM_FIELD]: number;
[VCPUS_FIELD]: number;
[KEEP_CACHE_RAM_FIELD]?: number;
+ [API_FIELD]?: boolean;
}
export const RunProcessAdvancedForm =
reduxForm<RunProcessAdvancedFormData>({
form: RUN_PROCESS_ADVANCED_FORM,
- initialValues: {
- [RAM_FIELD]: 1073741824,
- [VCPUS_FIELD]: 1,
- },
})(() =>
<form>
<ExpansionPanel elevation={0}>
<Field
name={RUNTIME_FIELD}
component={TextField}
- label="Runtime limit (hh)" />
+ helperText="Maximum running time (in seconds) that this container will be allowed to run before being cancelled."
+ label="Runtime limit"
+ parse={IntInput.parse}
+ format={IntInput.format}
+ type='number'
+ validate={runtimeValidation} />
</Grid>
<Grid item xs={12} md={6}>
<Field
type='number'
validate={keepCacheRamValdation} />
</Grid>
+ <Grid item xs={12} md={6}>
+ <Field
+ name={API_FIELD}
+ component={SwitchField}
+ switchProps={{
+ color: 'primary'
+ }}
+ label='API'
+ helperText='When set, ARVADOS_API_HOST and ARVADOS_API_TOKEN will be set, and process will have networking enabled to access the Arvados API server.' />
+ </Grid>
</Grid>
</ExpansionPanelDetails>
</ExpansionPanel>
const ramValidation = [min(0)];
const vcpusValidation = [min(1)];
const keepCacheRamValdation = [optional(min(0))];
+const runtimeValidation = [optional(min(1))];