@highstate/k8s 0.9.15 → 0.9.18

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 (49) hide show
  1. package/dist/{chunk-KBWGED2C.js → chunk-5C2BJGES.js} +7 -12
  2. package/dist/chunk-5C2BJGES.js.map +1 -0
  3. package/dist/{chunk-YUMBUWA4.js → chunk-5TLC5BXR.js} +18 -38
  4. package/dist/chunk-5TLC5BXR.js.map +1 -0
  5. package/dist/{chunk-P2UABKGA.js → chunk-BBIY3KUN.js} +129 -236
  6. package/dist/chunk-BBIY3KUN.js.map +1 -0
  7. package/dist/{chunk-MKFBWTVZ.js → chunk-OFFSHGC6.js} +17 -38
  8. package/dist/chunk-OFFSHGC6.js.map +1 -0
  9. package/dist/chunk-PZ5AY32C.js +2 -3
  10. package/dist/chunk-PZ5AY32C.js.map +1 -1
  11. package/dist/{chunk-QMWFPJQB.js → chunk-TZHOUJRC.js} +9 -20
  12. package/dist/chunk-TZHOUJRC.js.map +1 -0
  13. package/dist/{chunk-YRC7EI6X.js → chunk-YWRJ4EZM.js} +9 -20
  14. package/dist/{chunk-YRC7EI6X.js.map → chunk-YWRJ4EZM.js.map} +1 -1
  15. package/dist/deployment-XK3CDJOE.js +6 -0
  16. package/dist/deployment-XK3CDJOE.js.map +1 -0
  17. package/dist/highstate.manifest.json +8 -8
  18. package/dist/index.js +39 -137
  19. package/dist/index.js.map +1 -1
  20. package/dist/stateful-set-7CAQWTV2.js +6 -0
  21. package/dist/stateful-set-7CAQWTV2.js.map +1 -0
  22. package/dist/units/access-point/index.js +6 -7
  23. package/dist/units/access-point/index.js.map +1 -1
  24. package/dist/units/cert-manager/index.js +11 -17
  25. package/dist/units/cert-manager/index.js.map +1 -1
  26. package/dist/units/cluster-dns/index.js +8 -9
  27. package/dist/units/cluster-dns/index.js.map +1 -1
  28. package/dist/units/cluster-patch/index.js +8 -9
  29. package/dist/units/cluster-patch/index.js.map +1 -1
  30. package/dist/units/dns01-issuer/index.js +9 -15
  31. package/dist/units/dns01-issuer/index.js.map +1 -1
  32. package/dist/units/existing-cluster/index.js +12 -21
  33. package/dist/units/existing-cluster/index.js.map +1 -1
  34. package/dist/units/gateway-api/index.js +8 -11
  35. package/dist/units/gateway-api/index.js.map +1 -1
  36. package/package.json +18 -10
  37. package/src/shared.ts +14 -0
  38. package/src/units/cluster-dns/index.ts +1 -1
  39. package/src/units/cluster-patch/index.ts +1 -1
  40. package/src/units/existing-cluster/index.ts +1 -1
  41. package/dist/chunk-KBWGED2C.js.map +0 -1
  42. package/dist/chunk-MKFBWTVZ.js.map +0 -1
  43. package/dist/chunk-P2UABKGA.js.map +0 -1
  44. package/dist/chunk-QMWFPJQB.js.map +0 -1
  45. package/dist/chunk-YUMBUWA4.js.map +0 -1
  46. package/dist/deployment-KOZNZXJA.js +0 -10
  47. package/dist/deployment-KOZNZXJA.js.map +0 -1
  48. package/dist/stateful-set-H5BR3H5D.js +0 -10
  49. package/dist/stateful-set-H5BR3H5D.js.map +0 -1
@@ -1,11 +1,8 @@
1
- import {
2
- images_exports
3
- } from "./chunk-YUMBUWA4.js";
1
+ import { images_exports } from './chunk-5TLC5BXR.js';
2
+ import { text } from '@highstate/contract';
3
+ import { secret } from '@highstate/pulumi';
4
+ import { CoreV1Api } from '@kubernetes/client-node';
4
5
 
5
- // src/cluster.ts
6
- import { text } from "@highstate/contract";
7
- import { secret } from "@highstate/pulumi";
8
- import { CoreV1Api } from "@kubernetes/client-node";
9
6
  function isPrivateIp(ip) {
10
7
  const privateIpRegex = /^(10|172\.16|192\.168)\./;
11
8
  return privateIpRegex.test(ip);
@@ -56,8 +53,6 @@ function createK8sTerminal(kubeconfig) {
56
53
  };
57
54
  }
58
55
 
59
- export {
60
- detectExternalIps,
61
- createK8sTerminal
62
- };
63
- //# sourceMappingURL=chunk-KBWGED2C.js.map
56
+ export { createK8sTerminal, detectExternalIps };
57
+ //# sourceMappingURL=chunk-5C2BJGES.js.map
58
+ //# sourceMappingURL=chunk-5C2BJGES.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cluster.ts"],"names":[],"mappings":";;;;;AAMA,SAAS,YAAY,EAAA,EAAY;AAC/B,EAAA,MAAM,cAAA,GAAiB,0BAAA;AACvB,EAAA,OAAO,cAAA,CAAe,KAAK,EAAE,CAAA;AAC/B;AAEA,eAAsB,iBAAA,CACpB,YACA,iBAAA,EACmB;AACnB,EAAA,MAAM,OAAA,GAAU,UAAA,CAAW,aAAA,CAAc,SAAS,CAAA;AAClD,EAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,QAAA,EAAS;AAErC,EAAA,OAAO,KAAA,CAAM,KAAA,CAAM,OAAA,CAAQ,CAAA,IAAA,KAAQ;AACjC,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,EAAQ,SAAA,IAAa,EAAC;AAC7C,IAAA,MAAM,aAAa,SAAA,CAAU,IAAA,CAAK,CAAA,OAAA,KAAW,OAAA,CAAQ,SAAS,YAAY,CAAA;AAC1E,IAAA,MAAM,aAAa,SAAA,CAAU,IAAA,CAAK,CAAA,OAAA,KAAW,OAAA,CAAQ,SAAS,YAAY,CAAA;AAE1E,IAAA,MAAM,SAAmB,EAAC;AAE1B,IAAA,IAAI,YAAY,OAAA,EAAS;AACvB,MAAA,MAAA,CAAO,IAAA,CAAK,WAAW,OAAO,CAAA;AAAA,IAChC;AAEA,IAAA,IAAI,UAAA,EAAY,OAAA,IAAW,iBAAA,KAAsB,QAAA,EAAU;AACzD,MAAA,MAAA,CAAO,IAAA,CAAK,WAAW,OAAO,CAAA;AAAA,IAChC;AAEA,IAAA,IAAI,UAAA,EAAY,WAAW,iBAAA,KAAsB,QAAA,IAAY,CAAC,WAAA,CAAY,UAAA,CAAW,OAAO,CAAA,EAAG;AAC7F,MAAA,MAAA,CAAO,IAAA,CAAK,WAAW,OAAO,CAAA;AAAA,IAChC;AAEA,IAAA,OAAO,MAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEO,SAAS,kBAAkB,UAAA,EAA6C;AAC7E,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,YAAA;AAAA,IACN,KAAA,EAAO,oBAAA;AAAA,IACP,WAAA,EAAa,2CAAA;AAAA,IACb,IAAA,EAAM,oBAAA;AAAA,IAEN,KAAA,EAAO,cAAA,CAAO,kBAAkB,CAAA,CAAE,KAAA;AAAA,IAClC,OAAA,EAAS,CAAC,MAAA,EAAQ,aAAa,CAAA;AAAA,IAE/B,KAAA,EAAO;AAAA,MACL,aAAA,EAAe,OAAO,UAAU,CAAA;AAAA,MAEhC,aAAA,EAAe,IAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA,MAAA;AAAA,KASjB;AAAA,IAEA,GAAA,EAAK;AAAA,MACH,UAAA,EAAY;AAAA;AACd,GACF;AACF","file":"chunk-5C2BJGES.js","sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport { text } from \"@highstate/contract\"\nimport { secret, type Input, type InstanceTerminal } from \"@highstate/pulumi\"\nimport { CoreV1Api, type KubeConfig } from \"@kubernetes/client-node\"\nimport { images } from \"./shared\"\n\nfunction isPrivateIp(ip: string) {\n const privateIpRegex = /^(10|172\\.16|192\\.168)\\./\n return privateIpRegex.test(ip)\n}\n\nexport async function detectExternalIps(\n kubeConfig: KubeConfig,\n internalIpsPolicy: k8s.InternalIpsPolicy,\n): Promise<string[]> {\n const nodeApi = kubeConfig.makeApiClient(CoreV1Api)\n const nodes = await nodeApi.listNode()\n\n return nodes.items.flatMap(node => {\n const addresses = node.status?.addresses ?? []\n const externalIp = addresses.find(address => address.type === \"ExternalIP\")\n const internalIp = addresses.find(address => address.type === \"InternalIP\")\n\n const result: string[] = []\n\n if (externalIp?.address) {\n result.push(externalIp.address)\n }\n\n if (internalIp?.address && internalIpsPolicy === \"always\") {\n result.push(internalIp.address)\n }\n\n if (internalIp?.address && internalIpsPolicy === \"public\" && !isPrivateIp(internalIp.address)) {\n result.push(internalIp.address)\n }\n\n return result\n })\n}\n\nexport function createK8sTerminal(kubeconfig: Input<string>): InstanceTerminal {\n return {\n name: \"management\",\n title: \"Cluster Management\",\n description: \"Manage the cluster using kubectl and helm\",\n icon: \"devicon:kubernetes\",\n\n image: images[\"terminal-kubectl\"].image,\n command: [\"bash\", \"/welcome.sh\"],\n\n files: {\n \"/kubeconfig\": secret(kubeconfig),\n\n \"/welcome.sh\": text`\n echo \"Connecting to the cluster...\"\n kubectl cluster-info\n\n echo \"Use 'kubectl' and 'helm' to manage the cluster.\"\n echo\n\n exec bash\n `,\n },\n\n env: {\n KUBECONFIG: \"/kubeconfig\",\n },\n }\n}\n"]}
@@ -1,17 +1,7 @@
1
- import {
2
- __export
3
- } from "./chunk-PZ5AY32C.js";
4
-
5
- // src/namespace.ts
6
- import { core as core2 } from "@pulumi/kubernetes";
7
- import {
8
- ComponentResource,
9
- output as output2
10
- } from "@pulumi/pulumi";
11
-
12
- // src/shared.ts
13
- import { interpolate, output, toPromise } from "@highstate/pulumi";
14
- import { core, Provider } from "@pulumi/kubernetes";
1
+ import { __export } from './chunk-PZ5AY32C.js';
2
+ import { Provider, core } from '@pulumi/kubernetes';
3
+ import { ComponentResource, output as output$1 } from '@pulumi/pulumi';
4
+ import { output, toPromise, interpolate } from '@highstate/pulumi';
15
5
 
16
6
  // assets/images.json
17
7
  var images_exports = {};
@@ -121,7 +111,7 @@ var Namespace = class extends ComponentResource {
121
111
  name,
122
112
  {
123
113
  ...args,
124
- name: output2(args).apply((args2) => {
114
+ name: output$1(args).apply((args2) => {
125
115
  if (args2.resource.clusterId !== args2.cluster.id) {
126
116
  throw new Error(
127
117
  `Cluster mismatch when patching namespace "${name}": "${args2.resource.clusterId}" != "${args2.cluster.id}"`
@@ -144,7 +134,7 @@ var Namespace = class extends ComponentResource {
144
134
  }
145
135
  return new ExternalNamespace(
146
136
  name,
147
- output2(args).apply((args2) => {
137
+ output$1(args).apply((args2) => {
148
138
  if (args2.resource.clusterId !== args2.cluster.id) {
149
139
  throw new Error(
150
140
  `Cluster mismatch when receiving namespace "${name}": "${args2.resource.clusterId}" != "${args2.cluster.id}"`
@@ -182,8 +172,8 @@ function mapNamespaceMetadata(args, name) {
182
172
  }
183
173
  var CreatedNamespace = class extends Namespace {
184
174
  constructor(name, args, opts) {
185
- const namespace = output2(args).apply(async (args2) => {
186
- return new core2.v1.Namespace(
175
+ const namespace = output$1(args).apply(async (args2) => {
176
+ return new core.v1.Namespace(
187
177
  name,
188
178
  {
189
179
  metadata: mapNamespaceMetadata(args2, name)
@@ -200,7 +190,7 @@ var CreatedNamespace = class extends Namespace {
200
190
  name,
201
191
  args,
202
192
  opts,
203
- output2(args.cluster),
193
+ output$1(args.cluster),
204
194
  namespace.metadata,
205
195
  namespace.spec,
206
196
  namespace.status
@@ -209,8 +199,8 @@ var CreatedNamespace = class extends Namespace {
209
199
  };
210
200
  var NamespacePatch = class extends Namespace {
211
201
  constructor(name, args, opts) {
212
- const namespace = output2(args).apply(async (args2) => {
213
- return new core2.v1.NamespacePatch(
202
+ const namespace = output$1(args).apply(async (args2) => {
203
+ return new core.v1.NamespacePatch(
214
204
  name,
215
205
  {
216
206
  metadata: mapNamespaceMetadata(args2, name)
@@ -227,7 +217,7 @@ var NamespacePatch = class extends Namespace {
227
217
  name,
228
218
  args,
229
219
  opts,
230
- output2(args.cluster),
220
+ output$1(args.cluster),
231
221
  namespace.metadata,
232
222
  namespace.spec,
233
223
  namespace.status
@@ -236,8 +226,8 @@ var NamespacePatch = class extends Namespace {
236
226
  };
237
227
  var ExternalNamespace = class extends Namespace {
238
228
  constructor(name, id, cluster, opts) {
239
- const namespace = output2(id).apply(async (realName) => {
240
- return core2.v1.Namespace.get(
229
+ const namespace = output$1(id).apply(async (realName) => {
230
+ return core.v1.Namespace.get(
241
231
  //
242
232
  name,
243
233
  realName,
@@ -253,7 +243,7 @@ var ExternalNamespace = class extends Namespace {
253
243
  name,
254
244
  { id, cluster },
255
245
  opts,
256
- output2(cluster),
246
+ output$1(cluster),
257
247
  namespace.metadata,
258
248
  namespace.spec,
259
249
  namespace.status
@@ -261,16 +251,6 @@ var ExternalNamespace = class extends Namespace {
261
251
  }
262
252
  };
263
253
 
264
- export {
265
- images_exports,
266
- Namespace,
267
- getProvider,
268
- commonExtraArgs,
269
- mapMetadata,
270
- mapSelectorLikeToSelector,
271
- mapNamespaceLikeToNamespaceName,
272
- mapNamespaceNameToSelector,
273
- resourceIdToString,
274
- withPatchName
275
- };
276
- //# sourceMappingURL=chunk-YUMBUWA4.js.map
254
+ export { Namespace, commonExtraArgs, getProvider, images_exports, mapMetadata, mapNamespaceLikeToNamespaceName, mapNamespaceNameToSelector, mapSelectorLikeToSelector, resourceIdToString, withPatchName };
255
+ //# sourceMappingURL=chunk-5TLC5BXR.js.map
256
+ //# sourceMappingURL=chunk-5TLC5BXR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../assets/images.json","../src/shared.ts","../src/namespace.ts"],"names":["terminal-kubectl","cluster","provider","resource","output","args","core"],"mappings":"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","file":"chunk-5TLC5BXR.js","sourcesContent":["{\n \"terminal-kubectl\": {\n \"name\": \"ghcr.io/exeteres/highstate/terminal-kubectl\",\n \"tag\": \"latest\",\n \"image\": \"ghcr.io/exeteres/highstate/terminal-kubectl:latest@sha256:6b43498234fa7e2edbae2cd108a40b957575d184349ea622ffabdbe9b6d06933\"\n }\n}\n","import type { PartialKeys } from \"@highstate/contract\"\nimport type { k8s } from \"@highstate/library\"\nimport { interpolate, Output, output, toPromise, type Input, type Unwrap } from \"@highstate/pulumi\"\nimport { core, Provider, types } from \"@pulumi/kubernetes\"\nimport * as images from \"../assets/images.json\"\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 function getProviderSync(cluster: k8s.Cluster): Provider {\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\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<NamespaceLike | undefined>\n}\n\nexport function resourceIdToString(id: Input<ResourceId>): Output<string> {\n return output(id).apply(metadata => {\n const namespaceName = metadata.namespace\n ? mapNamespaceLikeToNamespaceName(metadata.namespace)\n : undefined\n\n return output(namespaceName ? interpolate`${namespaceName}/${metadata.name}` : metadata.name)\n })\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\nexport { images }\n","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 type Unwrap,\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\nfunction mapNamespaceMetadata(\n args: Unwrap<NamespaceArgs>,\n name: string,\n): types.input.meta.v1.ObjectMeta {\n const labels: Record<string, string> = args.metadata?.labels ?? {}\n\n if (args.privileged) {\n labels[\"pod-security.kubernetes.io/enforce\"] = \"privileged\"\n }\n\n return { ...mapMetadata(args, name), labels }\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: mapNamespaceMetadata(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: mapNamespaceMetadata(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"]}