@docker-digital/dockernet-agent 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +120 -0
- package/dist/agent/agent.module.d.ts +2 -0
- package/dist/agent/agent.module.js +47 -0
- package/dist/agent/agent.module.js.map +1 -0
- package/dist/agent/commands/agent.command.d.ts +58 -0
- package/dist/agent/commands/agent.command.js +417 -0
- package/dist/agent/commands/agent.command.js.map +1 -0
- package/dist/agent/services/api.service.d.ts +13 -0
- package/dist/agent/services/api.service.js +116 -0
- package/dist/agent/services/api.service.js.map +1 -0
- package/dist/agent/services/config.service.d.ts +28 -0
- package/dist/agent/services/config.service.js +100 -0
- package/dist/agent/services/config.service.js.map +1 -0
- package/dist/agent/services/docker-event.service.d.ts +44 -0
- package/dist/agent/services/docker-event.service.js +141 -0
- package/dist/agent/services/docker-event.service.js.map +1 -0
- package/dist/agent/services/docker.service.d.ts +16 -0
- package/dist/agent/services/docker.service.js +170 -0
- package/dist/agent/services/docker.service.js.map +1 -0
- package/dist/agent/services/event-websocket-client.service.d.ts +49 -0
- package/dist/agent/services/event-websocket-client.service.js +248 -0
- package/dist/agent/services/event-websocket-client.service.js.map +1 -0
- package/dist/agent/services/event.service.d.ts +27 -0
- package/dist/agent/services/event.service.js +242 -0
- package/dist/agent/services/event.service.js.map +1 -0
- package/dist/agent/services/log.service.d.ts +19 -0
- package/dist/agent/services/log.service.js +176 -0
- package/dist/agent/services/log.service.js.map +1 -0
- package/dist/agent/services/machine.service.d.ts +15 -0
- package/dist/agent/services/machine.service.js +148 -0
- package/dist/agent/services/machine.service.js.map +1 -0
- package/dist/agent/services/profile.service.d.ts +33 -0
- package/dist/agent/services/profile.service.js +438 -0
- package/dist/agent/services/profile.service.js.map +1 -0
- package/dist/agent/services/volume-sync.service.d.ts +9 -0
- package/dist/agent/services/volume-sync.service.js +87 -0
- package/dist/agent/services/volume-sync.service.js.map +1 -0
- package/dist/agent/services/websocket-client.service.d.ts +48 -0
- package/dist/agent/services/websocket-client.service.js +278 -0
- package/dist/agent/services/websocket-client.service.js.map +1 -0
- package/dist/app.module.d.ts +2 -0
- package/dist/app.module.js +31 -0
- package/dist/app.module.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +12 -0
- package/dist/main.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +103 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.command.js","sourceRoot":"","sources":["../../../src/agent/commands/agent.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ConfigService } from './config.service';
|
|
2
|
+
export declare class ApiService {
|
|
3
|
+
private configService;
|
|
4
|
+
private readonly logger;
|
|
5
|
+
private readonly axiosInstance;
|
|
6
|
+
private apiKey;
|
|
7
|
+
constructor(configService: ConfigService);
|
|
8
|
+
initialize(): Promise<void>;
|
|
9
|
+
setApiKey(apiKey: string): Promise<void>;
|
|
10
|
+
private buildUrl;
|
|
11
|
+
callApi<T = any>(method: 'GET' | 'POST' | 'PUT' | 'DELETE', endpoint: string, data?: any, maxRetries?: number, retryDelay?: number): Promise<T | null>;
|
|
12
|
+
private sleep;
|
|
13
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var ApiService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.ApiService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const axios_1 = require("axios");
|
|
16
|
+
const config_service_1 = require("./config.service");
|
|
17
|
+
let ApiService = ApiService_1 = class ApiService {
|
|
18
|
+
constructor(configService) {
|
|
19
|
+
this.configService = configService;
|
|
20
|
+
this.logger = new common_1.Logger(ApiService_1.name);
|
|
21
|
+
this.axiosInstance = axios_1.default.create({
|
|
22
|
+
timeout: 30000,
|
|
23
|
+
validateStatus: () => true,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async initialize() {
|
|
27
|
+
this.apiKey = await this.configService.getApiKey();
|
|
28
|
+
}
|
|
29
|
+
async setApiKey(apiKey) {
|
|
30
|
+
this.apiKey = apiKey;
|
|
31
|
+
}
|
|
32
|
+
buildUrl(endpoint) {
|
|
33
|
+
const baseUrl = this.configService.apiBaseUrl;
|
|
34
|
+
const separator = endpoint.includes('?') ? '&' : '?';
|
|
35
|
+
return `${baseUrl}${endpoint}${separator}api_key=${this.apiKey}`;
|
|
36
|
+
}
|
|
37
|
+
async callApi(method, endpoint, data, maxRetries = 3, retryDelay = 5000) {
|
|
38
|
+
if (!this.apiKey) {
|
|
39
|
+
this.logger.debug('API key not found, initializing...');
|
|
40
|
+
await this.initialize();
|
|
41
|
+
}
|
|
42
|
+
const url = this.buildUrl(endpoint);
|
|
43
|
+
this.logger.debug(`API call: ${method} ${url} (maxRetries: ${maxRetries === -1 ? 'infinite' : maxRetries})`);
|
|
44
|
+
let attempt = 0;
|
|
45
|
+
const infiniteRetry = maxRetries === -1 || maxRetries === Infinity;
|
|
46
|
+
while (infiniteRetry || attempt < maxRetries) {
|
|
47
|
+
attempt++;
|
|
48
|
+
try {
|
|
49
|
+
const config = {
|
|
50
|
+
method,
|
|
51
|
+
url,
|
|
52
|
+
headers: {
|
|
53
|
+
'Content-Type': 'application/json',
|
|
54
|
+
},
|
|
55
|
+
...(data && { data }),
|
|
56
|
+
timeout: endpoint === '/logs' ? 5000 : 30000,
|
|
57
|
+
};
|
|
58
|
+
const response = await this.axiosInstance.request(config);
|
|
59
|
+
if (response.status >= 200 && response.status < 300) {
|
|
60
|
+
return response.data;
|
|
61
|
+
}
|
|
62
|
+
if (infiniteRetry || attempt < maxRetries) {
|
|
63
|
+
const retryInfo = infiniteRetry
|
|
64
|
+
? `(attempt ${attempt}, retrying infinitely)`
|
|
65
|
+
: `(attempt ${attempt}/${maxRetries})`;
|
|
66
|
+
this.logger.warn(`HTTP ${response.status} ${retryInfo}: ${response.data?.message || response.statusText}, retrying in ${retryDelay}ms...`);
|
|
67
|
+
await this.sleep(retryDelay);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
this.logger.error(`HTTP ${response.status} (after ${maxRetries} attempts): ${response.data?.message || response.statusText}`);
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
const isTimeoutOrConnectionError = error.code === 'ECONNREFUSED' ||
|
|
75
|
+
error.code === 'ETIMEDOUT' ||
|
|
76
|
+
error.code === 'ECONNRESET' ||
|
|
77
|
+
error.message?.includes('timeout') ||
|
|
78
|
+
error.message?.includes('Failed to connect') ||
|
|
79
|
+
error.message?.includes("Couldn't connect") ||
|
|
80
|
+
error.message?.includes('Network Error');
|
|
81
|
+
if (isTimeoutOrConnectionError) {
|
|
82
|
+
if (infiniteRetry || attempt < maxRetries) {
|
|
83
|
+
const retryInfo = infiniteRetry
|
|
84
|
+
? `(attempt ${attempt}, retrying infinitely)`
|
|
85
|
+
: `(attempt ${attempt}/${maxRetries})`;
|
|
86
|
+
this.logger.warn(`Connection/timeout error ${retryInfo}: ${error.message}, retrying in ${retryDelay}ms...`);
|
|
87
|
+
await this.sleep(retryDelay);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (!infiniteRetry && attempt < maxRetries) {
|
|
92
|
+
this.logger.warn(`API error (attempt ${attempt}/${maxRetries}): ${error.message}, retrying in ${retryDelay}ms...`);
|
|
93
|
+
await this.sleep(retryDelay);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (!isTimeoutOrConnectionError) {
|
|
97
|
+
const retryInfo = infiniteRetry
|
|
98
|
+
? `(after ${attempt} attempts, infinite retry enabled)`
|
|
99
|
+
: `(after ${maxRetries} attempts)`;
|
|
100
|
+
this.logger.error(`API call failed ${retryInfo}: ${error.message}`);
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
sleep(ms) {
|
|
108
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
exports.ApiService = ApiService;
|
|
112
|
+
exports.ApiService = ApiService = ApiService_1 = __decorate([
|
|
113
|
+
(0, common_1.Injectable)(),
|
|
114
|
+
__metadata("design:paramtypes", [config_service_1.ConfigService])
|
|
115
|
+
], ApiService);
|
|
116
|
+
//# sourceMappingURL=api.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.service.js","sourceRoot":"","sources":["../../../src/agent/services/api.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ConfigService as NestConfigService } from '@nestjs/config';
|
|
2
|
+
export declare class ConfigService {
|
|
3
|
+
private nestConfigService;
|
|
4
|
+
private readonly configDir;
|
|
5
|
+
private readonly configFile;
|
|
6
|
+
private readonly workDir;
|
|
7
|
+
constructor(nestConfigService: NestConfigService);
|
|
8
|
+
get serverUrl(): string;
|
|
9
|
+
get apiBaseUrl(): string;
|
|
10
|
+
get pollIntervalSeconds(): number;
|
|
11
|
+
get configDirPath(): string;
|
|
12
|
+
get configFilePath(): string;
|
|
13
|
+
get workDirPath(): string;
|
|
14
|
+
get logFilePath(): string;
|
|
15
|
+
get pidFilePath(): string;
|
|
16
|
+
loadConfig(): Promise<{
|
|
17
|
+
apiKey?: string;
|
|
18
|
+
machineKey?: string;
|
|
19
|
+
serverUrl?: string;
|
|
20
|
+
}>;
|
|
21
|
+
saveConfig(config: {
|
|
22
|
+
apiKey: string;
|
|
23
|
+
machineKey: string;
|
|
24
|
+
serverUrl?: string;
|
|
25
|
+
}): Promise<void>;
|
|
26
|
+
getApiKey(): Promise<string | undefined>;
|
|
27
|
+
getMachineKey(): Promise<string | undefined>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ConfigService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const config_1 = require("@nestjs/config");
|
|
15
|
+
const fs = require("fs-extra");
|
|
16
|
+
const path = require("path");
|
|
17
|
+
const os = require("os");
|
|
18
|
+
let ConfigService = class ConfigService {
|
|
19
|
+
constructor(nestConfigService) {
|
|
20
|
+
this.nestConfigService = nestConfigService;
|
|
21
|
+
this.configDir = path.join(os.homedir(), '.dockernet-agent');
|
|
22
|
+
this.configFile = path.join(this.configDir, 'config');
|
|
23
|
+
this.workDir =
|
|
24
|
+
process.env.WORK_DIR || path.join(this.configDir, 'profiles');
|
|
25
|
+
fs.ensureDirSync(this.configDir);
|
|
26
|
+
fs.ensureDirSync(this.workDir);
|
|
27
|
+
fs.chmodSync(this.configDir, 0o700);
|
|
28
|
+
}
|
|
29
|
+
get serverUrl() {
|
|
30
|
+
return (process.env.SERVER_URL ||
|
|
31
|
+
this.nestConfigService.get('SERVER_URL') ||
|
|
32
|
+
'http://100.100.10.4:3001');
|
|
33
|
+
}
|
|
34
|
+
get apiBaseUrl() {
|
|
35
|
+
return `${this.serverUrl}/v1/api/agent`;
|
|
36
|
+
}
|
|
37
|
+
get pollIntervalSeconds() {
|
|
38
|
+
return parseInt(process.env.POLL_INTERVAL_SECONDS || '5', 10);
|
|
39
|
+
}
|
|
40
|
+
get configDirPath() {
|
|
41
|
+
return this.configDir;
|
|
42
|
+
}
|
|
43
|
+
get configFilePath() {
|
|
44
|
+
return this.configFile;
|
|
45
|
+
}
|
|
46
|
+
get workDirPath() {
|
|
47
|
+
return this.workDir;
|
|
48
|
+
}
|
|
49
|
+
get logFilePath() {
|
|
50
|
+
return path.join(this.configDir, 'agent.log');
|
|
51
|
+
}
|
|
52
|
+
get pidFilePath() {
|
|
53
|
+
return path.join(this.configDir, 'agent.pid');
|
|
54
|
+
}
|
|
55
|
+
async loadConfig() {
|
|
56
|
+
if (!fs.existsSync(this.configFile)) {
|
|
57
|
+
return {};
|
|
58
|
+
}
|
|
59
|
+
const content = await fs.readFile(this.configFile, 'utf-8');
|
|
60
|
+
const config = {};
|
|
61
|
+
for (const line of content.split('\n')) {
|
|
62
|
+
const trimmed = line.trim();
|
|
63
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
64
|
+
continue;
|
|
65
|
+
const match = trimmed.match(/^(\w+)="?([^"]+)"?$/);
|
|
66
|
+
if (match) {
|
|
67
|
+
const [, key, value] = match;
|
|
68
|
+
config[key] = value;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
apiKey: config.API_KEY,
|
|
73
|
+
machineKey: config.MACHINE_KEY,
|
|
74
|
+
serverUrl: config.SERVER_URL || this.serverUrl,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
async saveConfig(config) {
|
|
78
|
+
const existing = await this.loadConfig();
|
|
79
|
+
const content = [
|
|
80
|
+
`API_KEY="${config.apiKey}"`,
|
|
81
|
+
`SERVER_URL="${config.serverUrl || existing.serverUrl || this.serverUrl}"`,
|
|
82
|
+
`MACHINE_KEY="${config.machineKey}"`,
|
|
83
|
+
].join('\n');
|
|
84
|
+
await fs.writeFile(this.configFile, content, { mode: 0o600 });
|
|
85
|
+
}
|
|
86
|
+
async getApiKey() {
|
|
87
|
+
const config = await this.loadConfig();
|
|
88
|
+
return config.apiKey;
|
|
89
|
+
}
|
|
90
|
+
async getMachineKey() {
|
|
91
|
+
const config = await this.loadConfig();
|
|
92
|
+
return config.machineKey;
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
exports.ConfigService = ConfigService;
|
|
96
|
+
exports.ConfigService = ConfigService = __decorate([
|
|
97
|
+
(0, common_1.Injectable)(),
|
|
98
|
+
__metadata("design:paramtypes", [config_1.ConfigService])
|
|
99
|
+
], ConfigService);
|
|
100
|
+
//# sourceMappingURL=config.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../src/agent/services/config.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
export interface DockerContainerEvent {
|
|
3
|
+
Type: string;
|
|
4
|
+
Action: string;
|
|
5
|
+
Actor: {
|
|
6
|
+
ID: string;
|
|
7
|
+
Attributes: {
|
|
8
|
+
'com.docker.compose.project'?: string;
|
|
9
|
+
'com.docker.compose.service'?: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
image?: string;
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
time: number;
|
|
16
|
+
timeNano: number;
|
|
17
|
+
}
|
|
18
|
+
export interface ContainerStateChangedEvent {
|
|
19
|
+
profileId: string;
|
|
20
|
+
serviceName: string;
|
|
21
|
+
containerId: string;
|
|
22
|
+
action: string;
|
|
23
|
+
timestamp: number;
|
|
24
|
+
}
|
|
25
|
+
export declare class DockerEventService implements OnModuleInit {
|
|
26
|
+
private readonly logger;
|
|
27
|
+
private docker;
|
|
28
|
+
private eventStream;
|
|
29
|
+
private isListening;
|
|
30
|
+
private reconnectAttempts;
|
|
31
|
+
private readonly maxReconnectAttempts;
|
|
32
|
+
private readonly reconnectDelay;
|
|
33
|
+
constructor();
|
|
34
|
+
onModuleInit(): Promise<void>;
|
|
35
|
+
private startListeningToEvents;
|
|
36
|
+
private setupEventHandlers;
|
|
37
|
+
private handleDockerEvent;
|
|
38
|
+
private emitContainerStateChanged;
|
|
39
|
+
private handleReconnection;
|
|
40
|
+
private onContainerStateChanged;
|
|
41
|
+
onContainerStateChangedCallback(callback: (event: ContainerStateChangedEvent) => void): void;
|
|
42
|
+
stopListening(): void;
|
|
43
|
+
isActive(): boolean;
|
|
44
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var DockerEventService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.DockerEventService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const Docker = require("dockerode");
|
|
16
|
+
let DockerEventService = DockerEventService_1 = class DockerEventService {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.logger = new common_1.Logger(DockerEventService_1.name);
|
|
19
|
+
this.eventStream = null;
|
|
20
|
+
this.isListening = false;
|
|
21
|
+
this.reconnectAttempts = 0;
|
|
22
|
+
this.maxReconnectAttempts = 10;
|
|
23
|
+
this.reconnectDelay = 5000;
|
|
24
|
+
this.onContainerStateChanged = null;
|
|
25
|
+
this.docker = new Docker();
|
|
26
|
+
}
|
|
27
|
+
async onModuleInit() {
|
|
28
|
+
await this.startListeningToEvents();
|
|
29
|
+
}
|
|
30
|
+
async startListeningToEvents() {
|
|
31
|
+
if (this.isListening) {
|
|
32
|
+
this.logger.warn('Already listening to Docker events');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this.logger.log('Subscribing to Docker events...');
|
|
36
|
+
try {
|
|
37
|
+
this.eventStream = await this.docker.getEvents({
|
|
38
|
+
filters: {
|
|
39
|
+
type: ['container'],
|
|
40
|
+
event: [
|
|
41
|
+
'start',
|
|
42
|
+
'die',
|
|
43
|
+
'restart',
|
|
44
|
+
'pause',
|
|
45
|
+
'unpause',
|
|
46
|
+
'health_status',
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
this.setupEventHandlers();
|
|
51
|
+
this.isListening = true;
|
|
52
|
+
this.reconnectAttempts = 0;
|
|
53
|
+
this.logger.log('Successfully subscribed to Docker events');
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
this.logger.error(`Failed to subscribe to Docker events: ${error.message}`);
|
|
57
|
+
this.handleReconnection();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
setupEventHandlers() {
|
|
61
|
+
if (!this.eventStream) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
this.eventStream.on('data', (chunk) => {
|
|
65
|
+
try {
|
|
66
|
+
const event = JSON.parse(chunk.toString());
|
|
67
|
+
this.handleDockerEvent(event);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
this.logger.error(`Error parsing Docker event: ${error.message}`);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
this.eventStream.on('error', (error) => {
|
|
74
|
+
this.logger.error(`Docker event stream error: ${error.message}`);
|
|
75
|
+
this.handleReconnection();
|
|
76
|
+
});
|
|
77
|
+
this.eventStream.on('end', () => {
|
|
78
|
+
this.logger.warn('Docker event stream ended');
|
|
79
|
+
this.handleReconnection();
|
|
80
|
+
});
|
|
81
|
+
this.eventStream.on('close', () => {
|
|
82
|
+
this.logger.warn('Docker event stream closed');
|
|
83
|
+
this.handleReconnection();
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
handleDockerEvent(event) {
|
|
87
|
+
const profileId = event.Actor.Attributes['com.docker.compose.project'];
|
|
88
|
+
const serviceName = event.Actor.Attributes['com.docker.compose.service'];
|
|
89
|
+
if (!profileId || !serviceName) {
|
|
90
|
+
this.logger.debug(`Event missing compose labels (profileId: ${profileId}, serviceName: ${serviceName}), skipping`);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
this.logger.debug(`Received Docker event: ${event.Action} for service ${serviceName} in profile ${profileId}`);
|
|
94
|
+
this.emitContainerStateChanged({
|
|
95
|
+
profileId,
|
|
96
|
+
serviceName,
|
|
97
|
+
containerId: event.Actor.ID,
|
|
98
|
+
action: event.Action,
|
|
99
|
+
timestamp: event.time * 1000,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
emitContainerStateChanged(event) {
|
|
103
|
+
if (this.onContainerStateChanged) {
|
|
104
|
+
this.onContainerStateChanged(event);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
handleReconnection() {
|
|
108
|
+
this.isListening = false;
|
|
109
|
+
this.eventStream = null;
|
|
110
|
+
if (this.reconnectAttempts >= this.maxReconnectAttempts) {
|
|
111
|
+
this.logger.error(`Max reconnection attempts (${this.maxReconnectAttempts}) reached. Stopping reconnection.`);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
this.reconnectAttempts++;
|
|
115
|
+
const delay = this.reconnectDelay * this.reconnectAttempts;
|
|
116
|
+
this.logger.warn(`Attempting to reconnect to Docker events (attempt ${this.reconnectAttempts}/${this.maxReconnectAttempts}) in ${delay}ms...`);
|
|
117
|
+
setTimeout(() => {
|
|
118
|
+
this.startListeningToEvents();
|
|
119
|
+
}, delay);
|
|
120
|
+
}
|
|
121
|
+
onContainerStateChangedCallback(callback) {
|
|
122
|
+
this.onContainerStateChanged = callback;
|
|
123
|
+
}
|
|
124
|
+
stopListening() {
|
|
125
|
+
this.logger.log('Stopping Docker event listening...');
|
|
126
|
+
this.isListening = false;
|
|
127
|
+
if (this.eventStream) {
|
|
128
|
+
this.eventStream.removeAllListeners();
|
|
129
|
+
this.eventStream = null;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
isActive() {
|
|
133
|
+
return this.isListening;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
exports.DockerEventService = DockerEventService;
|
|
137
|
+
exports.DockerEventService = DockerEventService = DockerEventService_1 = __decorate([
|
|
138
|
+
(0, common_1.Injectable)(),
|
|
139
|
+
__metadata("design:paramtypes", [])
|
|
140
|
+
], DockerEventService);
|
|
141
|
+
//# sourceMappingURL=docker-event.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-event.service.js","sourceRoot":"","sources":["../../../src/agent/services/docker-event.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as Docker from 'dockerode';
|
|
2
|
+
import { ConfigService } from './config.service';
|
|
3
|
+
export declare class DockerService {
|
|
4
|
+
private configService;
|
|
5
|
+
private readonly logger;
|
|
6
|
+
private docker;
|
|
7
|
+
constructor(configService: ConfigService);
|
|
8
|
+
checkDependencies(): Promise<void>;
|
|
9
|
+
getContainerStatus(containerName: string): Promise<string | null>;
|
|
10
|
+
getServiceStatus(serviceName: string, profileDir: string, profileId: string): Promise<string>;
|
|
11
|
+
getContainerLogs(containerName: string, tail?: number): Promise<any>;
|
|
12
|
+
listContainers(filters?: any): Promise<Docker.ContainerInfo[]>;
|
|
13
|
+
dockerLogin(registryUrl: string, username: string, password: string): Promise<boolean>;
|
|
14
|
+
getProfileContainers(profileId: string): Promise<Docker.ContainerInfo[]>;
|
|
15
|
+
isContainerRunning(containerName: string): Promise<boolean>;
|
|
16
|
+
}
|