pax8-cta 0.1.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/LICENSE +200 -0
- package/README.md +659 -0
- package/demo-data/solutions/ProductQADemo_1_0_0_2_managed.zip +0 -0
- package/dist/commands/analyze.d.ts +28 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +571 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/auth.d.ts +18 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +171 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config.d.ts +34 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +299 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/demo.d.ts +33 -0
- package/dist/commands/demo.d.ts.map +1 -0
- package/dist/commands/demo.js +362 -0
- package/dist/commands/demo.js.map +1 -0
- package/dist/commands/deploy.d.ts +18 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +1186 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/deployments/helpers.d.ts +68 -0
- package/dist/commands/deployments/helpers.d.ts.map +1 -0
- package/dist/commands/deployments/helpers.js +414 -0
- package/dist/commands/deployments/helpers.js.map +1 -0
- package/dist/commands/deployments/index.d.ts +24 -0
- package/dist/commands/deployments/index.d.ts.map +1 -0
- package/dist/commands/deployments/index.js +47 -0
- package/dist/commands/deployments/index.js.map +1 -0
- package/dist/commands/deployments/list.d.ts +18 -0
- package/dist/commands/deployments/list.d.ts.map +1 -0
- package/dist/commands/deployments/list.js +97 -0
- package/dist/commands/deployments/list.js.map +1 -0
- package/dist/commands/deployments/show.d.ts +18 -0
- package/dist/commands/deployments/show.d.ts.map +1 -0
- package/dist/commands/deployments/show.js +81 -0
- package/dist/commands/deployments/show.js.map +1 -0
- package/dist/commands/deployments/undo.d.ts +18 -0
- package/dist/commands/deployments/undo.d.ts.map +1 -0
- package/dist/commands/deployments/undo.js +295 -0
- package/dist/commands/deployments/undo.js.map +1 -0
- package/dist/commands/export.d.ts +18 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +133 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/import.d.ts +18 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +129 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/init-config.d.ts +26 -0
- package/dist/commands/init-config.d.ts.map +1 -0
- package/dist/commands/init-config.js +123 -0
- package/dist/commands/init-config.js.map +1 -0
- package/dist/commands/init-validation.d.ts +47 -0
- package/dist/commands/init-validation.d.ts.map +1 -0
- package/dist/commands/init-validation.js +339 -0
- package/dist/commands/init-validation.js.map +1 -0
- package/dist/commands/init-wizard.d.ts +25 -0
- package/dist/commands/init-wizard.d.ts.map +1 -0
- package/dist/commands/init-wizard.js +433 -0
- package/dist/commands/init-wizard.js.map +1 -0
- package/dist/commands/init.d.ts +18 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +46 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/resolve-url.d.ts +18 -0
- package/dist/commands/resolve-url.d.ts.map +1 -0
- package/dist/commands/resolve-url.js +126 -0
- package/dist/commands/resolve-url.js.map +1 -0
- package/dist/commands/setup.d.ts +18 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +239 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/solutions/drift-analysis.d.ts +73 -0
- package/dist/commands/solutions/drift-analysis.d.ts.map +1 -0
- package/dist/commands/solutions/drift-analysis.js +416 -0
- package/dist/commands/solutions/drift-analysis.js.map +1 -0
- package/dist/commands/solutions/drift.d.ts +32 -0
- package/dist/commands/solutions/drift.d.ts.map +1 -0
- package/dist/commands/solutions/drift.js +641 -0
- package/dist/commands/solutions/drift.js.map +1 -0
- package/dist/commands/solutions/fix-planner.d.ts +48 -0
- package/dist/commands/solutions/fix-planner.d.ts.map +1 -0
- package/dist/commands/solutions/fix-planner.js +43 -0
- package/dist/commands/solutions/fix-planner.js.map +1 -0
- package/dist/commands/solutions/helpers.d.ts +35 -0
- package/dist/commands/solutions/helpers.d.ts.map +1 -0
- package/dist/commands/solutions/helpers.js +54 -0
- package/dist/commands/solutions/helpers.js.map +1 -0
- package/dist/commands/solutions/index.d.ts +18 -0
- package/dist/commands/solutions/index.d.ts.map +1 -0
- package/dist/commands/solutions/index.js +30 -0
- package/dist/commands/solutions/index.js.map +1 -0
- package/dist/commands/solutions/list.d.ts +18 -0
- package/dist/commands/solutions/list.d.ts.map +1 -0
- package/dist/commands/solutions/list.js +174 -0
- package/dist/commands/solutions/list.js.map +1 -0
- package/dist/commands/solutions/remove.d.ts +18 -0
- package/dist/commands/solutions/remove.d.ts.map +1 -0
- package/dist/commands/solutions/remove.js +137 -0
- package/dist/commands/solutions/remove.js.map +1 -0
- package/dist/commands/solutions/risk-calculator.d.ts +33 -0
- package/dist/commands/solutions/risk-calculator.d.ts.map +1 -0
- package/dist/commands/solutions/risk-calculator.js +79 -0
- package/dist/commands/solutions/risk-calculator.js.map +1 -0
- package/dist/commands/solutions/show.d.ts +18 -0
- package/dist/commands/solutions/show.d.ts.map +1 -0
- package/dist/commands/solutions/show.js +165 -0
- package/dist/commands/solutions/show.js.map +1 -0
- package/dist/commands/status.d.ts +18 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +573 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/telemetry.d.ts +18 -0
- package/dist/commands/telemetry.d.ts.map +1 -0
- package/dist/commands/telemetry.js +85 -0
- package/dist/commands/telemetry.js.map +1 -0
- package/dist/commands/tenants/health.d.ts +18 -0
- package/dist/commands/tenants/health.d.ts.map +1 -0
- package/dist/commands/tenants/health.js +172 -0
- package/dist/commands/tenants/health.js.map +1 -0
- package/dist/commands/tenants/helpers.d.ts +44 -0
- package/dist/commands/tenants/helpers.d.ts.map +1 -0
- package/dist/commands/tenants/helpers.js +72 -0
- package/dist/commands/tenants/helpers.js.map +1 -0
- package/dist/commands/tenants/index.d.ts +19 -0
- package/dist/commands/tenants/index.d.ts.map +1 -0
- package/dist/commands/tenants/index.js +39 -0
- package/dist/commands/tenants/index.js.map +1 -0
- package/dist/commands/tenants/inspect.d.ts +18 -0
- package/dist/commands/tenants/inspect.d.ts.map +1 -0
- package/dist/commands/tenants/inspect.js +176 -0
- package/dist/commands/tenants/inspect.js.map +1 -0
- package/dist/commands/tenants/list.d.ts +18 -0
- package/dist/commands/tenants/list.d.ts.map +1 -0
- package/dist/commands/tenants/list.js +144 -0
- package/dist/commands/tenants/list.js.map +1 -0
- package/dist/commands/tenants/manage.d.ts +20 -0
- package/dist/commands/tenants/manage.d.ts.map +1 -0
- package/dist/commands/tenants/manage.js +206 -0
- package/dist/commands/tenants/manage.js.map +1 -0
- package/dist/commands/tenants/show.d.ts +18 -0
- package/dist/commands/tenants/show.d.ts.map +1 -0
- package/dist/commands/tenants/show.js +191 -0
- package/dist/commands/tenants/show.js.map +1 -0
- package/dist/commands/validate.d.ts +18 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +536 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +258 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth.d.ts +51 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +153 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/banner.d.ts +19 -0
- package/dist/lib/banner.d.ts.map +1 -0
- package/dist/lib/banner.js +78 -0
- package/dist/lib/banner.js.map +1 -0
- package/dist/lib/command-wrapper.d.ts +56 -0
- package/dist/lib/command-wrapper.d.ts.map +1 -0
- package/dist/lib/command-wrapper.js +71 -0
- package/dist/lib/command-wrapper.js.map +1 -0
- package/dist/lib/credentials.d.ts +56 -0
- package/dist/lib/credentials.d.ts.map +1 -0
- package/dist/lib/credentials.js +146 -0
- package/dist/lib/credentials.js.map +1 -0
- package/dist/lib/demo-banner.d.ts +15 -0
- package/dist/lib/demo-banner.d.ts.map +1 -0
- package/dist/lib/demo-banner.js +33 -0
- package/dist/lib/demo-banner.js.map +1 -0
- package/dist/lib/error-handler.d.ts +51 -0
- package/dist/lib/error-handler.d.ts.map +1 -0
- package/dist/lib/error-handler.js +458 -0
- package/dist/lib/error-handler.js.map +1 -0
- package/dist/lib/errors.d.ts +61 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +168 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/formatters.d.ts +55 -0
- package/dist/lib/formatters.d.ts.map +1 -0
- package/dist/lib/formatters.js +163 -0
- package/dist/lib/formatters.js.map +1 -0
- package/dist/lib/graph-client.d.ts +74 -0
- package/dist/lib/graph-client.d.ts.map +1 -0
- package/dist/lib/graph-client.js +231 -0
- package/dist/lib/graph-client.js.map +1 -0
- package/dist/lib/input.d.ts +22 -0
- package/dist/lib/input.d.ts.map +1 -0
- package/dist/lib/input.js +120 -0
- package/dist/lib/input.js.map +1 -0
- package/dist/lib/interactive-wizard.d.ts +26 -0
- package/dist/lib/interactive-wizard.d.ts.map +1 -0
- package/dist/lib/interactive-wizard.js +550 -0
- package/dist/lib/interactive-wizard.js.map +1 -0
- package/dist/lib/oss-surface.d.ts +21 -0
- package/dist/lib/oss-surface.d.ts.map +1 -0
- package/dist/lib/oss-surface.js +29 -0
- package/dist/lib/oss-surface.js.map +1 -0
- package/dist/lib/output.d.ts +74 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +156 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/picker.d.ts +75 -0
- package/dist/lib/picker.d.ts.map +1 -0
- package/dist/lib/picker.js +115 -0
- package/dist/lib/picker.js.map +1 -0
- package/dist/lib/repl.d.ts +19 -0
- package/dist/lib/repl.d.ts.map +1 -0
- package/dist/lib/repl.js +158 -0
- package/dist/lib/repl.js.map +1 -0
- package/dist/lib/spinner.d.ts +41 -0
- package/dist/lib/spinner.d.ts.map +1 -0
- package/dist/lib/spinner.js +126 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/telemetry.d.ts +96 -0
- package/dist/lib/telemetry.d.ts.map +1 -0
- package/dist/lib/telemetry.js +367 -0
- package/dist/lib/telemetry.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Pax8, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Command } from "commander";
|
|
17
|
+
import { listCommand } from "./list.js";
|
|
18
|
+
import { showCommand } from "./show.js";
|
|
19
|
+
import { undoCommand } from "./undo.js";
|
|
20
|
+
/**
|
|
21
|
+
* Deployments command - manage and view deployments
|
|
22
|
+
*
|
|
23
|
+
* Follows the resource-action pattern: `pax8-cta deployments <action>`
|
|
24
|
+
*/
|
|
25
|
+
export const deploymentsCommand = new Command("deployments")
|
|
26
|
+
.description("View deployment history")
|
|
27
|
+
.addHelpText("after", `
|
|
28
|
+
Examples:
|
|
29
|
+
deployments list List recent deployments
|
|
30
|
+
deployments show dep_abc123 View deployment details
|
|
31
|
+
deployments list -s failed --since 7d Show failed deployments from last 7 days
|
|
32
|
+
deployments undo dep_abc123 Roll back a deployment (asks for confirmation)
|
|
33
|
+
deployments undo dep_abc123 --dry-run Preview what an undo would change
|
|
34
|
+
deployments undo dep_abc123 -y --json Skip prompt, machine-readable output
|
|
35
|
+
|
|
36
|
+
Note:
|
|
37
|
+
Queue management actions (cancel, retry, watch) are not available in the open-source CLI.
|
|
38
|
+
Real-mode undo is wired through @pax8-cta/core's RollbackService; it requires
|
|
39
|
+
pre-deploy snapshots to exist (Phase 2 of #418). Demo mode supports undo end-to-end.
|
|
40
|
+
`);
|
|
41
|
+
// Register subcommands
|
|
42
|
+
deploymentsCommand.addCommand(listCommand);
|
|
43
|
+
deploymentsCommand.addCommand(showCommand);
|
|
44
|
+
deploymentsCommand.addCommand(undoCommand);
|
|
45
|
+
// Re-export helpers for backwards compatibility
|
|
46
|
+
export { getDeployments, getDeploymentById, filterDeployments, outputDeploymentDetails, } from "./helpers.js";
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/deployments/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;KACzD,WAAW,CAAC,yBAAyB,CAAC;KACtC,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;CAaH,CACE,CAAC;AAEJ,uBAAuB;AACvB,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC3C,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC3C,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAE3C,gDAAgD;AAChD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Pax8, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Command } from "commander";
|
|
17
|
+
export declare const listCommand: Command;
|
|
18
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/deployments/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,eAAO,MAAM,WAAW,SAkFpB,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Pax8, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Command } from "commander";
|
|
17
|
+
import { createSpinner } from "../../lib/spinner.js";
|
|
18
|
+
import { withDemoMode } from "../../lib/command-wrapper.js";
|
|
19
|
+
import { getDeployments, filterDeployments, getDeploymentHistory, filterHistory, outputJson, outputTable, outputHistoryJson, outputHistoryTable, resolveDeploymentFormat, } from "./helpers.js";
|
|
20
|
+
import { handleCommandError } from "../../lib/errors.js";
|
|
21
|
+
import { output } from "../../lib/output.js";
|
|
22
|
+
export const listCommand = new Command("list")
|
|
23
|
+
.alias("ls")
|
|
24
|
+
.description("List solution import history across your environments")
|
|
25
|
+
.option("-s, --status <status>", "Filter by status (completed, failed, in_progress)")
|
|
26
|
+
.option("-t, --tenant <name>", "Filter by tenant name")
|
|
27
|
+
.option("-a, --agent <name>", "Filter by solution name")
|
|
28
|
+
.option("-l, --limit <n>", "Limit number of results", "20")
|
|
29
|
+
.option("-o, --offset <n>", "Skip first N results", "0")
|
|
30
|
+
.option("--since <date>", "Show history since date (ISO format or relative like '7d', '24h')")
|
|
31
|
+
.option("-c, --config <path>", "Path to config file", "./config/tenants.yaml")
|
|
32
|
+
.option("--json", "Output as JSON")
|
|
33
|
+
.option("--quiet", "Suppress all output")
|
|
34
|
+
.addHelpText("after", `
|
|
35
|
+
Examples:
|
|
36
|
+
deployments list Show recent import history
|
|
37
|
+
deployments list -t Pax8CTA-Test2 History for a specific tenant
|
|
38
|
+
deployments list -a TestDeploy History for a specific solution
|
|
39
|
+
deployments list --since 7d Imports in the last 7 days
|
|
40
|
+
deployments list --ids-only | xargs -I{} deployments show {}
|
|
41
|
+
`)
|
|
42
|
+
.action(async (options, cmd) => {
|
|
43
|
+
// Merge local options with global flags (e.g. --ids-only from root program)
|
|
44
|
+
const opts = { ...options, ...cmd.optsWithGlobals() };
|
|
45
|
+
const spinner = createSpinner("Loading deployment history...").start();
|
|
46
|
+
try {
|
|
47
|
+
await withDemoMode(async () => {
|
|
48
|
+
// Demo mode — use mock data
|
|
49
|
+
let deployments = await getDeployments(opts);
|
|
50
|
+
deployments = filterDeployments(deployments, opts);
|
|
51
|
+
// parseInt(undefined, 10) is NaN, and slice(NaN, NaN+limit) returns
|
|
52
|
+
// []. The Commander option defaults ("20"/"0") cover normal CLI
|
|
53
|
+
// invocations, but REPL state-resets and programmatic callers can
|
|
54
|
+
// leave these undefined — fall back to safe numbers.
|
|
55
|
+
const limit = Number.parseInt(opts.limit, 10) || 20;
|
|
56
|
+
const offset = Number.parseInt(opts.offset, 10) || 0;
|
|
57
|
+
const total = deployments.length;
|
|
58
|
+
deployments = deployments.slice(offset, offset + limit);
|
|
59
|
+
spinner.stop();
|
|
60
|
+
const fmt = resolveDeploymentFormat(opts);
|
|
61
|
+
if (fmt === "ids-only") {
|
|
62
|
+
// id is the deployment job ID — useful for `deployments show <id>` pipelines
|
|
63
|
+
output(deployments, { format: "ids-only", columns: [], idKey: "id" });
|
|
64
|
+
}
|
|
65
|
+
else if (fmt === "json") {
|
|
66
|
+
outputJson(deployments, total, limit, offset);
|
|
67
|
+
}
|
|
68
|
+
else if (fmt !== "quiet") {
|
|
69
|
+
outputTable(deployments, total, limit, offset);
|
|
70
|
+
}
|
|
71
|
+
}, async () => {
|
|
72
|
+
// Production mode — query Dataverse solution history
|
|
73
|
+
let entries = await getDeploymentHistory(opts);
|
|
74
|
+
entries = filterHistory(entries, opts);
|
|
75
|
+
const limit = Number.parseInt(opts.limit, 10) || 20;
|
|
76
|
+
const offset = Number.parseInt(opts.offset, 10) || 0;
|
|
77
|
+
const total = entries.length;
|
|
78
|
+
entries = entries.slice(offset, offset + limit);
|
|
79
|
+
spinner.stop();
|
|
80
|
+
const fmt = resolveDeploymentFormat(opts);
|
|
81
|
+
if (fmt === "ids-only") {
|
|
82
|
+
// id is the msdyn_solutionhistoryid — useful for querying specific history records
|
|
83
|
+
output(entries, { format: "ids-only", columns: [], idKey: "id" });
|
|
84
|
+
}
|
|
85
|
+
else if (fmt === "json") {
|
|
86
|
+
outputHistoryJson(entries, total, limit, offset);
|
|
87
|
+
}
|
|
88
|
+
else if (fmt !== "quiet") {
|
|
89
|
+
outputHistoryTable(entries, total, limit, offset);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
handleCommandError(error, spinner, "Failed to load deployment history");
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/deployments/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GAExB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,uBAAuB,EAAE,mDAAmD,CAAC;KACpF,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;KACtD,MAAM,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;KACvD,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,EAAE,IAAI,CAAC;KAC1D,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,GAAG,CAAC;KACvD,MAAM,CAAC,gBAAgB,EAAE,mEAAmE,CAAC;KAC7F,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,uBAAuB,CAAC;KAC7E,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC;KACxC,WAAW,CACV,OAAO,EACP;;;;;;;CAOH,CACE;KACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;IAC7B,4EAA4E;IAC5E,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,aAAa,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;IAEvE,IAAI,CAAC;QACH,MAAM,YAAY,CAChB,KAAK,IAAI,EAAE;YACT,4BAA4B;YAC5B,IAAI,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;YAC7C,WAAW,GAAG,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAEnD,oEAAoE;YACpE,gEAAgE;YAChE,kEAAkE;YAClE,qDAAqD;YACrD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;YACjC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;YAExD,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,MAAM,GAAG,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBACvB,6EAA6E;gBAC7E,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC;iBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBAC1B,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC3B,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,EACD,KAAK,IAAI,EAAE;YACT,qDAAqD;YACrD,IAAI,OAAO,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAEvC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;YAC7B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;YAEhD,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,MAAM,GAAG,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBACvB,mFAAmF;gBACnF,MAAM,CAAC,OAAyB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtF,CAAC;iBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBAC1B,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACnD,CAAC;iBAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC3B,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACpD,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,mCAAmC,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Pax8, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Command } from "commander";
|
|
17
|
+
export declare const showCommand: Command;
|
|
18
|
+
//# sourceMappingURL=show.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/deployments/show.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,WAAW,SAmEpB,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Pax8, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Command } from "commander";
|
|
17
|
+
import chalk from "chalk";
|
|
18
|
+
import { createSpinner } from "../../lib/spinner.js";
|
|
19
|
+
import { demoDeploymentStore } from "@pax8-cta/core";
|
|
20
|
+
import { withDemoMode } from "../../lib/command-wrapper.js";
|
|
21
|
+
import { getDeploymentById, getDeploymentHistoryById, outputDeploymentDetails, outputHistoryDetails, resolveDeploymentFormat, } from "./helpers.js";
|
|
22
|
+
import { handleCommandError } from "../../lib/errors.js";
|
|
23
|
+
export const showCommand = new Command("show")
|
|
24
|
+
.argument("<id>", "Deployment or history entry ID")
|
|
25
|
+
.description("Show details of a specific deployment")
|
|
26
|
+
.option("-c, --config <path>", "Path to config file", "./config/tenants.yaml")
|
|
27
|
+
.option("--json", "Output as JSON")
|
|
28
|
+
.option("--quiet", "Suppress all output")
|
|
29
|
+
.addHelpText("after", `
|
|
30
|
+
Examples:
|
|
31
|
+
deployments show abc-123 Show details for a deployment
|
|
32
|
+
deployments show abc-123 --json Output as JSON
|
|
33
|
+
`)
|
|
34
|
+
.action(async (id, options) => {
|
|
35
|
+
const spinner = createSpinner("Loading deployment...").start();
|
|
36
|
+
try {
|
|
37
|
+
await withDemoMode(async () => {
|
|
38
|
+
const deployment = await getDeploymentById(id);
|
|
39
|
+
if (!deployment) {
|
|
40
|
+
spinner.fail(chalk.yellow(`Deployment '${id}' not found`));
|
|
41
|
+
console.log();
|
|
42
|
+
console.log(chalk.gray("Available demo deployments:"));
|
|
43
|
+
// Pull the first few from the in-process store so freshly-recorded
|
|
44
|
+
// demo deploys also appear in the "did you mean" suggestions.
|
|
45
|
+
const history = demoDeploymentStore.list().slice(0, 5);
|
|
46
|
+
history.forEach((d) => {
|
|
47
|
+
console.log(chalk.gray(` - ${chalk.cyan(d.id)} (${d.solutionName})`));
|
|
48
|
+
});
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
spinner.stop();
|
|
52
|
+
const fmt = resolveDeploymentFormat(options);
|
|
53
|
+
if (fmt === "json") {
|
|
54
|
+
console.log(JSON.stringify(deployment, null, 2));
|
|
55
|
+
}
|
|
56
|
+
else if (fmt !== "quiet") {
|
|
57
|
+
outputDeploymentDetails(deployment);
|
|
58
|
+
}
|
|
59
|
+
}, async () => {
|
|
60
|
+
// Production mode
|
|
61
|
+
const entry = await getDeploymentHistoryById(id, options);
|
|
62
|
+
if (!entry) {
|
|
63
|
+
spinner.fail(chalk.yellow(`History entry '${id}' not found`));
|
|
64
|
+
console.log(chalk.gray("\nUse 'deployments list' to see available entries."));
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
spinner.stop();
|
|
68
|
+
const fmt = resolveDeploymentFormat(options);
|
|
69
|
+
if (fmt === "json") {
|
|
70
|
+
console.log(JSON.stringify(entry, null, 2));
|
|
71
|
+
}
|
|
72
|
+
else if (fmt !== "quiet") {
|
|
73
|
+
outputHistoryDetails(entry);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
handleCommandError(error, spinner, "Failed to load deployment");
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/deployments/show.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Pax8, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Command } from "commander";
|
|
17
|
+
export declare const undoCommand: Command;
|
|
18
|
+
//# sourceMappingURL=undo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undo.d.ts","sourceRoot":"","sources":["../../../src/commands/deployments/undo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0CpC,eAAO,MAAM,WAAW,SAwBpB,CAAC"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Pax8, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Command } from "commander";
|
|
17
|
+
import chalk from "chalk";
|
|
18
|
+
import { demoDeploymentStore, RollbackService } from "@pax8-cta/core";
|
|
19
|
+
import { createSpinner } from "../../lib/spinner.js";
|
|
20
|
+
import { withDemoMode, isDemo } from "../../lib/command-wrapper.js";
|
|
21
|
+
import { CliError, handleCommandError } from "../../lib/errors.js";
|
|
22
|
+
import { confirm, isInteractivePrompt } from "../../lib/picker.js";
|
|
23
|
+
import { getDeploymentById, resolveDeploymentFormat } from "./helpers.js";
|
|
24
|
+
export const undoCommand = new Command("undo")
|
|
25
|
+
.argument("<id>", "Deployment ID to roll back")
|
|
26
|
+
.description("Roll back a previous deployment to its prior solution version")
|
|
27
|
+
.option("-c, --config <path>", "Path to config file", "./config/tenants.yaml")
|
|
28
|
+
.option("--dry-run", "Show what would be undone without making changes")
|
|
29
|
+
.option("-y, --yes", "Skip confirmation prompt")
|
|
30
|
+
.option("--json", "Output as JSON")
|
|
31
|
+
.option("--quiet", "Suppress all output")
|
|
32
|
+
.addHelpText("after", `
|
|
33
|
+
Examples:
|
|
34
|
+
deployments undo dep-demo-123 Undo a deployment after confirming
|
|
35
|
+
deployments undo dep-demo-123 --dry-run Preview without making changes
|
|
36
|
+
deployments undo dep-demo-123 -y --json Skip prompt, JSON output
|
|
37
|
+
`)
|
|
38
|
+
.action(async (id, options, cmd) => {
|
|
39
|
+
const opts = { ...options, ...cmd.optsWithGlobals() };
|
|
40
|
+
await withDemoMode(() => demoUndo(id, opts), () => realUndo(id, opts)).catch((error) => handleCommandError(error, undefined, "Undo failed"));
|
|
41
|
+
});
|
|
42
|
+
/**
|
|
43
|
+
* Build a "did you mean..." suggestion from the most recent demo deployments.
|
|
44
|
+
* Helpful when the user typo-fingered the ID; quiet otherwise.
|
|
45
|
+
*/
|
|
46
|
+
function buildDidYouMeanHint() {
|
|
47
|
+
if (!isDemo()) {
|
|
48
|
+
// Real-mode hint is intentionally minimal — we don't have a cheap way to
|
|
49
|
+
// list recent deployments without GDAP credentials. Point at `list`.
|
|
50
|
+
return "Run 'pax8-cta deployments list' to see available deployments.";
|
|
51
|
+
}
|
|
52
|
+
const recent = demoDeploymentStore
|
|
53
|
+
.list()
|
|
54
|
+
.filter((d) => !d.rollbackFromDeploymentId) // skip prior undo entries
|
|
55
|
+
.slice(0, 5);
|
|
56
|
+
if (recent.length === 0) {
|
|
57
|
+
return "Run 'pax8-cta deployments list' to see available deployments.";
|
|
58
|
+
}
|
|
59
|
+
const lines = recent.map((d) => ` - ${d.id} (${d.solutionName})`);
|
|
60
|
+
return (`Did you mean one of these?\n${lines.join("\n")}\n\n` +
|
|
61
|
+
`Run 'pax8-cta deployments list' to see all available deployments.`);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Decide the overall envelope status from per-tenant results.
|
|
65
|
+
*/
|
|
66
|
+
function aggregateStatus(results) {
|
|
67
|
+
const allOk = results.every((r) => r.status === "rolled-back");
|
|
68
|
+
if (allOk)
|
|
69
|
+
return "rolled-back";
|
|
70
|
+
const allFailed = results.every((r) => r.status !== "rolled-back");
|
|
71
|
+
if (allFailed)
|
|
72
|
+
return "failed";
|
|
73
|
+
return "partial";
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Map the demo-mode in-memory undo back to the public JSON envelope.
|
|
77
|
+
*/
|
|
78
|
+
function envelopeFor(deploymentId, results) {
|
|
79
|
+
return {
|
|
80
|
+
deploymentId,
|
|
81
|
+
status: aggregateStatus(results),
|
|
82
|
+
tenants: results.map((r) => ({
|
|
83
|
+
tenantName: r.tenantName,
|
|
84
|
+
status: r.status,
|
|
85
|
+
...(r.error ? { error: r.error } : {}),
|
|
86
|
+
})),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async function demoUndo(id, options) {
|
|
90
|
+
const original = await getDeploymentById(id);
|
|
91
|
+
if (!original) {
|
|
92
|
+
throw new CliError(`Deployment '${id}' not found.\n${buildDidYouMeanHint()}`);
|
|
93
|
+
}
|
|
94
|
+
// Reject undo of an undo: the second-level rollback is meaningless and
|
|
95
|
+
// confusing to surface in the audit trail.
|
|
96
|
+
if (original.rollbackFromDeploymentId) {
|
|
97
|
+
throw new CliError(`Deployment '${id}' is itself an undo (of ${original.rollbackFromDeploymentId}). ` +
|
|
98
|
+
`It cannot be rolled back again.`);
|
|
99
|
+
}
|
|
100
|
+
// Honor the explicit `canRollback: false` flag set on demo records.
|
|
101
|
+
// This is the cleanest way to surface "this deployment cannot be undone"
|
|
102
|
+
// (e.g. failed deploys with no successful tenants, very old records).
|
|
103
|
+
if (original.canRollback === false) {
|
|
104
|
+
throw new CliError(`Deployment '${id}' is not eligible for rollback ` +
|
|
105
|
+
`(canRollback: false). This is typically because the deploy already ` +
|
|
106
|
+
`failed, was already rolled back, or is too old for a snapshot to ` +
|
|
107
|
+
`exist. Run 'pax8-cta deployments show ${id}' for details.`);
|
|
108
|
+
}
|
|
109
|
+
const succeededTenants = original.tenantResults.filter((r) => r.status === "completed");
|
|
110
|
+
if (succeededTenants.length === 0) {
|
|
111
|
+
throw new CliError(`Deployment '${id}' has no successfully-deployed tenants to roll back. ` +
|
|
112
|
+
`Run 'pax8-cta deployments show ${id}' to inspect per-tenant status.`);
|
|
113
|
+
}
|
|
114
|
+
const fmt = resolveDeploymentFormat(options);
|
|
115
|
+
const verbose = fmt !== "json" && fmt !== "quiet";
|
|
116
|
+
if (verbose) {
|
|
117
|
+
console.log();
|
|
118
|
+
console.log(chalk.bold("Rollback Preview"));
|
|
119
|
+
console.log(` Original deployment: ${chalk.cyan(original.id)}`);
|
|
120
|
+
console.log(` Solution: ${original.solutionName} ${chalk.gray(`(v${original.solutionVersion ?? "?"})`)}`);
|
|
121
|
+
console.log(` Tenants to undo: ${succeededTenants.length} of ${original.tenantResults.length}`);
|
|
122
|
+
console.log();
|
|
123
|
+
succeededTenants.forEach((t) => {
|
|
124
|
+
console.log(` ${chalk.gray("•")} ${t.tenantName}`);
|
|
125
|
+
});
|
|
126
|
+
console.log();
|
|
127
|
+
}
|
|
128
|
+
// Dry-run path: emit a preview-shaped envelope (or human text) and bail
|
|
129
|
+
// before mutating the store.
|
|
130
|
+
if (options.dryRun) {
|
|
131
|
+
const previewResults = succeededTenants.map((t) => ({
|
|
132
|
+
tenantId: t.tenantId,
|
|
133
|
+
tenantName: t.tenantName,
|
|
134
|
+
status: "rolled-back",
|
|
135
|
+
}));
|
|
136
|
+
if (fmt === "json") {
|
|
137
|
+
const envelope = {
|
|
138
|
+
...envelopeFor(original.id, previewResults),
|
|
139
|
+
dryRun: true,
|
|
140
|
+
};
|
|
141
|
+
console.log(JSON.stringify(envelope, null, 2));
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (verbose) {
|
|
145
|
+
console.log(chalk.gray("(dry run — no changes were made)"));
|
|
146
|
+
}
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
// Confirmation gate: only when stdin/stdout are both real TTYs and the
|
|
150
|
+
// caller didn't pass `-y`. Pipelined / scripted invocations skip this.
|
|
151
|
+
if (!options.yes && isInteractivePrompt(options)) {
|
|
152
|
+
const proceed = await confirm(chalk.bold(`Roll back deployment ${original.id} (${original.solutionName} v${original.solutionVersion ?? "?"}) on ${succeededTenants.length} tenant${succeededTenants.length === 1 ? "" : "s"}? [y/N] `));
|
|
153
|
+
if (!proceed) {
|
|
154
|
+
if (verbose) {
|
|
155
|
+
console.log(chalk.gray("Cancelled."));
|
|
156
|
+
}
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Per-tenant simulated rollback. Spins for visual fidelity in TTY mode;
|
|
161
|
+
// silent and synchronous-feeling in --json/--quiet.
|
|
162
|
+
const undoStartedAt = new Date();
|
|
163
|
+
const undoResults = [];
|
|
164
|
+
const tenantJobResults = [];
|
|
165
|
+
for (const tenant of succeededTenants) {
|
|
166
|
+
const sp = verbose ? createSpinner(`Rolling back ${tenant.tenantName}...`).start() : null;
|
|
167
|
+
await new Promise((r) => setTimeout(r, 250));
|
|
168
|
+
sp?.succeed(chalk.green(`${tenant.tenantName}: restored prior version`));
|
|
169
|
+
undoResults.push({
|
|
170
|
+
tenantId: tenant.tenantId,
|
|
171
|
+
tenantName: tenant.tenantName,
|
|
172
|
+
status: "rolled-back",
|
|
173
|
+
});
|
|
174
|
+
tenantJobResults.push({
|
|
175
|
+
tenantId: tenant.tenantId,
|
|
176
|
+
tenantName: tenant.tenantName,
|
|
177
|
+
status: "completed",
|
|
178
|
+
startedAt: new Date(undoStartedAt.getTime() + tenantJobResults.length * 100).toISOString(),
|
|
179
|
+
completedAt: new Date(undoStartedAt.getTime() + (tenantJobResults.length + 1) * 350).toISOString(),
|
|
180
|
+
attemptNumber: 1,
|
|
181
|
+
previousVersion: original.solutionVersion,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
const undoCompletedAt = new Date(undoStartedAt.getTime() + undoResults.length * 400);
|
|
185
|
+
const undoJob = {
|
|
186
|
+
id: `dep-demo-undo-${Date.now().toString(36)}`,
|
|
187
|
+
solutionPath: original.solutionPath,
|
|
188
|
+
solutionName: original.solutionName,
|
|
189
|
+
solutionVersion: original.solutionVersion,
|
|
190
|
+
status: "completed",
|
|
191
|
+
createdAt: undoStartedAt.toISOString(),
|
|
192
|
+
updatedAt: undoCompletedAt.toISOString(),
|
|
193
|
+
startedAt: undoStartedAt.toISOString(),
|
|
194
|
+
completedAt: undoCompletedAt.toISOString(),
|
|
195
|
+
tenantResults: tenantJobResults,
|
|
196
|
+
totalTenants: tenantJobResults.length,
|
|
197
|
+
completedTenants: tenantJobResults.length,
|
|
198
|
+
failedTenants: 0,
|
|
199
|
+
triggeredBy: "cli",
|
|
200
|
+
durationMs: tenantJobResults.length * 400,
|
|
201
|
+
rollbackFromDeploymentId: original.id,
|
|
202
|
+
canRollback: false,
|
|
203
|
+
};
|
|
204
|
+
demoDeploymentStore.record(undoJob);
|
|
205
|
+
// Mark the original as no-longer-rollback-able so a second `undo` on the
|
|
206
|
+
// same id surfaces a sensible error rather than silently re-rolling.
|
|
207
|
+
demoDeploymentStore.record({ ...original, canRollback: false });
|
|
208
|
+
if (fmt === "json") {
|
|
209
|
+
console.log(JSON.stringify(envelopeFor(original.id, undoResults), null, 2));
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (verbose) {
|
|
213
|
+
console.log();
|
|
214
|
+
console.log(chalk.green.bold("Rollback complete"));
|
|
215
|
+
console.log(` Undo deployment: ${chalk.cyan(undoJob.id)}`);
|
|
216
|
+
console.log(` Tenants undone: ${undoResults.length}`);
|
|
217
|
+
console.log();
|
|
218
|
+
console.log(chalk.gray(`Run 'deployments show ${undoJob.id}' for details.`));
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Real-mode undo path.
|
|
223
|
+
*
|
|
224
|
+
* Today this is wired to `RollbackService` from `@pax8-cta/core` but the
|
|
225
|
+
* snapshots that `RollbackService.rollback()` consumes are not yet created
|
|
226
|
+
* by `pax8-cta deploy` (Phase 2 of #418). So the practical end-state for
|
|
227
|
+
* any current real-mode caller is "no snapshots → CliError with recovery
|
|
228
|
+
* hint." We still instantiate the service and probe for snapshots so that
|
|
229
|
+
* once Phase 2 lands, this path becomes complete without further wiring.
|
|
230
|
+
*/
|
|
231
|
+
async function realUndo(id, options) {
|
|
232
|
+
const fmt = resolveDeploymentFormat(options);
|
|
233
|
+
const verbose = fmt !== "json" && fmt !== "quiet";
|
|
234
|
+
const rollbackService = new RollbackService();
|
|
235
|
+
const snapshots = await rollbackService.listSnapshotsForDeployment(id);
|
|
236
|
+
if (snapshots.length === 0) {
|
|
237
|
+
throw new CliError(`No rollback snapshots found for deployment '${id}'.\n` +
|
|
238
|
+
`\n` +
|
|
239
|
+
`Snapshots are written when a deploy runs with rollback enabled in ` +
|
|
240
|
+
`your config (RollbackSettings.enabled). Wiring this into 'pax8-cta ` +
|
|
241
|
+
`deploy' is tracked as Phase 2 of #418 ` +
|
|
242
|
+
`(https://github.com/pax8labs/pax8-cta/issues/418).\n` +
|
|
243
|
+
`\n` +
|
|
244
|
+
`Workaround: uninstall the solution per tenant with ` +
|
|
245
|
+
`'pax8-cta solutions remove <name> -t <tenant>'.\n` +
|
|
246
|
+
`Demo: 'DEMO_MODE=true pax8-cta deployments undo ${id} -y' shows the ` +
|
|
247
|
+
`flow end-to-end.`);
|
|
248
|
+
}
|
|
249
|
+
if (verbose) {
|
|
250
|
+
console.log();
|
|
251
|
+
console.log(chalk.bold("Rollback Preview"));
|
|
252
|
+
console.log(` Original deployment: ${chalk.cyan(id)}`);
|
|
253
|
+
console.log(` Snapshots found: ${snapshots.length}`);
|
|
254
|
+
console.log();
|
|
255
|
+
snapshots.forEach((s) => {
|
|
256
|
+
console.log(` ${chalk.gray("•")} ${s.tenantName} ${chalk.gray(`(prev v${s.previousVersion})`)}`);
|
|
257
|
+
});
|
|
258
|
+
console.log();
|
|
259
|
+
}
|
|
260
|
+
if (options.dryRun) {
|
|
261
|
+
const previewResults = snapshots.map((s) => ({
|
|
262
|
+
tenantId: s.tenantId,
|
|
263
|
+
tenantName: s.tenantName,
|
|
264
|
+
status: "rolled-back",
|
|
265
|
+
}));
|
|
266
|
+
if (fmt === "json") {
|
|
267
|
+
console.log(JSON.stringify({ ...envelopeFor(id, previewResults), dryRun: true }, null, 2));
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
if (verbose) {
|
|
271
|
+
console.log(chalk.gray("(dry run — no changes were made)"));
|
|
272
|
+
}
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
if (!options.yes && isInteractivePrompt(options)) {
|
|
276
|
+
const proceed = await confirm(chalk.bold(`Roll back deployment ${id} on ${snapshots.length} tenant${snapshots.length === 1 ? "" : "s"}? [y/N] `));
|
|
277
|
+
if (!proceed) {
|
|
278
|
+
if (verbose) {
|
|
279
|
+
console.log(chalk.gray("Cancelled."));
|
|
280
|
+
}
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// Per-tenant rollback. We can't actually call `RollbackService.rollback()`
|
|
285
|
+
// without a `DataverseClient` per tenant, which requires a real
|
|
286
|
+
// TokenManager bootstrapped from a config + GDAP credentials. That wiring
|
|
287
|
+
// mirrors `deploy.ts` exactly; once Phase 2 lands a snapshot in deploy,
|
|
288
|
+
// the code below should pick that snapshot up via the per-tenant
|
|
289
|
+
// DataverseClient path. For now we surface a clean CliError.
|
|
290
|
+
throw new CliError(`Real-mode undo found ${snapshots.length} snapshot(s) for deployment '${id}', ` +
|
|
291
|
+
`but the per-tenant Dataverse rollback path is not yet wired into the ` +
|
|
292
|
+
`CLI (Phase 2 of #418). Use 'pax8-cta solutions remove <name> -t <tenant>' ` +
|
|
293
|
+
`per tenant as a workaround.`);
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=undo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undo.js","sourceRoot":"","sources":["../../../src/commands/deployments/undo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Pax8, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Command } from "commander";
|
|
17
|
+
export declare const exportCommand: Command;
|
|
18
|
+
//# sourceMappingURL=export.d.ts.map
|