@calltelemetry/cli 0.11.1 → 0.12.0
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/dist/commands/cube.d.ts +8 -0
- package/dist/commands/cube.d.ts.map +1 -0
- package/dist/commands/cube.js +47 -0
- package/dist/commands/cube.js.map +1 -0
- package/dist/commands/proxy.d.ts +3 -0
- package/dist/commands/proxy.d.ts.map +1 -0
- package/dist/commands/proxy.js +94 -0
- package/dist/commands/proxy.js.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/cube-diag.d.ts +26 -0
- package/dist/lib/cube-diag.d.ts.map +1 -0
- package/dist/lib/cube-diag.js +336 -0
- package/dist/lib/cube-diag.js.map +1 -0
- package/dist/lib/proxy.d.ts +19 -0
- package/dist/lib/proxy.d.ts.map +1 -0
- package/dist/lib/proxy.js +104 -0
- package/dist/lib/proxy.js.map +1 -0
- package/dist/lib/rpc.d.ts +10 -1
- package/dist/lib/rpc.d.ts.map +1 -1
- package/dist/lib/rpc.js +14 -2
- package/dist/lib/rpc.js.map +1 -1
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/shell/commands/cube.d.ts +8 -0
- package/dist/shell/commands/cube.d.ts.map +1 -0
- package/dist/shell/commands/cube.js +47 -0
- package/dist/shell/commands/cube.js.map +1 -0
- package/dist/shell/commands/registry.d.ts.map +1 -1
- package/dist/shell/commands/registry.js +20 -0
- package/dist/shell/commands/registry.js.map +1 -1
- package/dist/utils/parseSecs.d.ts +17 -0
- package/dist/utils/parseSecs.d.ts.map +1 -0
- package/dist/utils/parseSecs.js +33 -0
- package/dist/utils/parseSecs.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* `ct cube` — CUBE/XCC diagnostics.
|
|
4
|
+
*
|
|
5
|
+
* Pure async command path (no React/Ink imports) so the CLI stays fast.
|
|
6
|
+
*/
|
|
7
|
+
export declare function registerCubeCommand(program: Command): void;
|
|
8
|
+
//# sourceMappingURL=cube.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cube.d.ts","sourceRoot":"","sources":["../../src/commands/cube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAqCnD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { collectCubeDiag } from '../lib/cube-diag.js';
|
|
2
|
+
import { parseNonNegativeSecs } from '../utils/parseSecs.js';
|
|
3
|
+
import * as out from '../utils/output.js';
|
|
4
|
+
/**
|
|
5
|
+
* `ct cube` — CUBE/XCC diagnostics.
|
|
6
|
+
*
|
|
7
|
+
* Pure async command path (no React/Ink imports) so the CLI stays fast.
|
|
8
|
+
*/
|
|
9
|
+
export function registerCubeCommand(program) {
|
|
10
|
+
const cube = program
|
|
11
|
+
.command('cube')
|
|
12
|
+
.description('CUBE diagnostics');
|
|
13
|
+
cube.command('diag')
|
|
14
|
+
.description('Collect a read-only cube DB + NATS + logs bundle (stuck REGISTERED triage)')
|
|
15
|
+
.option('--output <path>', 'Write the bundle to this path instead of ./cube-diag-<ISO>.log')
|
|
16
|
+
.option('--capture <secs>', 'Live-capture cube.> and alarms.> NATS subjects for N seconds', '0')
|
|
17
|
+
.option('--monitor <secs>', 'RPC-poll each cube state/interval every ~5s for N seconds', '0')
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
// Strict parse FIRST — a junk `--capture`/`--monitor` must fail loudly, not
|
|
20
|
+
// silently coerce to 0 and look like a successful run that skipped capture.
|
|
21
|
+
let captureSecs;
|
|
22
|
+
let monitorSecs;
|
|
23
|
+
try {
|
|
24
|
+
captureSecs = parseNonNegativeSecs(opts.capture, '--capture');
|
|
25
|
+
monitorSecs = parseNonNegativeSecs(opts.monitor, '--monitor');
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
out.fail(err instanceof Error ? err.message : String(err));
|
|
29
|
+
process.exitCode = 1;
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
out.info('Collecting cube diagnostics (read-only)...');
|
|
33
|
+
try {
|
|
34
|
+
const path = await collectCubeDiag({
|
|
35
|
+
outputPath: opts.output,
|
|
36
|
+
captureSecs,
|
|
37
|
+
monitorSecs,
|
|
38
|
+
});
|
|
39
|
+
out.ok(`Cube diagnostic bundle written to ${path}`);
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
43
|
+
out.fail(`Cube diagnostics failed: ${message}`);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=cube.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cube.js","sourceRoot":"","sources":["../../src/commands/cube.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEnC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SACjB,WAAW,CAAC,4EAA4E,CAAC;SACzF,MAAM,CAAC,iBAAiB,EAAE,gEAAgE,CAAC;SAC3F,MAAM,CAAC,kBAAkB,EAAE,8DAA8D,EAAE,GAAG,CAAC;SAC/F,MAAM,CAAC,kBAAkB,EAAE,2DAA2D,EAAE,GAAG,CAAC;SAC5F,MAAM,CAAC,KAAK,EAAE,IAA6D,EAAE,EAAE;QAC9E,4EAA4E;QAC5E,4EAA4E;QAC5E,IAAI,WAAmB,CAAC;QACxB,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC9D,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;gBACjC,UAAU,EAAE,IAAI,CAAC,MAAM;gBACvB,WAAW;gBACX,WAAW;aACZ,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/commands/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+CpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8E3D"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import { PROXY_ENV_KEYS, clearProxySettings, displayProxyValue, getProxySettings, setProxySettings, } from '../lib/proxy.js';
|
|
3
|
+
import * as out from '../utils/output.js';
|
|
4
|
+
function printProxySettings(title) {
|
|
5
|
+
console.log(title);
|
|
6
|
+
console.log('='.repeat(title.length));
|
|
7
|
+
const settings = getProxySettings();
|
|
8
|
+
for (const key of PROXY_ENV_KEYS) {
|
|
9
|
+
console.log(` ${key.padEnd(18)} ${displayProxyValue(key, settings[key])}`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
async function restartIfRequested(restart) {
|
|
13
|
+
if (!restart) {
|
|
14
|
+
console.log('Restart services to apply app-container environment: ct restart');
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
await execa('systemctl', ['restart', 'docker-compose-app.service'], { stdout: 'inherit', stderr: 'inherit' });
|
|
18
|
+
out.ok('Services restarted.');
|
|
19
|
+
}
|
|
20
|
+
export function registerProxyCommand(program) {
|
|
21
|
+
const proxy = program
|
|
22
|
+
.command('proxy')
|
|
23
|
+
.description('Show or set appliance app egress proxy settings')
|
|
24
|
+
.action(() => {
|
|
25
|
+
printProxySettings('Appliance proxy configuration');
|
|
26
|
+
console.log();
|
|
27
|
+
console.log('Docker compose isolation: enabled');
|
|
28
|
+
console.log("Proxy settings here are written to .env for application egress; they are not written to Docker's compose client config.");
|
|
29
|
+
});
|
|
30
|
+
proxy
|
|
31
|
+
.command('show')
|
|
32
|
+
.alias('status')
|
|
33
|
+
.description('Show appliance app egress proxy settings')
|
|
34
|
+
.action(() => {
|
|
35
|
+
printProxySettings('Appliance proxy configuration');
|
|
36
|
+
console.log();
|
|
37
|
+
console.log('Docker compose isolation: enabled');
|
|
38
|
+
console.log("Proxy settings here are written to .env for application egress; they are not written to Docker's compose client config.");
|
|
39
|
+
});
|
|
40
|
+
proxy
|
|
41
|
+
.command('set')
|
|
42
|
+
.description('Set HTTP(S), no-proxy, and authentication proxy settings')
|
|
43
|
+
.option('--url <url>', 'Set both HTTP_PROXY and HTTPS_PROXY')
|
|
44
|
+
.option('--proxy-url <url>', 'Set both HTTP_PROXY and HTTPS_PROXY')
|
|
45
|
+
.option('--http <url>', 'Set HTTP_PROXY')
|
|
46
|
+
.option('--http-proxy <url>', 'Set HTTP_PROXY')
|
|
47
|
+
.option('--https <url>', 'Set HTTPS_PROXY')
|
|
48
|
+
.option('--https-proxy <url>', 'Set HTTPS_PROXY')
|
|
49
|
+
.option('--no-proxy <list>', 'Set NO_PROXY')
|
|
50
|
+
.option('--no_proxy <list>', 'Set NO_PROXY')
|
|
51
|
+
.option('--username <user>', 'Set proxy username')
|
|
52
|
+
.option('--user <user>', 'Set proxy username')
|
|
53
|
+
.option('--password <password>', 'Set proxy password')
|
|
54
|
+
.option('--bearer-token <token>', 'Set proxy bearer token')
|
|
55
|
+
.option('--basic-token <token>', 'Set proxy basic token')
|
|
56
|
+
.option('--restart', 'Restart docker-compose-app.service after writing settings')
|
|
57
|
+
.action(async (opts) => {
|
|
58
|
+
const sharedUrl = opts.url ?? opts.proxyUrl;
|
|
59
|
+
const settings = {};
|
|
60
|
+
if (sharedUrl !== undefined) {
|
|
61
|
+
settings.http = sharedUrl;
|
|
62
|
+
settings.https = sharedUrl;
|
|
63
|
+
}
|
|
64
|
+
settings.http = opts.http ?? opts.httpProxy ?? settings.http;
|
|
65
|
+
settings.https = opts.https ?? opts.httpsProxy ?? settings.https;
|
|
66
|
+
settings.noProxy = opts.noProxy ?? opts.no_proxy;
|
|
67
|
+
settings.username = opts.username ?? opts.user;
|
|
68
|
+
settings.password = opts.password;
|
|
69
|
+
settings.bearerToken = opts.bearerToken;
|
|
70
|
+
settings.basicToken = opts.basicToken;
|
|
71
|
+
await setProxySettings(settings);
|
|
72
|
+
out.ok('Proxy settings updated.');
|
|
73
|
+
console.log('Docker compose proxy isolation remains enabled; compose/client Docker config was not given proxy settings.');
|
|
74
|
+
await restartIfRequested(opts.restart);
|
|
75
|
+
});
|
|
76
|
+
proxy
|
|
77
|
+
.command('clear')
|
|
78
|
+
.alias('disable')
|
|
79
|
+
.description('Clear appliance app egress proxy settings')
|
|
80
|
+
.option('--restart', 'Restart docker-compose-app.service after clearing settings')
|
|
81
|
+
.action(async (opts) => {
|
|
82
|
+
await clearProxySettings();
|
|
83
|
+
out.ok('Proxy settings cleared.');
|
|
84
|
+
console.log('Docker compose proxy isolation remains enabled.');
|
|
85
|
+
await restartIfRequested(opts.restart);
|
|
86
|
+
});
|
|
87
|
+
proxy
|
|
88
|
+
.command('test-env')
|
|
89
|
+
.description('Show rendered app-container proxy environment')
|
|
90
|
+
.action(() => {
|
|
91
|
+
printProxySettings('Rendered proxy environment for app containers');
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/commands/proxy.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { registerDockerCommand } from './commands/docker.js';
|
|
|
11
11
|
import { registerOfflineCommand } from './commands/offline.js';
|
|
12
12
|
import { registerDiagCommand } from './commands/diag.js';
|
|
13
13
|
import { registerJtapiCommand } from './commands/jtapi.js';
|
|
14
|
+
import { registerCubeCommand } from './commands/cube.js';
|
|
14
15
|
import { registerStorageCommand } from './commands/storage.js';
|
|
15
16
|
import { registerOtelCommand } from './commands/otel.js';
|
|
16
17
|
import { registerSyslogCommand } from './commands/syslog.js';
|
|
@@ -25,6 +26,7 @@ import { registerNetworkCommand } from './commands/network.js';
|
|
|
25
26
|
import { registerShellCommand } from './commands/shell.js';
|
|
26
27
|
import { registerApplianceCommand } from './commands/appliance.js';
|
|
27
28
|
import { registerSeedCommand } from './commands/seed.js';
|
|
29
|
+
import { registerProxyCommand } from './commands/proxy.js';
|
|
28
30
|
import { LOGO } from './lib/brand.js';
|
|
29
31
|
import { setVerbose, setGlobalLevel } from './lib/log.js';
|
|
30
32
|
import { loadPrefs } from './lib/prefs.js';
|
|
@@ -64,6 +66,7 @@ registerDockerCommand(program);
|
|
|
64
66
|
registerOfflineCommand(program);
|
|
65
67
|
registerDiagCommand(program);
|
|
66
68
|
registerJtapiCommand(program);
|
|
69
|
+
registerCubeCommand(program);
|
|
67
70
|
registerStorageCommand(program);
|
|
68
71
|
registerOtelCommand(program);
|
|
69
72
|
registerSyslogCommand(program);
|
|
@@ -78,6 +81,7 @@ registerNetworkCommand(program);
|
|
|
78
81
|
registerShellCommand(program);
|
|
79
82
|
registerApplianceCommand(program);
|
|
80
83
|
registerSeedCommand(program);
|
|
84
|
+
registerProxyCommand(program);
|
|
81
85
|
program
|
|
82
86
|
.command('version')
|
|
83
87
|
.description('Print CLI version')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,IAAI,CAAC;KACV,WAAW,CAAC,wCAAwC,CAAC;KACrD,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;KACtD,MAAM,CAAC,SAAS,EAAE,4BAA4B,CAAC;KAC/C,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;IACxC,wCAAwC;IACxC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK;QAAE,cAAc,CAAC,OAAO,CAAC,CAAC;SAC7C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO;QAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO;IAC3C,qDAAqD;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,+BAA+B,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,iEAAiE;IACjE,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC;QACtB,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,+DAA+D;AAC/D,gFAAgF;AAChF,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAE1C,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACxC,oCAAoC;IACpC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,0EAA0E;IAC1E,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAC/E,MAAM,oBAAoB,EAAE,CAAC;IAC/B,CAAC;SAAM,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QACxB,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QACnF,MAAM,wBAAwB,EAAE,CAAC;IACnC,CAAC;IAED,qCAAqC;IACrC,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC;IAEhC,2DAA2D;IAC3D,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC;QACtB,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,2EAA2E;IAC3E,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAC5D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;QAC3E,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAE3E,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CACvC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,EACrC,KAAK,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,EACvC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC5B,OAAO,EAAE,OAAO;YAChB,QAAQ;YACR,YAAY,EAAE,KAAK,EAAE,OAAe,EAAE,EAAE;gBACtC,OAAO,EAAE,CAAC;gBAEV,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;oBACxB,gEAAgE;oBAChE,0EAA0E;oBAC1E,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;oBACxE,IAAI,CAAC;wBACH,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC3E,CAAC;oBAAC,MAAM,CAAC;wBACP,uBAAuB;oBACzB,CAAC;oBACD,gBAAgB;oBAChB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;oBAC1D,MAAM,SAAS,EAAE,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,wDAAwD;oBACxD,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,OAAO,EAAE,CAAC;YACZ,CAAC;SACF,CAAC,CACH,CACF,CACF,CAAC;QAEF,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only collector for the "CUBE stuck in REGISTERED, never ONLINE" bug class.
|
|
3
|
+
*
|
|
4
|
+
* Builds one text bundle from three sources — Postgres, NATS KV/streams, and
|
|
5
|
+
* container logs — redacts it, and writes it to a single .log file. Each section
|
|
6
|
+
* is best-effort: a failure in one section is captured inline and never aborts
|
|
7
|
+
* the rest of the collection. Pure async — no React/Ink imports.
|
|
8
|
+
*
|
|
9
|
+
* The registered -> online transition requires a healthy SolicitXccProbing
|
|
10
|
+
* keepalive; this bundle surfaces the DB state, NATS KV view, and the log lines
|
|
11
|
+
* that explain why that keepalive never lands.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Collect the full cube-diag bundle and write it to a single .log file.
|
|
15
|
+
*
|
|
16
|
+
* @param opts.outputPath Target log path. Defaults to ./cube-diag-<ISO>.log.
|
|
17
|
+
* @param opts.captureSecs Seconds to live-capture cube.> / alarms.> subjects (0 = skip).
|
|
18
|
+
* @param opts.monitorSecs Seconds to RPC-poll each cube's state/interval ~every 5s (0 = skip).
|
|
19
|
+
* @returns the path the bundle was written to.
|
|
20
|
+
*/
|
|
21
|
+
export declare function collectCubeDiag(opts?: {
|
|
22
|
+
outputPath?: string;
|
|
23
|
+
captureSecs?: number;
|
|
24
|
+
monitorSecs?: number;
|
|
25
|
+
}): Promise<string>;
|
|
26
|
+
//# sourceMappingURL=cube-diag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cube-diag.d.ts","sourceRoot":"","sources":["../../src/lib/cube-diag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAuPH;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgJjI"}
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only collector for the "CUBE stuck in REGISTERED, never ONLINE" bug class.
|
|
3
|
+
*
|
|
4
|
+
* Builds one text bundle from three sources — Postgres, NATS KV/streams, and
|
|
5
|
+
* container logs — redacts it, and writes it to a single .log file. Each section
|
|
6
|
+
* is best-effort: a failure in one section is captured inline and never aborts
|
|
7
|
+
* the rest of the collection. Pure async — no React/Ink imports.
|
|
8
|
+
*
|
|
9
|
+
* The registered -> online transition requires a healthy SolicitXccProbing
|
|
10
|
+
* keepalive; this bundle surfaces the DB state, NATS KV view, and the log lines
|
|
11
|
+
* that explain why that keepalive never lands.
|
|
12
|
+
*/
|
|
13
|
+
import { writeFile, chmod } from 'node:fs/promises';
|
|
14
|
+
import { compose, composeExec, composePs } from './compose.js';
|
|
15
|
+
import { exec } from './exec.js';
|
|
16
|
+
import { rpc } from './rpc.js';
|
|
17
|
+
import { redactSecrets } from './redact.js';
|
|
18
|
+
import { DB_USER, DB_NAME, PG_ENV } from './db.js';
|
|
19
|
+
import { getPaths } from './paths.js';
|
|
20
|
+
import { debug } from './log.js';
|
|
21
|
+
const NATS_BOX_IMAGE = 'natsio/nats-box:0.14.5';
|
|
22
|
+
const NATS_URL = 'nats://nats:4222';
|
|
23
|
+
const DEFAULT_TIMEOUT = 10_000;
|
|
24
|
+
const RPC_TIMEOUT = 25_000;
|
|
25
|
+
/** Sleep helper for the heartbeat-trace loop. */
|
|
26
|
+
function sleep(ms) {
|
|
27
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Run a cube-diag RPC bounded by RPC_TIMEOUT. The budget is passed INTO `rpc()`
|
|
31
|
+
* (→ composeExec → execa `timeout`), so a wedged `docker compose exec` child is
|
|
32
|
+
* actually KILLED rather than abandoned by a Promise.race that leaves it alive.
|
|
33
|
+
*/
|
|
34
|
+
function rpcBounded(code) {
|
|
35
|
+
return rpc(code, RPC_TIMEOUT);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Elixir snapshot run via `onprem rpc` inside the web container. For every
|
|
39
|
+
* xcc-enabled cube it decodes the live cube_status KV and runs the SAME read
|
|
40
|
+
* path the product uses (ConnectionHealthState.derive_from_kv/3), then flags the
|
|
41
|
+
* probe-interval pathologies engineering looks for:
|
|
42
|
+
* CORRUPT_KV — observed_interval_ms set but last_event_at nil (won't relearn)
|
|
43
|
+
* MANUAL!=OBSERVED — configured interval differs from the learned one
|
|
44
|
+
* DB_OBS!=KV_OBS — the DB mirror and the live KV disagree on the cadence
|
|
45
|
+
*
|
|
46
|
+
* NOTE: this is a backtick template literal but contains NO `${...}` JS
|
|
47
|
+
* interpolation — only Elixir `#{...}`, which JS leaves untouched. Do not add a
|
|
48
|
+
* `${` anywhere in this string.
|
|
49
|
+
*/
|
|
50
|
+
const CUBE_DIAG_RPC_SNAPSHOT = `import Ecto.Query
|
|
51
|
+
now = DateTime.utc_now()
|
|
52
|
+
alias Cdrcisco.Cubes.{Cube, ConnectionStateKV, ConnectionHealthState}
|
|
53
|
+
cubes = Cdrcisco.Repo.all(from c in Cube, where: c.xcc_enabled == true, order_by: c.id)
|
|
54
|
+
if cubes == [], do: IO.puts("(no xcc-enabled cubes)")
|
|
55
|
+
Enum.each(cubes, fn c ->
|
|
56
|
+
out =
|
|
57
|
+
try do
|
|
58
|
+
raw = Cdrcisco.Liveness.KV.get("cube_status", "cube:#{c.id}:status")
|
|
59
|
+
dec =
|
|
60
|
+
case raw && ConnectionStateKV.decode(raw) do
|
|
61
|
+
{:ok, d} -> d
|
|
62
|
+
_ -> nil
|
|
63
|
+
end
|
|
64
|
+
row = ConnectionHealthState.derive_from_kv(c, dec, now)
|
|
65
|
+
kv_ms = dec && dec.observed_interval_ms
|
|
66
|
+
kv_le = dec && dec.last_event_at
|
|
67
|
+
kv_obs_s = (is_integer(kv_ms) and kv_ms > 0) && div(kv_ms, 1000) || nil
|
|
68
|
+
manual = c.xcc_provider_probing_interval
|
|
69
|
+
db_obs = c.xcc_observed_probing_interval
|
|
70
|
+
corrupt = is_integer(kv_ms) and kv_ms > 0 and is_nil(kv_le)
|
|
71
|
+
mism = is_integer(manual) and is_integer(db_obs) and manual != db_obs
|
|
72
|
+
div_obs = is_integer(db_obs) and is_integer(kv_obs_s) and db_obs != kv_obs_s
|
|
73
|
+
flags = []
|
|
74
|
+
flags = if corrupt, do: ["CORRUPT_KV(observed_ms set, last_event_at nil -> wont relearn)" | flags], else: flags
|
|
75
|
+
flags = if mism, do: ["MANUAL!=OBSERVED(#{manual} vs #{db_obs})" | flags], else: flags
|
|
76
|
+
flags = if div_obs, do: ["DB_OBS!=KV_OBS(#{db_obs} vs #{kv_obs_s})" | flags], else: flags
|
|
77
|
+
Enum.join([
|
|
78
|
+
"cube #{c.id} (#{c.name})",
|
|
79
|
+
" db : manual=#{inspect(manual)} observed=#{inspect(db_obs)} observed_at=#{inspect(c.xcc_observed_probing_interval_at)} online=#{inspect(c.xcc_online)} last_keepalive=#{inspect(c.xcc_last_keepalive)}",
|
|
80
|
+
" kv : state=#{inspect(dec && dec.state)} last_event=#{inspect(dec && dec.last_event)} last_event_at=#{inspect(kv_le)} attempt=#{inspect(dec && dec.attempt_count)} observed_ms=#{inspect(kv_ms)} probing_ms=#{inspect(dec && dec.probing_interval_ms)}",
|
|
81
|
+
" derived: state=#{inspect(row.state)} conf=#{inspect(row.status_confidence)} observed_sec=#{inspect(row.observed_probing_interval_sec)} window_sec=#{inspect(row.freshness_window_sec)} stale_after=#{inspect(row.stale_after_at)}",
|
|
82
|
+
" flags : #{if flags == [], do: "none", else: Enum.join(flags, " ")}"
|
|
83
|
+
], "\\n")
|
|
84
|
+
rescue
|
|
85
|
+
e -> "cube #{c.id}: ERROR #{Exception.message(e)}"
|
|
86
|
+
end
|
|
87
|
+
IO.puts(out)
|
|
88
|
+
end)
|
|
89
|
+
:ok`;
|
|
90
|
+
/**
|
|
91
|
+
* Compact one-line-per-cube trace sample, called repeatedly by the
|
|
92
|
+
* `--monitor <secs>` heartbeat trace to capture how the FSM state / learned
|
|
93
|
+
* cadence / freshness window evolve over time.
|
|
94
|
+
*
|
|
95
|
+
* NOTE: same `${...}`-free rule as CUBE_DIAG_RPC_SNAPSHOT above.
|
|
96
|
+
*/
|
|
97
|
+
const CUBE_DIAG_RPC_TRACE = `import Ecto.Query
|
|
98
|
+
now = DateTime.utc_now()
|
|
99
|
+
alias Cdrcisco.Cubes.{Cube, ConnectionStateKV, ConnectionHealthState}
|
|
100
|
+
ts = DateTime.to_iso8601(now)
|
|
101
|
+
for c <- Cdrcisco.Repo.all(from c in Cube, where: c.xcc_enabled == true, order_by: c.id) do
|
|
102
|
+
try do
|
|
103
|
+
raw = Cdrcisco.Liveness.KV.get("cube_status", "cube:#{c.id}:status")
|
|
104
|
+
dec =
|
|
105
|
+
case raw && ConnectionStateKV.decode(raw) do
|
|
106
|
+
{:ok, d} -> d
|
|
107
|
+
_ -> nil
|
|
108
|
+
end
|
|
109
|
+
row = ConnectionHealthState.derive_from_kv(c, dec, now)
|
|
110
|
+
IO.puts("#{ts}|cube=#{c.id}|kv_state=#{inspect(dec && dec.state)}|kv_obs_ms=#{inspect(dec && dec.observed_interval_ms)}|kv_last_event_at=#{inspect(dec && dec.last_event_at)}|attempt=#{inspect(dec && dec.attempt_count)}|obs_sec=#{inspect(row.observed_probing_interval_sec)}|win_sec=#{inspect(row.freshness_window_sec)}|state=#{row.state}|conf=#{row.status_confidence}")
|
|
111
|
+
rescue
|
|
112
|
+
e -> IO.puts("#{ts}|cube=#{c.id}|ERROR #{Exception.message(e)}")
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
:ok`;
|
|
116
|
+
/** Run a psql query in the db container, returning trimmed stdout. */
|
|
117
|
+
async function psql(sql) {
|
|
118
|
+
const result = await composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-c', sql], { env: PG_ENV, pipe: true, timeout: DEFAULT_TIMEOUT });
|
|
119
|
+
return (result.stdout ?? '').toString();
|
|
120
|
+
}
|
|
121
|
+
/** Run one collection step, capturing its output (or error) into a labeled block. */
|
|
122
|
+
async function section(title, fn) {
|
|
123
|
+
const lines = [`\n===== ${title} =====`];
|
|
124
|
+
try {
|
|
125
|
+
const body = await fn();
|
|
126
|
+
lines.push(body.trim().length > 0 ? body.trimEnd() : '(no output)');
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
130
|
+
lines.push(`[section failed] ${message}`);
|
|
131
|
+
}
|
|
132
|
+
return lines.join('\n');
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Resolve the `_ct` docker network the appliance services share, so the
|
|
136
|
+
* throwaway nats-box container can reach the `nats` service by name.
|
|
137
|
+
*
|
|
138
|
+
* Strategy: ask compose for the nats service's network (first line, first
|
|
139
|
+
* field). Fall back to `<project>_ct` derived from the install dir basename.
|
|
140
|
+
*/
|
|
141
|
+
async function resolveCtNetwork() {
|
|
142
|
+
try {
|
|
143
|
+
const result = await compose(['ps', '--format', '{{.Networks}}', 'nats'], { pipe: true });
|
|
144
|
+
const firstLine = (result.stdout ?? '').toString().split('\n').map(l => l.trim()).filter(Boolean)[0];
|
|
145
|
+
if (firstLine) {
|
|
146
|
+
const firstField = firstLine.split(',')[0]?.trim();
|
|
147
|
+
if (firstField)
|
|
148
|
+
return firstField;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
debug(`cube-diag: compose network resolve failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
153
|
+
}
|
|
154
|
+
const { installDir } = getPaths();
|
|
155
|
+
const project = (installDir.split('/').filter(Boolean).pop() ?? 'docker-compose').toLowerCase();
|
|
156
|
+
return `${project}_ct`;
|
|
157
|
+
}
|
|
158
|
+
/** Run `nats` CLI inside a throwaway nats-box container on the appliance network. */
|
|
159
|
+
async function natsRun(net, natsArgs) {
|
|
160
|
+
const result = await exec('docker', ['run', '--rm', '--network', net, NATS_BOX_IMAGE, 'nats', '-s', NATS_URL, ...natsArgs], { timeout: DEFAULT_TIMEOUT, reject: false });
|
|
161
|
+
const stdout = (result.stdout ?? '').toString();
|
|
162
|
+
const stderr = (result.stderr ?? '').toString();
|
|
163
|
+
return [stdout, stderr.trim() ? `[stderr] ${stderr}` : ''].filter(Boolean).join('\n');
|
|
164
|
+
}
|
|
165
|
+
// STATIC sh script — NO host-side interpolation. The NATS URL and bucket are
|
|
166
|
+
// passed as `docker run -e` env vars (NATS_URL / KV_BUCKET) and referenced via
|
|
167
|
+
// `$NATS_URL` / `"$KV_BUCKET"` INSIDE the container, so a non-constant bucket can
|
|
168
|
+
// never break out of the shell string (repo rule: no shell string interpolation).
|
|
169
|
+
// `set -f` disables globbing and `while IFS= read` handles keys with whitespace /
|
|
170
|
+
// glob chars, so a stray `*` in CLI output can never glob-expand against the CWD.
|
|
171
|
+
const NATS_KV_DUMP_SCRIPT = 'set -f; nats -s "$NATS_URL" kv ls "$KV_BUCKET" 2>/dev/null | while IFS= read -r k; do ' +
|
|
172
|
+
'[ -n "$k" ] || continue; ' +
|
|
173
|
+
'echo "--- key: $k ---"; ' +
|
|
174
|
+
'nats -s "$NATS_URL" kv get "$KV_BUCKET" "$k" 2>&1; ' +
|
|
175
|
+
'echo "--- key (raw base64): $k ---"; ' +
|
|
176
|
+
'nats -s "$NATS_URL" kv get "$KV_BUCKET" "$k" --raw 2>/dev/null | base64; ' +
|
|
177
|
+
'done';
|
|
178
|
+
/** Dump every key in a NATS KV bucket (human get + raw base64), via an in-container sh loop. */
|
|
179
|
+
async function natsKvDump(net, bucket) {
|
|
180
|
+
const result = await exec('docker', [
|
|
181
|
+
'run', '--rm', '--network', net,
|
|
182
|
+
'-e', `NATS_URL=${NATS_URL}`,
|
|
183
|
+
'-e', `KV_BUCKET=${bucket}`,
|
|
184
|
+
NATS_BOX_IMAGE, 'sh', '-c', NATS_KV_DUMP_SCRIPT,
|
|
185
|
+
], { timeout: DEFAULT_TIMEOUT, reject: false });
|
|
186
|
+
const stdout = (result.stdout ?? '').toString();
|
|
187
|
+
const stderr = (result.stderr ?? '').toString();
|
|
188
|
+
// Surface truncation: a silently-cut KV dump would mislead diagnosis.
|
|
189
|
+
const timedOut = result.timedOut === true;
|
|
190
|
+
return [
|
|
191
|
+
stdout,
|
|
192
|
+
timedOut ? '[WARN: nats-box exec timed out — KV dump may be truncated]' : '',
|
|
193
|
+
stderr.trim() ? `[stderr] ${stderr}` : '',
|
|
194
|
+
].filter(Boolean).join('\n');
|
|
195
|
+
}
|
|
196
|
+
/** Get the first container id for a compose service (empty string if none). */
|
|
197
|
+
async function containerId(service) {
|
|
198
|
+
// composePs already has its own internal fallback; a second compose ps here
|
|
199
|
+
// would just repeat the same command, so on failure we return empty directly.
|
|
200
|
+
try {
|
|
201
|
+
const id = await composePs(service);
|
|
202
|
+
if (id)
|
|
203
|
+
return id.split('\n')[0].trim();
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
debug(`cube-diag: composePs ${service} failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
207
|
+
}
|
|
208
|
+
return '';
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Tail container logs and keep only the lines matching the cube/xcc keepalive
|
|
212
|
+
* grep. When `opts.since` is given, uses `docker logs --since <window>` instead
|
|
213
|
+
* of `--tail`, mirroring the bash reference's 10-minute heartbeat window.
|
|
214
|
+
*/
|
|
215
|
+
async function logsFiltered(service, tailIn, keepTail, grep, opts) {
|
|
216
|
+
const id = await containerId(service);
|
|
217
|
+
if (!id)
|
|
218
|
+
return `(no ${service} container found)`;
|
|
219
|
+
const dockerArgs = opts?.since
|
|
220
|
+
? ['logs', '--since', opts.since, id]
|
|
221
|
+
: ['logs', '--tail', String(tailIn), id];
|
|
222
|
+
const result = await exec('docker', dockerArgs, {
|
|
223
|
+
timeout: DEFAULT_TIMEOUT,
|
|
224
|
+
reject: false,
|
|
225
|
+
});
|
|
226
|
+
const combined = `${(result.stdout ?? '').toString()}\n${(result.stderr ?? '').toString()}`;
|
|
227
|
+
let lines = combined.split('\n');
|
|
228
|
+
if (grep)
|
|
229
|
+
lines = lines.filter(l => grep.test(l));
|
|
230
|
+
return lines.slice(-keepTail).join('\n');
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Collect the full cube-diag bundle and write it to a single .log file.
|
|
234
|
+
*
|
|
235
|
+
* @param opts.outputPath Target log path. Defaults to ./cube-diag-<ISO>.log.
|
|
236
|
+
* @param opts.captureSecs Seconds to live-capture cube.> / alarms.> subjects (0 = skip).
|
|
237
|
+
* @param opts.monitorSecs Seconds to RPC-poll each cube's state/interval ~every 5s (0 = skip).
|
|
238
|
+
* @returns the path the bundle was written to.
|
|
239
|
+
*/
|
|
240
|
+
export async function collectCubeDiag(opts) {
|
|
241
|
+
const captureSecs = opts?.captureSecs ?? 0;
|
|
242
|
+
const monitorSecs = opts?.monitorSecs ?? 0;
|
|
243
|
+
const iso = new Date().toISOString().replace(/[:.]/g, '-');
|
|
244
|
+
const outputPath = opts?.outputPath ?? `./cube-diag-${iso}.log`;
|
|
245
|
+
const parts = [];
|
|
246
|
+
parts.push('===== CUBE DIAGNOSTIC BUNDLE =====', `Generated: ${new Date().toISOString()}`, 'Bug class: cube stuck REGISTERED, never ONLINE (registered->online requires a healthy SolicitXccProbing keepalive).');
|
|
247
|
+
// ── Database sections ──────────────────────────────────────────────────
|
|
248
|
+
parts.push(await section('DB: cubes', () => psql(`SELECT id, org_id, name, xcc_enabled, xcc_emulator, xcc_mode, xcc_hostname, ` +
|
|
249
|
+
`xcc_provider_probing_interval, xcc_observed_probing_interval, xcc_registration_id, ` +
|
|
250
|
+
`xcc_disconnect_code, xcc_online, xcc_last_keepalive, connection_expired_count, ` +
|
|
251
|
+
`reconnection_failed_count, unregistered_count, policy_id FROM cubes ORDER BY id;`)));
|
|
252
|
+
parts.push(await section('DB: cube_connection_health_state (authoritative)', () => psql(`SELECT cube_id, state, status_confidence, status_reason, last_keepalive_at, last_probe_at, ` +
|
|
253
|
+
`last_authorize_at, last_provider_status, observed_probing_interval_sec, freshness_window_sec, ` +
|
|
254
|
+
`stale_after_at, last_state_change_at, last_kv_sync_at FROM cube_connection_health_state ORDER BY cube_id;`)));
|
|
255
|
+
parts.push(await section('DB: cube_connection_health_events (recent 50)', () => psql(`SELECT cube_id, event_type, severity, source, transition_from, transition_to, inserted_at ` +
|
|
256
|
+
`FROM cube_connection_health_events ORDER BY inserted_at DESC LIMIT 50;`)));
|
|
257
|
+
parts.push(await section('DB: alarm_events (active cube/xcc/policy)', () => psql(`SELECT id, org_id, alarm_type, status, inserted_at, updated_at FROM alarm_events ` +
|
|
258
|
+
`WHERE status IN ('active','acknowledged') ` +
|
|
259
|
+
`AND (alarm_type ILIKE '%cube%' OR alarm_type ILIKE '%xcc%' OR alarm_type ILIKE '%policy%') ` +
|
|
260
|
+
`ORDER BY inserted_at DESC;`)));
|
|
261
|
+
parts.push(await section('DB: cube_event_logs (24h volume per cube)', () => psql(`SELECT cube_id, COUNT(*) AS events_24h FROM cube_event_logs ` +
|
|
262
|
+
`WHERE inserted_at > NOW() - INTERVAL '24 hours' GROUP BY cube_id ORDER BY cube_id;`)));
|
|
263
|
+
// ── NATS sections ──────────────────────────────────────────────────────
|
|
264
|
+
const net = await resolveCtNetwork();
|
|
265
|
+
parts.push(`\n===== NATS: resolved network = ${net} =====`);
|
|
266
|
+
parts.push(await section('NATS: kv ls', () => natsRun(net, ['kv', 'ls'])));
|
|
267
|
+
parts.push(await section('NATS: kv info cube_status', () => natsRun(net, ['kv', 'info', 'cube_status'])));
|
|
268
|
+
parts.push(await section('NATS: kv info policy_status', () => natsRun(net, ['kv', 'info', 'policy_status'])));
|
|
269
|
+
parts.push(await section('NATS: cube_status bucket dump', () => natsKvDump(net, 'cube_status')));
|
|
270
|
+
parts.push(await section('NATS: policy_status bucket dump', () => natsKvDump(net, 'policy_status')));
|
|
271
|
+
parts.push(await section('NATS: stream report', () => natsRun(net, ['stream', 'report'])));
|
|
272
|
+
// ── RPC-decoded interval + KV health snapshot (always runs) ─────────────
|
|
273
|
+
// Decodes each cube's live KV through the product's own read path and flags
|
|
274
|
+
// the interval pathologies (corrupt KV that won't relearn, manual-vs-observed
|
|
275
|
+
// mismatch, DB-vs-KV divergence). This is where a "shows 10s, router is 15s"
|
|
276
|
+
// stuck cube is caught.
|
|
277
|
+
parts.push(await section('cube interval + KV health (RPC-decoded)', () => rpcBounded(CUBE_DIAG_RPC_SNAPSHOT)));
|
|
278
|
+
// ── Optional RPC heartbeat trace ────────────────────────────────────────
|
|
279
|
+
// Polls the compact per-cube snapshot every ~5s for the window so engineering
|
|
280
|
+
// can watch the FSM state / learned cadence / freshness window evolve.
|
|
281
|
+
if (monitorSecs > 0) {
|
|
282
|
+
parts.push(await section(`RPC heartbeat trace (${monitorSecs}s, ~5s samples)`, async () => {
|
|
283
|
+
const samples = [];
|
|
284
|
+
const end = Date.now() + monitorSecs * 1000;
|
|
285
|
+
while (Date.now() < end) {
|
|
286
|
+
try {
|
|
287
|
+
const out = await rpcBounded(CUBE_DIAG_RPC_TRACE);
|
|
288
|
+
const traceLines = out
|
|
289
|
+
.split('\n')
|
|
290
|
+
.filter(l => /^[0-9]{4}-/.test(l));
|
|
291
|
+
samples.push(traceLines.length > 0 ? traceLines.join('\n') : '[trace sample failed]');
|
|
292
|
+
}
|
|
293
|
+
catch (err) {
|
|
294
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
295
|
+
samples.push(`[trace sample failed] ${message}`);
|
|
296
|
+
}
|
|
297
|
+
// Clamp the inter-sample sleep to the remaining window so the loop never
|
|
298
|
+
// overshoots the requested duration (e.g. `--monitor 6` must not run ~10s).
|
|
299
|
+
const remaining = end - Date.now();
|
|
300
|
+
if (remaining > 0)
|
|
301
|
+
await sleep(Math.min(5000, remaining));
|
|
302
|
+
}
|
|
303
|
+
return samples.join('\n');
|
|
304
|
+
}));
|
|
305
|
+
}
|
|
306
|
+
// ── Optional live capture ──────────────────────────────────────────────
|
|
307
|
+
if (captureSecs > 0) {
|
|
308
|
+
for (const subject of ['cube.>', 'alarms.>']) {
|
|
309
|
+
parts.push(await section(`NATS: live capture ${subject} (${captureSecs}s)`, async () => {
|
|
310
|
+
const result = await exec('timeout', [
|
|
311
|
+
String(captureSecs),
|
|
312
|
+
'docker', 'run', '--rm', '--network', net, NATS_BOX_IMAGE,
|
|
313
|
+
'nats', '-s', NATS_URL, 'sub', '--raw', subject,
|
|
314
|
+
], { timeout: (captureSecs + 5) * 1000, reject: false });
|
|
315
|
+
return [(result.stdout ?? '').toString(), (result.stderr ?? '').toString()].filter(Boolean).join('\n');
|
|
316
|
+
}));
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
// ── Log sections ───────────────────────────────────────────────────────
|
|
320
|
+
// Heartbeat timeline first: the failure_count progression, "did not refresh
|
|
321
|
+
// healthy" gate hits, and registration rotations are the stuck/flap signature.
|
|
322
|
+
const heartbeatGrep = /failure_count|did not refresh healthy|registrationID rotated|keepalive/i;
|
|
323
|
+
parts.push(await section('probe heartbeat timeline (failure_count / refresh / rotation, last 10m)', () => logsFiltered('web', 6000, 200, heartbeatGrep, { since: '10m' })));
|
|
324
|
+
const cubeGrep = /xcc|cube|keepalive|solicit|probing|register|authorize|reconnect|liveness|connection_state/i;
|
|
325
|
+
parts.push(await section('LOGS: web (filtered, tail 800)', () => logsFiltered('web', 6000, 800, cubeGrep)));
|
|
326
|
+
parts.push(await section('LOGS: nats (tail 300)', () => logsFiltered('nats', 300, 300, null)));
|
|
327
|
+
const bundle = redactSecrets(parts.join('\n') + '\n');
|
|
328
|
+
await writeFile(outputPath, bundle, { mode: 0o600 });
|
|
329
|
+
// `mode` only applies when writeFile CREATES the file. If outputPath already
|
|
330
|
+
// existed with broader perms, the write truncates but leaves the old mode, so
|
|
331
|
+
// the (potentially secret-bearing) bundle could stay world-readable. chmod
|
|
332
|
+
// unconditionally to clamp an existing file down to owner-only.
|
|
333
|
+
await chmod(outputPath, 0o600);
|
|
334
|
+
return outputPath;
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=cube-diag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cube-diag.js","sourceRoot":"","sources":["../../src/lib/cube-diag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const PROXY_ENV_KEYS: readonly ["HTTP_PROXY", "HTTPS_PROXY", "NO_PROXY", "PROXY_USERNAME", "PROXY_PASSWORD", "PROXY_BEARER_TOKEN", "PROXY_BASIC_TOKEN"];
|
|
2
|
+
export type ProxyEnvKey = (typeof PROXY_ENV_KEYS)[number];
|
|
3
|
+
export interface ProxySettings {
|
|
4
|
+
http?: string;
|
|
5
|
+
https?: string;
|
|
6
|
+
noProxy?: string;
|
|
7
|
+
username?: string;
|
|
8
|
+
password?: string;
|
|
9
|
+
bearerToken?: string;
|
|
10
|
+
basicToken?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function getProxySettings(): Record<ProxyEnvKey, string>;
|
|
13
|
+
export declare function redactProxyUrl(value: string): string;
|
|
14
|
+
export declare function displayProxyValue(key: ProxyEnvKey, value: string): string;
|
|
15
|
+
export declare function validateProxyValue(label: string, value: string): void;
|
|
16
|
+
export declare function validateProxyUrl(label: string, value: string): void;
|
|
17
|
+
export declare function setProxySettings(settings: ProxySettings): Promise<void>;
|
|
18
|
+
export declare function clearProxySettings(): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/lib/proxy.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,mIAQjB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAK9D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWpD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYzE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIrE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAYnE;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC7E;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGxD"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { updateEnvKeys, readEnvKeys } from './env.js';
|
|
2
|
+
import { ensureApplianceProxyPolicy } from './appliance-proxy-policy.js';
|
|
3
|
+
export const PROXY_ENV_KEYS = [
|
|
4
|
+
'HTTP_PROXY',
|
|
5
|
+
'HTTPS_PROXY',
|
|
6
|
+
'NO_PROXY',
|
|
7
|
+
'PROXY_USERNAME',
|
|
8
|
+
'PROXY_PASSWORD',
|
|
9
|
+
'PROXY_BEARER_TOKEN',
|
|
10
|
+
'PROXY_BASIC_TOKEN',
|
|
11
|
+
];
|
|
12
|
+
export function getProxySettings() {
|
|
13
|
+
const env = readEnvKeys();
|
|
14
|
+
return Object.fromEntries(PROXY_ENV_KEYS.map(key => [key, env[key] ?? '']));
|
|
15
|
+
}
|
|
16
|
+
export function redactProxyUrl(value) {
|
|
17
|
+
if (!value)
|
|
18
|
+
return '';
|
|
19
|
+
try {
|
|
20
|
+
const url = new URL(value);
|
|
21
|
+
if (!url.username && !url.password)
|
|
22
|
+
return value;
|
|
23
|
+
url.username = 'redacted';
|
|
24
|
+
url.password = '';
|
|
25
|
+
return url.toString();
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return value.replace(/^([A-Za-z][A-Za-z0-9+.-]*:\/\/)[^/@]+@/, '$1redacted@');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function displayProxyValue(key, value) {
|
|
32
|
+
if (!value)
|
|
33
|
+
return '<empty>';
|
|
34
|
+
if (key === 'HTTP_PROXY' || key === 'HTTPS_PROXY')
|
|
35
|
+
return redactProxyUrl(value);
|
|
36
|
+
if (key === 'PROXY_USERNAME' ||
|
|
37
|
+
key === 'PROXY_PASSWORD' ||
|
|
38
|
+
key === 'PROXY_BEARER_TOKEN' ||
|
|
39
|
+
key === 'PROXY_BASIC_TOKEN') {
|
|
40
|
+
return '<set>';
|
|
41
|
+
}
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
export function validateProxyValue(label, value) {
|
|
45
|
+
if (/[\x00-\x1F\x7F]/.test(value)) {
|
|
46
|
+
throw new Error(`${label} must not contain control characters`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function validateProxyUrl(label, value) {
|
|
50
|
+
validateProxyValue(label, value);
|
|
51
|
+
let parsed;
|
|
52
|
+
try {
|
|
53
|
+
parsed = new URL(value);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
throw new Error(`${label} must be a valid URL`);
|
|
57
|
+
}
|
|
58
|
+
if (!parsed.host)
|
|
59
|
+
throw new Error(`${label} must be a valid URL`);
|
|
60
|
+
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
|
|
61
|
+
throw new Error(`${label} must start with http:// or https://`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export async function setProxySettings(settings) {
|
|
65
|
+
const updates = {};
|
|
66
|
+
if (settings.http !== undefined) {
|
|
67
|
+
validateProxyUrl('HTTP proxy', settings.http);
|
|
68
|
+
updates.HTTP_PROXY = settings.http;
|
|
69
|
+
}
|
|
70
|
+
if (settings.https !== undefined) {
|
|
71
|
+
validateProxyUrl('HTTPS proxy', settings.https);
|
|
72
|
+
updates.HTTPS_PROXY = settings.https;
|
|
73
|
+
}
|
|
74
|
+
if (settings.noProxy !== undefined) {
|
|
75
|
+
validateProxyValue('NO_PROXY', settings.noProxy);
|
|
76
|
+
updates.NO_PROXY = settings.noProxy;
|
|
77
|
+
}
|
|
78
|
+
if (settings.username !== undefined) {
|
|
79
|
+
validateProxyValue('proxy username', settings.username);
|
|
80
|
+
updates.PROXY_USERNAME = settings.username;
|
|
81
|
+
}
|
|
82
|
+
if (settings.password !== undefined) {
|
|
83
|
+
validateProxyValue('proxy password', settings.password);
|
|
84
|
+
updates.PROXY_PASSWORD = settings.password;
|
|
85
|
+
}
|
|
86
|
+
if (settings.bearerToken !== undefined) {
|
|
87
|
+
validateProxyValue('proxy bearer token', settings.bearerToken);
|
|
88
|
+
updates.PROXY_BEARER_TOKEN = settings.bearerToken;
|
|
89
|
+
}
|
|
90
|
+
if (settings.basicToken !== undefined) {
|
|
91
|
+
validateProxyValue('proxy basic token', settings.basicToken);
|
|
92
|
+
updates.PROXY_BASIC_TOKEN = settings.basicToken;
|
|
93
|
+
}
|
|
94
|
+
if (Object.keys(updates).length === 0) {
|
|
95
|
+
throw new Error('No proxy settings provided');
|
|
96
|
+
}
|
|
97
|
+
await updateEnvKeys(updates);
|
|
98
|
+
await ensureApplianceProxyPolicy();
|
|
99
|
+
}
|
|
100
|
+
export async function clearProxySettings() {
|
|
101
|
+
await updateEnvKeys(Object.fromEntries(PROXY_ENV_KEYS.map(key => [key, ''])));
|
|
102
|
+
await ensureApplianceProxyPolicy();
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/lib/proxy.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/rpc.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Run Elixir code in the web container via the release `rpc` command.
|
|
3
|
+
*
|
|
4
|
+
* @param code Elixir source evaluated in the running release.
|
|
5
|
+
* @param timeoutMs Optional subprocess budget. When set, it is passed straight
|
|
6
|
+
* to `composeExec` (execa), so a wedged `docker compose exec` is actually
|
|
7
|
+
* KILLED — not merely abandoned by a `Promise.race` that leaves the child
|
|
8
|
+
* alive. Callers that must bound a hung container (e.g. cube-diag) pass this.
|
|
9
|
+
*/
|
|
10
|
+
export declare function rpc(code: string, timeoutMs?: number): Promise<string>;
|
|
2
11
|
export declare function rpcOk(): Promise<boolean>;
|
|
3
12
|
export declare function healthCheck(): Promise<boolean>;
|
|
4
13
|
export interface AppHealthDetail {
|
package/dist/lib/rpc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/lib/rpc.ts"],"names":[],"mappings":"AAgBA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/lib/rpc.ts"],"names":[],"mappings":"AAgBA;;;;;;;;GAQG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM3E;AAED,wBAAsB,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAO9C;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAOpD;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAiI7D;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
package/dist/lib/rpc.js
CHANGED
|
@@ -9,8 +9,20 @@ function withTimeout(promise, ms, label) {
|
|
|
9
9
|
new Promise((_, reject) => setTimeout(() => reject(new Error(`${label} timed out after ${ms}ms`)), ms)),
|
|
10
10
|
]);
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Run Elixir code in the web container via the release `rpc` command.
|
|
14
|
+
*
|
|
15
|
+
* @param code Elixir source evaluated in the running release.
|
|
16
|
+
* @param timeoutMs Optional subprocess budget. When set, it is passed straight
|
|
17
|
+
* to `composeExec` (execa), so a wedged `docker compose exec` is actually
|
|
18
|
+
* KILLED — not merely abandoned by a `Promise.race` that leaves the child
|
|
19
|
+
* alive. Callers that must bound a hung container (e.g. cube-diag) pass this.
|
|
20
|
+
*/
|
|
21
|
+
export async function rpc(code, timeoutMs) {
|
|
22
|
+
const result = await composeExec('web', [RELEASE_BIN, 'rpc', code], {
|
|
23
|
+
pipe: true,
|
|
24
|
+
...(typeof timeoutMs === 'number' ? { timeout: timeoutMs } : {}),
|
|
25
|
+
});
|
|
14
26
|
return result.stdout ?? '';
|
|
15
27
|
}
|
|
16
28
|
export async function rpcOk() {
|
package/dist/lib/rpc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../src/lib/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAElD,wCAAwC;AACxC,SAAS,WAAW,CAAI,OAAmB,EAAE,EAAU,EAAE,KAAa;IACpE,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,OAAO;QACP,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAC5E;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAY;
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../src/lib/rpc.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/version.d.ts
CHANGED
package/dist/lib/version.js
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell command handlers for the cube tree.
|
|
3
|
+
*
|
|
4
|
+
* cube diag [--output <path>] [--capture <secs>] [--monitor <secs>]
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandNode } from '../parser.js';
|
|
7
|
+
export declare function wireCubeHandlers(cubeNode: CommandNode): void;
|
|
8
|
+
//# sourceMappingURL=cube.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cube.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/cube.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAiChD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAO5D"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell command handlers for the cube tree.
|
|
3
|
+
*
|
|
4
|
+
* cube diag [--output <path>] [--capture <secs>] [--monitor <secs>]
|
|
5
|
+
*/
|
|
6
|
+
import { collectCubeDiag } from '../../lib/cube-diag.js';
|
|
7
|
+
import { parseNonNegativeSecs } from '../../utils/parseSecs.js';
|
|
8
|
+
import { statusLine } from '../formatter.js';
|
|
9
|
+
async function cubeDiag(_args, opts, _ctx) {
|
|
10
|
+
// Strict parse FIRST — a junk `--capture`/`--monitor` must fail loudly rather
|
|
11
|
+
// than silently coerce to 0 and make a skipped feature look successful.
|
|
12
|
+
let captureSecs;
|
|
13
|
+
let monitorSecs;
|
|
14
|
+
try {
|
|
15
|
+
captureSecs = parseNonNegativeSecs(opts['--capture'], '--capture');
|
|
16
|
+
monitorSecs = parseNonNegativeSecs(opts['--monitor'], '--monitor');
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
console.log(statusLine('Cube diagnostics', 'fail', err instanceof Error ? err.message : String(err)));
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
console.log(statusLine('Cube diagnostics', 'info', 'collecting (read-only)...'));
|
|
23
|
+
try {
|
|
24
|
+
const path = await collectCubeDiag({
|
|
25
|
+
outputPath: opts['--output'],
|
|
26
|
+
captureSecs,
|
|
27
|
+
monitorSecs,
|
|
28
|
+
});
|
|
29
|
+
console.log(statusLine('Cube diagnostic bundle', 'ok', path));
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
33
|
+
console.log(statusLine('Cube diagnostics', 'fail', message));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function wireCubeHandlers(cubeNode) {
|
|
37
|
+
if (!cubeNode.children)
|
|
38
|
+
return;
|
|
39
|
+
for (const child of cubeNode.children) {
|
|
40
|
+
switch (child.name) {
|
|
41
|
+
case 'diag':
|
|
42
|
+
child.handler = cubeDiag;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=cube.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cube.js","sourceRoot":"","sources":["../../../src/shell/commands/cube.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,KAAK,UAAU,QAAQ,CAAC,KAAe,EAAE,IAA4B,EAAE,IAAkB;IACvF,8EAA8E;IAC9E,wEAAwE;IACxE,IAAI,WAAmB,CAAC;IACxB,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;QACnE,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtG,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,EAAE,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;YAC5B,WAAW;YACX,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,wBAAwB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAqB;IACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO;IAC/B,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM;gBAAE,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;gBAAC,MAAM;QAC/C,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAsDhD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,WA+ezB,CAAC"}
|
|
@@ -11,6 +11,7 @@ import { wireApplianceHardwareHandlers } from './appliance-hardware.js';
|
|
|
11
11
|
import { wireApplianceMigrationHandlers, wireShowApplianceMigrations } from './appliance-migrations.js';
|
|
12
12
|
import { wireSeedHandlers } from './seed.js';
|
|
13
13
|
import { wireSqlMonitorHandlers } from './sql-monitor.js';
|
|
14
|
+
import { wireCubeHandlers } from './cube.js';
|
|
14
15
|
/**
|
|
15
16
|
* Full command tree for the ct shell.
|
|
16
17
|
* Handlers are wired to implementations in show.ts, services.ts, db.ts, config.ts, and system.ts.
|
|
@@ -64,6 +65,22 @@ export const commandTree = {
|
|
|
64
65
|
{ name: 'postgres', description: 'Configure PostgreSQL settings' },
|
|
65
66
|
],
|
|
66
67
|
},
|
|
68
|
+
// ── cube ─────────────────────────────────────────────
|
|
69
|
+
{
|
|
70
|
+
name: 'cube',
|
|
71
|
+
description: 'Cube diagnostics',
|
|
72
|
+
children: [
|
|
73
|
+
{
|
|
74
|
+
name: 'diag',
|
|
75
|
+
description: 'Collect cube DB + NATS + logs bundle',
|
|
76
|
+
options: [
|
|
77
|
+
{ name: '--output', description: 'Destination .log path', hasValue: true },
|
|
78
|
+
{ name: '--capture', description: 'Seconds to live-capture cube.>/alarms.> (0 = off)', hasValue: true },
|
|
79
|
+
{ name: '--monitor', description: 'RPC-poll each cube state/interval every ~5s for N seconds', hasValue: true },
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
},
|
|
67
84
|
// ── database ─────────────────────────────────────────
|
|
68
85
|
{
|
|
69
86
|
name: 'database',
|
|
@@ -482,6 +499,9 @@ const findChild = (name) => commandTree.children?.find(c => c.name === name);
|
|
|
482
499
|
const databaseNode = findChild('database');
|
|
483
500
|
if (databaseNode)
|
|
484
501
|
wireDbHandlers(databaseNode);
|
|
502
|
+
const cubeNode = findChild('cube');
|
|
503
|
+
if (cubeNode)
|
|
504
|
+
wireCubeHandlers(cubeNode);
|
|
485
505
|
const configNode = findChild('config');
|
|
486
506
|
if (configNode)
|
|
487
507
|
wireConfigHandlers(configNode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/shell/commands/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/shell/commands/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strict non-negative-integer-seconds parser for CLI duration options.
|
|
3
|
+
*
|
|
4
|
+
* `Number.parseInt('10foo', 10)` returns `10` and `Number.parseInt('foo')`
|
|
5
|
+
* returns `NaN` — both of which our old `isFinite ? n : 0` fallback silently
|
|
6
|
+
* coerced to `0`, making a bad `--capture`/`--monitor` value look like a
|
|
7
|
+
* successful run that just skipped the feature. This validator REJECTS any
|
|
8
|
+
* value that is not a clean non-negative integer, so the caller can surface an
|
|
9
|
+
* error instead of silently disabling diagnostics.
|
|
10
|
+
*
|
|
11
|
+
* @param raw The raw option string (e.g. from Commander/shell parsing).
|
|
12
|
+
* @param label Option name for the error message (e.g. '--monitor').
|
|
13
|
+
* @returns the parsed non-negative integer number of seconds.
|
|
14
|
+
* @throws Error when `raw` is not a clean non-negative integer.
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseNonNegativeSecs(raw: string | undefined, label: string): number;
|
|
17
|
+
//# sourceMappingURL=parseSecs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseSecs.d.ts","sourceRoot":"","sources":["../../src/utils/parseSecs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAenF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strict non-negative-integer-seconds parser for CLI duration options.
|
|
3
|
+
*
|
|
4
|
+
* `Number.parseInt('10foo', 10)` returns `10` and `Number.parseInt('foo')`
|
|
5
|
+
* returns `NaN` — both of which our old `isFinite ? n : 0` fallback silently
|
|
6
|
+
* coerced to `0`, making a bad `--capture`/`--monitor` value look like a
|
|
7
|
+
* successful run that just skipped the feature. This validator REJECTS any
|
|
8
|
+
* value that is not a clean non-negative integer, so the caller can surface an
|
|
9
|
+
* error instead of silently disabling diagnostics.
|
|
10
|
+
*
|
|
11
|
+
* @param raw The raw option string (e.g. from Commander/shell parsing).
|
|
12
|
+
* @param label Option name for the error message (e.g. '--monitor').
|
|
13
|
+
* @returns the parsed non-negative integer number of seconds.
|
|
14
|
+
* @throws Error when `raw` is not a clean non-negative integer.
|
|
15
|
+
*/
|
|
16
|
+
export function parseNonNegativeSecs(raw, label) {
|
|
17
|
+
const s = (raw ?? '').trim();
|
|
18
|
+
// Absent / empty / whitespace-only means "not requested" → 0 (matches the
|
|
19
|
+
// Commander option default of '0' and the shell's missing-flag case).
|
|
20
|
+
if (s === '')
|
|
21
|
+
return 0;
|
|
22
|
+
// Otherwise accept only a sign-free run of digits — no junk suffix, no float,
|
|
23
|
+
// no leading `+`/`-`, no whitespace gaps.
|
|
24
|
+
if (!/^\d+$/.test(s)) {
|
|
25
|
+
throw new Error(`${label} must be a non-negative integer number of seconds (got '${raw}')`);
|
|
26
|
+
}
|
|
27
|
+
const n = Number.parseInt(s, 10);
|
|
28
|
+
if (!Number.isSafeInteger(n) || n < 0) {
|
|
29
|
+
throw new Error(`${label} must be a non-negative integer number of seconds (got '${raw}')`);
|
|
30
|
+
}
|
|
31
|
+
return n;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=parseSecs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseSecs.js","sourceRoot":"","sources":["../../src/utils/parseSecs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAuB,EAAE,KAAa;IACzE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7B,0EAA0E;IAC1E,sEAAsE;IACtE,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,CAAC;IACvB,8EAA8E;IAC9E,0CAA0C;IAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,2DAA2D,GAAG,IAAI,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,2DAA2D,GAAG,IAAI,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
|