From 6a5c0fe0cd12635698d2b5a6df27b4291e5b0ecb Mon Sep 17 00:00:00 2001 From: Michal Klobukowski Date: Wed, 29 Aug 2018 10:49:59 +0200 Subject: [PATCH] Create container service Feature #14099 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- src/models/container.ts | 35 +++++++++++++++++++ src/models/resource.ts | 12 ++++--- .../container-service/container-service.ts | 13 +++++++ src/services/services.ts | 3 ++ 4 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 src/models/container.ts create mode 100644 src/services/container-service/container-service.ts diff --git a/src/models/container.ts b/src/models/container.ts new file mode 100644 index 00000000..6f847b19 --- /dev/null +++ b/src/models/container.ts @@ -0,0 +1,35 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import { Resource, ResourceKind } from "./resource"; + +export enum ContainerState { + QUEUED = 'Queued', + LOCKED = 'Locked', + RUNNING = 'Running', + COMPLETE = 'Complete', + CANCELLED = 'Cancelled', +} + +export interface ContainerResource extends Resource { + kind: ResourceKind.CONTAINER; + state: string; + startedAt: string; + finishedAt: string; + log: string; + environment: {}; + cwd: string; + command: string[]; + outputPath: string; + mounts: {}; + runtimeConstraints: {}; + schedulingParameters: {}; + output: string; + containerImage: string; + progress: number; + priority: number; + exitCode: number; + authUuid: string; + lockedByUuid: string; +} diff --git a/src/models/resource.ts b/src/models/resource.ts index ec4fe5f9..3290bdfe 100644 --- a/src/models/resource.ts +++ b/src/models/resource.ts @@ -16,19 +16,21 @@ export interface Resource { export enum ResourceKind { COLLECTION = "arvados#collection", + CONTAINER = "arvados#container", CONTAINER_REQUEST = "arvados#containerRequest", GROUP = "arvados#group", PROCESS = "arvados#containerRequest", PROJECT = "arvados#group", - WORKFLOW = "arvados#workflow", USER = "arvados#user", + WORKFLOW = "arvados#workflow", } export enum ResourceObjectType { - USER = 'tpzed', - GROUP = 'j7d0g', COLLECTION = '4zz18', - CONTAINER_REQUEST = 'xvhdp' + CONTAINER = 'dz642', + CONTAINER_REQUEST = 'xvhdp', + GROUP = 'j7d0g', + USER = 'tpzed', } export const RESOURCE_UUID_PATTERN = '.{5}-.{5}-.{15}'; @@ -55,6 +57,8 @@ export const extractUuidKind = (uuid: string = '') => { return ResourceKind.COLLECTION; case ResourceObjectType.CONTAINER_REQUEST: return ResourceKind.CONTAINER_REQUEST; + case ResourceObjectType.CONTAINER: + return ResourceKind.CONTAINER; default: return undefined; } diff --git a/src/services/container-service/container-service.ts b/src/services/container-service/container-service.ts new file mode 100644 index 00000000..698c7f52 --- /dev/null +++ b/src/services/container-service/container-service.ts @@ -0,0 +1,13 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import { CommonResourceService } from "~/common/api/common-resource-service"; +import { AxiosInstance } from "axios"; +import { ContainerResource } from '../../models/container'; + +export class ContainerService extends CommonResourceService { + constructor(serverApi: AxiosInstance) { + super(serverApi, "containers"); + } +} diff --git a/src/services/services.ts b/src/services/services.ts index d73d14b1..32e7bd18 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -18,6 +18,7 @@ import { UserService } from './user-service/user-service'; import { AncestorService } from "~/services/ancestors-service/ancestors-service"; import { ResourceKind } from "~/models/resource"; import { ContainerRequestService } from './container-request-service/container-request-service'; +import { ContainerService } from './container-service/container-service'; export type ServiceRepository = ReturnType; @@ -34,6 +35,7 @@ export const createServices = (config: Config) => { const projectService = new ProjectService(apiClient); const userService = new UserService(apiClient); const containerRequestService = new ContainerRequestService(apiClient); + const containerService = new ContainerService(apiClient); const ancestorsService = new AncestorService(groupsService, userService); const authService = new AuthService(apiClient, config.rootUrl); @@ -49,6 +51,7 @@ export const createServices = (config: Config) => { collectionFilesService, collectionService, containerRequestService, + containerService, favoriteService, groupsService, keepService, -- 2.30.2