@codiac.io/codiac-cli 1.3.140 → 1.3.141

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/README.md CHANGED
@@ -21,7 +21,7 @@ $ npm install -g @codiac.io/codiac-cli
21
21
  $ codiac COMMAND
22
22
  running command...
23
23
  $ codiac (--version|-v)
24
- @codiac.io/codiac-cli/1.3.140 linux-x64 node-v22.15.1
24
+ @codiac.io/codiac-cli/1.3.141 linux-x64 node-v22.15.1
25
25
  $ codiac --help [COMMAND]
26
26
  USAGE
27
27
  $ codiac COMMAND
@@ -1,64 +1,48 @@
1
- import { Observable, Subject } from "rxjs";
1
+ import { Observable } from "rxjs";
2
2
  import { IBetterLogger } from "@codiac.io/codiac-common";
3
3
  import { IContainerServiceClient } from "@codiac.io/codiac-relay-contracts/interfaces";
4
4
  import { IOutputStyler } from "../ops";
5
5
  import { CliEnviro } from "../ops/entities";
6
- export declare const DEFAULT_IMAGE_TAG: string;
6
+ /**
7
+ * Manages a single version of a Codiac Relay Docker container, ensuring only the specified version runs.
8
+ */
7
9
  export declare class RelayContainer implements IContainerServiceClient {
8
- private styler;
9
- private cliEnviro;
10
- private logger;
11
- private healthCheckUrl;
12
- private retryTimeOut;
13
- private projectRoot?;
14
- private localEntities;
15
- imageName: string;
16
- imageTag: string;
17
- containerName: string;
18
- silent: boolean;
19
- readyFailed$: Subject<unknown>;
20
- private connectionRefusedCount;
21
- private serverErrorCount;
22
- private readonly MAXTRIESBEFORECONTAINERRESTART;
23
- private _natsClient;
10
+ private readonly styler;
11
+ private readonly cliEnviro;
12
+ private readonly logger;
13
+ private readonly projectRoot?;
14
+ private readonly localEntities;
15
+ private readonly config;
24
16
  private docker;
25
- private _cliExec;
26
- private isWin;
27
- private socketPath;
28
- private _userMessages;
17
+ private readonly natsClient;
18
+ private readonly destroySubj;
19
+ private readonly userMessagesSubj;
20
+ private readonly readySubj;
21
+ private readonly readyFailedSubj;
22
+ private readonly connectionRefusedCount;
23
+ silent: boolean;
29
24
  get userMessages(): Observable<string | undefined>;
30
- private dockerFailedSubj;
31
- private get dockerFailed$();
32
- private dockerSubj;
33
- private get docker$();
34
- private startFailedSubj;
35
- private get startFailed$();
36
- private readySubj;
37
25
  get ready$(): Observable<boolean>;
38
26
  constructor(styler: IOutputStyler, cliEnviro: CliEnviro, logger: IBetterLogger, healthCheckUrl?: string, retryTimeOut?: number, projectRoot?: string | undefined, localEntities?: boolean);
39
- /** Creates subfolders in codiac program folder required for local entities.
40
- *
41
- * Does not throw: Logs any encountered errors and continues.
42
- */
43
- private createLocalDataFolders;
27
+ private instantiateDocker;
44
28
  private init;
45
- private getAllContainersOfRelayImage;
46
- private getRelayImageFromDockerPS;
29
+ private logDebug;
30
+ private logNotice;
31
+ private createLocalDataFolders;
32
+ private checkDockerAvailability;
47
33
  private getRunningContainers;
48
- private versionMismatch;
49
- private deleteRelayImage;
50
- private getRelayImages;
51
- private dockerSetRelayRestart;
52
- healthCheck(): void;
34
+ private handleVersionMismatch;
35
+ private stopAndRemoveContainers;
36
+ private deleteMismatchedImages;
37
+ private pullImage;
38
+ private performHealthCheck;
53
39
  private performHttpHealthCheck;
54
40
  private performNatsHealthCheck;
41
+ private startContainer;
42
+ private createContainer;
43
+ private startContainerInternal;
55
44
  stop(): Observable<boolean>;
56
45
  remove(): Observable<boolean>;
57
46
  destroy(): Observable<boolean>;
58
- private createContainer;
59
- private pullImage;
60
- private execStart;
61
- private watchLogs;
62
- private getDocker;
63
- private promisifyStream;
64
47
  }
48
+ export declare const DEFAULT_IMAGE_TAG: string;
@@ -1,660 +1,388 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RelayContainer = exports.DEFAULT_IMAGE_TAG = void 0;
3
+ exports.DEFAULT_IMAGE_TAG = exports.RelayContainer = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const rxjs_1 = require("rxjs");
6
6
  const operators_1 = require("rxjs/operators");
7
7
  const reqp = require("request-promise");
8
8
  const os = require("os");
9
- const fs = require("fs");
9
+ const fs = require("fs/promises");
10
10
  const path = require("path");
11
11
  const Nats = require("@nats-io/nats-core");
12
12
  const Transport = require("@nats-io/transport-node");
13
- const child_process_1 = require("child_process");
14
13
  const inversify_1 = require("inversify");
15
- const codiac_error_1 = require("@codiac.io/codiac-common/contracts/codiac-error");
16
- const codiac_common_1 = require("@codiac.io/codiac-common");
17
- const IBetterLogger_1 = require("@codiac.io/codiac-common/IBetterLogger");
18
- const cli_tools_1 = require("@codiac.io/cli-tools");
19
- const INTERFACES_CLI_1 = require("../ops/INTERFACES_CLI");
20
14
  const Docker = require("dockerode");
15
+ const codiac_common_1 = require("@codiac.io/codiac-common");
16
+ const ops_1 = require("../ops");
21
17
  const entities_1 = require("../ops/entities");
22
- const DEFAULT_IMAGE_NAME = "codiacimages/codiac-relay";
23
- exports.DEFAULT_IMAGE_TAG = "1.6.59";
24
- const DEFAULT_CONTAINER_NAME = "codiac-relay";
25
- const DEFAULT_HEALTH_CHECK_URL = "http://localhost:5799/heartbeat-json"; // /ready-state";
26
- const DEFAULT_RETRY_TIMOUT_IN_MINUTES = 1;
18
+ // Configuration defaults
19
+ const DEFAULT_CONFIG = {
20
+ IMAGE_NAME: "codiacimages/codiac-relay",
21
+ IMAGE_TAG: "1.6.59",
22
+ CONTAINER_NAME: "codiac-relay",
23
+ HEALTH_CHECK_URL: "http://localhost:5799/heartbeat-json",
24
+ RETRY_TIMEOUT_MINUTES: 1,
25
+ MAX_HEALTH_CHECK_RETRIES: 40,
26
+ HEALTH_CHECK_INTERVAL_MS: 3000,
27
+ EXPOSED_PORTS: {
28
+ "5799/tcp": {},
29
+ "5798/tcp": {},
30
+ "4222/tcp": {},
31
+ "9222/tcp": {},
32
+ },
33
+ PORT_BINDINGS: {
34
+ "5799/tcp": [{ HostPort: "5799" }],
35
+ "5798/tcp": [{ HostPort: "5798" }],
36
+ "4222/tcp": [{ HostPort: "4222" }],
37
+ "9222/tcp": [{ HostPort: "9222" }],
38
+ },
39
+ VOLUMES: { "/root/.codiac": {} },
40
+ BINDS: [`${os.homedir()}/.codiac:/root/.codiac`],
41
+ };
42
+ /**
43
+ * Manages a single version of a Codiac Relay Docker container, ensuring only the specified version runs.
44
+ */
27
45
  let RelayContainer = class RelayContainer {
28
46
  get userMessages() {
29
- return this._userMessages.asObservable();
30
- }
31
- get dockerFailed$() {
32
- return this.dockerFailedSubj.asObservable();
33
- }
34
- get docker$() {
35
- return this.dockerSubj.asObservable();
36
- }
37
- get startFailed$() {
38
- return this.startFailedSubj.asObservable();
47
+ return this.userMessagesSubj.asObservable();
39
48
  }
40
49
  get ready$() {
41
50
  return this.readySubj.pipe((0, operators_1.distinctUntilChanged)());
42
51
  }
43
- constructor(styler, cliEnviro, logger, healthCheckUrl = DEFAULT_HEALTH_CHECK_URL, retryTimeOut = DEFAULT_RETRY_TIMOUT_IN_MINUTES, projectRoot, localEntities = false) {
52
+ constructor(styler, cliEnviro, logger, healthCheckUrl = DEFAULT_CONFIG.HEALTH_CHECK_URL, retryTimeOut = DEFAULT_CONFIG.RETRY_TIMEOUT_MINUTES, projectRoot, localEntities = false) {
44
53
  this.styler = styler;
45
54
  this.cliEnviro = cliEnviro;
46
55
  this.logger = logger;
47
- this.healthCheckUrl = healthCheckUrl;
48
- this.retryTimeOut = retryTimeOut;
49
56
  this.projectRoot = projectRoot;
50
57
  this.localEntities = localEntities;
51
- this.imageName = DEFAULT_IMAGE_NAME;
52
- this.imageTag = exports.DEFAULT_IMAGE_TAG;
53
- this.containerName = DEFAULT_CONTAINER_NAME;
58
+ this.natsClient = new rxjs_1.BehaviorSubject(null);
59
+ this.destroySubj = new rxjs_1.Subject();
60
+ this.userMessagesSubj = new rxjs_1.BehaviorSubject(undefined);
61
+ this.readySubj = new rxjs_1.ReplaySubject(1);
62
+ this.readyFailedSubj = new rxjs_1.Subject();
63
+ this.connectionRefusedCount = new rxjs_1.BehaviorSubject(0);
54
64
  this.silent = false;
55
- this.readyFailed$ = new rxjs_1.Subject();
56
- this.connectionRefusedCount = 0;
57
- this.serverErrorCount = 0;
58
- this.MAXTRIESBEFORECONTAINERRESTART = 40; // Equivalent to over 40 seconds for the container to get healthy
59
- this._natsClient = null;
60
- this.isWin = process.platform === "win32";
61
- // https://github.com/apocas/dockerode/issues/290
62
- this.socketPath = this.isWin
63
- ? "//./pipe/docker_engine"
64
- : undefined;
65
- this._userMessages = new rxjs_1.BehaviorSubject(undefined);
66
- // private startSubj: Subject<string> = new Subject<string>();
67
- // private get start$(): Observable<string> {
68
- // return this.startSubj.asObservable();
69
- // }
70
- this.dockerFailedSubj = new rxjs_1.Subject();
71
- this.dockerSubj = new rxjs_1.Subject();
72
- // started is based on the container we're trying to start
73
- this.startFailedSubj = new rxjs_1.Subject();
74
- this.readySubj = new rxjs_1.ReplaySubject();
75
- this.promisifyStream = (stream) => new Promise((resolve, reject) => {
76
- stream.on('data', (d) => this.logger.write(d.toString()));
77
- stream.on('end', resolve);
78
- stream.on('error', reject);
79
- });
80
- this._cliExec = new cli_tools_1.CliExec(logger);
81
- this.docker = new Docker();
82
- this.init();
65
+ this.config = Object.assign(Object.assign({}, DEFAULT_CONFIG), { HEALTH_CHECK_URL: healthCheckUrl, RETRY_TIMEOUT_MINUTES: retryTimeOut });
66
+ this.docker = this.instantiateDocker();
67
+ this.checkDockerAvailability();
83
68
  }
84
- /** Creates subfolders in codiac program folder required for local entities.
85
- *
86
- * Does not throw: Logs any encountered errors and continues.
87
- */
88
- createLocalDataFolders() {
89
- var _a;
90
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
91
- const folders = [
92
- "cluster-images",
93
- "templates",
94
- "data/db",
95
- "data/logs"
96
- ];
97
- for (let folder of folders) {
98
- try {
99
- const fqn = path.posix.join(this.cliEnviro.localProgramFolder, folder);
100
- if (!fs.existsSync(fqn)) {
101
- yield fs.promises.mkdir(fqn, { recursive: true });
102
- this.logger.debug("Created local data folder ".concat("[", fqn, "]."));
103
- }
104
- }
105
- catch (err) {
106
- this.logger.error("Error creating local data folder ".concat("[", folder, "]: ", (_a = err.message) !== null && _a !== void 0 ? _a : "(no message available)"));
107
- }
108
- }
109
- return;
110
- });
69
+ instantiateDocker() {
70
+ return new Docker(process.platform === "win32" ? { socketPath: "//./pipe/docker_engine" } : {});
111
71
  }
112
72
  init() {
113
- //Check if docker is running stream to dockerSubj or dockerFailedSubj
114
- this.getDocker();
115
- // This should hit anytime the image tag changes, which triggers the workflow to rip and replace if its not the same versions
116
- (0, rxjs_1.of)(this.imageTag)
117
- .pipe((0, operators_1.distinctUntilChanged)()) // i think to be able to change image dynamiclly
118
- .pipe((0, operators_1.concatMap)(_ => this.versionMismatch())) //check the version mismatch or no version do some work
119
- .pipe((0, operators_1.concatMap)(versionMismatch => {
120
- if (versionMismatch) {
121
- this._userMessages.next(`Version mismatch of the Relay container found. Updating to ${this.imageTag}`);
122
- return this.stop()
123
- .pipe((0, operators_1.concatMap)(_ => this.remove()))
124
- .pipe((0, operators_1.concatMap)(_ => this.deleteRelayImage()))
125
- .pipe((0, operators_1.concatMap)(_ => this.pullImage()));
126
- }
127
- else {
128
- // The api's may already be running. Let's see.
129
- return (0, rxjs_1.of)("no work was done");
130
- }
131
- }))
132
- .subscribe(_ => this.healthCheck());
133
- // If we find docker is not started, we put ourselves into a loop, asking the user to kick it on
134
- this.dockerFailed$
135
- .pipe((0, operators_1.delay)(10000))
136
- .pipe((0, operators_1.tap)(_ => {
137
- this.logger.debug("Attempting to get service again");
138
- this.getDocker();
139
- }))
73
+ (0, rxjs_1.of)(`${this.config.IMAGE_NAME}:${this.config.IMAGE_TAG}`)
74
+ .pipe((0, operators_1.distinctUntilChanged)(), (0, operators_1.concatMap)(() => this.handleVersionMismatch()), (0, operators_1.takeUntil)(this.destroySubj))
140
75
  .subscribe();
141
- // If docker is running but the api's are not, let's try to start the container optimistically
142
- (0, rxjs_1.combineLatest)([this.docker$, this.readyFailed$])
143
- .pipe((0, operators_1.tap)(docker => {
144
- this.execStart();
145
- }))
146
- .pipe((0, operators_1.takeUntil)(this.ready$))
147
- .subscribe();
148
- // If docker is running but the conainer failed to start. Kick on CONTAINER from image
149
- (0, rxjs_1.combineLatest)([this.docker$, this.startFailed$])
150
- .pipe((0, operators_1.tap)(([docker, containerName]) => {
151
- this.createContainer();
152
- }))
153
- .pipe((0, operators_1.takeUntil)(this.ready$))
154
- .subscribe();
155
- // // Now our pipelines are defined and hot. We fire off the catalyst and notify user.
156
- this.readyFailed$
157
- .pipe((0, operators_1.take)(1))
158
- .pipe((0, operators_1.tap)(() => {
159
- this.logger.notice(this.styler.hilite(`Starting Services...`));
160
- }))
161
- .pipe((0, operators_1.tap)(() => {
162
- // every three seconds we're going to health check until either ready or timeout
163
- (0, rxjs_1.interval)(3000)
164
- .pipe((0, operators_1.take)(100))
165
- .pipe((0, operators_1.timeout)(this.retryTimeOut * 60000)) //minutes to miliseconds
166
- .pipe((0, operators_1.takeUntil)(this.ready$))
167
- .subscribe(() => this.healthCheck());
168
- }))
76
+ this.readyFailedSubj
77
+ .pipe((0, operators_1.tap)(() => this.logNotice(this.styler.hilite("Starting Services..."))), (0, operators_1.concatMap)(() => (0, rxjs_1.interval)(this.config.HEALTH_CHECK_INTERVAL_MS)
78
+ .pipe((0, operators_1.timeout)(this.config.RETRY_TIMEOUT_MINUTES * 60000), (0, operators_1.take)(this.config.MAX_HEALTH_CHECK_RETRIES), (0, operators_1.takeUntil)(this.ready$), (0, operators_1.takeUntil)(this.destroySubj), (0, operators_1.concatMap)(() => this.performHealthCheck()))))
169
79
  .subscribe();
170
80
  }
171
- getAllContainersOfRelayImage() {
172
- const command = `docker ps -a | grep -v ID`;
173
- const output = new rxjs_1.Subject();
174
- this._cliExec.execAsyncStdOut(command, { cwd: this.projectRoot }, IBetterLogger_1.LogLevel.debug, true)
175
- .then((stdout) => {
176
- this.logger.debug(`getRelayImageFromDockerPS - entered method`);
177
- // Split the output into lines and parse each line as JSON
178
- try {
179
- if (stdout == undefined && stdout == "")
180
- output.next(undefined);
181
- else {
182
- const listedContainers = stdout.split("\n");
183
- let containerIds = [];
184
- listedContainers.forEach(r => {
185
- if (r.split(" ")[1].includes(this.imageName))
186
- containerIds.push(r.split(" ")[0]);
187
- });
188
- output.next(containerIds);
189
- }
190
- }
191
- catch (parseError) {
192
- this.logger.error(`getRelayImageFromDockerPS - Error parsing Docker output: ${parseError}`);
193
- return parseError;
194
- }
195
- })
196
- .catch(error => {
197
- this.logger.debug(`getRelayImageFromDockerPS - Command failed: docker ps -a | grep -v ID`);
198
- output.next(undefined);
199
- });
200
- return output.asObservable();
81
+ logDebug(message) {
82
+ this.logger.debug(message);
201
83
  }
202
- getRelayImageFromDockerPS() {
203
- const command = `docker ps -a | grep -v ID`;
204
- const output = new rxjs_1.Subject();
205
- this._cliExec.execAsyncStdOut(command, { cwd: this.projectRoot }, IBetterLogger_1.LogLevel.debug, true)
206
- .then((stdout) => {
207
- this.logger.debug(`getRelayImageFromDockerPS - entered method`);
208
- // Split the output into lines and parse each line as JSON
209
- try {
210
- if (stdout == undefined && stdout == "")
211
- output.next(undefined);
212
- else {
213
- const listedContainers = stdout.split("\n");
214
- const relayImangeName = listedContainers.find(r => {
215
- const name = r.split(" ")[1].includes(this.imageName);
216
- if (name)
217
- return name;
218
- });
219
- if (relayImangeName != undefined && relayImangeName != "") {
220
- output.next(relayImangeName.split(" ")[1]);
221
- }
222
- else
223
- output.next(undefined);
224
- }
225
- }
226
- catch (parseError) {
227
- this.logger.error(`getRelayImageFromDockerPS - Error parsing Docker output: ${parseError}`);
228
- return parseError;
229
- }
230
- })
231
- .catch(error => {
232
- this.logger.debug(`getRelayImageFromDockerPS - Command failed: docker ps -a | grep -v ID`);
233
- output.next(undefined);
234
- });
235
- return output.asObservable();
84
+ logNotice(message) {
85
+ this.logger.notice(message);
86
+ }
87
+ createLocalDataFolders() {
88
+ if (!this.localEntities)
89
+ return (0, rxjs_1.of)(true);
90
+ const folders = ["cluster-images", "templates", "data/db", "data/logs"];
91
+ return (0, rxjs_1.from)(Promise.all(folders.map((folder) => fs.mkdir(path.posix.join(this.cliEnviro.localProgramFolder, folder), { recursive: true })
92
+ .then(() => this.logDebug(`Created local data folder [${folder}]`))
93
+ .catch((err) => {
94
+ this.logger.error(`Error creating local data folder [${folder}]: ${err.message}`);
95
+ throw err;
96
+ })))).pipe((0, operators_1.map)(() => true), (0, operators_1.catchError)(() => (0, rxjs_1.of)(false)));
97
+ }
98
+ checkDockerAvailability() {
99
+ (0, rxjs_1.from)(this.docker.info())
100
+ .pipe((0, operators_1.tap)(() => {
101
+ this.logDebug("Docker daemon is available");
102
+ this.init();
103
+ }), (0, operators_1.catchError)((err) => {
104
+ const msg = "Can you start Docker for me?";
105
+ this.logger.error(msg, err);
106
+ this.userMessagesSubj.next(msg);
107
+ return (0, rxjs_1.of)(null).pipe((0, operators_1.delay)(6000), (0, operators_1.tap)(() => {
108
+ this.docker = this.instantiateDocker();
109
+ this.checkDockerAvailability();
110
+ }));
111
+ }), (0, operators_1.takeUntil)(this.destroySubj))
112
+ .subscribe();
236
113
  }
237
114
  getRunningContainers() {
238
- const output = new rxjs_1.Subject();
239
- return this.getRelayImageFromDockerPS()
240
- .pipe((0, operators_1.concatMap)(running => {
241
- if (running) {
242
- const command = `docker inspect ${running}`;
243
- this._cliExec.execAsyncStdOut(command, { cwd: this.projectRoot }, IBetterLogger_1.LogLevel.debug, true)
244
- .then((stdout) => {
245
- // Split the output into lines and parse each line as JSON
246
- try {
247
- if (stdout != undefined && stdout != "") {
248
- const images = JSON.parse(stdout);
249
- output.next(images);
250
- }
251
- else
252
- output.next(undefined);
253
- }
254
- catch (parseError) {
255
- this.logger.error(`Error getting running containers: ${parseError}`);
256
- output.next(undefined);
257
- }
258
- })
259
- .catch(error => {
260
- this.logger.debug(`getRunningContainers - ${error.message}`);
261
- output.next(undefined);
262
- });
263
- }
264
- else {
265
- this.logger.debug(`getRunningContainers - No running containers found.`);
266
- return (0, rxjs_1.of)(undefined);
267
- }
268
- return output.asObservable();
115
+ return (0, rxjs_1.from)(this.docker.listContainers({ all: true })).pipe((0, operators_1.map)((containers) => containers.filter((c) => c.Image.includes(this.config.IMAGE_NAME) && c.State === "running")), (0, operators_1.concatMap)((matching) => matching.length === 0
116
+ ? (0, rxjs_1.of)([])
117
+ : (0, rxjs_1.from)(Promise.all(matching.map((c) => this.docker.getContainer(c.Id).inspect())))), (0, operators_1.catchError)((err) => {
118
+ this.logger.error(`Failed to list containers: ${err.message}`);
119
+ return (0, rxjs_1.of)([]);
269
120
  }));
270
121
  }
271
- versionMismatch() {
272
- // Confirm the latest version is running, otherwise rip and replace
273
- return this.getRunningContainers().pipe((0, operators_1.map)((response) => {
274
- this.logger.debug(`versionMismatch - ${response}`);
275
- if (response) {
276
- const currentVersion = response[0];
277
- return !(currentVersion.RepoTags[0].includes(exports.DEFAULT_IMAGE_TAG));
122
+ handleVersionMismatch() {
123
+ const imageRef = `${this.config.IMAGE_NAME}:${this.config.IMAGE_TAG}`;
124
+ return this.getRunningContainers().pipe((0, operators_1.concatMap)((containers) => {
125
+ if (containers.length === 0) {
126
+ this.logDebug("No running containers found");
127
+ return this.startContainer();
278
128
  }
279
- else
280
- return false;
129
+ const mismatchChecks = containers.map((c) => {
130
+ const imageName = c.Image;
131
+ if (imageName.startsWith("sha256:")) {
132
+ return (0, rxjs_1.from)(this.docker.getImage(imageName).inspect()).pipe((0, operators_1.map)((info) => !(info.RepoTags || []).includes(imageRef)), (0, operators_1.catchError)((err) => {
133
+ this.logger.error(`Failed to inspect image ${imageName}: ${err.message}`);
134
+ return (0, rxjs_1.of)(true);
135
+ }));
136
+ }
137
+ return (0, rxjs_1.of)(!imageName.includes(this.config.IMAGE_TAG));
138
+ });
139
+ return (0, rxjs_1.forkJoin)(mismatchChecks).pipe((0, operators_1.map)((results) => results.some((hasMismatch) => hasMismatch)), (0, operators_1.concatMap)((hasMismatch) => {
140
+ if (!hasMismatch) {
141
+ this.logDebug(`Container version matches ${imageRef}`);
142
+ return this.performHealthCheck();
143
+ }
144
+ this.userMessagesSubj.next(`Version mismatch detected. Updating to ${imageRef}`);
145
+ return this.stopAndRemoveContainers().pipe((0, operators_1.concatMap)(() => this.deleteMismatchedImages()), (0, operators_1.concatMap)(() => this.pullImage()), (0, operators_1.concatMap)(() => this.startContainer()));
146
+ }));
281
147
  }));
282
148
  }
283
- deleteRelayImage() {
284
- return this.getRelayImages().pipe((0, operators_1.map)((response) => {
285
- const output = new rxjs_1.Subject();
286
- this.logger.debug("Deleting relay images no longer targeted");
287
- if (response) {
288
- const localRelayImages = response;
289
- localRelayImages
290
- .filter(i => i.Tag != this.imageTag)
291
- .forEach(image => {
292
- this._cliExec.execAsyncStdOut(`docker rmi ${image.Repository}:${image.Tag}`, { cwd: this.projectRoot }, IBetterLogger_1.LogLevel.debug, true)
293
- .then((fullfulled) => {
294
- this.logger.debug('pull response', fullfulled);
295
- this.createContainer();
296
- output.next('Remove Image complete');
297
- this._userMessages.next(`Removing extra image(s) complete`);
298
- })
299
- .catch(error => {
300
- this.logger.debug(`Removing Relay image failed.`);
301
- });
302
- });
149
+ stopAndRemoveContainers() {
150
+ return this.getRunningContainers().pipe((0, operators_1.concatMap)((containers) => {
151
+ if (containers.length === 0) {
152
+ this.logDebug("No containers to stop or remove");
153
+ return (0, rxjs_1.of)(false);
303
154
  }
304
- else
305
- output.next('Remove Image complete');
306
- output.subscribe();
307
- return output.asObservable();
155
+ return (0, rxjs_1.from)(Promise.all(containers.map((c) => this.docker.getContainer(c.Id).stop().catch((err) => {
156
+ if (err.statusCode !== 404)
157
+ throw err;
158
+ })))).pipe((0, operators_1.concatMap)(() => (0, rxjs_1.from)(Promise.all(containers.map((c) => this.docker.getContainer(c.Id).remove({ force: true }).catch((err) => {
159
+ if (err.statusCode !== 404)
160
+ throw err;
161
+ }))))), (0, operators_1.tap)(() => this.logDebug("All containers stopped and removed")), (0, operators_1.map)(() => true), (0, operators_1.catchError)((err) => {
162
+ this.logger.error(`Failed to stop/remove containers: ${err.message}`);
163
+ return (0, rxjs_1.of)(false);
164
+ }));
308
165
  }));
309
166
  }
310
- getRelayImages(tag) {
311
- const command = `docker images --format "{{json .}}" ${this.imageName}${(tag) ? ":" + tag : ""}`;
312
- const output = new rxjs_1.Subject();
313
- this._cliExec.execAsyncStdOut(command, { cwd: this.projectRoot }, IBetterLogger_1.LogLevel.debug, true)
314
- .then((stdout) => {
315
- // Split the output into lines and parse each line as JSON
316
- try {
317
- if (stdout != undefined && stdout != "") {
318
- const lines = stdout.trim().split('\n');
319
- const images = lines.map(line => JSON.parse(line));
320
- output.next(images);
321
- }
322
- else
323
- output.next(undefined);
324
- }
325
- catch (parseError) {
326
- this.logger.error(`Error getting relay image: ${parseError}`);
327
- return parseError;
167
+ deleteMismatchedImages() {
168
+ const imageRef = `${this.config.IMAGE_NAME}:${this.config.IMAGE_TAG}`;
169
+ return (0, rxjs_1.from)(this.docker.listImages()).pipe((0, operators_1.map)((images) => images
170
+ .filter((img) => img.RepoTags &&
171
+ img.RepoTags.some((tag) => tag.includes(this.config.IMAGE_NAME) && tag !== imageRef))
172
+ .map((img) => img.RepoTags[0])), (0, operators_1.concatMap)((imagesToRemove) => {
173
+ if (imagesToRemove.length === 0) {
174
+ this.logDebug("No mismatched images to delete");
175
+ return (0, rxjs_1.of)(false);
328
176
  }
329
- })
330
- .catch(error => {
331
- this.logger.debug(`get relay images failed.`);
332
- });
333
- return output.asObservable();
177
+ return (0, rxjs_1.from)(Promise.all(imagesToRemove.map((tag) => this.docker.getImage(tag).remove()))).pipe((0, operators_1.tap)(() => {
178
+ this.userMessagesSubj.next("Removing extra images complete");
179
+ imagesToRemove.forEach((tag) => this.logDebug(`Removed image ${tag}`));
180
+ }), (0, operators_1.map)(() => true), (0, operators_1.catchError)((err) => {
181
+ this.logger.error(`Failed to delete images: ${err.message}`);
182
+ return (0, rxjs_1.of)(false);
183
+ }));
184
+ }));
334
185
  }
335
- dockerSetRelayRestart() {
336
- const command = `docker update --restart unless-stopped ${this.containerName}`;
337
- const output = new rxjs_1.Subject();
338
- this._cliExec.execAsyncStdOut(command, { cwd: this.projectRoot }, IBetterLogger_1.LogLevel.debug, true)
339
- .then((stdout) => {
340
- // Split the output into lines and parse each line as JSON
341
- try {
342
- output.next(undefined);
343
- }
344
- catch (parseError) {
345
- return parseError;
186
+ pullImage() {
187
+ const imageRef = `${this.config.IMAGE_NAME}:${this.config.IMAGE_TAG}`;
188
+ return (0, rxjs_1.from)(this.docker.getImage(imageRef).inspect()).pipe((0, operators_1.tap)(() => {
189
+ this.logDebug(`Image ${imageRef} already exists`);
190
+ this.userMessagesSubj.next(`Image ${imageRef} already exists`);
191
+ }), (0, operators_1.map)(() => true), (0, operators_1.catchError)((err) => {
192
+ if (err.statusCode !== 404) {
193
+ this.logger.error(`Error inspecting image ${imageRef}: ${err.message}`);
194
+ this.userMessagesSubj.next(`Error inspecting image: ${err.message}`);
195
+ return (0, rxjs_1.of)(false);
346
196
  }
347
- })
348
- .catch(error => {
349
- this.logger.debug(`dockerSetRelayRestart - get running containers Failed.`);
350
- output.next(undefined);
351
- });
352
- return output.asObservable();
197
+ this.logNotice(`Fetching image ${imageRef}. This may take a few minutes...`);
198
+ this.userMessagesSubj.next(`Fetching image ${imageRef}...`);
199
+ return (0, rxjs_1.from)(this.docker.pull(imageRef, {})).pipe((0, operators_1.concatMap)((stream) => new rxjs_1.Observable((observer) => {
200
+ this.docker.modem.followProgress(stream, (err) => {
201
+ if (err) {
202
+ this.logger.error(`Failed to pull image ${imageRef}: ${err.message}`);
203
+ this.userMessagesSubj.next(`Fetching failed: ${err.message}`);
204
+ observer.error(err);
205
+ return;
206
+ }
207
+ this.logDebug(`Image ${imageRef} pulled successfully`);
208
+ this.userMessagesSubj.next("Relay fetch complete");
209
+ observer.next(true);
210
+ observer.complete();
211
+ }, (progress) => { var _a; return this.userMessagesSubj.next(`Pulling ${(_a = progress.id) !== null && _a !== void 0 ? _a : imageRef} : Layer ${progress.status}`); });
212
+ })), (0, operators_1.catchError)((err) => {
213
+ this.logger.error(`Failed to pull image ${imageRef}: ${err.message}`);
214
+ this.userMessagesSubj.next(`Fetching failed: ${err.message}`);
215
+ return (0, rxjs_1.of)(false);
216
+ }));
217
+ }));
353
218
  }
354
- healthCheck() {
355
- var _a, _b;
356
- try {
357
- this.logger.debug(`healthCheck - Checking ${this.containerName} health now...`);
358
- if (this.healthCheckUrl.startsWith('http')) {
359
- this.performHttpHealthCheck();
360
- }
361
- else if (this.healthCheckUrl.startsWith('nats')) {
362
- this.performNatsHealthCheck();
363
- }
364
- else {
365
- this.logger.debug(`healthCheck - Unknown healthCheckUrl scheme: ${this.healthCheckUrl}`);
366
- this.readyFailed$.next();
367
- }
368
- }
369
- catch (error) {
370
- this.logger.debug(`healthCheck failed (${(_a = error.name) !== null && _a !== void 0 ? _a : ""} ${(_b = error.message) !== null && _b !== void 0 ? _b : ""})`, JSON.stringify(error, null, 2));
371
- this.readyFailed$.next();
372
- }
219
+ performHealthCheck() {
220
+ this.logDebug(`Checking ${this.config.CONTAINER_NAME} health...`);
221
+ return this.config.HEALTH_CHECK_URL.startsWith("http")
222
+ ? this.performHttpHealthCheck()
223
+ : this.performNatsHealthCheck();
373
224
  }
374
225
  performHttpHealthCheck() {
375
- reqp.get(this.healthCheckUrl)
376
- .then(response => {
377
- this.logger.trace(`healthCheck - ...${this.containerName} ready.`);
226
+ return (0, rxjs_1.from)(reqp.get(this.config.HEALTH_CHECK_URL)).pipe((0, operators_1.map)(() => {
227
+ this.logger.trace(`${this.config.CONTAINER_NAME} is healthy`);
378
228
  this.readySubj.next(true);
379
- })
380
- .catch(error => {
381
- var _a, _b;
382
- if (error.error.code === "ECONNREFUSED") {
383
- this.connectionRefusedCount = this.connectionRefusedCount + 1;
384
- if (this.connectionRefusedCount > this.MAXTRIESBEFORECONTAINERRESTART) {
385
- this.createContainer().pipe((0, operators_1.take)(1)).subscribe();
386
- this.connectionRefusedCount = 0;
229
+ this.connectionRefusedCount.next(0);
230
+ return true;
231
+ }), (0, operators_1.catchError)((err) => {
232
+ var _a;
233
+ if (((_a = err.error) === null || _a === void 0 ? void 0 : _a.code) === "ECONNREFUSED") {
234
+ this.connectionRefusedCount.next(this.connectionRefusedCount.value + 1);
235
+ if (this.connectionRefusedCount.value >= this.config.MAX_HEALTH_CHECK_RETRIES) {
236
+ this.logDebug("Max retries reached, restarting container");
237
+ this.startContainer().pipe((0, operators_1.take)(1)).subscribe();
238
+ this.connectionRefusedCount.next(0);
387
239
  }
388
240
  }
389
- this.logger.debug(`healthCheck - ...${this.containerName} failed to respond (${(_a = error.name) !== null && _a !== void 0 ? _a : ""} ${(_b = error.message) !== null && _b !== void 0 ? _b : ""})`);
390
- this.readyFailed$.next();
391
- });
241
+ this.logDebug(`Health check failed: ${err.message}`);
242
+ this.readyFailedSubj.next();
243
+ return (0, rxjs_1.of)(false);
244
+ }));
392
245
  }
393
246
  performNatsHealthCheck() {
394
- (() => tslib_1.__awaiter(this, void 0, void 0, function* () {
395
- var _a, _b;
396
- let nc = null;
397
- try {
398
- // Only create the client if it doesn't exist or is closed
399
- if (!this._natsClient || this._natsClient.isClosed()) {
400
- const opts = {
401
- servers: this.healthCheckUrl,
402
- };
403
- nc = (yield Transport.connect(opts));
404
- this._natsClient = nc;
405
- }
406
- else {
407
- nc = this._natsClient;
408
- }
409
- // Heartbeat subject
410
- const subject = "dmz.get.heartbeat-json";
411
- const timeoutMs = 2000;
412
- // Use NATS request/reply, Promise style
413
- yield nc.request(subject, Nats.Empty, { timeout: timeoutMs });
414
- this.logger.trace(`healthCheck - ...${this.containerName} NATS heartbeat received.`);
415
- this.readySubj.next(true);
416
- // On success, close client and clear reference
417
- yield nc.close();
418
- this._natsClient = null;
419
- this.connectionRefusedCount = 0;
247
+ return (0, rxjs_1.from)((() => tslib_1.__awaiter(this, void 0, void 0, function* () {
248
+ if (!this.natsClient.value || this.natsClient.value.isClosed()) {
249
+ this.natsClient.next(yield Transport.connect({ servers: this.config.HEALTH_CHECK_URL }));
420
250
  }
421
- catch (error) {
422
- // Retry logic, similar to HTTP
423
- this.connectionRefusedCount++;
424
- if (this.connectionRefusedCount > this.MAXTRIESBEFORECONTAINERRESTART) {
425
- this.createContainer().pipe((0, operators_1.take)(1)).subscribe();
426
- this.connectionRefusedCount = 0;
427
- }
428
- this.logger.debug(`healthCheck - ...${this.containerName} NATS heartbeat failed (${(_a = error.name) !== null && _a !== void 0 ? _a : ""} ${(_b = error.message) !== null && _b !== void 0 ? _b : ""})`);
429
- this.readyFailed$.next();
430
- // Clean up client on failure
431
- if (nc && !nc.isClosed()) {
432
- yield nc.close();
433
- }
434
- this._natsClient = null;
251
+ return this.natsClient.value.request("dmz.get.heartbeat-json", Nats.Empty, { timeout: 2000 });
252
+ }))()).pipe((0, operators_1.map)(() => {
253
+ this.logger.trace(`${this.config.CONTAINER_NAME} NATS heartbeat received`);
254
+ this.readySubj.next(true);
255
+ this.connectionRefusedCount.next(0);
256
+ return true;
257
+ }), (0, operators_1.catchError)((err) => {
258
+ this.connectionRefusedCount.next(this.connectionRefusedCount.value + 1);
259
+ if (this.connectionRefusedCount.value >= this.config.MAX_HEALTH_CHECK_RETRIES) {
260
+ this.logDebug("Max retries reached, restarting container");
261
+ this.startContainer().pipe((0, operators_1.take)(1)).subscribe();
262
+ this.connectionRefusedCount.next(0);
435
263
  }
436
- }))();
437
- }
438
- stop() {
439
- // fire off this command in a separate cli window
440
- let cmdStop = `docker stop ${this.containerName}`;
441
- let result$ = new rxjs_1.Subject();
442
- result$.subscribe();
443
- let options = {
444
- cwd: this.projectRoot,
445
- // stdio: "inherit",
446
- // stdio: [process.stdin, process.stdout, process.stderr, process.st], // TODO: Capture stderr instead
447
- shell: true
448
- };
449
- const ls = (0, child_process_1.spawn)(cmdStop, options);
450
- // ls.stdout?.on('data', (data: any) => {
451
- // result$.next(true);
452
- // });
453
- // ls.stdout?.on('error', (data: any) => {
454
- // result$.next(false);
455
- // });
456
- // ls.on('error', (data: any) => {
457
- // result$.next(false);
458
- // });
459
- ls.on('close', (data) => {
460
- result$.next(false);
461
- });
462
- return result$.asObservable();
463
- }
464
- remove() {
465
- // fire off this command in a separate cli window
466
- this.getAllContainersOfRelayImage().pipe((0, operators_1.map)(response => {
467
- if (response && response.length > 0) {
468
- response.forEach(containerId => {
469
- let cmdStop = `docker rm ${containerId} -f`;
470
- let options = {
471
- cwd: this.projectRoot,
472
- shell: true
473
- };
474
- const ls = (0, child_process_1.spawn)(cmdStop, options);
475
- ls.on('close', (data) => {
476
- result$.next(false);
477
- });
478
- });
264
+ this.logDebug(`NATS health check failed: ${err.message}`);
265
+ this.readyFailedSubj.next();
266
+ return (0, rxjs_1.of)(false);
267
+ }), (0, operators_1.tap)({
268
+ complete: () => {
269
+ if (this.natsClient.value && !this.natsClient.value.isClosed()) {
270
+ this.natsClient.value.close().catch((err) => this.logger.error(`Failed to close NATS client: ${err.message}`));
271
+ this.natsClient.next(null);
272
+ }
479
273
  }
480
- }))
481
- .subscribe();
482
- let result$ = new rxjs_1.Subject();
483
- result$.subscribe();
484
- return result$.asObservable();
274
+ }));
485
275
  }
486
- destroy() {
487
- throw new codiac_error_1.CodiacError("Not yet implemented");
276
+ startContainer() {
277
+ return this.createLocalDataFolders().pipe((0, operators_1.concatMap)(() => this.pullImage()), (0, operators_1.concatMap)(() => this.createContainer()), (0, operators_1.concatMap)(() => this.startContainerInternal()), (0, operators_1.catchError)((err) => {
278
+ this.logger.error(`Failed to start container: ${err.message}`);
279
+ this.userMessagesSubj.next(`Failed to start container: ${err.message}`);
280
+ return (0, rxjs_1.of)(false);
281
+ }));
488
282
  }
489
283
  createContainer() {
490
- var _a, _b;
491
- this.logger.debug(`createContainer - Creating ${this.containerName} from image: ${this.imageName}:${this.imageTag}`);
492
- let container = {
493
- Image: `${this.imageName}:${this.imageTag}`,
494
- name: `${this.containerName}`,
495
- Hostname: `${this.containerName}`,
496
- ExposedPorts: {
497
- "5799/tcp": {},
498
- "5798/tcp": {},
499
- "4222/tcp": {},
500
- "9222/tcp": {}
501
- },
284
+ var _a;
285
+ const containerConfig = {
286
+ Image: `${this.config.IMAGE_NAME}:${this.config.IMAGE_TAG}`,
287
+ name: this.config.CONTAINER_NAME,
288
+ Hostname: this.config.CONTAINER_NAME,
289
+ ExposedPorts: Object.assign({}, DEFAULT_CONFIG.EXPOSED_PORTS),
502
290
  HostConfig: {
503
- Binds: [
504
- `${os.homedir}/.codiac:/root/.codiac`
505
- // `${os.homedir}/.kube:/root/.kube`,
506
- // `${os.homedir}/.azure:/root/.azure`
507
- ],
508
- PortBindings: {
509
- "5799/tcp": [
510
- {
511
- HostPort: "5799"
512
- }
513
- ],
514
- "5798/tcp": [
515
- {
516
- HostPort: "5798"
517
- }
518
- ],
519
- "4222/tcp": [
520
- {
521
- HostPort: "4222"
522
- }
523
- ],
524
- "9222/tcp": [
525
- {
526
- HostPort: "9222"
527
- }
528
- ]
529
- },
530
- RestartPolicy: {
531
- Name: "unless-stopped"
532
- }
533
- },
534
- Volumes: {
535
- "/root/.codiac": {}
536
- // "/root/.kube": {},
537
- // "/root/.azure": {}
291
+ Binds: [...DEFAULT_CONFIG.BINDS],
292
+ PortBindings: Object.assign({}, DEFAULT_CONFIG.PORT_BINDINGS),
293
+ RestartPolicy: { Name: "unless-stopped" },
538
294
  },
539
- Env: [
540
- "HOST_PLATFORM=".concat(process.platform)
541
- ]
295
+ Volumes: Object.assign({}, DEFAULT_CONFIG.VOLUMES),
296
+ Env: [`HOST_PLATFORM=${process.platform}`],
542
297
  };
543
- if (this.localEntities == true) {
544
- container.ExposedPorts["27017/tcp"] = {};
545
- container.HostConfig.PortBindings["27017/tcp"] = [{ HostPort: "27017" }];
546
- (_a = container.HostConfig.Binds) === null || _a === void 0 ? void 0 : _a.push(`${os.homedir}/.codiac/data/db:/data/db`);
547
- (_b = container.HostConfig.Binds) === null || _b === void 0 ? void 0 : _b.push(`${os.homedir}/.codiac/data/logs:/data/logs`);
548
- container.Volumes["/data/db"] = {};
549
- container.Volumes["/data/logs"] = {};
550
- container.Entrypoint = ["./start-relay-w-nats-and-local-entities.sh"];
298
+ if (this.localEntities) {
299
+ containerConfig.ExposedPorts["27017/tcp"] = {};
300
+ containerConfig.HostConfig.PortBindings["27017/tcp"] = [{ HostPort: "27017" }];
301
+ (_a = containerConfig.HostConfig.Binds) === null || _a === void 0 ? void 0 : _a.push(`${os.homedir()}/.codiac/data/db:/data/db`, `${os.homedir()}/.codiac/data/logs:/data/logs`);
302
+ containerConfig.Volumes["/data/db"] = {};
303
+ containerConfig.Volumes["/data/logs"] = {};
304
+ containerConfig.Entrypoint = ["./start-relay-w-nats-and-local-entities.sh"];
551
305
  }
552
- const output = new rxjs_1.Subject();
553
- this.docker.createContainer(container)
554
- .then(container => {
555
- output.next(container);
556
- this.logger.trace(`createContainer - Created ${this.containerName}`);
557
- this.execStart();
558
- })
559
- .catch(error => {
560
- if (error.statusCode == 409)
561
- this.execStart(); //Already in use
562
- else {
563
- this.logger.debug(`createContainer - Failed to create ${this.containerName}`, JSON.stringify(error, null, 2));
564
- this.pullImage();
306
+ return (0, rxjs_1.from)(this.docker.createContainer(containerConfig)).pipe((0, operators_1.tap)(() => this.logDebug(`Created container ${this.config.CONTAINER_NAME}`)), (0, operators_1.map)(() => true), (0, operators_1.catchError)((err) => {
307
+ if (err.statusCode === 409) {
308
+ this.logDebug(`Container ${this.config.CONTAINER_NAME} already exists`);
309
+ return (0, rxjs_1.of)(true);
565
310
  }
566
- output.next(error);
567
- });
568
- output.subscribe();
569
- return output.asObservable();
311
+ this.logger.error(`Failed to create container: ${err.message}`);
312
+ return this.pullImage();
313
+ }));
570
314
  }
571
- pullImage() {
572
- const output = new rxjs_1.Subject();
573
- this.logger.notice("Fetching Codiac Relay image. This may take a few minutes...");
574
- this._userMessages.next(`Fetching Codiac Relay image. This may take a few minutes...`);
575
- this._cliExec.execAsyncStdOut(`docker pull ${this.imageName}:${this.imageTag}`, { cwd: this.projectRoot }, IBetterLogger_1.LogLevel.debug, true)
576
- .then((fullfulled) => {
577
- this.logger.debug('pull response', fullfulled);
578
- this.createContainer();
579
- output.next('pull complete');
580
- this._userMessages.next(`Fetch complete`);
581
- })
582
- .catch(error => {
583
- const msg = `Fetching failed: ${error.stderr}`;
584
- this.logger.error(msg);
585
- this._userMessages.next(msg);
586
- });
587
- output.subscribe();
588
- return output.asObservable();
315
+ startContainerInternal() {
316
+ return (0, rxjs_1.from)(this.docker.getContainer(this.config.CONTAINER_NAME).inspect()).pipe((0, operators_1.concatMap)((info) => {
317
+ if (info.State.Running) {
318
+ this.logDebug(`Container ${this.config.CONTAINER_NAME} is already running`);
319
+ return this.performHealthCheck();
320
+ }
321
+ return (0, rxjs_1.from)(this.docker.getContainer(this.config.CONTAINER_NAME).start()).pipe((0, operators_1.tap)(() => {
322
+ this.logDebug(`Started container ${this.config.CONTAINER_NAME}`);
323
+ this.userMessagesSubj.next("Starting Relay...");
324
+ this.performHealthCheck().subscribe();
325
+ }), (0, operators_1.map)(() => true));
326
+ }), (0, operators_1.catchError)((err) => {
327
+ if (err.statusCode === 404) {
328
+ this.logDebug(`Container ${this.config.CONTAINER_NAME} not found, creating...`);
329
+ return this.createContainer();
330
+ }
331
+ this.logger.error(`Failed to start container: ${err.message}`);
332
+ return (0, rxjs_1.of)(false);
333
+ }));
589
334
  }
590
- execStart() {
591
- (0, rxjs_1.of)(this.createLocalDataFolders()) // Run host machine configs first, then proceed to start the container.
592
- .pipe((0, operators_1.map)(response => {
593
- this.docker.getContainer(this.containerName).start().then(container => {
594
- this._userMessages.next(`Starting Relay...`);
595
- this.dockerSetRelayRestart().pipe((0, operators_1.map)(_ => this.healthCheck())).subscribe();
596
- this.logger.debug(`execStart - Container ${container.id} started`);
597
- })
598
- .catch(error => {
599
- this.logger.debug(`execStart - Failed to start ${this.containerName}`, error.message);
600
- if (error.statusCode == 404)
601
- this.createContainer().pipe((0, operators_1.take)(1)).subscribe();
602
- // If it's all gone to hell and that server isnt responding. kill it and try again.
603
- if (error.statusCode == 500)
604
- this.serverErrorCount = this.serverErrorCount + 1;
605
- // Hard stop on 20 tries, reboot it
606
- if (this.serverErrorCount == 20) {
607
- this.stop()
608
- .pipe((0, operators_1.map)(x => this.startFailedSubj.next(this.containerName)))
609
- .pipe((0, operators_1.take)(1))
610
- .subscribe();
611
- this.serverErrorCount = 0;
612
- }
613
- });
614
- }))
615
- .subscribe();
335
+ stop() {
336
+ return (0, rxjs_1.from)(this.docker.getContainer(this.config.CONTAINER_NAME).inspect()).pipe((0, operators_1.concatMap)((info) => {
337
+ if (!info.State.Running) {
338
+ this.logDebug(`Container ${this.config.CONTAINER_NAME} is not running`);
339
+ return (0, rxjs_1.of)(false);
340
+ }
341
+ return (0, rxjs_1.from)(this.docker.getContainer(this.config.CONTAINER_NAME).stop()).pipe((0, operators_1.tap)(() => this.logDebug(`Stopped container ${this.config.CONTAINER_NAME}`)), (0, operators_1.map)(() => true));
342
+ }), (0, operators_1.catchError)((err) => {
343
+ if (err.statusCode === 404) {
344
+ this.logDebug(`Container ${this.config.CONTAINER_NAME} does not exist`);
345
+ return (0, rxjs_1.of)(false);
346
+ }
347
+ this.logger.error(`Failed to stop container: ${err.message}`);
348
+ return (0, rxjs_1.of)(false);
349
+ }));
616
350
  }
617
- watchLogs() {
618
- const container = this.docker.getContainer(this.containerName);
619
- container.logs({
620
- follow: true,
621
- stdout: true,
622
- stderr: true
623
- })
624
- .then(stream => {
625
- this.promisifyStream(stream);
626
- });
351
+ remove() {
352
+ return this.stop().pipe((0, operators_1.concatMap)(() => (0, rxjs_1.from)(this.docker.getContainer(this.config.CONTAINER_NAME).remove({ force: true })).pipe((0, operators_1.tap)(() => this.logDebug(`Removed container ${this.config.CONTAINER_NAME}`)), (0, operators_1.map)(() => true), (0, operators_1.catchError)((err) => {
353
+ if (err.statusCode === 404) {
354
+ this.logDebug(`Container ${this.config.CONTAINER_NAME} does not exist`);
355
+ return (0, rxjs_1.of)(false);
356
+ }
357
+ this.logger.error(`Failed to remove container: ${err.message}`);
358
+ return (0, rxjs_1.of)(false);
359
+ }))));
627
360
  }
628
- getDocker() {
629
- this.logger.debug("getDocker - initialize");
630
- const docker = this.socketPath ? new Docker({ socketPath: this.socketPath }) : new Docker();
631
- (0, rxjs_1.from)(docker.info())
632
- .pipe((0, operators_1.map)((info) => {
633
- this.logger.debug("getDocker - check docker info");
634
- if (!info)
635
- throw null;
636
- this.docker = docker;
637
- this.dockerSubj.next(docker);
638
- this.logger.debug("Docker is running");
639
- return this.docker;
640
- }))
641
- .pipe((0, operators_1.catchError)(error => {
642
- // cli.action.stop();
643
- const msg = 'Can you start docker for me?';
644
- this.logger.error(msg);
645
- this._userMessages.next(msg);
646
- this.dockerFailedSubj.next();
647
- return (0, rxjs_1.of)(this.docker);
648
- }))
649
- .pipe((0, operators_1.take)(1))
650
- .subscribe();
361
+ destroy() {
362
+ return this.stop().pipe((0, operators_1.concatMap)(() => this.remove()), (0, operators_1.tap)(() => {
363
+ if (this.natsClient.value && !this.natsClient.value.isClosed()) {
364
+ this.natsClient.value.close().catch((err) => this.logger.error(`Failed to close NATS client: ${err.message}`));
365
+ this.natsClient.next(null);
366
+ }
367
+ this.destroySubj.next();
368
+ this.destroySubj.complete();
369
+ this.readySubj.complete();
370
+ this.readyFailedSubj.complete();
371
+ this.userMessagesSubj.complete();
372
+ this.connectionRefusedCount.complete();
373
+ this.logDebug("RelayContainer destroyed");
374
+ }), (0, operators_1.map)(() => true), (0, operators_1.catchError)((err) => {
375
+ this.logger.error(`Failed to destroy RelayContainer: ${err.message}`);
376
+ return (0, rxjs_1.of)(false);
377
+ }));
651
378
  }
652
379
  };
653
380
  RelayContainer = tslib_1.__decorate([
654
- tslib_1.__param(0, (0, inversify_1.inject)(INTERFACES_CLI_1.INTERFACES_CLI.IOutputStyler)),
381
+ tslib_1.__param(0, (0, inversify_1.inject)(ops_1.INTERFACES_CLI.IOutputStyler)),
655
382
  tslib_1.__param(1, (0, inversify_1.inject)(entities_1.CliEnviro)),
656
383
  tslib_1.__param(2, (0, inversify_1.inject)(codiac_common_1.INTERFACES.IBetterLogger)),
657
384
  tslib_1.__metadata("design:paramtypes", [Object, entities_1.CliEnviro, Object, String, Number, String, Boolean])
658
385
  ], RelayContainer);
659
386
  exports.RelayContainer = RelayContainer;
387
+ exports.DEFAULT_IMAGE_TAG = DEFAULT_CONFIG.IMAGE_TAG;
660
388
  //# sourceMappingURL=relay-container.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relay-container.js","sourceRoot":"","sources":["../../src/relay/relay-container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-container.js","sourceRoot":"","sources":["../../src/relay/relay-container.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.3.140",
2
+ "version": "1.3.141",
3
3
  "commands": {
4
4
  "branch": {
5
5
  "id": "branch",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@codiac.io/codiac-cli",
3
3
  "description": "Local command line interface for managing enterprise assets and environments.",
4
- "version": "1.3.140",
4
+ "version": "1.3.141",
5
5
  "author": "Codiac",
6
6
  "bin": {
7
7
  "codiac": "./bin/run",