From be083bdba419942304e4cc530368c789ebbeeda2 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Fri, 26 Apr 2024 22:50:00 +0100 Subject: [PATCH] add public init to providers --- apps/docker-provider/src/index.ts | 28 +++++++++++++-------------- apps/kubernetes-provider/src/index.ts | 4 ++++ packages/core-apps/src/provider.ts | 7 ++++++- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/apps/docker-provider/src/index.ts b/apps/docker-provider/src/index.ts index 5e25ddb43..2b05d0aea 100644 --- a/apps/docker-provider/src/index.ts +++ b/apps/docker-provider/src/index.ts @@ -39,9 +39,9 @@ class DockerTaskOperations implements TaskOperations { constructor(private opts = { forceSimulate: false }) {} - async #initialize(): Promise { + async init(): Promise { if (this.#initialized) { - return this.#getInitializeReturn(this.#canCheckpoint); + return this.#getInitReturn(this.#canCheckpoint); } logger.log("Initializing task operations"); @@ -56,33 +56,33 @@ class DockerTaskOperations implements TaskOperations { } catch (error) { if (!isExecaChildProcess(error)) { logger.error("No checkpoint support: Unknown error.", error); - return this.#getInitializeReturn(false); + return this.#getInitReturn(false); } if (error.stderr.includes("criu")) { if (error.stderr.includes("executable file not found")) { logger.error("No checkpoint support: Missing CRIU binary."); - return this.#getInitializeReturn(false); + return this.#getInitReturn(false); } logger.error("No checkpoint support: Unknown CRIU error.", error); - return this.#getInitializeReturn(false); + return this.#getInitReturn(false); } if (error.stderr.includes("experimental features enabled")) { logger.error("No checkpoint support: Please enable docker experimental features."); - return this.#getInitializeReturn(false); + return this.#getInitReturn(false); } logger.error("No checkpoint support: Unknown execa error.", error); - return this.#getInitializeReturn(false); + return this.#getInitReturn(false); } logger.log("Full checkpoint support!"); - return this.#getInitializeReturn(true); + return this.#getInitReturn(true); } - #getInitializeReturn(canCheckpoint: boolean): InitializeReturn { + #getInitReturn(canCheckpoint: boolean): InitializeReturn { this.#initialized = true; this.#canCheckpoint = canCheckpoint; @@ -101,7 +101,7 @@ class DockerTaskOperations implements TaskOperations { } async index(opts: TaskOperationsIndexOptions) { - await this.#initialize(); + await this.init(); const containerName = this.#getIndexContainerName(opts.shortCode); @@ -144,7 +144,7 @@ class DockerTaskOperations implements TaskOperations { } async create(opts: TaskOperationsCreateOptions) { - await this.#initialize(); + await this.init(); const containerName = this.#getRunContainerName(opts.runId); @@ -180,7 +180,7 @@ class DockerTaskOperations implements TaskOperations { } async restore(opts: TaskOperationsRestoreOptions) { - await this.#initialize(); + await this.init(); const containerName = this.#getRunContainerName(opts.runId); @@ -209,7 +209,7 @@ class DockerTaskOperations implements TaskOperations { } async delete(opts: { runId: string }) { - await this.#initialize(); + await this.init(); const containerName = this.#getRunContainerName(opts.runId); await this.#sendPreStop(containerName); @@ -218,7 +218,7 @@ class DockerTaskOperations implements TaskOperations { } async get(opts: { runId: string }) { - await this.#initialize(); + await this.init(); logger.log("noop: get"); } diff --git a/apps/kubernetes-provider/src/index.ts b/apps/kubernetes-provider/src/index.ts index 3fcc4217f..0ab1a0ddf 100644 --- a/apps/kubernetes-provider/src/index.ts +++ b/apps/kubernetes-provider/src/index.ts @@ -46,6 +46,10 @@ class KubernetesTaskOperations implements TaskOperations { this.#k8sApi = this.#createK8sApi(); } + async init() { + // noop + } + async index(opts: TaskOperationsIndexOptions) { await this.#createJob( { diff --git a/packages/core-apps/src/provider.ts b/packages/core-apps/src/provider.ts index cb1b0c4d5..2790fe8a6 100644 --- a/packages/core-apps/src/provider.ts +++ b/packages/core-apps/src/provider.ts @@ -63,10 +63,14 @@ export interface TaskOperationsRestoreOptions { } export interface TaskOperations { + init: () => Promise; + + // CRUD index: (opts: TaskOperationsIndexOptions) => Promise; create: (opts: TaskOperationsCreateOptions) => Promise; restore: (opts: TaskOperationsRestoreOptions) => Promise; + // unimplemented delete: (...args: any[]) => Promise; get: (...args: any[]) => Promise; } @@ -305,7 +309,8 @@ export class ProviderShell implements Provider { return httpServer; } - listen() { + async listen() { this.#httpServer.listen(this.#httpPort, this.options.host ?? "0.0.0.0"); + await this.tasks.init(); } }