@codiac.io/codiac-cli 1.3.181 → 1.3.183
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 +1 -1
- package/dist/apis/codiac-api/gen/client.d.ts +5 -1
- package/dist/apis/codiac-api/gen/client.js +12 -0
- package/dist/apis/codiac-api/gen/client.js.map +1 -1
- package/dist/apis/codiac-api/gen/contracts/types.gen.d.ts +25 -0
- package/dist/apis/codiac-api/gen/contracts/types.gen.js.map +1 -1
- package/dist/apis/codiac-api/i-client.d.ts +4 -0
- package/dist/apis/codiac-api-nats/gen/client.d.ts +4 -0
- package/dist/apis/codiac-api-nats/gen/client.js +17 -1
- package/dist/apis/codiac-api-nats/gen/client.js.map +1 -1
- package/dist/apis/codiac-api-nats/gen/contracts/types.gen.d.ts +25 -0
- package/dist/apis/codiac-api-nats/gen/contracts/types.gen.js.map +1 -1
- package/dist/apis/codiac-relay/gen/client.d.ts +16 -3
- package/dist/apis/codiac-relay/gen/client.js +58 -1
- package/dist/apis/codiac-relay/gen/client.js.map +1 -1
- package/dist/apis/codiac-relay/gen/contracts/types.gen.d.ts +173 -7
- package/dist/apis/codiac-relay/gen/contracts/types.gen.js.map +1 -1
- package/dist/apis/codiac-relay/i-client.d.ts +8 -0
- package/dist/apis/codiac-relay-nats/gen/client.d.ts +15 -7
- package/dist/apis/codiac-relay-nats/gen/client.js +86 -19
- package/dist/apis/codiac-relay-nats/gen/client.js.map +1 -1
- package/dist/apis/codiac-relay-nats/gen/contracts/types.gen.d.ts +151 -15
- package/dist/apis/codiac-relay-nats/gen/contracts/types.gen.js +4 -4
- package/dist/apis/codiac-relay-nats/gen/contracts/types.gen.js.map +1 -1
- package/dist/apis/codiac-relay-nats/gen/contracts.ng.d.ts +6 -0
- package/dist/apis/codiac-relay-nats/gen/contracts.ng.js +1 -0
- package/dist/apis/codiac-relay-nats/gen/contracts.ng.js.map +1 -1
- package/dist/bootstrapper-for-api-clients.js +14 -2
- package/dist/bootstrapper-for-api-clients.js.map +1 -1
- package/dist/cli-common/built-in-cli-user-input.d.ts +2 -1
- package/dist/cli-common/built-in-cli-user-input.js +52 -1
- package/dist/cli-common/built-in-cli-user-input.js.map +1 -1
- package/dist/cli-common/entities/prompt-choice.d.ts +2 -7
- package/dist/cli-common/mock-ui.d.ts +2 -1
- package/dist/cli-common/mock-ui.js +3 -0
- package/dist/cli-common/mock-ui.js.map +1 -1
- package/dist/codiac-constants.d.ts +3 -0
- package/dist/codiac-constants.js +3 -0
- package/dist/codiac-constants.js.map +1 -1
- package/dist/command-base-enterprise.d.ts +23 -2
- package/dist/command-base-enterprise.js +82 -26
- package/dist/command-base-enterprise.js.map +1 -1
- package/dist/command-base-exec.js +4 -2
- package/dist/command-base-exec.js.map +1 -1
- package/dist/commands/asset/deploy.d.ts +2 -1
- package/dist/commands/asset/deploy.js +3 -2
- package/dist/commands/asset/deploy.js.map +1 -1
- package/dist/commands/asset/list.d.ts +26 -7
- package/dist/commands/asset/list.js +127 -112
- package/dist/commands/asset/list.js.map +1 -1
- package/dist/commands/asset/probe/create.d.ts +26 -5
- package/dist/commands/asset/probe/create.js +182 -164
- package/dist/commands/asset/probe/create.js.map +1 -1
- package/dist/commands/asset/recycle.js +3 -4
- package/dist/commands/asset/recycle.js.map +1 -1
- package/dist/commands/asset/undeploy.d.ts +24 -9
- package/dist/commands/asset/undeploy.js +162 -161
- package/dist/commands/asset/undeploy.js.map +1 -1
- package/dist/commands/asset/view.js +1 -1
- package/dist/commands/asset/view.js.map +1 -1
- package/dist/commands/asset/volume/create.d.ts +24 -13
- package/dist/commands/asset/volume/create.js +153 -158
- package/dist/commands/asset/volume/create.js.map +1 -1
- package/dist/commands/asset/volume/delete.d.ts +21 -7
- package/dist/commands/asset/volume/delete.js +107 -101
- package/dist/commands/asset/volume/delete.js.map +1 -1
- package/dist/commands/asset/volume/list.d.ts +23 -9
- package/dist/commands/asset/volume/list.js +74 -54
- package/dist/commands/asset/volume/list.js.map +1 -1
- package/dist/commands/cabinet/cluster/attach.d.ts +32 -0
- package/dist/commands/cabinet/cluster/attach.js +144 -0
- package/dist/commands/cabinet/cluster/attach.js.map +1 -0
- package/dist/commands/cabinet/create.d.ts +1 -0
- package/dist/commands/cabinet/create.js +5 -1
- package/dist/commands/cabinet/create.js.map +1 -1
- package/dist/commands/cabinet/list.d.ts +27 -6
- package/dist/commands/cabinet/list.js +130 -121
- package/dist/commands/cabinet/list.js.map +1 -1
- package/dist/commands/cabinet/obliterate.d.ts +1 -0
- package/dist/commands/cabinet/obliterate.js +5 -1
- package/dist/commands/cabinet/obliterate.js.map +1 -1
- package/dist/commands/cabinet/restore.d.ts +36 -0
- package/dist/commands/cabinet/restore.js +186 -0
- package/dist/commands/cabinet/restore.js.map +1 -0
- package/dist/commands/cluster/agent/configure.d.ts +47 -0
- package/dist/commands/cluster/agent/configure.js +320 -0
- package/dist/commands/cluster/agent/configure.js.map +1 -0
- package/dist/commands/cluster/agent/install.d.ts +32 -0
- package/dist/commands/cluster/agent/install.js +152 -0
- package/dist/commands/cluster/agent/install.js.map +1 -0
- package/dist/commands/cluster/agent/uninstall.d.ts +29 -0
- package/dist/commands/cluster/agent/uninstall.js +130 -0
- package/dist/commands/cluster/agent/uninstall.js.map +1 -0
- package/dist/commands/cluster/bootstrap.d.ts +50 -0
- package/dist/commands/cluster/bootstrap.js +310 -0
- package/dist/commands/cluster/bootstrap.js.map +1 -0
- package/dist/commands/cluster/connect.d.ts +0 -5
- package/dist/commands/cluster/connect.js +1 -26
- package/dist/commands/cluster/connect.js.map +1 -1
- package/dist/commands/cluster/install.d.ts +45 -0
- package/dist/commands/cluster/install.js +224 -0
- package/dist/commands/cluster/install.js.map +1 -0
- package/dist/commands/cluster/stack/capture.js +0 -2
- package/dist/commands/cluster/stack/capture.js.map +1 -1
- package/dist/commands/cluster/stack/install.d.ts +40 -0
- package/dist/commands/cluster/stack/install.js +196 -0
- package/dist/commands/cluster/stack/install.js.map +1 -0
- package/dist/commands/cluster/start.d.ts +0 -5
- package/dist/commands/cluster/start.js +1 -27
- package/dist/commands/cluster/start.js.map +1 -1
- package/dist/commands/cluster/stop.d.ts +0 -5
- package/dist/commands/cluster/stop.js +1 -27
- package/dist/commands/cluster/stop.js.map +1 -1
- package/dist/commands/config/add.d.ts +9 -11
- package/dist/commands/config/add.js +59 -125
- package/dist/commands/config/add.js.map +1 -1
- package/dist/commands/config/delete.d.ts +22 -11
- package/dist/commands/config/delete.js +28 -83
- package/dist/commands/config/delete.js.map +1 -1
- package/dist/commands/config/deploy.d.ts +26 -8
- package/dist/commands/config/deploy.js +169 -198
- package/dist/commands/config/deploy.js.map +1 -1
- package/dist/commands/config/import.d.ts +27 -22
- package/dist/commands/config/import.js +222 -253
- package/dist/commands/config/import.js.map +1 -1
- package/dist/commands/config/settings/get.d.ts +25 -14
- package/dist/commands/config/settings/get.js +30 -123
- package/dist/commands/config/settings/get.js.map +1 -1
- package/dist/commands/config/view.d.ts +26 -6
- package/dist/commands/config/view.js +112 -95
- package/dist/commands/config/view.js.map +1 -1
- package/dist/commands/csp/logout.d.ts +23 -6
- package/dist/commands/csp/logout.js +86 -63
- package/dist/commands/csp/logout.js.map +1 -1
- package/dist/commands/deploy.d.ts +31 -14
- package/dist/commands/deploy.js +264 -385
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/enterprise/list.d.ts +22 -4
- package/dist/commands/enterprise/list.js +97 -67
- package/dist/commands/enterprise/list.js.map +1 -1
- package/dist/commands/env/add.d.ts +26 -7
- package/dist/commands/env/add.js +182 -179
- package/dist/commands/env/add.js.map +1 -1
- package/dist/commands/environment/cluster/attach.d.ts +1 -0
- package/dist/commands/environment/cluster/attach.js +5 -1
- package/dist/commands/environment/cluster/attach.js.map +1 -1
- package/dist/commands/environment/cluster/detach.d.ts +1 -0
- package/dist/commands/environment/cluster/detach.js +5 -1
- package/dist/commands/environment/cluster/detach.js.map +1 -1
- package/dist/commands/environment/create.d.ts +1 -0
- package/dist/commands/environment/create.js +5 -1
- package/dist/commands/environment/create.js.map +1 -1
- package/dist/commands/environment/delete.d.ts +39 -0
- package/dist/commands/environment/delete.js +135 -0
- package/dist/commands/environment/delete.js.map +1 -0
- package/dist/commands/environment/list.d.ts +28 -9
- package/dist/commands/environment/list.js +128 -167
- package/dist/commands/environment/list.js.map +1 -1
- package/dist/commands/host/map.d.ts +29 -19
- package/dist/commands/host/map.js +263 -324
- package/dist/commands/host/map.js.map +1 -1
- package/dist/commands/imageRegistry/capture.d.ts +12 -11
- package/dist/commands/imageRegistry/capture.js +49 -113
- package/dist/commands/imageRegistry/capture.js.map +1 -1
- package/dist/commands/imageRegistry/forget.d.ts +12 -11
- package/dist/commands/imageRegistry/forget.js +53 -114
- package/dist/commands/imageRegistry/forget.js.map +1 -1
- package/dist/commands/imageRegistry/pullSecret/set.d.ts +21 -11
- package/dist/commands/imageRegistry/pullSecret/set.js +184 -278
- package/dist/commands/imageRegistry/pullSecret/set.js.map +1 -1
- package/dist/commands/imageRegistry/pullSecret/unset.d.ts +19 -11
- package/dist/commands/imageRegistry/pullSecret/unset.js +117 -190
- package/dist/commands/imageRegistry/pullSecret/unset.js.map +1 -1
- package/dist/commands/images/add.d.ts +19 -6
- package/dist/commands/images/add.js +63 -53
- package/dist/commands/images/add.js.map +1 -1
- package/dist/commands/kit/create.d.ts +22 -10
- package/dist/commands/kit/create.js +119 -121
- package/dist/commands/kit/create.js.map +1 -1
- package/dist/commands/logout.d.ts +21 -5
- package/dist/commands/logout.js +44 -25
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/noc/cluster/create.js +22 -10
- package/dist/commands/noc/cluster/create.js.map +1 -1
- package/dist/commands/noc/cluster/credentials-set.d.ts +38 -0
- package/dist/commands/noc/cluster/credentials-set.js +174 -0
- package/dist/commands/noc/cluster/credentials-set.js.map +1 -0
- package/dist/commands/noc/cluster/define.d.ts +46 -0
- package/dist/commands/noc/cluster/define.js +305 -0
- package/dist/commands/noc/cluster/define.js.map +1 -0
- package/dist/commands/noc/cluster/deinit.d.ts +22 -5
- package/dist/commands/noc/cluster/deinit.js +99 -106
- package/dist/commands/noc/cluster/deinit.js.map +1 -1
- package/dist/commands/noc/cluster/forget.js +2 -4
- package/dist/commands/noc/cluster/forget.js.map +1 -1
- package/dist/commands/noc/cluster/grant.d.ts +20 -11
- package/dist/commands/noc/cluster/grant.js +94 -132
- package/dist/commands/noc/cluster/grant.js.map +1 -1
- package/dist/commands/noc/cluster/init.d.ts +25 -7
- package/dist/commands/noc/cluster/init.js +121 -133
- package/dist/commands/noc/cluster/init.js.map +1 -1
- package/dist/commands/noc/cluster/journal.d.ts +0 -5
- package/dist/commands/noc/cluster/journal.js +1 -26
- package/dist/commands/noc/cluster/journal.js.map +1 -1
- package/dist/commands/noc/cluster/list.d.ts +23 -5
- package/dist/commands/noc/cluster/list.js +107 -111
- package/dist/commands/noc/cluster/list.js.map +1 -1
- package/dist/commands/noc/cluster/restore.d.ts +36 -0
- package/dist/commands/noc/cluster/restore.js +196 -0
- package/dist/commands/noc/cluster/restore.js.map +1 -0
- package/dist/commands/portal.d.ts +21 -5
- package/dist/commands/portal.js +37 -36
- package/dist/commands/portal.js.map +1 -1
- package/dist/commands/secretStore/capture.d.ts +13 -11
- package/dist/commands/secretStore/capture.js +63 -123
- package/dist/commands/secretStore/capture.js.map +1 -1
- package/dist/commands/secretStore/forget.d.ts +13 -11
- package/dist/commands/secretStore/forget.js +55 -111
- package/dist/commands/secretStore/forget.js.map +1 -1
- package/dist/commands/shell/init.d.ts +15 -0
- package/dist/commands/shell/init.js +96 -0
- package/dist/commands/shell/init.js.map +1 -0
- package/dist/commands/snapshot/deploy.d.ts +22 -42
- package/dist/commands/snapshot/deploy.js +173 -269
- package/dist/commands/snapshot/deploy.js.map +1 -1
- package/dist/commands/snapshot/list.d.ts +26 -5
- package/dist/commands/snapshot/list.js +116 -109
- package/dist/commands/snapshot/list.js.map +1 -1
- package/dist/commands/tenant/create.d.ts +18 -13
- package/dist/commands/tenant/create.js +69 -69
- package/dist/commands/tenant/create.js.map +1 -1
- package/dist/commands/tenant/switch.d.ts +18 -12
- package/dist/commands/tenant/switch.js +65 -59
- package/dist/commands/tenant/switch.js.map +1 -1
- package/dist/commands/whereami.d.ts +18 -8
- package/dist/commands/whereami.js +67 -102
- package/dist/commands/whereami.js.map +1 -1
- package/dist/commands/whoami.d.ts +19 -3
- package/dist/commands/whoami.js +44 -13
- package/dist/commands/whoami.js.map +1 -1
- package/dist/ops/i-user-input-provider.d.ts +20 -1
- package/dist/ops/i-user-input-provider.js.map +1 -1
- package/dist/ops/test/mock-ui.d.ts +2 -1
- package/dist/ops/test/mock-ui.js +3 -0
- package/dist/ops/test/mock-ui.js.map +1 -1
- package/dist/ops/throwing-user-input-provider.d.ts +2 -1
- package/dist/ops/throwing-user-input-provider.js +3 -0
- package/dist/ops/throwing-user-input-provider.js.map +1 -1
- package/dist/relay/relay-container.js +1 -1
- package/dist/sdk-adapters/other/other-cluster-configurator.d.ts +24 -0
- package/dist/sdk-adapters/other/other-cluster-configurator.js +80 -0
- package/dist/sdk-adapters/other/other-cluster-configurator.js.map +1 -0
- package/dist/sdk-adapters/other/other-login-configurator.d.ts +24 -0
- package/dist/sdk-adapters/other/other-login-configurator.js +68 -0
- package/dist/sdk-adapters/other/other-login-configurator.js.map +1 -0
- package/dist/uilogic/cloud-resource-configurator-factory.js +12 -0
- package/dist/uilogic/cloud-resource-configurator-factory.js.map +1 -1
- package/dist/uilogic/lrp-watcher-predef.d.ts +2 -1
- package/dist/uilogic/lrp-watcher-predef.js +31 -17
- package/dist/uilogic/lrp-watcher-predef.js.map +1 -1
- package/dist/uilogic/lrp-watcher-utils.d.ts +2 -0
- package/dist/uilogic/lrp-watcher-utils.js +2 -0
- package/dist/uilogic/lrp-watcher-utils.js.map +1 -1
- package/dist/uilogic/rootmap-ui-utils.d.ts +18 -1
- package/dist/uilogic/rootmap-ui-utils.js +30 -0
- package/dist/uilogic/rootmap-ui-utils.js.map +1 -1
- package/dist/uilogic/tenant-contextualizer.js +11 -1
- package/dist/uilogic/tenant-contextualizer.js.map +1 -1
- package/dist/user-context-loader.d.ts +12 -7
- package/dist/user-context-loader.js +89 -43
- package/dist/user-context-loader.js.map +1 -1
- package/oclif.manifest.json +3984 -1453
- package/package.json +2 -2
- package/dist/commands/noc/cluster/recreate.d.ts +0 -28
- package/dist/commands/noc/cluster/recreate.js +0 -197
- package/dist/commands/noc/cluster/recreate.js.map +0 -1
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const core_1 = require("@oclif/core");
|
|
5
|
+
const _ = require("lodash");
|
|
6
|
+
const YAML = require("yaml");
|
|
7
|
+
const config_ui_utils_1 = require("../../../uilogic/config-ui-utils");
|
|
8
|
+
const command_base_exec_tenant_1 = require("../../../command-base-exec-tenant");
|
|
9
|
+
const CONFIGURE_MODES = ["overlay", "replace"];
|
|
10
|
+
/** Flat dot-path schema for the known leaf-level settings in CodiacInClusterSettingsOverride.
|
|
11
|
+
* Each key is a dot-path; each value is a human-readable description of that setting.
|
|
12
|
+
* Paths containing `*` represent dictionary keys — the user will be prompted to supply the key name. */
|
|
13
|
+
const AGENT_SETTINGS_PATHS = {
|
|
14
|
+
// Codiac cluster agent chart settings
|
|
15
|
+
"codiac-cluster-agent-chart.fullnameOverride": "Override for the full Helm release name of the cluster agent chart.",
|
|
16
|
+
"codiac-cluster-agent-chart.configMap.create": "Whether to create the agent ConfigMap (true/false).",
|
|
17
|
+
"codiac-cluster-agent-chart.env.*": "An environment variable on the cluster agent container. Replace * with the variable name.",
|
|
18
|
+
"codiac-cluster-agent-chart.keel.policy": "Keel image watch policy (e.g. all, major, minor, patch, force).",
|
|
19
|
+
"codiac-cluster-agent-chart.keel.pollSchedule": "Keel poll schedule as a cron expression (e.g. @every 3m).",
|
|
20
|
+
"codiac-cluster-agent-chart.keel.trigger": "Keel trigger type (e.g. poll).",
|
|
21
|
+
// Keel chart settings
|
|
22
|
+
"keel.image.repository": "Repository for the Keel image.",
|
|
23
|
+
"keel.image.tag": "Tag (version) of the Keel image to run.",
|
|
24
|
+
"keel.image.pullPolicy": "Image pull policy (e.g. Always, IfNotPresent, Never).",
|
|
25
|
+
"keel.helmProvider.enabled": "Whether to enable the Helm provider for Keel (true/false).",
|
|
26
|
+
"keel.helmProvider.version": "Version of the Helm binary for Keel to use.",
|
|
27
|
+
"keel.resources.limits.cpu": "CPU limit for Keel (e.g. 100m).",
|
|
28
|
+
"keel.rbac.enabled": "Whether to enable RBAC for Keel (true/false).",
|
|
29
|
+
"keel.rbac.role.create": "Whether to create the Keel RBAC role (true/false).",
|
|
30
|
+
"keel.rbac.serviceAccount.create": "Whether to create the Keel service account (true/false).",
|
|
31
|
+
"keel.nodeSelector.*": "A node selector label for the Keel pod. Replace * with the label key.",
|
|
32
|
+
};
|
|
33
|
+
class ClusterAgentConfigure extends command_base_exec_tenant_1.CommandBaseExecTenant {
|
|
34
|
+
constructor() {
|
|
35
|
+
// static hidden = true;
|
|
36
|
+
super(...arguments);
|
|
37
|
+
this.adminOnly = true;
|
|
38
|
+
}
|
|
39
|
+
captureArgs() {
|
|
40
|
+
var _a, _b, _c, _d;
|
|
41
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const { args, flags } = yield this.parse(ClusterAgentConfigure);
|
|
43
|
+
let partial = {};
|
|
44
|
+
if (args.cluster)
|
|
45
|
+
partial.cluster = args.cluster;
|
|
46
|
+
if (flags.mode)
|
|
47
|
+
partial.mode = flags.mode;
|
|
48
|
+
// Stdin takes precedence over --settings when both are provided
|
|
49
|
+
const rawSettings = (_b = (_a = this.pipedInput) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : flags.settings;
|
|
50
|
+
if (rawSettings)
|
|
51
|
+
partial.settings = this.parseSettingsString(rawSettings);
|
|
52
|
+
// ---------------------------------------------------------------
|
|
53
|
+
// TODO: move everything from here down into the base class
|
|
54
|
+
// ---------------------------------------------------------------
|
|
55
|
+
const interactionMode = (this.pipedInput) ? config_ui_utils_1.InteractionModes.silent : (_d = (_c = undefined !== null && undefined !== void 0 ? undefined : (flags.echo ? config_ui_utils_1.InteractionModes.echo : undefined)) !== null && _c !== void 0 ? _c : (flags["to-script"] ? config_ui_utils_1.InteractionModes.toscript : undefined)) !== null && _d !== void 0 ? _d : (flags.silent ? config_ui_utils_1.InteractionModes.silent : undefined);
|
|
56
|
+
const takeDefaults = flags['take-defaults'];
|
|
57
|
+
return [partial, interactionMode, takeDefaults];
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
buildCandidate_silently(partial, rootMap) {
|
|
61
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
if (partial.cluster == undefined || _.isEmpty(partial.cluster))
|
|
63
|
+
throw new Error("Must specify cluster.");
|
|
64
|
+
if (partial.mode == undefined)
|
|
65
|
+
partial.mode = "overlay";
|
|
66
|
+
const found = rootMap.clusters.find(c => c.name == partial.cluster);
|
|
67
|
+
if (found == undefined)
|
|
68
|
+
throw new Error(`No cluster found with name [${partial.cluster}].`);
|
|
69
|
+
if (!CONFIGURE_MODES.includes(partial.mode))
|
|
70
|
+
throw new Error(`Invalid mode [${partial.mode}]. Must be one of: ${CONFIGURE_MODES.join(", ")}.`);
|
|
71
|
+
return Object.assign({ cluster: partial.cluster, mode: partial.mode }, (partial.settings ? { settings: partial.settings } : {}));
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
buildCandidate_interactively(partial, takeDefaults, rootMap) {
|
|
75
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
let clusters = rootMap.clusters.map(c => c);
|
|
77
|
+
if (partial.cluster) {
|
|
78
|
+
const found = clusters.find(c => c.name == partial.cluster);
|
|
79
|
+
if (found == undefined) {
|
|
80
|
+
this._ui.userMessage(this._styler.colorWarning(`No cluster found with name [${partial.cluster}]; please select from the list below.`));
|
|
81
|
+
partial.cluster = undefined;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
let selected;
|
|
85
|
+
if (clusters.length == 1 && takeDefaults) {
|
|
86
|
+
selected = clusters[0];
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
selected = yield this.rootMapUtils.promptForCluster(clusters, partial.cluster);
|
|
90
|
+
}
|
|
91
|
+
partial.cluster = selected.name;
|
|
92
|
+
partial.mode = yield this.setMode(partial.mode, takeDefaults);
|
|
93
|
+
// If no settings were provided via stdin or flag, prompt for a single key-value pair
|
|
94
|
+
if (partial.settings == undefined) {
|
|
95
|
+
partial.settings = yield this.promptForSettings(partial.cluster);
|
|
96
|
+
}
|
|
97
|
+
return yield this.buildCandidate_silently(partial, rootMap);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
buildCommandString(candidate, cmd) {
|
|
101
|
+
cmd.push("--silent");
|
|
102
|
+
cmd.push(candidate.cluster);
|
|
103
|
+
cmd.push("--mode", candidate.mode);
|
|
104
|
+
if (candidate.settings)
|
|
105
|
+
cmd.push("--settings", JSON.stringify(candidate.settings));
|
|
106
|
+
return cmd;
|
|
107
|
+
}
|
|
108
|
+
executeTask(candidate) {
|
|
109
|
+
var _a, _b, _c;
|
|
110
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
try {
|
|
112
|
+
const result = yield this.watcher.triggerAndWatch((correlationId, socketId) => this.genRelayClient.Call.clusterAgentConfigure({
|
|
113
|
+
spec: Object.assign({ clusterName: candidate.cluster, mode: candidate.mode }, (candidate.settings ? { settings: candidate.settings } : {})),
|
|
114
|
+
socketId: socketId,
|
|
115
|
+
correlationId: correlationId,
|
|
116
|
+
}));
|
|
117
|
+
if (result.error) {
|
|
118
|
+
const msg = `Error configuring Codiac agent on cluster [${candidate.cluster}]: ${(_a = result.message) !== null && _a !== void 0 ? _a : ""} ${(_b = result.error.message) !== null && _b !== void 0 ? _b : ""}`.trimEnd();
|
|
119
|
+
this.logger.error(msg, result.error);
|
|
120
|
+
this._ui.userMessage(`${this._styler.colorCritical("ERROR!")} ${msg}`);
|
|
121
|
+
}
|
|
122
|
+
else if (!result.success) {
|
|
123
|
+
const msg = `Codiac agent configure failed on cluster [${candidate.cluster}]: ${(_c = result.message) !== null && _c !== void 0 ? _c : ""}`.trimEnd();
|
|
124
|
+
this.logger.notice(msg, result);
|
|
125
|
+
this._ui.userMessage(`${this._styler.colorCritical("FAILED!")} ${msg}`);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
const msg = `${this._styler.colorGood("SUCCESS!")} Codiac agent configured on cluster [${this._styler.hilite(candidate.cluster)}] using ${this._styler.hilite(candidate.mode)} mode.`;
|
|
129
|
+
this.logger.notice(msg, result);
|
|
130
|
+
this._ui.userMessage(msg);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
throw err;
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/** Prompts the user to select a single setting from the known schema and enter its value.
|
|
142
|
+
* Reads the current agent config from the cluster to show existing values alongside each option.
|
|
143
|
+
* Fails gracefully if the config read is unavailable — prompting continues without current values. */
|
|
144
|
+
promptForSettings(clusterName) {
|
|
145
|
+
var _a, _b;
|
|
146
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
// Read current config — fail gracefully so prompting still works without it
|
|
148
|
+
const currentFlat = yield this.fetchAgentConfig(clusterName);
|
|
149
|
+
// Build choices from schema, with current values shown dimly
|
|
150
|
+
const schemaPaths = Object.keys(AGENT_SETTINGS_PATHS);
|
|
151
|
+
const choices = schemaPaths.map(dotPath => {
|
|
152
|
+
const hasWildcard = dotPath.includes("*");
|
|
153
|
+
const currentValue = hasWildcard ? undefined : currentFlat[dotPath];
|
|
154
|
+
const valueSuffix = currentValue != undefined
|
|
155
|
+
? this._styler.dim(` = ${currentValue}`)
|
|
156
|
+
: "";
|
|
157
|
+
const desc = this._styler.dim(` — ${AGENT_SETTINGS_PATHS[dotPath]}`);
|
|
158
|
+
return { name: `${dotPath}${valueSuffix}${desc}`, value: dotPath };
|
|
159
|
+
});
|
|
160
|
+
// Let the user pick a setting path
|
|
161
|
+
let dotPath = (yield this._ui.promptSelect("agentSettingKey", "Select a setting to configure:", choices));
|
|
162
|
+
if (dotPath == undefined)
|
|
163
|
+
return undefined;
|
|
164
|
+
// If the path contains a wildcard, prompt for the actual key name
|
|
165
|
+
if (dotPath.includes("*")) {
|
|
166
|
+
const prefix = dotPath.substring(0, dotPath.lastIndexOf(".*"));
|
|
167
|
+
const keyName = yield this._ui.prompt("agentSettingWildcard", `${prefix}.<key name>:`, true);
|
|
168
|
+
if (!keyName)
|
|
169
|
+
return undefined;
|
|
170
|
+
dotPath = dotPath.replace("*", String(keyName).trim());
|
|
171
|
+
}
|
|
172
|
+
// Show the current value if there is one
|
|
173
|
+
const currentValue = currentFlat[dotPath];
|
|
174
|
+
if (currentValue != undefined) {
|
|
175
|
+
this._ui.userMessage(`Current value: ${this._styler.dim(String(currentValue))}`);
|
|
176
|
+
}
|
|
177
|
+
// Prompt for the value
|
|
178
|
+
const rawValue = yield this._ui.prompt("agentSettingValue", `${dotPath}:`, true, currentValue != undefined ? String(currentValue) : undefined);
|
|
179
|
+
if (rawValue == undefined)
|
|
180
|
+
return undefined;
|
|
181
|
+
// Coerce to boolean if the schema path description mentions true/false
|
|
182
|
+
const description = (_b = AGENT_SETTINGS_PATHS[(_a = Object.keys(AGENT_SETTINGS_PATHS).find(k => k === dotPath || dotPath.match(new RegExp("^" + k.replace(/\./g, "\\.").replace(/\*/g, "[^.]+") + "$")))) !== null && _a !== void 0 ? _a : ""]) !== null && _b !== void 0 ? _b : "";
|
|
183
|
+
const isBooleanSetting = description.includes("true/false");
|
|
184
|
+
const typedValue = isBooleanSetting
|
|
185
|
+
? (rawValue.trim().toLowerCase() === "true")
|
|
186
|
+
: rawValue;
|
|
187
|
+
// Build the nested settings object from the dot-path
|
|
188
|
+
const settings = {};
|
|
189
|
+
_.set(settings, dotPath, typedValue);
|
|
190
|
+
return settings;
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
setMode(userInput, takeDefaults) {
|
|
194
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
195
|
+
let output;
|
|
196
|
+
if (userInput != undefined) {
|
|
197
|
+
if (CONFIGURE_MODES.includes(userInput)) {
|
|
198
|
+
// Valid and explicitly provided — accept it
|
|
199
|
+
output = userInput;
|
|
200
|
+
this._ui.userMessage("Continuing with mode ".concat(this._styler.hilite(output)));
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
// Invalid — warn and fall through to prompt
|
|
204
|
+
this._ui.userMessage(this._styler.colorWarning(`Invalid mode [${userInput}]; please select from the list below.`));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (output == undefined) {
|
|
208
|
+
const defaultMode = "overlay";
|
|
209
|
+
if (takeDefaults) {
|
|
210
|
+
output = defaultMode;
|
|
211
|
+
this._ui.userMessage("Continuing with mode ".concat(this._styler.hilite(output)));
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
const choice = yield this._ui.promptSelect("configureMode", "Select configure mode:", CONFIGURE_MODES.map(m => ({ name: m, value: m })));
|
|
215
|
+
output = choice;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return output;
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
/** Reads the current agent config for the given cluster and returns it as a flattened dot-path dictionary.
|
|
222
|
+
* Fails gracefully — returns an empty object if the read is unavailable. */
|
|
223
|
+
fetchAgentConfig(clusterName) {
|
|
224
|
+
var _a, _b;
|
|
225
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
226
|
+
try {
|
|
227
|
+
const socketId = this.msgClient.isConnected()
|
|
228
|
+
? ((_a = this.msgClient.connectionId) !== null && _a !== void 0 ? _a : yield this.msgClient.connect())
|
|
229
|
+
: yield this.msgClient.connect();
|
|
230
|
+
const readResult = yield this.genRelayClient.Call.clusterAgentConfigRead({
|
|
231
|
+
spec: { clusterName },
|
|
232
|
+
socketId,
|
|
233
|
+
});
|
|
234
|
+
if (readResult.success && readResult.output) {
|
|
235
|
+
return this.flattenObject(readResult.output);
|
|
236
|
+
}
|
|
237
|
+
else if (readResult.message) {
|
|
238
|
+
this.logger.debug(`Could not read current agent config: ${readResult.message}`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
this.logger.debug(`Could not read current agent config: ${(_b = err === null || err === void 0 ? void 0 : err.message) !== null && _b !== void 0 ? _b : err}`);
|
|
243
|
+
}
|
|
244
|
+
return {};
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
/** Parses a JSON or YAML string into a settings override object. Tries JSON first; falls back to YAML. Throws if neither parses successfully. */
|
|
248
|
+
parseSettingsString(input) {
|
|
249
|
+
try {
|
|
250
|
+
return JSON.parse(input);
|
|
251
|
+
}
|
|
252
|
+
catch (_a) {
|
|
253
|
+
// Not valid JSON — try YAML
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
return YAML.parse(input);
|
|
257
|
+
}
|
|
258
|
+
catch (_b) {
|
|
259
|
+
throw new Error(`Settings could not be parsed as JSON or YAML.`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/** Recursively flattens a nested object into a dot-path keyed dictionary.
|
|
263
|
+
* Arrays are omitted — only scalar leaf values are included. */
|
|
264
|
+
flattenObject(obj, prefix = "") {
|
|
265
|
+
const result = {};
|
|
266
|
+
for (const key of Object.keys(obj !== null && obj !== void 0 ? obj : {})) {
|
|
267
|
+
const val = obj[key];
|
|
268
|
+
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
269
|
+
if (val !== null && typeof val === "object" && !Array.isArray(val)) {
|
|
270
|
+
Object.assign(result, this.flattenObject(val, fullKey));
|
|
271
|
+
}
|
|
272
|
+
else if (!Array.isArray(val)) {
|
|
273
|
+
result[fullKey] = val;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return result;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
exports.default = ClusterAgentConfigure;
|
|
280
|
+
ClusterAgentConfigure.description = 'Applies configuration settings to the Codiac agent on the given cluster. Use "overlay" mode (default) to merge settings on top of the existing configuration, or "replace" mode to overwrite the configuration entirely. Settings can be provided as a JSON or YAML string via --settings, piped in via stdin, or entered interactively as a single key-value pair.';
|
|
281
|
+
ClusterAgentConfigure.aliases = [];
|
|
282
|
+
ClusterAgentConfigure.examples = [
|
|
283
|
+
{
|
|
284
|
+
description: 'Patch inline JSON settings into the existing agent configuration.',
|
|
285
|
+
command: '<%= config.bin %> <%= command.id %> my-cluster --settings \'{"keel": {"image": {"repository": "my-repo", "tag": "latest", "pullPolicy": "Always"}}}\'',
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
description: 'Replace the entire agent configuration with inline JSON settings.',
|
|
289
|
+
command: '<%= config.bin %> <%= command.id %> my-cluster --mode replace --settings \'{"keel": {"image": {"repository": "my-repo", "tag": "latest", "pullPolicy": "Always"}}}\'',
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
description: 'Pipe a YAML settings file into the command.',
|
|
293
|
+
command: 'cat mysettings.yaml | <%= config.bin %> <%= command.id %> my-cluster',
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
description: 'Non-interactive (scripted) invocation.',
|
|
297
|
+
command: '<%= config.bin %> <%= command.id %> my-cluster --settings \'{"keel": {"image": {"tag": "v1.2.3"}}}\' --silent',
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
description: 'Renders the equivalent silent command and then executes.',
|
|
301
|
+
command: '<%= config.bin %> <%= command.id %> my-cluster --echo',
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
description: 'Renders the equivalent silent command without executing.',
|
|
305
|
+
command: '<%= config.bin %> <%= command.id %> my-cluster --to-script',
|
|
306
|
+
},
|
|
307
|
+
];
|
|
308
|
+
ClusterAgentConfigure.flags = {
|
|
309
|
+
mode: core_1.Flags.string({ char: 'm', options: CONFIGURE_MODES, description: 'How to apply the provided settings: "overlay" (default) merges the settings on top of the existing configuration; "replace" overwrites the configuration entirely.' }),
|
|
310
|
+
settings: core_1.Flags.string({ description: 'JSON or YAML string of settings to apply to the agent configuration. Alternatively, pipe settings content via stdin.' }),
|
|
311
|
+
// TODO: Move these into the base class
|
|
312
|
+
silent: core_1.Flags.boolean({ exclusive: ["echo", "to-script"], description: 'Non-Interactive mode; executes without any user interaction and fails on any missing or invalid arguments.' }),
|
|
313
|
+
echo: core_1.Flags.boolean({ exclusive: ["to-script", "silent"], description: 'Echo interaction mode; renders the equivalent non-interactive cli command for future use before final execution.' }),
|
|
314
|
+
"to-script": core_1.Flags.boolean({ exclusive: ["echo", "silent"], description: 'Toscript interaction mode; renders the equivalent non-interactive cli command WITHOUT any execution.' }),
|
|
315
|
+
"take-defaults": core_1.Flags.boolean({ exclusive: ["silent"], description: "Prevents prompting for confirmation on parameters that were passed in or were automatically set to default values (Irrelevant in --silent mode). This behavior does NOT apply to scenarios where the command needs to override invalid user input; such cases will always prompt for confirmation." }),
|
|
316
|
+
};
|
|
317
|
+
ClusterAgentConfigure.args = {
|
|
318
|
+
cluster: core_1.Args.string({ description: 'Name of the cluster in Codiac on which to configure the Codiac agent. You can use `cod cluster list` to see available cluster names.' }),
|
|
319
|
+
};
|
|
320
|
+
//# sourceMappingURL=configure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../../src/commands/cluster/agent/configure.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { InteractionModes } from '../../../uilogic/config-ui-utils';
|
|
2
|
+
import { CommandBaseExecTenant } from '../../../command-base-exec-tenant';
|
|
3
|
+
import { RootMap } from '../../../apis/codiac-api/contracts';
|
|
4
|
+
export type IClusterAgentInstallRequest = {
|
|
5
|
+
cluster: string;
|
|
6
|
+
version?: string;
|
|
7
|
+
};
|
|
8
|
+
export default class ClusterAgentInstall extends CommandBaseExecTenant<IClusterAgentInstallRequest> {
|
|
9
|
+
static description: string;
|
|
10
|
+
static aliases: never[];
|
|
11
|
+
static examples: {
|
|
12
|
+
description: string;
|
|
13
|
+
command: string;
|
|
14
|
+
}[];
|
|
15
|
+
static flags: {
|
|
16
|
+
silent: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
17
|
+
echo: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
18
|
+
"to-script": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
19
|
+
"take-defaults": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
20
|
+
version: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
21
|
+
};
|
|
22
|
+
static args: {
|
|
23
|
+
cluster: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
24
|
+
};
|
|
25
|
+
protected adminOnly: boolean;
|
|
26
|
+
captureArgs(): Promise<[Partial<IClusterAgentInstallRequest>, InteractionModes | undefined, boolean]>;
|
|
27
|
+
buildCandidate_silently(partial: Partial<IClusterAgentInstallRequest>, rootMap: RootMap): Promise<IClusterAgentInstallRequest | undefined>;
|
|
28
|
+
buildCandidate_interactively(partial: Partial<IClusterAgentInstallRequest>, takeDefaults: boolean, rootMap: RootMap): Promise<IClusterAgentInstallRequest | undefined>;
|
|
29
|
+
private promptForVersion;
|
|
30
|
+
buildCommandString(candidate: IClusterAgentInstallRequest, cmd: string[]): string[];
|
|
31
|
+
executeTask(candidate: IClusterAgentInstallRequest): Promise<void>;
|
|
32
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const core_1 = require("@oclif/core");
|
|
5
|
+
const _ = require("lodash");
|
|
6
|
+
const config_ui_utils_1 = require("../../../uilogic/config-ui-utils");
|
|
7
|
+
const command_base_exec_tenant_1 = require("../../../command-base-exec-tenant");
|
|
8
|
+
class ClusterAgentInstall extends command_base_exec_tenant_1.CommandBaseExecTenant {
|
|
9
|
+
constructor() {
|
|
10
|
+
// static hidden = true;
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.adminOnly = true;
|
|
13
|
+
}
|
|
14
|
+
captureArgs() {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
17
|
+
const { args, flags } = yield this.parse(ClusterAgentInstall);
|
|
18
|
+
let partial = {};
|
|
19
|
+
if (args.cluster)
|
|
20
|
+
partial.cluster = args.cluster;
|
|
21
|
+
if (flags.version)
|
|
22
|
+
partial.version = flags.version;
|
|
23
|
+
// ---------------------------------------------------------------
|
|
24
|
+
// TODO: move everything from here down into the base class
|
|
25
|
+
// ---------------------------------------------------------------
|
|
26
|
+
const interactionMode = (this.pipedInput) ? config_ui_utils_1.InteractionModes.silent : (_b = (_a = undefined !== null && undefined !== void 0 ? undefined : (flags.echo ? config_ui_utils_1.InteractionModes.echo : undefined)) !== null && _a !== void 0 ? _a : (flags["to-script"] ? config_ui_utils_1.InteractionModes.toscript : undefined)) !== null && _b !== void 0 ? _b : (flags.silent ? config_ui_utils_1.InteractionModes.silent : undefined);
|
|
27
|
+
const takeDefaults = flags['take-defaults'];
|
|
28
|
+
return [partial, interactionMode, takeDefaults];
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
buildCandidate_silently(partial, rootMap) {
|
|
32
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
if (partial.cluster == undefined || _.isEmpty(partial.cluster))
|
|
34
|
+
throw new Error("Must specify cluster.");
|
|
35
|
+
const found = rootMap.clusters.find(c => c.name == partial.cluster);
|
|
36
|
+
if (found == undefined)
|
|
37
|
+
throw new Error(`No cluster found with name [${partial.cluster}].`);
|
|
38
|
+
return Object.assign({ cluster: partial.cluster }, (partial.version ? { version: partial.version } : {}));
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
buildCandidate_interactively(partial, takeDefaults, rootMap) {
|
|
42
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
let clusters = rootMap.clusters.map(c => c);
|
|
44
|
+
if (partial.cluster) {
|
|
45
|
+
const found = clusters.find(c => c.name == partial.cluster);
|
|
46
|
+
if (found == undefined) {
|
|
47
|
+
this._ui.userMessage(this._styler.colorWarning(`No cluster found with name [${partial.cluster}]; please select from the list below.`));
|
|
48
|
+
partial.cluster = undefined;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
let selected;
|
|
52
|
+
if (clusters.length == 1 && takeDefaults) {
|
|
53
|
+
selected = clusters[0];
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
selected = yield this.rootMapUtils.promptForCluster(clusters, partial.cluster);
|
|
57
|
+
}
|
|
58
|
+
partial.cluster = selected.name;
|
|
59
|
+
partial.version = yield this.promptForVersion(partial.version);
|
|
60
|
+
return yield this.buildCandidate_silently(partial, rootMap);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
promptForVersion(userInput) {
|
|
64
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
if (userInput != undefined) {
|
|
66
|
+
this._ui.userMessage(`Installing version: ${this._styler.hilite(userInput)}`);
|
|
67
|
+
return userInput;
|
|
68
|
+
}
|
|
69
|
+
const useLatest = yield this._ui.promptConfirm("useLatestVersion", "Install the latest available version?", true);
|
|
70
|
+
if (useLatest)
|
|
71
|
+
return undefined;
|
|
72
|
+
return yield this._ui.prompt("version", "Enter the chart version to install:");
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
buildCommandString(candidate, cmd) {
|
|
76
|
+
cmd.push("--silent");
|
|
77
|
+
cmd.push(candidate.cluster);
|
|
78
|
+
if (candidate.version)
|
|
79
|
+
cmd.push("--version", candidate.version);
|
|
80
|
+
return cmd;
|
|
81
|
+
}
|
|
82
|
+
executeTask(candidate) {
|
|
83
|
+
var _a, _b, _c;
|
|
84
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
try {
|
|
86
|
+
const result = yield this.watcher.triggerAndWatch((correlationId, socketId) => this.genRelayClient.Call.clusterAgentInstall({
|
|
87
|
+
spec: Object.assign({ clusterName: candidate.cluster }, (candidate.version ? { version: candidate.version } : {})),
|
|
88
|
+
socketId: socketId,
|
|
89
|
+
correlationId: correlationId,
|
|
90
|
+
}));
|
|
91
|
+
if (result.error) {
|
|
92
|
+
const msg = `Error installing Codiac agent on cluster [${candidate.cluster}]: ${(_a = result.message) !== null && _a !== void 0 ? _a : ""} ${(_b = result.error.message) !== null && _b !== void 0 ? _b : ""}`.trimEnd();
|
|
93
|
+
this.logger.error(msg, result.error);
|
|
94
|
+
this._ui.userMessage(`${this._styler.colorCritical("ERROR!")} ${msg}`);
|
|
95
|
+
}
|
|
96
|
+
else if (!result.success) {
|
|
97
|
+
const msg = `Codiac agent install failed on cluster [${candidate.cluster}]: ${(_c = result.message) !== null && _c !== void 0 ? _c : ""}`.trimEnd();
|
|
98
|
+
this.logger.notice(msg, result);
|
|
99
|
+
this._ui.userMessage(`${this._styler.colorCritical("FAILED!")} ${msg}`);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
const msg = `${this._styler.colorGood("SUCCESS!")} Codiac agent installed on cluster [${this._styler.hilite(candidate.cluster)}].`;
|
|
103
|
+
this.logger.notice(msg, result);
|
|
104
|
+
this._ui.userMessage(msg);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
throw err;
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.default = ClusterAgentInstall;
|
|
117
|
+
ClusterAgentInstall.description = 'Installs the Codiac agent on the given cluster, enabling Codiac to manage workloads and configurations on the cluster.';
|
|
118
|
+
ClusterAgentInstall.aliases = [];
|
|
119
|
+
ClusterAgentInstall.examples = [
|
|
120
|
+
{
|
|
121
|
+
description: 'Install the Codiac agent on a cluster.',
|
|
122
|
+
command: '<%= config.bin %> <%= command.id %> my-cluster',
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
description: 'Install a specific version of the Codiac agent.',
|
|
126
|
+
command: '<%= config.bin %> <%= command.id %> my-cluster --version 1.2.3',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
description: 'Non-interactive (scripted) invocation.',
|
|
130
|
+
command: '<%= config.bin %> <%= command.id %> my-cluster --silent',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
description: 'Renders the equivalent silent command and then executes.',
|
|
134
|
+
command: '<%= config.bin %> <%= command.id %> my-cluster --echo',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
description: 'Render the equivalent silent command without executing.',
|
|
138
|
+
command: '<%= config.bin %> <%= command.id %> my-cluster --to-script',
|
|
139
|
+
},
|
|
140
|
+
];
|
|
141
|
+
ClusterAgentInstall.flags = {
|
|
142
|
+
// TODO: Move these into the base class
|
|
143
|
+
silent: core_1.Flags.boolean({ exclusive: ["echo", "to-script"], description: 'Non-Interactive mode; executes without any user interaction and fails on any missing or invalid arguments.' }),
|
|
144
|
+
echo: core_1.Flags.boolean({ exclusive: ["to-script", "silent"], description: 'Echo interaction mode; renders the equivalent non-interactive cli command for future use before final execution.' }),
|
|
145
|
+
"to-script": core_1.Flags.boolean({ exclusive: ["echo", "silent"], description: 'Toscript interaction mode; renders the equivalent non-interactive cli command WITHOUT any execution.' }),
|
|
146
|
+
"take-defaults": core_1.Flags.boolean({ exclusive: ["silent"], description: "Prevents prompting for confirmation on parameters that were passed in or were automatically set to default values (Irrelevant in --silent mode). This behavior does NOT apply to scenarios where the command needs to override invalid user input; such cases will always prompt for confirmation." }),
|
|
147
|
+
version: core_1.Flags.string({ char: 'v', description: 'Version of the Codiac agent helm chart to install. Omit to install the latest available version.' }),
|
|
148
|
+
};
|
|
149
|
+
ClusterAgentInstall.args = {
|
|
150
|
+
cluster: core_1.Args.string({ description: 'Name of the cluster in Codiac on which to install the Codiac agent. You can use `cod cluster list` to see available cluster names.' }),
|
|
151
|
+
};
|
|
152
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../../src/commands/cluster/agent/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { InteractionModes } from '../../../uilogic/config-ui-utils';
|
|
2
|
+
import { CommandBaseExecTenant } from '../../../command-base-exec-tenant';
|
|
3
|
+
import { RootMap } from '../../../apis/codiac-api/contracts';
|
|
4
|
+
export type IClusterAgentUninstallRequest = {
|
|
5
|
+
cluster: string;
|
|
6
|
+
};
|
|
7
|
+
export default class ClusterAgentUninstall extends CommandBaseExecTenant<IClusterAgentUninstallRequest> {
|
|
8
|
+
static description: string;
|
|
9
|
+
static aliases: never[];
|
|
10
|
+
static examples: {
|
|
11
|
+
description: string;
|
|
12
|
+
command: string;
|
|
13
|
+
}[];
|
|
14
|
+
static flags: {
|
|
15
|
+
silent: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
echo: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
17
|
+
"to-script": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
18
|
+
"take-defaults": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
19
|
+
};
|
|
20
|
+
static args: {
|
|
21
|
+
cluster: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
22
|
+
};
|
|
23
|
+
protected adminOnly: boolean;
|
|
24
|
+
captureArgs(): Promise<[Partial<IClusterAgentUninstallRequest>, InteractionModes | undefined, boolean]>;
|
|
25
|
+
buildCandidate_silently(partial: Partial<IClusterAgentUninstallRequest>, rootMap: RootMap): Promise<IClusterAgentUninstallRequest | undefined>;
|
|
26
|
+
buildCandidate_interactively(partial: Partial<IClusterAgentUninstallRequest>, takeDefaults: boolean, rootMap: RootMap): Promise<IClusterAgentUninstallRequest | undefined>;
|
|
27
|
+
buildCommandString(candidate: IClusterAgentUninstallRequest, cmd: string[]): string[];
|
|
28
|
+
executeTask(candidate: IClusterAgentUninstallRequest): Promise<void>;
|
|
29
|
+
}
|