From 78969103183f03a23557aa0b4d1739a0ff12dcb2 Mon Sep 17 00:00:00 2001 From: Michal Klobukowski Date: Wed, 29 Aug 2018 12:34:10 +0200 Subject: [PATCH] Update container-request and container models Feature #14099 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- src/models/container-request.ts | 19 +++++----- src/models/container.ts | 23 ++++++------ src/models/mount-types.ts | 56 +++++++++++++++++++++++++++++ src/models/runtime-constraints.ts | 10 ++++++ src/models/scheduling-parameters.ts | 9 +++++ 5 files changed, 99 insertions(+), 18 deletions(-) create mode 100644 src/models/mount-types.ts create mode 100644 src/models/runtime-constraints.ts create mode 100644 src/models/scheduling-parameters.ts diff --git a/src/models/container-request.ts b/src/models/container-request.ts index d1bcc36c..78891c7b 100644 --- a/src/models/container-request.ts +++ b/src/models/container-request.ts @@ -3,6 +3,9 @@ // SPDX-License-Identifier: AGPL-3.0 import { Resource, ResourceKind } from "./resource"; +import { MountType } from "~/models/mount-types"; +import { RuntimeConstraints } from './runtime-constraints'; +import { SchedulingParameters } from './scheduling-parameters'; export enum ContainerRequestState { UNCOMMITTED = "Uncommitted", @@ -16,12 +19,12 @@ export interface ContainerRequestResource extends Resource { description: string; properties: any; state: ContainerRequestState; - requestingContainerUuid: string; - containerUuid: string; + requestingContainerUuid: string | null; + containerUuid: string | null; containerCountMax: number; - mounts: any; - runtimeConstraints: any; - schedulingParameters: any; + mounts: MountType[]; + runtimeConstraints: RuntimeConstraints; + schedulingParameters: SchedulingParameters; containerImage: string; environment: any; cwd: string; @@ -29,10 +32,10 @@ export interface ContainerRequestResource extends Resource { outputPath: string; outputName: string; outputTtl: number; - priority: number; + priority: number | null; expiresAt: string; useExisting: boolean; - logUuid: string; - outputUuid: string; + logUuid: string | null; + outputUuid: string | null; filters: string; } diff --git a/src/models/container.ts b/src/models/container.ts index 6f847b19..99cb3098 100644 --- a/src/models/container.ts +++ b/src/models/container.ts @@ -3,6 +3,9 @@ // SPDX-License-Identifier: AGPL-3.0 import { Resource, ResourceKind } from "./resource"; +import { MountType } from '~/models/mount-types'; +import { RuntimeConstraints } from "~/models/runtime-constraints"; +import { SchedulingParameters } from './scheduling-parameters'; export enum ContainerState { QUEUED = 'Queued', @@ -15,21 +18,21 @@ export enum ContainerState { export interface ContainerResource extends Resource { kind: ResourceKind.CONTAINER; state: string; - startedAt: string; - finishedAt: string; - log: string; + startedAt: string | null; + finishedAt: string | null; + log: string | null; environment: {}; cwd: string; command: string[]; outputPath: string; - mounts: {}; - runtimeConstraints: {}; - schedulingParameters: {}; - output: string; + mounts: MountType[]; + runtimeConstraints: RuntimeConstraints; + schedulingParameters: SchedulingParameters; + output: string | null; containerImage: string; progress: number; priority: number; - exitCode: number; - authUuid: string; - lockedByUuid: string; + exitCode: number | null; + authUuid: string | null; + lockedByUuid: string | null; } diff --git a/src/models/mount-types.ts b/src/models/mount-types.ts new file mode 100644 index 00000000..ec48c852 --- /dev/null +++ b/src/models/mount-types.ts @@ -0,0 +1,56 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +export enum MountKind { + COLLECTION = 'collection', + GIT_TREE = 'git_tree', + TEMPORARY_DIRECTORY = 'tmp', + KEEP = 'keep', + MOUNTED_FILE = 'file', + JSON = 'JSON' +} + +export type MountType = + CollectionMount | + GitTreeMount | + TemporaryDirectoryMount | + KeepMount | + JSONMount; + +export interface CollectionMount { + kind: MountKind.COLLECTION; + uuid?: string; + portableDataHash?: string; + path?: string; + writable?: boolean; +} + +export interface GitTreeMount { + kind: MountKind.GIT_TREE; + uuid: string; + commit: string; + path?: string; +} + +export enum TemporaryDirectoryDeviceType { + RAM = 'ram', + SSD = 'ssd', + DISK = 'disk', + NETWORK = 'network', +} + +export interface TemporaryDirectoryMount { + kind: MountKind.TEMPORARY_DIRECTORY; + capacity: number; + deviceType: TemporaryDirectoryDeviceType; +} + +export interface KeepMount { + kind: MountKind.KEEP; +} + +export interface JSONMount { + kind: MountKind.JSON; + content: string; +} diff --git a/src/models/runtime-constraints.ts b/src/models/runtime-constraints.ts new file mode 100644 index 00000000..ba905378 --- /dev/null +++ b/src/models/runtime-constraints.ts @@ -0,0 +1,10 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +export interface RuntimeConstraints { + ram: number; + vcpus: number; + keepCacheRam: number; + API: boolean; +} diff --git a/src/models/scheduling-parameters.ts b/src/models/scheduling-parameters.ts new file mode 100644 index 00000000..62f7224c --- /dev/null +++ b/src/models/scheduling-parameters.ts @@ -0,0 +1,9 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +export interface SchedulingParameters { + partitions: string[]; + preemptible: boolean; + maxRunTime: number; +} -- 2.39.5