realm-object-server
Version:
85 lines (84 loc) • 2.62 kB
TypeScript
/// <reference types="node" />
import { Logger } from "../shared/Logger";
import { StatsdReceiver } from "../stats";
import { StatsSink } from "../stats";
import { EventEmitter } from "events";
import { SyncServiceConfig } from "../services/SyncService";
export interface SyncWorkerConfiguration extends SyncServiceConfig {
serviceName: string;
endpointsName: string;
syncWorkerGroup: string;
syncWorkerId: string;
kubernetesConfig: any;
podIp: string;
podRef: any;
nodeName: string;
disableSlave?: boolean;
disableDiskStats?: boolean;
enableDebugMode?: boolean;
realmsEncryptionKey?: ArrayBuffer | ArrayBufferView;
fileUploadFunction?: (file: string) => Promise<void>;
}
export interface SyncWorkerStartParams {
logger: Logger;
statsSink: StatsSink;
statsdReceiver?: StatsdReceiver;
disableWatcher?: boolean;
}
export interface EndpointsMetadata extends Object {
name: string;
namespace: string;
annotations?: {
[key: string]: string;
};
labels?: {
[key: string]: string;
};
resourceVersion: string;
}
export interface EndpointsResource {
metadata: EndpointsMetadata;
subsets: any[];
}
export declare class KubernetesSyncWorker extends EventEmitter {
private readonly masterAnnotationKey;
private readonly slaveAnnotationKey;
private readonly requestedOperationAnnotationKey;
private readonly operationArgumentsAnnotationKey;
private readonly config;
private readonly disableSlave;
private readonly disableDiskStats;
startedAt: Date;
private watcher;
private logger;
private statsdSocket;
private syncServerPromise;
private coreApi;
private namespace;
private role;
private syncWorkerSlaveStatus;
private currentResourceVersion;
private statsInterval;
private statsdToStatsSink;
private currentSyncServerConfig;
private currentOperation;
constructor(config: SyncWorkerConfiguration);
start(params: SyncWorkerStartParams): Promise<void>;
shutdown(err?: any): Promise<void>;
reconcileEndpoints(endpoints: EndpointsResource): Promise<EndpointsResource>;
private generateSyncServerConfig;
private configureDiskStats;
private startSyncServer;
private stopSyncServer;
private assumeRole;
private patchEndpoints;
private getReplicaCount;
private reconcileSubsets;
private registerCandidate;
private deregisterCandidate;
private verifyFiles;
private copyAndUploadFile;
private copyFileSafely;
private compressFolder;
private quarantineFile;
}