1 |
|
2 | import { Request } from 'request';
|
3 | import { Docker } from 'docker-cli-js';
|
4 | import { CronJob } from 'cron';
|
5 | import * as sbase from '@nodeswork/sbase';
|
6 | import { LocalStorage } from './utils';
|
7 | import { nam } from './def';
|
8 | export interface AuthOptions {
|
9 | email: string;
|
10 | password: string;
|
11 | deviceName: string;
|
12 | }
|
13 | export interface AppletManagerOptions {
|
14 | appPath: string;
|
15 | nodesworkServer: string;
|
16 | port: number;
|
17 | debug?: boolean;
|
18 | dev?: boolean;
|
19 | pid?: number;
|
20 | token?: string;
|
21 | }
|
22 | export declare class AppletManager implements nam.INAM {
|
23 | private options;
|
24 | ls: LocalStorage;
|
25 | docker: Docker;
|
26 | network: Network;
|
27 | containerProxy: ContainerProxy;
|
28 | cronJobs: WorkerCronJob[];
|
29 | private serverApi;
|
30 | constructor(options: AppletManagerOptions);
|
31 | authenticated(): boolean;
|
32 | /**
|
33 | * Authenticate the container by email and password.
|
34 | *
|
35 | * @throws UNAUTHENTICATED_ERROR
|
36 | */
|
37 | authenticate(options: AuthOptions): Promise<void>;
|
38 | isStarted(): boolean;
|
39 | /**
|
40 | * Start the container.
|
41 | *
|
42 | * @throws UNAUTHENTICATED_ERROR
|
43 | */
|
44 | startServer(): Promise<void>;
|
45 | /**
|
46 | * Stop the container.
|
47 | *
|
48 | * @throws UNAUTHENTICATED_ERROR
|
49 | */
|
50 | stopServer(): Promise<void>;
|
51 | install(options: nam.AppletImage): Promise<void>;
|
52 | images(): Promise<nam.AppletImage[]>;
|
53 | run(options: nam.AppletRunOptions): Promise<void>;
|
54 | kill(options: nam.RouteOptions): Promise<void>;
|
55 | ps(): Promise<nam.AppletStatus[]>;
|
56 | refreshWorkerCrons(): Promise<void>;
|
57 | executeCronJob(job: WorkerCronJob): Promise<any>;
|
58 | updateExecutionMetrics(executionId: string, options: sbase.metrics.MetricsOptions): Promise<Request>;
|
59 | work(options: nam.WorkOptions): Promise<any>;
|
60 | request<T>(options: nam.RequestOptions): Promise<nam.RequestResponse | T>;
|
61 | operateAccount(options: nam.AccountOperateOptions): Promise<any>;
|
62 | route(options: nam.RouteOptions): Promise<nam.Route>;
|
63 | updateDevice(): Promise<void>;
|
64 | checkEnvironment(): Promise<void>;
|
65 | private ensureMongo(options);
|
66 | private name(options);
|
67 | private installContainerProxy();
|
68 | }
|
69 | export interface Network {
|
70 | subnet: string;
|
71 | gateway: string;
|
72 | containers: object[];
|
73 | }
|
74 | export interface ContainerProxy {
|
75 | version: string;
|
76 | latestVersion: string;
|
77 | }
|
78 | export interface WorkerCronJob {
|
79 | jobUUID: string;
|
80 | userApplet: string;
|
81 | appletId: string;
|
82 | image: nam.AppletImage;
|
83 | worker: nam.Worker;
|
84 | schedule: string;
|
85 | cronJob?: CronJob;
|
86 | }
|