@highstate/k8s 0.9.3 → 0.9.5

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.
Files changed (63) hide show
  1. package/dist/chunk-DQSCJM5S.js +183 -0
  2. package/dist/chunk-DQSCJM5S.js.map +1 -0
  3. package/dist/chunk-FKNHHKOL.js +260 -0
  4. package/dist/chunk-FKNHHKOL.js.map +1 -0
  5. package/dist/chunk-HW3NS3MC.js +347 -0
  6. package/dist/chunk-HW3NS3MC.js.map +1 -0
  7. package/dist/chunk-OQ7UXASD.js +193 -0
  8. package/dist/chunk-OQ7UXASD.js.map +1 -0
  9. package/dist/chunk-QGHMLKTW.js +1123 -0
  10. package/dist/chunk-QGHMLKTW.js.map +1 -0
  11. package/dist/chunk-UNVSWG6D.js +214 -0
  12. package/dist/chunk-UNVSWG6D.js.map +1 -0
  13. package/dist/deployment-ZP3ASKPT.js +10 -0
  14. package/dist/deployment-ZP3ASKPT.js.map +1 -0
  15. package/dist/highstate.manifest.json +8 -6
  16. package/dist/index.js +291 -954
  17. package/dist/index.js.map +1 -1
  18. package/dist/stateful-set-2AH7RAF7.js +10 -0
  19. package/dist/stateful-set-2AH7RAF7.js.map +1 -0
  20. package/dist/units/access-point/index.js +6 -1
  21. package/dist/units/access-point/index.js.map +1 -1
  22. package/dist/units/cert-manager/index.js +19 -24
  23. package/dist/units/cert-manager/index.js.map +1 -1
  24. package/dist/units/cluster-dns/index.js +36 -0
  25. package/dist/units/cluster-dns/index.js.map +1 -0
  26. package/dist/units/cluster-patch/index.js +34 -0
  27. package/dist/units/cluster-patch/index.js.map +1 -0
  28. package/dist/units/dns01-issuer/index.js +2 -2
  29. package/dist/units/dns01-issuer/index.js.map +1 -1
  30. package/dist/units/existing-cluster/index.js +23 -15
  31. package/dist/units/existing-cluster/index.js.map +1 -1
  32. package/dist/units/gateway-api/index.js +1 -1
  33. package/package.json +12 -10
  34. package/src/access-point.ts +44 -39
  35. package/src/container.ts +54 -5
  36. package/src/cron-job.ts +14 -30
  37. package/src/deployment.ts +170 -127
  38. package/src/gateway/http-route.ts +7 -5
  39. package/src/helm.ts +57 -8
  40. package/src/index.ts +11 -4
  41. package/src/job.ts +14 -32
  42. package/src/namespace.ts +241 -0
  43. package/src/network-policy.ts +371 -87
  44. package/src/network.ts +41 -0
  45. package/src/pvc.ts +43 -25
  46. package/src/scripting/bundle.ts +125 -22
  47. package/src/scripting/container.ts +16 -11
  48. package/src/scripting/environment.ts +56 -6
  49. package/src/secret.ts +195 -0
  50. package/src/service.ts +209 -89
  51. package/src/shared.ts +42 -51
  52. package/src/stateful-set.ts +193 -88
  53. package/src/units/access-point/index.ts +8 -1
  54. package/src/units/cert-manager/index.ts +15 -20
  55. package/src/units/cluster-dns/index.ts +37 -0
  56. package/src/units/cluster-patch/index.ts +35 -0
  57. package/src/units/dns01-issuer/index.ts +1 -1
  58. package/src/units/existing-cluster/index.ts +26 -15
  59. package/src/workload.ts +342 -44
  60. package/dist/chunk-K4WKJ4L5.js +0 -455
  61. package/dist/chunk-K4WKJ4L5.js.map +0 -1
  62. package/dist/chunk-T5Z2M4JE.js +0 -103
  63. package/dist/chunk-T5Z2M4JE.js.map +0 -1
@@ -0,0 +1,183 @@
1
+ import {
2
+ ExposableWorkload,
3
+ exposableWorkloadExtraArgs,
4
+ getExposableWorkloadComponents
5
+ } from "./chunk-QGHMLKTW.js";
6
+ import {
7
+ getProvider,
8
+ mapMetadata,
9
+ resourceIdToString,
10
+ withPatchName
11
+ } from "./chunk-FKNHHKOL.js";
12
+
13
+ // src/deployment.ts
14
+ import { output } from "@highstate/pulumi";
15
+ import { apps } from "@pulumi/kubernetes";
16
+ import { omit } from "remeda";
17
+ import { deepmerge } from "deepmerge-ts";
18
+ var Deployment = class extends ExposableWorkload {
19
+ constructor(type, name, args, opts, cluster, metadata, spec, status, networkPolicy, service, httpRoute) {
20
+ super(
21
+ type,
22
+ name,
23
+ args,
24
+ opts,
25
+ "deployment",
26
+ cluster,
27
+ metadata,
28
+ networkPolicy,
29
+ service,
30
+ httpRoute
31
+ );
32
+ this.spec = spec;
33
+ this.status = status;
34
+ }
35
+ /**
36
+ * The Highstate deployment entity.
37
+ */
38
+ get entity() {
39
+ return output({
40
+ type: "k8s.deployment",
41
+ clusterId: this.cluster.id,
42
+ metadata: this.metadata,
43
+ service: this._service.apply((service) => service?.entity)
44
+ });
45
+ }
46
+ static create(name, args, opts) {
47
+ return new CreatedDeployment(name, args, opts);
48
+ }
49
+ static createOrPatch(name, args, opts) {
50
+ if (!args.existing) {
51
+ return new CreatedDeployment(name, args, opts);
52
+ }
53
+ return new DeploymentPatch(
54
+ name,
55
+ {
56
+ ...args,
57
+ name: withPatchName("deployment", args.existing, args.cluster),
58
+ namespace: output(args.existing).metadata.namespace
59
+ },
60
+ opts
61
+ );
62
+ }
63
+ static patch(name, args, opts) {
64
+ return new DeploymentPatch(name, args, opts);
65
+ }
66
+ static createOrGet(name, args, opts) {
67
+ if (!args.existing) {
68
+ return new CreatedDeployment(name, args, opts);
69
+ }
70
+ return new ExternalDeployment(name, output(args.existing).metadata, args.cluster, opts);
71
+ }
72
+ };
73
+ var CreatedDeployment = class extends Deployment {
74
+ constructor(name, args, opts) {
75
+ const { labels, podTemplate, networkPolicy, service, httpRoute } = getExposableWorkloadComponents(name, args, () => this, opts);
76
+ const deployment = output({ args, podTemplate }).apply(async ({ args: args2, podTemplate: podTemplate2 }) => {
77
+ return new apps.v1.Deployment(
78
+ name,
79
+ {
80
+ metadata: mapMetadata(args2, name),
81
+ spec: deepmerge(
82
+ {
83
+ template: podTemplate2,
84
+ selector: { matchLabels: labels }
85
+ },
86
+ omit(args2, exposableWorkloadExtraArgs)
87
+ )
88
+ },
89
+ {
90
+ ...opts,
91
+ parent: this,
92
+ provider: await getProvider(args2.cluster)
93
+ }
94
+ );
95
+ });
96
+ super(
97
+ "highstate:k8s:Deployment",
98
+ name,
99
+ args,
100
+ opts,
101
+ output(args.cluster),
102
+ deployment.metadata,
103
+ deployment.spec,
104
+ deployment.status,
105
+ networkPolicy,
106
+ service,
107
+ httpRoute
108
+ );
109
+ }
110
+ };
111
+ var DeploymentPatch = class extends Deployment {
112
+ constructor(name, args, opts) {
113
+ const { podSpec, networkPolicy, service, httpRoute } = getExposableWorkloadComponents(
114
+ name,
115
+ args,
116
+ () => this,
117
+ opts
118
+ );
119
+ const deployment = output({ args, podSpec }).apply(async ({ args: args2, podSpec: podSpec2 }) => {
120
+ return new apps.v1.DeploymentPatch(
121
+ name,
122
+ {
123
+ metadata: mapMetadata(args2, name),
124
+ spec: deepmerge(
125
+ {
126
+ template: {
127
+ spec: podSpec2
128
+ }
129
+ },
130
+ omit(args2, exposableWorkloadExtraArgs)
131
+ )
132
+ },
133
+ {
134
+ ...opts,
135
+ parent: this,
136
+ provider: await getProvider(args2.cluster)
137
+ }
138
+ );
139
+ });
140
+ super(
141
+ "highstate:k8s:DeploymentPatch",
142
+ name,
143
+ args,
144
+ opts,
145
+ output(args.cluster),
146
+ deployment.metadata,
147
+ deployment.spec,
148
+ deployment.status,
149
+ networkPolicy,
150
+ service,
151
+ httpRoute
152
+ );
153
+ }
154
+ };
155
+ var ExternalDeployment = class extends Deployment {
156
+ constructor(name, id, cluster, opts) {
157
+ const deployment = output(id).apply(async (id2) => {
158
+ return apps.v1.Deployment.get(name, resourceIdToString(id2), {
159
+ ...opts,
160
+ parent: this,
161
+ provider: await getProvider(cluster)
162
+ });
163
+ });
164
+ super(
165
+ "highstate:k8s:ExternalDeployment",
166
+ name,
167
+ { namespace: output(id).namespace, cluster },
168
+ opts,
169
+ output(cluster),
170
+ deployment.metadata,
171
+ deployment.spec,
172
+ deployment.status,
173
+ output(void 0),
174
+ output(void 0),
175
+ output(void 0)
176
+ );
177
+ }
178
+ };
179
+
180
+ export {
181
+ Deployment
182
+ };
183
+ //# sourceMappingURL=chunk-DQSCJM5S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/deployment.ts"],"sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { HttpRoute } from \"./gateway\"\nimport type { Service } from \"./service\"\nimport type { NetworkPolicy } from \"./network-policy\"\nimport { output, type ComponentResourceOptions, Output, type Input } from \"@highstate/pulumi\"\nimport { apps, types } from \"@pulumi/kubernetes\"\nimport { omit } from \"remeda\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport {\n getProvider,\n mapMetadata,\n resourceIdToString,\n withPatchName,\n type ResourceId,\n} from \"./shared\"\nimport {\n exposableWorkloadExtraArgs,\n ExposableWorkload,\n type ExposableWorkloadArgs,\n getExposableWorkloadComponents,\n} from \"./workload\"\n\nexport type DeploymentArgs = Omit<ExposableWorkloadArgs, \"existing\"> &\n Omit<Partial<types.input.apps.v1.DeploymentSpec>, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n\nexport type CreateOrGetDeploymentArgs = DeploymentArgs & {\n /**\n * The entity to use to determine the deployment to patch.\n */\n existing: Input<k8s.Deployment> | undefined\n}\n\nexport abstract class Deployment extends ExposableWorkload {\n protected constructor(\n type: string,\n name: string,\n args: ExposableWorkloadArgs,\n opts: ComponentResourceOptions | undefined,\n\n cluster: Output<k8s.Cluster>,\n metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The spec of the underlying Kubernetes deployment.\n */\n readonly spec: Output<types.output.apps.v1.DeploymentSpec>,\n\n /**\n * The status of the underlying Kubernetes deployment.\n */\n readonly status: Output<types.output.apps.v1.DeploymentStatus>,\n\n networkPolicy: Output<NetworkPolicy | undefined>,\n\n service: Output<Service | undefined>,\n httpRoute: Output<HttpRoute | undefined>,\n ) {\n super(\n type,\n name,\n args,\n opts,\n \"deployment\",\n cluster,\n metadata,\n networkPolicy,\n service,\n httpRoute,\n )\n }\n\n /**\n * The Highstate deployment entity.\n */\n get entity(): Output<k8s.Deployment> {\n return output({\n type: \"k8s.deployment\",\n clusterId: this.cluster.id,\n metadata: this.metadata,\n service: this._service.apply(service => service?.entity),\n })\n }\n\n static create(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions): Deployment {\n return new CreatedDeployment(name, args, opts)\n }\n\n static createOrPatch(\n name: string,\n args: CreateOrGetDeploymentArgs,\n opts?: ComponentResourceOptions,\n ): Deployment {\n if (!args.existing) {\n return new CreatedDeployment(name, args, opts)\n }\n\n return new DeploymentPatch(\n name,\n {\n ...args,\n name: withPatchName(\"deployment\", args.existing, args.cluster),\n namespace: output(args.existing).metadata.namespace,\n },\n opts,\n )\n }\n\n static patch(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions): Deployment {\n return new DeploymentPatch(name, args, opts)\n }\n\n static createOrGet(\n name: string,\n args: CreateOrGetDeploymentArgs,\n opts?: ComponentResourceOptions,\n ): Deployment {\n if (!args.existing) {\n return new CreatedDeployment(name, args, opts)\n }\n\n return new ExternalDeployment(name, output(args.existing).metadata, args.cluster, opts)\n }\n}\n\nclass CreatedDeployment extends Deployment {\n constructor(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions) {\n const { labels, podTemplate, networkPolicy, service, httpRoute } =\n getExposableWorkloadComponents(name, args, () => this, opts)\n\n const deployment = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new apps.v1.Deployment(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n template: podTemplate,\n selector: { matchLabels: labels },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.DeploymentSpec,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:Deployment\",\n name,\n args,\n opts,\n\n output(args.cluster),\n deployment.metadata,\n deployment.spec,\n deployment.status,\n\n networkPolicy,\n service,\n httpRoute,\n )\n }\n}\n\nclass DeploymentPatch extends Deployment {\n constructor(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions) {\n const { podSpec, networkPolicy, service, httpRoute } = getExposableWorkloadComponents(\n name,\n args,\n () => this,\n opts,\n )\n\n const deployment = output({ args, podSpec }).apply(async ({ args, podSpec }) => {\n return new apps.v1.DeploymentPatch(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n template: {\n spec: podSpec,\n },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.DeploymentSpec,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:DeploymentPatch\",\n name,\n args,\n opts,\n\n output(args.cluster),\n deployment.metadata,\n deployment.spec,\n deployment.status,\n\n networkPolicy,\n service,\n httpRoute,\n )\n }\n}\n\nclass ExternalDeployment extends Deployment {\n constructor(\n name: string,\n id: Input<ResourceId>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n const deployment = output(id).apply(async id => {\n return apps.v1.Deployment.get(name, resourceIdToString(id), {\n ...opts,\n parent: this,\n provider: await getProvider(cluster),\n })\n })\n\n super(\n \"highstate:k8s:ExternalDeployment\",\n name,\n { namespace: output(id).namespace, cluster },\n opts,\n output(cluster),\n deployment.metadata,\n deployment.spec,\n deployment.status,\n\n output(undefined),\n output(undefined),\n output(undefined),\n )\n }\n}\n"],"mappings":"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","names":["args","podTemplate","podSpec","id"]}
@@ -0,0 +1,260 @@
1
+ // src/namespace.ts
2
+ import { core as core2 } from "@pulumi/kubernetes";
3
+ import {
4
+ ComponentResource,
5
+ output as output2
6
+ } from "@pulumi/pulumi";
7
+
8
+ // src/shared.ts
9
+ import { output, toPromise } from "@highstate/pulumi";
10
+ import { core, Provider } from "@pulumi/kubernetes";
11
+ var providers = /* @__PURE__ */ new Map();
12
+ function getProvider(cluster) {
13
+ const provider = output(cluster).apply((cluster2) => {
14
+ const existingProvider = providers.get(cluster2.id);
15
+ if (existingProvider) {
16
+ return existingProvider;
17
+ }
18
+ const provider2 = new Provider(`${cluster2.name}-${cluster2.id}`, {
19
+ kubeconfig: cluster2.kubeconfig
20
+ });
21
+ providers.set(cluster2.id, provider2);
22
+ return provider2;
23
+ });
24
+ return toPromise(provider);
25
+ }
26
+ var commonExtraArgs = ["name", "namespace", "cluster", "metadata"];
27
+ function mapMetadata(args, fallbackName) {
28
+ return {
29
+ ...args.metadata,
30
+ name: args.name ?? args.metadata?.name ?? fallbackName,
31
+ namespace: args.namespace ? mapNamespaceLikeToNamespaceName(args.namespace) : void 0
32
+ };
33
+ }
34
+ function mapSelectorLikeToSelector(selector) {
35
+ if ("matchLabels" in selector || "matchExpressions" in selector) {
36
+ return selector;
37
+ }
38
+ return {
39
+ matchLabels: selector
40
+ };
41
+ }
42
+ function mapNamespaceLikeToNamespaceName(namespace) {
43
+ if (Namespace.isInstance(namespace)) {
44
+ return namespace.metadata.name;
45
+ }
46
+ if (core.v1.Namespace.isInstance(namespace)) {
47
+ return namespace.metadata.name;
48
+ }
49
+ return output(namespace);
50
+ }
51
+ function mapNamespaceNameToSelector(namespace) {
52
+ return {
53
+ matchLabels: {
54
+ "kubernetes.io/metadata.name": namespace
55
+ }
56
+ };
57
+ }
58
+ function resourceIdToString(id) {
59
+ return output(id).apply((metadata) => {
60
+ return metadata.namespace ? `${metadata.namespace}/${metadata.name}` : metadata.name;
61
+ });
62
+ }
63
+ function getAppName(resourceId) {
64
+ if (resourceId.namespace !== resourceId.name) {
65
+ return `${resourceId.namespace ?? "default"}-${resourceId.name}`;
66
+ }
67
+ return resourceId.name;
68
+ }
69
+ function getAppDisplayName(resourceId) {
70
+ if (resourceId.namespace !== resourceId.name) {
71
+ return `${resourceId.namespace ?? "default"}/${resourceId.name}`;
72
+ }
73
+ return resourceId.name;
74
+ }
75
+ function withPatchName(resourceType, resource, cluster) {
76
+ return output({ resource, cluster }).apply(({ resource: resource2, cluster: cluster2 }) => {
77
+ if (resource2.clusterId !== cluster2.id) {
78
+ throw new Error(
79
+ `Cluster mismatch when patching ${resourceType} "${resource2.metadata.name}": "${resource2.clusterId}" != "${cluster2.id}"`
80
+ );
81
+ }
82
+ return resource2.metadata.name;
83
+ });
84
+ }
85
+
86
+ // src/namespace.ts
87
+ var Namespace = class extends ComponentResource {
88
+ constructor(type, name, args, opts, cluster, metadata, spec, status) {
89
+ super(type, name, args, opts);
90
+ this.cluster = cluster;
91
+ this.metadata = metadata;
92
+ this.spec = spec;
93
+ this.status = status;
94
+ }
95
+ /**
96
+ * Creates a new namespace.
97
+ */
98
+ static create(name, args, opts) {
99
+ return new CreatedNamespace(name, args, opts);
100
+ }
101
+ /**
102
+ * Creates a new namespace or patches an existing one.
103
+ *
104
+ * Will throw an error if the namespace does not exist when `args.resource` is provided.
105
+ */
106
+ static createOrPatch(name, args, opts) {
107
+ if (!args.resource) {
108
+ return new CreatedNamespace(name, args, opts);
109
+ }
110
+ return new NamespacePatch(
111
+ name,
112
+ {
113
+ ...args,
114
+ name: output2(args).apply((args2) => {
115
+ if (args2.resource.clusterId !== args2.cluster.id) {
116
+ throw new Error(
117
+ `Cluster mismatch when patching namespace "${name}": "${args2.resource.clusterId}" != "${args2.cluster.id}"`
118
+ );
119
+ }
120
+ return args2.resource.metadata.namespace;
121
+ })
122
+ },
123
+ opts
124
+ );
125
+ }
126
+ /**
127
+ * Creates a new namespace or gets an existing one.
128
+ *
129
+ * Will throw an error if the namespace does not exist when `args.resource` is provided.
130
+ */
131
+ static createOrGet(name, args, opts) {
132
+ if (!args.resource) {
133
+ return new CreatedNamespace(name, args, opts);
134
+ }
135
+ return new ExternalNamespace(
136
+ name,
137
+ output2(args).apply((args2) => {
138
+ if (args2.resource.clusterId !== args2.cluster.id) {
139
+ throw new Error(
140
+ `Cluster mismatch when receiving namespace "${name}": "${args2.resource.clusterId}" != "${args2.cluster.id}"`
141
+ );
142
+ }
143
+ return args2.resource.metadata.namespace;
144
+ }),
145
+ args.cluster,
146
+ opts
147
+ );
148
+ }
149
+ /**
150
+ * Patches an existing namespace.
151
+ *
152
+ * Will throw an error if the namespace does not exist.
153
+ */
154
+ static patch(name, args, opts) {
155
+ return new NamespacePatch(name, args, opts);
156
+ }
157
+ /**
158
+ * Gets an existing namespace.
159
+ *
160
+ * Will throw an error if the namespace does not exist.
161
+ */
162
+ static get(name, id, cluster, opts) {
163
+ return new ExternalNamespace(name, id, cluster, opts);
164
+ }
165
+ };
166
+ var CreatedNamespace = class extends Namespace {
167
+ constructor(name, args, opts) {
168
+ const namespace = output2(args).apply(async (args2) => {
169
+ return new core2.v1.Namespace(
170
+ name,
171
+ {
172
+ metadata: mapMetadata(args2, name)
173
+ },
174
+ {
175
+ ...opts,
176
+ parent: this,
177
+ provider: await getProvider(args2.cluster)
178
+ }
179
+ );
180
+ });
181
+ super(
182
+ "highstate:k8s:Namespace",
183
+ name,
184
+ args,
185
+ opts,
186
+ output2(args.cluster),
187
+ namespace.metadata,
188
+ namespace.spec,
189
+ namespace.status
190
+ );
191
+ }
192
+ };
193
+ var NamespacePatch = class extends Namespace {
194
+ constructor(name, args, opts) {
195
+ const namespace = output2(args).apply(async (args2) => {
196
+ return new core2.v1.NamespacePatch(
197
+ name,
198
+ {
199
+ metadata: mapMetadata(args2, name)
200
+ },
201
+ {
202
+ ...opts,
203
+ parent: this,
204
+ provider: await getProvider(args2.cluster)
205
+ }
206
+ );
207
+ });
208
+ super(
209
+ "highstate:k8s:NamespacePatch",
210
+ name,
211
+ args,
212
+ opts,
213
+ output2(args.cluster),
214
+ namespace.metadata,
215
+ namespace.spec,
216
+ namespace.status
217
+ );
218
+ }
219
+ };
220
+ var ExternalNamespace = class extends Namespace {
221
+ constructor(name, id, cluster, opts) {
222
+ const namespace = output2(id).apply(async (realName) => {
223
+ return core2.v1.Namespace.get(
224
+ //
225
+ name,
226
+ realName,
227
+ {
228
+ ...opts,
229
+ parent: this,
230
+ provider: await getProvider(cluster)
231
+ }
232
+ );
233
+ });
234
+ super(
235
+ "highstate:k8s:ExternalNamespace",
236
+ name,
237
+ { id, cluster },
238
+ opts,
239
+ output2(cluster),
240
+ namespace.metadata,
241
+ namespace.spec,
242
+ namespace.status
243
+ );
244
+ }
245
+ };
246
+
247
+ export {
248
+ Namespace,
249
+ getProvider,
250
+ commonExtraArgs,
251
+ mapMetadata,
252
+ mapSelectorLikeToSelector,
253
+ mapNamespaceLikeToNamespaceName,
254
+ mapNamespaceNameToSelector,
255
+ resourceIdToString,
256
+ getAppName,
257
+ getAppDisplayName,
258
+ withPatchName
259
+ };
260
+ //# sourceMappingURL=chunk-FKNHHKOL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/namespace.ts","../src/shared.ts"],"sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport { core, type types } from \"@pulumi/kubernetes\"\nimport {\n ComponentResource,\n output,\n Output,\n type ComponentResourceOptions,\n type Input,\n type Inputs,\n} from \"@pulumi/pulumi\"\nimport { getProvider, mapMetadata, type CommonArgs } from \"./shared\"\n\nexport type NamespaceArgs = Omit<CommonArgs, \"namespace\"> & {\n /**\n * Whether to apply \"pod-security.kubernetes.io/enforce=privileged\" label to the namespace.\n */\n privileged?: boolean\n}\n\nexport type CreateOrPatchNamespaceArgs = NamespaceArgs & {\n /**\n * The resource to use to determine the name of the namespace.\n *\n * If not provided, the namespace will be created, otherwise it will be retrieved/patched.\n */\n resource: Input<k8s.Resource> | undefined\n}\n\nexport abstract class Namespace extends ComponentResource {\n protected constructor(\n type: string,\n name: string,\n args: Inputs,\n opts: ComponentResourceOptions | undefined,\n\n /**\n * The cluster where the namespace is created.\n */\n readonly cluster: Output<k8s.Cluster>,\n\n /*\n * The metadata of the underlying Kubernetes namespace.\n */\n readonly metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The spec of the underlying Kubernetes namespace.\n */\n readonly spec: Output<types.output.core.v1.NamespaceSpec>,\n\n /**\n * The status of the underlying Kubernetes namespace.\n */\n readonly status: Output<types.output.core.v1.NamespaceStatus>,\n ) {\n super(type, name, args, opts)\n }\n\n /**\n * Creates a new namespace.\n */\n static create(name: string, args: NamespaceArgs, opts?: ComponentResourceOptions): Namespace {\n return new CreatedNamespace(name, args, opts)\n }\n\n /**\n * Creates a new namespace or patches an existing one.\n *\n * Will throw an error if the namespace does not exist when `args.resource` is provided.\n */\n static createOrPatch(\n name: string,\n args: CreateOrPatchNamespaceArgs,\n opts?: ComponentResourceOptions,\n ): Namespace {\n if (!args.resource) {\n return new CreatedNamespace(name, args, opts)\n }\n\n return new NamespacePatch(\n name,\n {\n ...args,\n name: output(args).apply(args => {\n if (args.resource!.clusterId !== args.cluster.id) {\n throw new Error(\n `Cluster mismatch when patching namespace \"${name}\": \"${args.resource!.clusterId}\" != \"${args.cluster.id}\"`,\n )\n }\n\n return args.resource!.metadata.namespace\n }),\n },\n opts,\n )\n }\n\n /**\n * Creates a new namespace or gets an existing one.\n *\n * Will throw an error if the namespace does not exist when `args.resource` is provided.\n */\n static createOrGet(\n name: string,\n args: CreateOrPatchNamespaceArgs,\n opts?: ComponentResourceOptions,\n ): Namespace {\n if (!args.resource) {\n return new CreatedNamespace(name, args, opts)\n }\n\n return new ExternalNamespace(\n name,\n output(args).apply(args => {\n if (args.resource!.clusterId !== args.cluster.id) {\n throw new Error(\n `Cluster mismatch when receiving namespace \"${name}\": \"${args.resource!.clusterId}\" != \"${args.cluster.id}\"`,\n )\n }\n\n return args.resource!.metadata.namespace\n }),\n args.cluster,\n opts,\n )\n }\n\n /**\n * Patches an existing namespace.\n *\n * Will throw an error if the namespace does not exist.\n */\n static patch(name: string, args: NamespaceArgs, opts?: ComponentResourceOptions): Namespace {\n return new NamespacePatch(name, args, opts)\n }\n\n /**\n * Gets an existing namespace.\n *\n * Will throw an error if the namespace does not exist.\n */\n static get(\n name: string,\n id: Input<string>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ): Namespace {\n return new ExternalNamespace(name, id, cluster, opts)\n }\n}\n\nclass CreatedNamespace extends Namespace {\n constructor(name: string, args: NamespaceArgs, opts?: ComponentResourceOptions) {\n const namespace = output(args).apply(async args => {\n return new core.v1.Namespace(\n name,\n {\n metadata: mapMetadata(args, name),\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:Namespace\",\n name,\n args,\n opts,\n output(args.cluster),\n namespace.metadata,\n namespace.spec,\n namespace.status,\n )\n }\n}\n\nclass NamespacePatch extends Namespace {\n constructor(name: string, args: NamespaceArgs, opts?: ComponentResourceOptions) {\n const namespace = output(args).apply(async args => {\n return new core.v1.NamespacePatch(\n name,\n {\n metadata: mapMetadata(args, name),\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:NamespacePatch\",\n name,\n args,\n opts,\n output(args.cluster),\n namespace.metadata,\n namespace.spec,\n namespace.status,\n )\n }\n}\n\nclass ExternalNamespace extends Namespace {\n constructor(\n name: string,\n id: Input<string>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n const namespace = output(id).apply(async realName => {\n return core.v1.Namespace.get(\n //\n name,\n realName,\n {\n ...opts,\n parent: this,\n provider: await getProvider(cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:ExternalNamespace\",\n name,\n { id, cluster },\n opts,\n output(cluster),\n namespace.metadata,\n namespace.spec,\n namespace.status,\n )\n }\n}\n","import type { PartialKeys } from \"@highstate/contract\"\nimport type { k8s } from \"@highstate/library\"\nimport { Output, output, toPromise, type Input, type Unwrap } from \"@highstate/pulumi\"\nimport { core, Provider, types } from \"@pulumi/kubernetes\"\nimport { Namespace } from \"./namespace\"\n\nconst providers = new Map<string, Provider>()\n\nexport function getProvider(cluster: Input<k8s.Cluster>): Promise<Provider> {\n const provider = output(cluster).apply(cluster => {\n const existingProvider = providers.get(cluster.id)\n if (existingProvider) {\n return existingProvider\n }\n\n const provider = new Provider(`${cluster.name}-${cluster.id}`, {\n kubeconfig: cluster.kubeconfig,\n })\n providers.set(cluster.id, provider)\n\n return provider\n })\n\n return toPromise(provider)\n}\n\nexport type NamespaceLike = core.v1.Namespace | Namespace | string\n\nexport type CommonArgs = {\n /**\n * The name of the resource.\n */\n name?: Input<string>\n\n /**\n * The namespace to create the resource in.\n */\n namespace: Input<NamespaceLike | undefined>\n\n /**\n * The cluster to create the resource in.\n */\n cluster: Input<k8s.Cluster>\n\n /**\n * The metadata to apply to the resource.\n */\n metadata?: Input<types.input.meta.v1.ObjectMeta>\n}\n\nexport const commonExtraArgs = [\"name\", \"namespace\", \"cluster\", \"metadata\"] as const\n\nexport function mapMetadata(\n args: PartialKeys<Unwrap<CommonArgs>, \"namespace\" | \"cluster\">,\n fallbackName?: string,\n): types.input.meta.v1.ObjectMeta {\n return {\n ...args.metadata,\n name: args.name ?? args.metadata?.name ?? fallbackName,\n namespace: args.namespace ? mapNamespaceLikeToNamespaceName(args.namespace) : undefined,\n }\n}\n\nexport type SelectorLike = types.input.meta.v1.LabelSelector | Record<string, Input<string>>\n\nexport function mapSelectorLikeToSelector(\n selector: SelectorLike,\n): types.input.meta.v1.LabelSelector {\n if (\"matchLabels\" in selector || \"matchExpressions\" in selector) {\n return selector\n }\n\n return {\n matchLabels: selector as Record<string, Input<string>>,\n }\n}\n\nexport function mapNamespaceLikeToNamespaceName(namespace: NamespaceLike): Output<string> {\n if (Namespace.isInstance(namespace)) {\n return namespace.metadata.name\n }\n\n if (core.v1.Namespace.isInstance(namespace)) {\n return namespace.metadata.name\n }\n\n return output(namespace)\n}\n\nexport function mapNamespaceNameToSelector(\n namespace: Input<string>,\n): types.input.meta.v1.LabelSelector {\n return {\n matchLabels: {\n \"kubernetes.io/metadata.name\": namespace,\n },\n }\n}\n\nexport type ResourceId = {\n name: Input<string>\n namespace?: Input<string | undefined>\n}\n\nexport function resourceIdToString(id: Input<ResourceId>): Output<string> {\n return output(id).apply(metadata => {\n return metadata.namespace ? `${metadata.namespace}/${metadata.name}` : metadata.name\n })\n}\n\nexport function getAppName(resourceId: Unwrap<ResourceId>): string {\n if (resourceId.namespace !== resourceId.name) {\n return `${resourceId.namespace ?? \"default\"}-${resourceId.name}`\n }\n\n return resourceId.name\n}\n\nexport function getAppDisplayName(resourceId: Unwrap<ResourceId>): string {\n if (resourceId.namespace !== resourceId.name) {\n return `${resourceId.namespace ?? \"default\"}/${resourceId.name}`\n }\n\n return resourceId.name\n}\n\nexport function withPatchName(\n resourceType: string,\n resource: Input<k8s.Resource>,\n cluster: Input<k8s.Cluster>,\n): Output<string> {\n return output({ resource, cluster }).apply(({ resource, cluster }) => {\n if (resource.clusterId !== cluster.id) {\n throw new Error(\n `Cluster mismatch when patching ${resourceType} \"${resource.metadata.name}\": \"${resource.clusterId}\" != \"${cluster.id}\"`,\n )\n }\n\n return resource.metadata.name\n })\n}\n"],"mappings":"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","names":["core","output","cluster","provider","resource","output","args","core"]}