Update container-request and container models
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Wed, 29 Aug 2018 10:34:10 +0000 (12:34 +0200)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Wed, 29 Aug 2018 10:34:10 +0000 (12:34 +0200)
Feature #14099

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

src/models/container-request.ts
src/models/container.ts
src/models/mount-types.ts [new file with mode: 0644]
src/models/runtime-constraints.ts [new file with mode: 0644]
src/models/scheduling-parameters.ts [new file with mode: 0644]

index d1bcc36c81e9a548e34006c9696e47340a422002..78891c7bdcd8fc23918ff369052548dd02b725db 100644 (file)
@@ -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;
 }
index 6f847b19b8626c92265718fd00ece51dd7953de7..99cb30983a304e5253941c78911301388dfb544e 100644 (file)
@@ -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 (file)
index 0000000..ec48c85
--- /dev/null
@@ -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 (file)
index 0000000..ba90537
--- /dev/null
@@ -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 (file)
index 0000000..62f7224
--- /dev/null
@@ -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;
+}