k8ts 0.4.16 → 0.4.19
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/node/equiv-cdk8s.d.ts +10 -0
- package/dist/node/equiv-cdk8s.d.ts.map +1 -0
- package/dist/node/equiv-cdk8s.js +17 -0
- package/dist/node/equiv-cdk8s.js.map +1 -0
- package/dist/resources/configmap/configmap.d.ts.map +1 -1
- package/dist/resources/configmap/configmap.js +3 -1
- package/dist/resources/configmap/configmap.js.map +1 -1
- package/dist/resources/deployment/deployment.d.ts.map +1 -1
- package/dist/resources/deployment/deployment.js +3 -1
- package/dist/resources/deployment/deployment.js.map +1 -1
- package/dist/resources/http-route/http-route.d.ts.map +1 -1
- package/dist/resources/http-route/http-route.js +3 -1
- package/dist/resources/http-route/http-route.js.map +1 -1
- package/dist/resources/namespace/namespace.d.ts.map +1 -1
- package/dist/resources/namespace/namespace.js +3 -1
- package/dist/resources/namespace/namespace.js.map +1 -1
- package/dist/resources/persistent/claim/pvc.d.ts.map +1 -1
- package/dist/resources/persistent/claim/pvc.js +3 -1
- package/dist/resources/persistent/claim/pvc.js.map +1 -1
- package/dist/resources/persistent/volume/pv.d.ts.map +1 -1
- package/dist/resources/persistent/volume/pv.js +2 -1
- package/dist/resources/persistent/volume/pv.js.map +1 -1
- package/dist/resources/secret/secret.d.ts.map +1 -1
- package/dist/resources/secret/secret.js +3 -1
- package/dist/resources/secret/secret.js.map +1 -1
- package/dist/resources/service/service.d.ts.map +1 -1
- package/dist/resources/service/service.js +3 -1
- package/dist/resources/service/service.js.map +1 -1
- package/dist/runner/exporter/assembler.d.ts +10 -7
- package/dist/runner/exporter/assembler.d.ts.map +1 -1
- package/dist/runner/exporter/assembler.js +17 -11
- package/dist/runner/exporter/assembler.js.map +1 -1
- package/dist/runner/exporter/manifester.d.ts +5 -1
- package/dist/runner/exporter/manifester.d.ts.map +1 -1
- package/dist/runner/exporter/manifester.js +4 -1
- package/dist/runner/exporter/manifester.js.map +1 -1
- package/dist/runner/exporter/validator.d.ts +16 -0
- package/dist/runner/exporter/validator.d.ts.map +1 -0
- package/dist/runner/exporter/validator.js +25 -0
- package/dist/runner/exporter/validator.js.map +1 -0
- package/dist/runner/summarizer.js +1 -1
- package/dist/src.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/node/equiv-cdk8s.ts +20 -0
- package/src/resources/configmap/configmap.ts +3 -1
- package/src/resources/deployment/deployment.ts +2 -0
- package/src/resources/http-route/http-route.ts +3 -1
- package/src/resources/namespace/namespace.ts +3 -1
- package/src/resources/persistent/claim/pvc.ts +3 -1
- package/src/resources/persistent/volume/pv.ts +2 -0
- package/src/resources/secret/secret.ts +2 -0
- package/src/resources/service/service.ts +2 -0
- package/src/runner/exporter/assembler.ts +28 -18
- package/src/runner/exporter/manifester.ts +10 -2
- package/src/runner/exporter/validator.ts +27 -0
- package/src/runner/summarizer.ts +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { manifest, relations, type Origin } from "@k8ts/instruments"
|
|
2
2
|
import { Meta, MutableMeta } from "@k8ts/metadata"
|
|
3
|
-
import
|
|
3
|
+
import { CDK } from "../../_imports"
|
|
4
4
|
import { v1 } from "../../api-versions"
|
|
5
5
|
import { k8ts } from "../../kind-map"
|
|
6
|
+
import { equiv_cdk8s } from "../../node/equiv-cdk8s"
|
|
6
7
|
import { ManifestResource } from "../../node/manifest-resource"
|
|
7
8
|
export type Namespace = Namespace.Namespace
|
|
8
9
|
export namespace Namespace {
|
|
@@ -10,6 +11,7 @@ export namespace Namespace {
|
|
|
10
11
|
const ident = v1.kind("Namespace")
|
|
11
12
|
@k8ts(ident)
|
|
12
13
|
@relations("none")
|
|
14
|
+
@equiv_cdk8s(CDK.KubeNamespace)
|
|
13
15
|
@manifest({
|
|
14
16
|
body(self): CDK.KubeNamespaceProps {
|
|
15
17
|
return {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { manifest, relations, ResourcesSpec, Unit } from "@k8ts/instruments"
|
|
2
|
-
import
|
|
2
|
+
import { CDK } from "../../../_imports"
|
|
3
3
|
import { v1 } from "../../../api-versions"
|
|
4
4
|
import { k8ts } from "../../../kind-map"
|
|
5
5
|
import { ManifestResource } from "../../../node"
|
|
6
|
+
import { equiv_cdk8s } from "../../../node/equiv-cdk8s"
|
|
6
7
|
import { Access } from "../access-mode"
|
|
7
8
|
import type { DataMode } from "../block-mode"
|
|
8
9
|
import { Pv } from "../volume"
|
|
@@ -22,6 +23,7 @@ export namespace Pvc {
|
|
|
22
23
|
|
|
23
24
|
const ident = v1.kind("PersistentVolumeClaim")
|
|
24
25
|
@k8ts(ident)
|
|
26
|
+
@equiv_cdk8s(CDK.KubePersistentVolumeClaim)
|
|
25
27
|
@relations({
|
|
26
28
|
needs: self => ({
|
|
27
29
|
bind: self.props.bind
|
|
@@ -3,6 +3,7 @@ import { CDK } from "../../../_imports"
|
|
|
3
3
|
import { v1 } from "../../../api-versions"
|
|
4
4
|
import { MakeError } from "../../../error"
|
|
5
5
|
import { k8ts } from "../../../kind-map"
|
|
6
|
+
import { equiv_cdk8s } from "../../../node/equiv-cdk8s"
|
|
6
7
|
import { ManifestResource } from "../../../node/manifest-resource"
|
|
7
8
|
import { Access } from "../access-mode"
|
|
8
9
|
import type { DataMode } from "../block-mode"
|
|
@@ -25,6 +26,7 @@ export namespace Pv {
|
|
|
25
26
|
|
|
26
27
|
const ident = v1.kind("PersistentVolume")
|
|
27
28
|
|
|
29
|
+
@equiv_cdk8s(CDK.KubePersistentVolume)
|
|
28
30
|
@manifest({
|
|
29
31
|
body(self) {
|
|
30
32
|
const pvProps = self.props
|
|
@@ -2,6 +2,7 @@ import { manifest, relations } from "@k8ts/instruments"
|
|
|
2
2
|
import { CDK } from "../../_imports"
|
|
3
3
|
import { v1 } from "../../api-versions"
|
|
4
4
|
import { k8ts } from "../../kind-map"
|
|
5
|
+
import { equiv_cdk8s } from "../../node/equiv-cdk8s"
|
|
5
6
|
import { ManifestResource } from "../../node/manifest-resource"
|
|
6
7
|
|
|
7
8
|
export interface Props {
|
|
@@ -11,6 +12,7 @@ export interface Props {
|
|
|
11
12
|
|
|
12
13
|
const ident = v1.kind("Secret")
|
|
13
14
|
@k8ts(ident)
|
|
15
|
+
@equiv_cdk8s(CDK.KubeSecret)
|
|
14
16
|
@relations("none")
|
|
15
17
|
@manifest({
|
|
16
18
|
body(self): CDK.KubeSecretProps {
|
|
@@ -4,6 +4,7 @@ import { CDK } from "../../_imports"
|
|
|
4
4
|
import { v1 } from "../../api-versions"
|
|
5
5
|
import { k8ts } from "../../kind-map"
|
|
6
6
|
import { ManifestResource } from "../../node"
|
|
7
|
+
import { equiv_cdk8s } from "../../node/equiv-cdk8s"
|
|
7
8
|
import type { Deployment } from "../deployment/deployment"
|
|
8
9
|
import { toServicePorts } from "../utils/adapters"
|
|
9
10
|
import { Frontend as Frontend_ } from "./frontend"
|
|
@@ -28,6 +29,7 @@ export namespace Service {
|
|
|
28
29
|
backend: self.props.backend
|
|
29
30
|
})
|
|
30
31
|
})
|
|
32
|
+
@equiv_cdk8s(CDK.KubeService)
|
|
31
33
|
@manifest({
|
|
32
34
|
body(self): CDK.KubeServiceProps {
|
|
33
35
|
const svcPorts = self.ports
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Origin } from "@k8ts/instruments"
|
|
2
2
|
import { Meta } from "@k8ts/metadata"
|
|
3
3
|
import { aseq } from "doddle"
|
|
4
4
|
import Emittery from "emittery"
|
|
5
5
|
import { cloneDeep } from "lodash"
|
|
6
6
|
import type { File } from "../../file"
|
|
7
7
|
import { ResourceLoader, type ResourceLoaderEventsTable } from "./loader"
|
|
8
|
-
import { Manifester, type ManifesterEventsTable } from "./manifester"
|
|
8
|
+
import { Manifester, NodeManifest, type ManifesterEventsTable } from "./manifester"
|
|
9
9
|
import { ManifestSaver, type ManifestSaverEventsTable } from "./saver"
|
|
10
10
|
import { YamlSerializer, type YamlSerializerEventsTable } from "./serializer"
|
|
11
|
+
import { NodeGraphValidator, ValidatorEventsTable } from "./validator"
|
|
11
12
|
|
|
12
13
|
export class Assembler extends Emittery<AssemblerEventsTable> {
|
|
13
14
|
constructor(private readonly _options: AssemblerOptions) {
|
|
@@ -21,6 +22,7 @@ export class Assembler extends Emittery<AssemblerEventsTable> {
|
|
|
21
22
|
) => {
|
|
22
23
|
return await this.emit(event, payload)
|
|
23
24
|
}
|
|
25
|
+
const validator = new NodeGraphValidator({})
|
|
24
26
|
const loader = new ResourceLoader({})
|
|
25
27
|
loader.onAny(_emit)
|
|
26
28
|
const generator = new Manifester({
|
|
@@ -59,25 +61,29 @@ export class Assembler extends Emittery<AssemblerEventsTable> {
|
|
|
59
61
|
.map(async ({ file, resources }) => {
|
|
60
62
|
const manifests = await aseq(resources)
|
|
61
63
|
.map(async resource => {
|
|
62
|
-
return
|
|
63
|
-
k8ts: resource,
|
|
64
|
-
manifest: await generator.generate(resource)
|
|
65
|
-
}
|
|
64
|
+
return await generator.generate(resource)
|
|
66
65
|
})
|
|
67
66
|
.toArray()
|
|
68
67
|
.pull()
|
|
69
68
|
|
|
70
69
|
return {
|
|
71
|
-
file,
|
|
72
|
-
manifests
|
|
73
|
-
}
|
|
70
|
+
file: file.node,
|
|
71
|
+
resources: manifests
|
|
72
|
+
} satisfies FileNodes
|
|
73
|
+
})
|
|
74
|
+
.after(async () => {
|
|
75
|
+
await _emit("stage", { stage: "validating" })
|
|
76
|
+
})
|
|
77
|
+
.collect("array")
|
|
78
|
+
.concatMap(async x => {
|
|
79
|
+
validator.validate(x)
|
|
80
|
+
return x
|
|
74
81
|
})
|
|
75
82
|
.after(async () => {
|
|
76
83
|
await _emit("stage", { stage: "serializing" })
|
|
77
84
|
})
|
|
78
|
-
.
|
|
79
|
-
|
|
80
|
-
const artifacts = await aseq(manifests)
|
|
85
|
+
.map(async ({ file, resources }) => {
|
|
86
|
+
const artifacts = await aseq(resources)
|
|
81
87
|
.map(async obj => {
|
|
82
88
|
return {
|
|
83
89
|
...obj,
|
|
@@ -101,11 +107,11 @@ export class Assembler extends Emittery<AssemblerEventsTable> {
|
|
|
101
107
|
.collect()
|
|
102
108
|
.map(async ({ file, artifacts }) => {
|
|
103
109
|
const { filename, bytes, path } = await saver.save(
|
|
104
|
-
file
|
|
110
|
+
file,
|
|
105
111
|
artifacts.map(x => x.yaml)
|
|
106
112
|
)
|
|
107
113
|
return {
|
|
108
|
-
file: file
|
|
114
|
+
file: file,
|
|
109
115
|
path,
|
|
110
116
|
filename,
|
|
111
117
|
bytes,
|
|
@@ -124,9 +130,11 @@ export class Assembler extends Emittery<AssemblerEventsTable> {
|
|
|
124
130
|
} as AssembledResult
|
|
125
131
|
}
|
|
126
132
|
}
|
|
127
|
-
export interface
|
|
128
|
-
|
|
129
|
-
|
|
133
|
+
export interface FileNodes {
|
|
134
|
+
file: Origin
|
|
135
|
+
resources: NodeManifest[]
|
|
136
|
+
}
|
|
137
|
+
export interface Artifact extends NodeManifest {
|
|
130
138
|
yaml: string
|
|
131
139
|
}
|
|
132
140
|
export interface AssembledFile {
|
|
@@ -148,6 +156,7 @@ export interface AssemblerOptions {
|
|
|
148
156
|
}
|
|
149
157
|
export type AssemblyStage =
|
|
150
158
|
| "loading"
|
|
159
|
+
| "validating"
|
|
151
160
|
| "manifesting"
|
|
152
161
|
| "serializing"
|
|
153
162
|
| "saving"
|
|
@@ -159,7 +168,8 @@ export interface AssemblerEventsTable
|
|
|
159
168
|
extends ManifestSaverEventsTable,
|
|
160
169
|
YamlSerializerEventsTable,
|
|
161
170
|
ManifesterEventsTable,
|
|
162
|
-
ResourceLoaderEventsTable
|
|
171
|
+
ResourceLoaderEventsTable,
|
|
172
|
+
ValidatorEventsTable {
|
|
163
173
|
["received-file"]: { file: Origin }
|
|
164
174
|
["stage"]: { stage: AssemblyStage }
|
|
165
175
|
}
|
|
@@ -59,13 +59,21 @@ export class Manifester extends Emittery<ManifesterEventsTable> {
|
|
|
59
59
|
})
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
async generate(res: ResourceNode) {
|
|
62
|
+
async generate(res: ResourceNode): Promise<NodeManifest> {
|
|
63
63
|
this._attachProductionAnnotations(res)
|
|
64
64
|
await this.emit("manifest", { resource: res })
|
|
65
65
|
const manifest = await this._generate(res.entity as ManifestResource)
|
|
66
|
-
return
|
|
66
|
+
return {
|
|
67
|
+
node: res,
|
|
68
|
+
manifest: manifest
|
|
69
|
+
}
|
|
67
70
|
}
|
|
68
71
|
}
|
|
72
|
+
|
|
73
|
+
export interface NodeManifest {
|
|
74
|
+
node: ResourceNode
|
|
75
|
+
manifest: BaseManifest
|
|
76
|
+
}
|
|
69
77
|
export interface ManifesterManifestEvent {
|
|
70
78
|
resource: ResourceNode
|
|
71
79
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ResourceNode } from "@k8ts/instruments"
|
|
2
|
+
import { App, Chart } from "cdk8s"
|
|
3
|
+
import { ManifestResource } from "../../node"
|
|
4
|
+
import { EquivCdk8s } from "../../node/equiv-cdk8s"
|
|
5
|
+
import { FileNodes } from "./assembler"
|
|
6
|
+
export interface ValidatingEvent {
|
|
7
|
+
node: ResourceNode
|
|
8
|
+
}
|
|
9
|
+
export interface ValidatorEventsTable {
|
|
10
|
+
validating: ValidatingEvent
|
|
11
|
+
}
|
|
12
|
+
export interface ValidatorOptions {}
|
|
13
|
+
export class NodeGraphValidator {
|
|
14
|
+
constructor(readonly options: ValidatorOptions) {}
|
|
15
|
+
validate(collection: FileNodes[]) {
|
|
16
|
+
const app = new App()
|
|
17
|
+
const rootChart = new Chart(app, "root_chart")
|
|
18
|
+
for (const fileNode of collection) {
|
|
19
|
+
for (const nodeManifest of fileNode.resources) {
|
|
20
|
+
const equiv = EquivCdk8s.get(nodeManifest.node._entity as ManifestResource)
|
|
21
|
+
const fullFqn = nodeManifest.node.fullFqn.replaceAll("/", "_").replaceAll(".", "-")
|
|
22
|
+
const cdk8sNode = new equiv(rootChart, fullFqn, nodeManifest.manifest)
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
app.synthYaml()
|
|
26
|
+
}
|
|
27
|
+
}
|