UNPKG

@nodeswork/nam

Version:

Applet manager for Nodeswork containers.

87 lines (86 loc) 2.55 kB
/// <reference types="request" /> import { Request } from 'request'; import { Docker } from 'docker-cli-js'; import { CronJob } from 'cron'; import { metrics } from '@nodeswork/utils'; import { LocalStorage } from './utils'; import { nam } from './def'; export interface AuthOptions { email: string; password: string; deviceName: string; } export interface AppletManagerOptions { appPath: string; nodesworkServer: string; port: number; debug?: boolean; dev?: boolean; pid?: number; token?: string; } export declare class AppletManager implements nam.INAM { private options; ls: LocalStorage; docker: Docker; network: Network; containerProxy: ContainerProxy; cronJobs: WorkerCronJob[]; private serverApi; constructor(options: AppletManagerOptions); authenticated(): boolean; /** * Authenticate the container by email and password. * * @throws UNAUTHENTICATED_ERROR */ authenticate(options: AuthOptions): Promise<void>; isStarted(): boolean; /** * Start the container. * * @throws UNAUTHENTICATED_ERROR */ startServer(): Promise<void>; /** * Stop the container. * * @throws UNAUTHENTICATED_ERROR */ stopServer(): Promise<void>; install(options: nam.AppletImage): Promise<void>; images(): Promise<nam.AppletImage[]>; run(options: nam.AppletRunOptions): Promise<void>; kill(options: nam.RouteOptions): Promise<void>; ps(): Promise<nam.AppletStatus[]>; refreshWorkerCrons(): Promise<void>; executeCronJob(job: WorkerCronJob): Promise<any>; updateExecutionMetrics(executionId: string, options: metrics.UpdateMetricsDataOptions<any>): Promise<Request>; work(options: nam.WorkOptions): Promise<any>; request<T>(options: nam.RequestOptions): Promise<nam.RequestResponse | T>; operateAccount(options: nam.AccountOperateOptions): Promise<any>; route(options: nam.RouteOptions): Promise<nam.Route>; updateDevice(): Promise<void>; checkEnvironment(): Promise<void>; private ensureMongo(options); private name(options); private installContainerProxy(); } export interface Network { subnet: string; gateway: string; containers: object[]; } export interface ContainerProxy { version: string; latestVersion: string; } export interface WorkerCronJob { jobUUID: string; userApplet: string; appletId: string; image: nam.AppletImage; worker: nam.Worker; schedule: string; cronJob?: CronJob; }