@intentius/chant-lexicon-k8s 0.30.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/classify.d.ts +65 -0
- package/dist/api/classify.d.ts.map +1 -0
- package/dist/api/connect.d.ts +58 -0
- package/dist/api/connect.d.ts.map +1 -0
- package/dist/api/fake-cluster.d.ts +55 -0
- package/dist/api/fake-cluster.d.ts.map +1 -0
- package/dist/api/operation-surface.d.ts +64 -0
- package/dist/api/operation-surface.d.ts.map +1 -0
- package/dist/api/owner-chain.d.ts +46 -0
- package/dist/api/owner-chain.d.ts.map +1 -0
- package/dist/api/sweep-types.d.ts +17 -0
- package/dist/api/sweep-types.d.ts.map +1 -0
- package/dist/codegen/generate-operations.d.ts +29 -0
- package/dist/codegen/generate-operations.d.ts.map +1 -0
- package/dist/codegen/generate.d.ts.map +1 -1
- package/dist/config.d.ts +17 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/crd/parser.d.ts.map +1 -1
- package/dist/crd/types.d.ts +7 -0
- package/dist/crd/types.d.ts.map +1 -1
- package/dist/deep-observe-hooks.d.ts +86 -0
- package/dist/deep-observe-hooks.d.ts.map +1 -0
- package/dist/deep-observe.d.ts +146 -0
- package/dist/deep-observe.d.ts.map +1 -0
- package/dist/describe-resources.d.ts +58 -26
- package/dist/describe-resources.d.ts.map +1 -1
- package/dist/export-resources.d.ts +31 -1
- package/dist/export-resources.d.ts.map +1 -1
- package/dist/integrity.json +2 -2
- package/dist/kube/apply.d.ts +26 -0
- package/dist/kube/apply.d.ts.map +1 -0
- package/dist/kube/connect.d.ts +30 -0
- package/dist/kube/connect.d.ts.map +1 -0
- package/dist/kube/delete.d.ts +27 -0
- package/dist/kube/delete.d.ts.map +1 -0
- package/dist/kube/describe.d.ts +19 -0
- package/dist/kube/describe.d.ts.map +1 -0
- package/dist/kube/events.d.ts +34 -0
- package/dist/kube/events.d.ts.map +1 -0
- package/dist/kube/flags.d.ts +40 -0
- package/dist/kube/flags.d.ts.map +1 -0
- package/dist/kube/get.d.ts +21 -0
- package/dist/kube/get.d.ts.map +1 -0
- package/dist/kube/group.d.ts +19 -0
- package/dist/kube/group.d.ts.map +1 -0
- package/dist/kube/logs.d.ts +16 -0
- package/dist/kube/logs.d.ts.map +1 -0
- package/dist/kube/project.d.ts +59 -0
- package/dist/kube/project.d.ts.map +1 -0
- package/dist/kube/render.d.ts +75 -0
- package/dist/kube/render.d.ts.map +1 -0
- package/dist/kube/source.d.ts +19 -0
- package/dist/kube/source.d.ts.map +1 -0
- package/dist/kube/target.d.ts +52 -0
- package/dist/kube/target.d.ts.map +1 -0
- package/dist/kube/testing.d.ts +21 -0
- package/dist/kube/testing.d.ts.map +1 -0
- package/dist/kube/top.d.ts +23 -0
- package/dist/kube/top.d.ts.map +1 -0
- package/dist/kube/verdict.d.ts +45 -0
- package/dist/kube/verdict.d.ts.map +1 -0
- package/dist/kube/wait.d.ts +23 -0
- package/dist/kube/wait.d.ts.map +1 -0
- package/dist/manifest.json +1 -1
- package/dist/op/activities/index.d.ts +7 -4
- package/dist/op/activities/index.d.ts.map +1 -1
- package/dist/op/activities/kubectl.d.ts +120 -2
- package/dist/op/activities/kubectl.d.ts.map +1 -1
- package/dist/op/activities/wait-for-ready.d.ts +30 -3
- package/dist/op/activities/wait-for-ready.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/spec/parse.d.ts +42 -0
- package/dist/spec/parse.d.ts.map +1 -1
- package/package.json +5 -2
- package/src/api/classify.test.ts +133 -0
- package/src/api/classify.ts +144 -0
- package/src/api/connect.ts +104 -0
- package/src/api/fake-cluster.ts +218 -0
- package/src/api/operation-surface.test.ts +116 -0
- package/src/api/operation-surface.ts +129 -0
- package/src/api/owner-chain.test.ts +171 -0
- package/src/api/owner-chain.ts +144 -0
- package/src/api/sweep-types.ts +36 -0
- package/src/codegen/generate-operations.ts +56 -0
- package/src/codegen/generate.ts +9 -0
- package/src/config.ts +17 -0
- package/src/crd/parser.ts +8 -0
- package/src/crd/types.ts +7 -0
- package/src/deep-observe-hooks.ts +125 -0
- package/src/deep-observe.test.ts +668 -0
- package/src/deep-observe.ts +299 -0
- package/src/describe-resources.test.ts +619 -191
- package/src/describe-resources.ts +218 -117
- package/src/export-resources-io.test.ts +76 -51
- package/src/export-resources.ts +47 -35
- package/src/generated/operations.json +2156 -0
- package/src/kube/apply.test.ts +105 -0
- package/src/kube/apply.ts +101 -0
- package/src/kube/connect.ts +54 -0
- package/src/kube/delete.test.ts +123 -0
- package/src/kube/delete.ts +174 -0
- package/src/kube/describe.test.ts +106 -0
- package/src/kube/describe.ts +195 -0
- package/src/kube/events.test.ts +115 -0
- package/src/kube/events.ts +160 -0
- package/src/kube/flags.test.ts +65 -0
- package/src/kube/flags.ts +114 -0
- package/src/kube/get.test.ts +195 -0
- package/src/kube/get.ts +190 -0
- package/src/kube/group.test.ts +33 -0
- package/src/kube/group.ts +125 -0
- package/src/kube/logs.test.ts +126 -0
- package/src/kube/logs.ts +96 -0
- package/src/kube/project.test.ts +57 -0
- package/src/kube/project.ts +106 -0
- package/src/kube/render.test.ts +142 -0
- package/src/kube/render.ts +252 -0
- package/src/kube/source.test.ts +138 -0
- package/src/kube/source.ts +139 -0
- package/src/kube/target.test.ts +67 -0
- package/src/kube/target.ts +89 -0
- package/src/kube/testing.ts +42 -0
- package/src/kube/top.test.ts +149 -0
- package/src/kube/top.ts +120 -0
- package/src/kube/verdict.test.ts +48 -0
- package/src/kube/verdict.ts +77 -0
- package/src/kube/wait.test.ts +125 -0
- package/src/kube/wait.ts +160 -0
- package/src/lifecycle-integration.test.ts +132 -92
- package/src/op/activities/index.ts +7 -3
- package/src/op/activities/kubectl.test.ts +420 -0
- package/src/op/activities/kubectl.ts +379 -13
- package/src/op/activities/wait-for-ready.test.ts +94 -0
- package/src/op/activities/wait-for-ready.ts +66 -15
- package/src/plugin.test.ts +58 -1
- package/src/plugin.ts +29 -0
- package/src/spec/parse.ts +93 -1
package/src/export-resources.ts
CHANGED
|
@@ -3,56 +3,68 @@
|
|
|
3
3
|
* LexiconPlugin.exportResources() so `chant import --from <cluster-env>`
|
|
4
4
|
* regenerates live objects as chant TypeScript.
|
|
5
5
|
*
|
|
6
|
-
* Reads live objects
|
|
7
|
-
* server-managed noise to reach the
|
|
8
|
-
* and maps to the import IR via the
|
|
9
|
-
* cleaning and IR-building logic is
|
|
6
|
+
* Reads live objects through the typed API client (chant #1074, previously
|
|
7
|
+
* `kubectl get <kinds> -A -o json`), strips server-managed noise to reach the
|
|
8
|
+
* declared shape (kept under `verbatim`), and maps to the import IR via the
|
|
9
|
+
* shared K8sParser. All I/O lives here; the cleaning and IR-building logic is
|
|
10
|
+
* pure in `./import/live-export`.
|
|
11
|
+
*
|
|
12
|
+
* The list below is a *product* decision — what a bare `chant import` should
|
|
13
|
+
* sweep when the caller names no type — not an addressing limit. It used to be
|
|
14
|
+
* both, because `KUBECTL_RESOURCE` was simultaneously the sweep set and the
|
|
15
|
+
* only way the lexicon knew how to address anything (chant #1074 removed the
|
|
16
|
+
* second job). A `--selector type=<entity type>` import can now name any of the
|
|
17
|
+
* ~180 types the generated operation surface carries, CRDs included.
|
|
10
18
|
*/
|
|
11
|
-
import { exec } from "node:child_process";
|
|
12
|
-
import { promisify } from "node:util";
|
|
13
19
|
import type { ExportedTemplate, ResourceSelector } from "@intentius/chant/lexicon";
|
|
14
|
-
import {
|
|
20
|
+
import { defaultK8sConnector, type K8sConnector } from "./api/connect";
|
|
21
|
+
import { operationFor } from "./api/operation-surface";
|
|
15
22
|
import { buildExportFromObjects } from "./import/live-export";
|
|
23
|
+
import { DEFAULT_IMPORT_TYPES } from "./api/sweep-types";
|
|
16
24
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Entity types a bare `chant import --from <cluster>` sweeps: the workload,
|
|
27
|
+
* config, networking and RBAC kinds people actually author. Everything else is
|
|
28
|
+
* reachable by naming it with `--selector type=...`. Defined in
|
|
29
|
+
* `./api/sweep-types.ts` and re-exported here, its original home — chant
|
|
30
|
+
* #1075's ownership-scoped prune needs the same list without pulling the
|
|
31
|
+
* import parser into a Temporal worker.
|
|
32
|
+
*/
|
|
33
|
+
export { DEFAULT_IMPORT_TYPES };
|
|
22
34
|
|
|
23
|
-
export async function exportResources(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
export async function exportResources(
|
|
36
|
+
options: {
|
|
37
|
+
environment: string;
|
|
38
|
+
selector?: ResourceSelector;
|
|
39
|
+
owned?: boolean;
|
|
40
|
+
verbatim?: boolean;
|
|
41
|
+
cwd?: string;
|
|
42
|
+
},
|
|
43
|
+
connect: K8sConnector = defaultK8sConnector,
|
|
44
|
+
): Promise<ExportedTemplate> {
|
|
45
|
+
const types = options.selector?.type ? [options.selector.type] : DEFAULT_IMPORT_TYPES;
|
|
46
|
+
const operations = types.map((t) => operationFor(t)).filter((o) => o !== undefined);
|
|
34
47
|
|
|
35
|
-
if (
|
|
48
|
+
if (operations.length === 0) {
|
|
36
49
|
return { resources: [], parameters: [] };
|
|
37
50
|
}
|
|
38
51
|
|
|
52
|
+
const { client } = await connect({ environment: options.environment, cwd: options.cwd });
|
|
53
|
+
|
|
39
54
|
// One List per kind keeps parsing simple and isolates a missing-kind error
|
|
40
|
-
// to that kind rather than failing the whole export.
|
|
41
|
-
|
|
42
|
-
|
|
55
|
+
// to that kind rather than failing the whole export. They now run
|
|
56
|
+
// concurrently instead of serially.
|
|
57
|
+
const perKind = await client.concurrently(operations, async (operation) => {
|
|
43
58
|
try {
|
|
44
|
-
|
|
45
|
-
["kubectl", "get", kind, "-A", "-o", "json"].join(" "),
|
|
46
|
-
);
|
|
47
|
-
const list = JSON.parse(stdout) as KubectlList;
|
|
48
|
-
if (Array.isArray(list.items)) objects.push(...list.items);
|
|
59
|
+
return await client.list({ apiVersion: operation.apiVersion, kind: operation.kind });
|
|
49
60
|
} catch {
|
|
50
|
-
// Kind not
|
|
61
|
+
// Kind not served by this cluster / RBAC denied — skip it, don't fail
|
|
51
62
|
// the whole export.
|
|
63
|
+
return [];
|
|
52
64
|
}
|
|
53
|
-
}
|
|
65
|
+
});
|
|
54
66
|
|
|
55
|
-
return buildExportFromObjects(
|
|
67
|
+
return buildExportFromObjects(perKind.flat(), {
|
|
56
68
|
verbatim: options.verbatim,
|
|
57
69
|
selector: options.selector,
|
|
58
70
|
owned: options.owned,
|