cdk8s-plus-36 0.0.1 → 2.0.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.
Files changed (156) hide show
  1. package/.jsii +105714 -0
  2. package/CODE_OF_CONDUCT.md +3 -0
  3. package/CONTRIBUTING.md +185 -0
  4. package/DCO +34 -0
  5. package/LICENSE +202 -0
  6. package/NOTICE +1 -0
  7. package/OWNERS.md +5 -0
  8. package/README.md +21 -34
  9. package/SECURITY.md +5 -0
  10. package/cdk8s.yaml +13 -0
  11. package/docs/java.md +156096 -0
  12. package/docs/plus/config-map.md +98 -0
  13. package/docs/plus/container.md +133 -0
  14. package/docs/plus/cronjob.md +67 -0
  15. package/docs/plus/deployment.md +232 -0
  16. package/docs/plus/horizontal-pod-autoscaler.md +226 -0
  17. package/docs/plus/ingress.md +68 -0
  18. package/docs/plus/job.md +48 -0
  19. package/docs/plus/namespace.md +58 -0
  20. package/docs/plus/network-policy.md +341 -0
  21. package/docs/plus/pod.md +455 -0
  22. package/docs/plus/pv.md +82 -0
  23. package/docs/plus/pvc.md +77 -0
  24. package/docs/plus/rbac.md +104 -0
  25. package/docs/plus/secret.md +32 -0
  26. package/docs/plus/service-account.md +35 -0
  27. package/docs/plus/service.md +41 -0
  28. package/docs/plus/volume.md +84 -0
  29. package/docs/python.md +167536 -0
  30. package/docs/typescript.md +145485 -0
  31. package/git-hooks/README.md +9 -0
  32. package/git-hooks/prepare-commit-msg +18 -0
  33. package/git-hooks/setup.sh +10 -0
  34. package/lib/_action.d.ts +26 -0
  35. package/lib/_action.js +72 -0
  36. package/lib/api-resource.d.ts +298 -0
  37. package/lib/api-resource.js +438 -0
  38. package/lib/base.d.ts +79 -0
  39. package/lib/base.js +124 -0
  40. package/lib/config-map.d.ts +126 -0
  41. package/lib/config-map.js +199 -0
  42. package/lib/container.d.ts +1057 -0
  43. package/lib/container.js +944 -0
  44. package/lib/cron-job.d.ts +138 -0
  45. package/lib/cron-job.js +170 -0
  46. package/lib/daemon-set.d.ts +45 -0
  47. package/lib/daemon-set.js +91 -0
  48. package/lib/deployment.d.ts +235 -0
  49. package/lib/deployment.js +274 -0
  50. package/lib/handler.d.ts +62 -0
  51. package/lib/handler.js +88 -0
  52. package/lib/horizontal-pod-autoscaler.d.ts +500 -0
  53. package/lib/horizontal-pod-autoscaler.js +629 -0
  54. package/lib/imports/k8s.d.ts +27283 -0
  55. package/lib/imports/k8s.js +20112 -0
  56. package/lib/index.d.ts +26 -0
  57. package/lib/index.js +66 -0
  58. package/lib/ingress.d.ts +230 -0
  59. package/lib/ingress.js +282 -0
  60. package/lib/job.d.ts +64 -0
  61. package/lib/job.js +101 -0
  62. package/lib/namespace.d.ts +128 -0
  63. package/lib/namespace.js +148 -0
  64. package/lib/network-policy.d.ts +311 -0
  65. package/lib/network-policy.js +383 -0
  66. package/lib/pod.d.ts +1097 -0
  67. package/lib/pod.js +1227 -0
  68. package/lib/probe.d.ts +181 -0
  69. package/lib/probe.js +124 -0
  70. package/lib/pv.d.ts +375 -0
  71. package/lib/pv.js +387 -0
  72. package/lib/pvc.d.ts +163 -0
  73. package/lib/pvc.js +204 -0
  74. package/lib/role-binding.d.ts +138 -0
  75. package/lib/role-binding.js +207 -0
  76. package/lib/role.d.ts +268 -0
  77. package/lib/role.js +441 -0
  78. package/lib/secret.d.ts +195 -0
  79. package/lib/secret.js +221 -0
  80. package/lib/service-account.d.ts +83 -0
  81. package/lib/service-account.js +148 -0
  82. package/lib/service.d.ts +289 -0
  83. package/lib/service.js +235 -0
  84. package/lib/stateful-set.d.ts +206 -0
  85. package/lib/stateful-set.js +291 -0
  86. package/lib/utils.d.ts +4 -0
  87. package/lib/utils.js +33 -0
  88. package/lib/volume.d.ts +577 -0
  89. package/lib/volume.js +410 -0
  90. package/lib/workload.d.ts +121 -0
  91. package/lib/workload.js +158 -0
  92. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  93. package/node_modules/balanced-match/LICENSE.md +21 -0
  94. package/node_modules/balanced-match/README.md +97 -0
  95. package/node_modules/balanced-match/index.js +62 -0
  96. package/node_modules/balanced-match/package.json +48 -0
  97. package/node_modules/brace-expansion/.github/FUNDING.yml +2 -0
  98. package/node_modules/brace-expansion/LICENSE +21 -0
  99. package/node_modules/brace-expansion/README.md +157 -0
  100. package/node_modules/brace-expansion/index.js +394 -0
  101. package/node_modules/brace-expansion/package.json +49 -0
  102. package/node_modules/minimatch/LICENSE +15 -0
  103. package/node_modules/minimatch/README.md +491 -0
  104. package/node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts +2 -0
  105. package/node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts.map +1 -0
  106. package/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js +14 -0
  107. package/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js.map +1 -0
  108. package/node_modules/minimatch/dist/commonjs/ast.d.ts +20 -0
  109. package/node_modules/minimatch/dist/commonjs/ast.d.ts.map +1 -0
  110. package/node_modules/minimatch/dist/commonjs/ast.js +747 -0
  111. package/node_modules/minimatch/dist/commonjs/ast.js.map +1 -0
  112. package/node_modules/minimatch/dist/commonjs/brace-expressions.d.ts +8 -0
  113. package/node_modules/minimatch/dist/commonjs/brace-expressions.d.ts.map +1 -0
  114. package/node_modules/minimatch/dist/commonjs/brace-expressions.js +152 -0
  115. package/node_modules/minimatch/dist/commonjs/brace-expressions.js.map +1 -0
  116. package/node_modules/minimatch/dist/commonjs/escape.d.ts +12 -0
  117. package/node_modules/minimatch/dist/commonjs/escape.d.ts.map +1 -0
  118. package/node_modules/minimatch/dist/commonjs/escape.js +22 -0
  119. package/node_modules/minimatch/dist/commonjs/escape.js.map +1 -0
  120. package/node_modules/minimatch/dist/commonjs/index.d.ts +98 -0
  121. package/node_modules/minimatch/dist/commonjs/index.d.ts.map +1 -0
  122. package/node_modules/minimatch/dist/commonjs/index.js +1023 -0
  123. package/node_modules/minimatch/dist/commonjs/index.js.map +1 -0
  124. package/node_modules/minimatch/dist/commonjs/package.json +3 -0
  125. package/node_modules/minimatch/dist/commonjs/unescape.d.ts +17 -0
  126. package/node_modules/minimatch/dist/commonjs/unescape.d.ts.map +1 -0
  127. package/node_modules/minimatch/dist/commonjs/unescape.js +24 -0
  128. package/node_modules/minimatch/dist/commonjs/unescape.js.map +1 -0
  129. package/node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts +2 -0
  130. package/node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts.map +1 -0
  131. package/node_modules/minimatch/dist/esm/assert-valid-pattern.js +10 -0
  132. package/node_modules/minimatch/dist/esm/assert-valid-pattern.js.map +1 -0
  133. package/node_modules/minimatch/dist/esm/ast.d.ts +20 -0
  134. package/node_modules/minimatch/dist/esm/ast.d.ts.map +1 -0
  135. package/node_modules/minimatch/dist/esm/ast.js +743 -0
  136. package/node_modules/minimatch/dist/esm/ast.js.map +1 -0
  137. package/node_modules/minimatch/dist/esm/brace-expressions.d.ts +8 -0
  138. package/node_modules/minimatch/dist/esm/brace-expressions.d.ts.map +1 -0
  139. package/node_modules/minimatch/dist/esm/brace-expressions.js +148 -0
  140. package/node_modules/minimatch/dist/esm/brace-expressions.js.map +1 -0
  141. package/node_modules/minimatch/dist/esm/escape.d.ts +12 -0
  142. package/node_modules/minimatch/dist/esm/escape.d.ts.map +1 -0
  143. package/node_modules/minimatch/dist/esm/escape.js +18 -0
  144. package/node_modules/minimatch/dist/esm/escape.js.map +1 -0
  145. package/node_modules/minimatch/dist/esm/index.d.ts +98 -0
  146. package/node_modules/minimatch/dist/esm/index.d.ts.map +1 -0
  147. package/node_modules/minimatch/dist/esm/index.js +1007 -0
  148. package/node_modules/minimatch/dist/esm/index.js.map +1 -0
  149. package/node_modules/minimatch/dist/esm/package.json +3 -0
  150. package/node_modules/minimatch/dist/esm/unescape.d.ts +17 -0
  151. package/node_modules/minimatch/dist/esm/unescape.d.ts.map +1 -0
  152. package/node_modules/minimatch/dist/esm/unescape.js +20 -0
  153. package/node_modules/minimatch/dist/esm/unescape.js.map +1 -0
  154. package/node_modules/minimatch/package.json +82 -0
  155. package/package.json +172 -6
  156. package/rotate.md +82 -0
package/lib/job.d.ts ADDED
@@ -0,0 +1,64 @@
1
+ import { ApiObject, Duration } from 'cdk8s';
2
+ import { Construct } from 'constructs';
3
+ import * as k8s from './imports/k8s';
4
+ import * as workload from './workload';
5
+ /**
6
+ * Properties for `Job`.
7
+ */
8
+ export interface JobProps extends workload.WorkloadProps {
9
+ /**
10
+ * Specifies the duration the job may be active before the system tries to terminate it.
11
+ *
12
+ * @default - If unset, then there is no deadline.
13
+ */
14
+ readonly activeDeadline?: Duration;
15
+ /**
16
+ * Specifies the number of retries before marking this job failed.
17
+ *
18
+ * @default - If not set, system defaults to 6.
19
+ */
20
+ readonly backoffLimit?: number;
21
+ /**
22
+ * Limits the lifetime of a Job that has finished execution (either Complete
23
+ * or Failed). If this field is set, after the Job finishes, it is eligible to
24
+ * be automatically deleted. When the Job is being deleted, its lifecycle
25
+ * guarantees (e.g. finalizers) will be honored. If this field is set to zero,
26
+ * the Job becomes eligible to be deleted immediately after it finishes. This
27
+ * field is alpha-level and is only honored by servers that enable the
28
+ * `TTLAfterFinished` feature.
29
+ *
30
+ * @default - If this field is unset, the Job won't be automatically deleted.
31
+ */
32
+ readonly ttlAfterFinished?: Duration;
33
+ }
34
+ /**
35
+ * A Job creates one or more Pods and ensures that a specified number of them successfully terminate. As pods successfully complete,
36
+ * the Job tracks the successful completions. When a specified number of successful completions is reached, the task (ie, Job) is complete.
37
+ * Deleting a Job will clean up the Pods it created. A simple case is to create one Job object in order to reliably run one Pod to completion.
38
+ * The Job object will start a new Pod if the first Pod fails or is deleted (for example due to a node hardware failure or a node reboot).
39
+ * You can also use a Job to run multiple Pods in parallel.
40
+ */
41
+ export declare class Job extends workload.Workload {
42
+ /**
43
+ * Duration before job is terminated. If undefined, there is no deadline.
44
+ */
45
+ readonly activeDeadline?: Duration;
46
+ /**
47
+ * Number of retries before marking failed.
48
+ */
49
+ readonly backoffLimit?: number;
50
+ /**
51
+ * TTL before the job is deleted after it is finished.
52
+ */
53
+ readonly ttlAfterFinished?: Duration;
54
+ /**
55
+ * @see base.Resource.apiObject
56
+ */
57
+ protected readonly apiObject: ApiObject;
58
+ readonly resourceType = "jobs";
59
+ constructor(scope: Construct, id: string, props?: JobProps);
60
+ /**
61
+ * @internal
62
+ */
63
+ _toKube(): k8s.JobSpec;
64
+ }
package/lib/job.js ADDED
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Job = void 0;
37
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
38
+ const cdk8s_1 = require("cdk8s");
39
+ const k8s = __importStar(require("./imports/k8s"));
40
+ const pod = __importStar(require("./pod"));
41
+ const workload = __importStar(require("./workload"));
42
+ /**
43
+ * A Job creates one or more Pods and ensures that a specified number of them successfully terminate. As pods successfully complete,
44
+ * the Job tracks the successful completions. When a specified number of successful completions is reached, the task (ie, Job) is complete.
45
+ * Deleting a Job will clean up the Pods it created. A simple case is to create one Job object in order to reliably run one Pod to completion.
46
+ * The Job object will start a new Pod if the first Pod fails or is deleted (for example due to a node hardware failure or a node reboot).
47
+ * You can also use a Job to run multiple Pods in parallel.
48
+ */
49
+ class Job extends workload.Workload {
50
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk8s-plus-36.Job", version: "2.0.0" };
51
+ /**
52
+ * Duration before job is terminated. If undefined, there is no deadline.
53
+ */
54
+ activeDeadline;
55
+ /**
56
+ * Number of retries before marking failed.
57
+ */
58
+ backoffLimit;
59
+ /**
60
+ * TTL before the job is deleted after it is finished.
61
+ */
62
+ ttlAfterFinished;
63
+ /**
64
+ * @see base.Resource.apiObject
65
+ */
66
+ apiObject;
67
+ resourceType = 'jobs';
68
+ constructor(scope, id, props = {}) {
69
+ super(scope, id, {
70
+ restartPolicy: pod.RestartPolicy.NEVER,
71
+ select: false,
72
+ ...props,
73
+ });
74
+ this.apiObject = new k8s.KubeJob(this, 'Resource', {
75
+ metadata: props.metadata,
76
+ spec: cdk8s_1.Lazy.any({ produce: () => this._toKube() }),
77
+ });
78
+ this.activeDeadline = props.activeDeadline;
79
+ this.backoffLimit = props.backoffLimit;
80
+ this.ttlAfterFinished = props.ttlAfterFinished;
81
+ if (this.isolate) {
82
+ this.connections.isolate();
83
+ }
84
+ }
85
+ /**
86
+ * @internal
87
+ */
88
+ _toKube() {
89
+ return {
90
+ template: {
91
+ metadata: this.podMetadata.toJson(),
92
+ spec: this._toPodSpec(),
93
+ },
94
+ activeDeadlineSeconds: this.activeDeadline?.toSeconds(),
95
+ backoffLimit: this.backoffLimit,
96
+ ttlSecondsAfterFinished: this.ttlAfterFinished ? this.ttlAfterFinished.toSeconds() : undefined,
97
+ };
98
+ }
99
+ }
100
+ exports.Job = Job;
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2pvYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQWtEO0FBRWxELG1EQUFxQztBQUNyQywyQ0FBNkI7QUFDN0IscURBQXVDO0FBb0N2Qzs7Ozs7O0dBTUc7QUFDSCxNQUFhLEdBQUksU0FBUSxRQUFRLENBQUMsUUFBUTs7SUFFeEM7O09BRUc7SUFDYSxjQUFjLENBQVk7SUFFMUM7O09BRUc7SUFDYSxZQUFZLENBQVU7SUFFdEM7O09BRUc7SUFDYSxnQkFBZ0IsQ0FBWTtJQUU1Qzs7T0FFRztJQUNnQixTQUFTLENBQVk7SUFFeEIsWUFBWSxHQUFHLE1BQU0sQ0FBQztJQUV0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQWtCLEVBQUU7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLO1lBQ3RDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNqRCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsSUFBSSxFQUFFLFlBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7U0FDbEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFO2dCQUNSLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtnQkFDbkMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7YUFDeEI7WUFDRCxxQkFBcUIsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRTtZQUN2RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDL0YsQ0FBQztJQUNKLENBQUM7O0FBMURILGtCQTREQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwaU9iamVjdCwgTGF6eSwgRHVyYXRpb24gfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGs4cyBmcm9tICcuL2ltcG9ydHMvazhzJztcbmltcG9ydCAqIGFzIHBvZCBmcm9tICcuL3BvZCc7XG5pbXBvcnQgKiBhcyB3b3JrbG9hZCBmcm9tICcuL3dvcmtsb2FkJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBgSm9iYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2JQcm9wcyBleHRlbmRzIHdvcmtsb2FkLldvcmtsb2FkUHJvcHMge1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGR1cmF0aW9uIHRoZSBqb2IgbWF5IGJlIGFjdGl2ZSBiZWZvcmUgdGhlIHN5c3RlbSB0cmllcyB0byB0ZXJtaW5hdGUgaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgdW5zZXQsIHRoZW4gdGhlcmUgaXMgbm8gZGVhZGxpbmUuXG4gICAqL1xuICByZWFkb25seSBhY3RpdmVEZWFkbGluZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiByZXRyaWVzIGJlZm9yZSBtYXJraW5nIHRoaXMgam9iIGZhaWxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiBub3Qgc2V0LCBzeXN0ZW0gZGVmYXVsdHMgdG8gNi5cbiAgICovXG4gIHJlYWRvbmx5IGJhY2tvZmZMaW1pdD86IG51bWJlcjtcblxuICAvKipcbiAgICogTGltaXRzIHRoZSBsaWZldGltZSBvZiBhIEpvYiB0aGF0IGhhcyBmaW5pc2hlZCBleGVjdXRpb24gKGVpdGhlciBDb21wbGV0ZVxuICAgKiBvciBGYWlsZWQpLiBJZiB0aGlzIGZpZWxkIGlzIHNldCwgYWZ0ZXIgdGhlIEpvYiBmaW5pc2hlcywgaXQgaXMgZWxpZ2libGUgdG9cbiAgICogYmUgYXV0b21hdGljYWxseSBkZWxldGVkLiBXaGVuIHRoZSBKb2IgaXMgYmVpbmcgZGVsZXRlZCwgaXRzIGxpZmVjeWNsZVxuICAgKiBndWFyYW50ZWVzIChlLmcuIGZpbmFsaXplcnMpIHdpbGwgYmUgaG9ub3JlZC4gSWYgdGhpcyBmaWVsZCBpcyBzZXQgdG8gemVybyxcbiAgICogdGhlIEpvYiBiZWNvbWVzIGVsaWdpYmxlIHRvIGJlIGRlbGV0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgaXQgZmluaXNoZXMuIFRoaXNcbiAgICogZmllbGQgaXMgYWxwaGEtbGV2ZWwgYW5kIGlzIG9ubHkgaG9ub3JlZCBieSBzZXJ2ZXJzIHRoYXQgZW5hYmxlIHRoZVxuICAgKiBgVFRMQWZ0ZXJGaW5pc2hlZGAgZmVhdHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiB0aGlzIGZpZWxkIGlzIHVuc2V0LCB0aGUgSm9iIHdvbid0IGJlIGF1dG9tYXRpY2FsbHkgZGVsZXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHR0bEFmdGVyRmluaXNoZWQ/OiBEdXJhdGlvbjtcblxufVxuXG4vKipcbiAqIEEgSm9iIGNyZWF0ZXMgb25lIG9yIG1vcmUgUG9kcyBhbmQgZW5zdXJlcyB0aGF0IGEgc3BlY2lmaWVkIG51bWJlciBvZiB0aGVtIHN1Y2Nlc3NmdWxseSB0ZXJtaW5hdGUuIEFzIHBvZHMgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlLFxuICogdGhlIEpvYiB0cmFja3MgdGhlIHN1Y2Nlc3NmdWwgY29tcGxldGlvbnMuIFdoZW4gYSBzcGVjaWZpZWQgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgY29tcGxldGlvbnMgaXMgcmVhY2hlZCwgdGhlIHRhc2sgKGllLCBKb2IpIGlzIGNvbXBsZXRlLlxuICogRGVsZXRpbmcgYSBKb2Igd2lsbCBjbGVhbiB1cCB0aGUgUG9kcyBpdCBjcmVhdGVkLiBBIHNpbXBsZSBjYXNlIGlzIHRvIGNyZWF0ZSBvbmUgSm9iIG9iamVjdCBpbiBvcmRlciB0byByZWxpYWJseSBydW4gb25lIFBvZCB0byBjb21wbGV0aW9uLlxuICogVGhlIEpvYiBvYmplY3Qgd2lsbCBzdGFydCBhIG5ldyBQb2QgaWYgdGhlIGZpcnN0IFBvZCBmYWlscyBvciBpcyBkZWxldGVkIChmb3IgZXhhbXBsZSBkdWUgdG8gYSBub2RlIGhhcmR3YXJlIGZhaWx1cmUgb3IgYSBub2RlIHJlYm9vdCkuXG4gKiBZb3UgY2FuIGFsc28gdXNlIGEgSm9iIHRvIHJ1biBtdWx0aXBsZSBQb2RzIGluIHBhcmFsbGVsLlxuICovXG5leHBvcnQgY2xhc3MgSm9iIGV4dGVuZHMgd29ya2xvYWQuV29ya2xvYWQge1xuXG4gIC8qKlxuICAgKiBEdXJhdGlvbiBiZWZvcmUgam9iIGlzIHRlcm1pbmF0ZWQuIElmIHVuZGVmaW5lZCwgdGhlcmUgaXMgbm8gZGVhZGxpbmUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlRGVhZGxpbmU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHJldHJpZXMgYmVmb3JlIG1hcmtpbmcgZmFpbGVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJhY2tvZmZMaW1pdD86IG51bWJlcjtcblxuICAvKipcbiAgICogVFRMIGJlZm9yZSB0aGUgam9iIGlzIGRlbGV0ZWQgYWZ0ZXIgaXQgaXMgZmluaXNoZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHRsQWZ0ZXJGaW5pc2hlZD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBAc2VlIGJhc2UuUmVzb3VyY2UuYXBpT2JqZWN0XG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpT2JqZWN0OiBBcGlPYmplY3Q7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlVHlwZSA9ICdqb2JzJztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSm9iUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcmVzdGFydFBvbGljeTogcG9kLlJlc3RhcnRQb2xpY3kuTkVWRVIsXG4gICAgICBzZWxlY3Q6IGZhbHNlLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFwaU9iamVjdCA9IG5ldyBrOHMuS3ViZUpvYih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBtZXRhZGF0YTogcHJvcHMubWV0YWRhdGEsXG4gICAgICBzcGVjOiBMYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuX3RvS3ViZSgpIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hY3RpdmVEZWFkbGluZSA9IHByb3BzLmFjdGl2ZURlYWRsaW5lO1xuICAgIHRoaXMuYmFja29mZkxpbWl0ID0gcHJvcHMuYmFja29mZkxpbWl0O1xuICAgIHRoaXMudHRsQWZ0ZXJGaW5pc2hlZCA9IHByb3BzLnR0bEFmdGVyRmluaXNoZWQ7XG5cbiAgICBpZiAodGhpcy5pc29sYXRlKSB7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25zLmlzb2xhdGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvS3ViZSgpOiBrOHMuSm9iU3BlYyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgIG1ldGFkYXRhOiB0aGlzLnBvZE1ldGFkYXRhLnRvSnNvbigpLFxuICAgICAgICBzcGVjOiB0aGlzLl90b1BvZFNwZWMoKSxcbiAgICAgIH0sXG4gICAgICBhY3RpdmVEZWFkbGluZVNlY29uZHM6IHRoaXMuYWN0aXZlRGVhZGxpbmU/LnRvU2Vjb25kcygpLFxuICAgICAgYmFja29mZkxpbWl0OiB0aGlzLmJhY2tvZmZMaW1pdCxcbiAgICAgIHR0bFNlY29uZHNBZnRlckZpbmlzaGVkOiB0aGlzLnR0bEFmdGVyRmluaXNoZWQgPyB0aGlzLnR0bEFmdGVyRmluaXNoZWQudG9TZWNvbmRzKCkgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,128 @@
1
+ import { ApiObject } from 'cdk8s';
2
+ import { Construct, IConstruct } from 'constructs';
3
+ import * as base from './base';
4
+ import * as k8s from './imports/k8s';
5
+ import * as networkpolicy from './network-policy';
6
+ import * as pod from './pod';
7
+ /**
8
+ * Configuration for selecting namespaces.
9
+ */
10
+ export interface NamespaceSelectorConfig {
11
+ /**
12
+ * A selector to select namespaces by labels.
13
+ */
14
+ readonly labelSelector?: pod.LabelSelector;
15
+ /**
16
+ * A list of names to select namespaces by names.
17
+ */
18
+ readonly names?: string[];
19
+ }
20
+ /**
21
+ * Represents an object that can select namespaces.
22
+ */
23
+ export interface INamespaceSelector extends IConstruct {
24
+ /**
25
+ * Return the configuration of this selector.
26
+ */
27
+ toNamespaceSelectorConfig(): NamespaceSelectorConfig;
28
+ }
29
+ /**
30
+ * Properties for `Namespace`.
31
+ */
32
+ export interface NamespaceProps extends base.ResourceProps {
33
+ }
34
+ /**
35
+ * In Kubernetes, namespaces provides a mechanism for isolating groups of resources within a single cluster.
36
+ * Names of resources need to be unique within a namespace, but not across namespaces.
37
+ * Namespace-based scoping is applicable only for namespaced objects (e.g. Deployments, Services, etc) and
38
+ * not for cluster-wide objects (e.g. StorageClass, Nodes, PersistentVolumes, etc).
39
+ */
40
+ export declare class Namespace extends base.Resource implements INamespaceSelector, networkpolicy.INetworkPolicyPeer {
41
+ /**
42
+ * @see https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#automatic-labelling
43
+ */
44
+ static readonly NAME_LABEL = "kubernetes.io/metadata.name";
45
+ /**
46
+ * @see base.Resource.apiObject
47
+ */
48
+ protected readonly apiObject: ApiObject;
49
+ readonly resourceType: string;
50
+ private readonly _pods;
51
+ constructor(scope: Construct, id: string, props?: NamespaceProps);
52
+ /**
53
+ * @see INamespaceSelector.toNamespaceSelectorConfig()
54
+ */
55
+ toNamespaceSelectorConfig(): NamespaceSelectorConfig;
56
+ /**
57
+ * @see INetworkPolicyPeer.toNetworkPolicyPeerConfig()
58
+ */
59
+ toNetworkPolicyPeerConfig(): networkpolicy.NetworkPolicyPeerConfig;
60
+ /**
61
+ * @see INetworkPolicyPeer.toPodSelector()
62
+ */
63
+ toPodSelector(): pod.IPodSelector | undefined;
64
+ /**
65
+ * @internal
66
+ */
67
+ _toKube(): k8s.NamespaceSpec;
68
+ }
69
+ /**
70
+ * Options for `Namespaces.select`.
71
+ */
72
+ export interface NamespacesSelectOptions {
73
+ /**
74
+ * Labels the namespaces must have.
75
+ * This is equivalent to using an 'Is' selector.
76
+ *
77
+ * @default - no strict labels requirements.
78
+ */
79
+ readonly labels?: {
80
+ [key: string]: string;
81
+ };
82
+ /**
83
+ * Namespaces must satisfy these selectors.
84
+ * The selectors query labels, just like the `labels` property, but they
85
+ * provide a more advanced matching mechanism.
86
+ *
87
+ * @default - no selector requirements.
88
+ */
89
+ readonly expressions?: pod.LabelExpression[];
90
+ /**
91
+ * Namespaces names must be one of these.
92
+ *
93
+ * @default - no name requirements.
94
+ */
95
+ readonly names?: string[];
96
+ }
97
+ /**
98
+ * Represents a group of namespaces.
99
+ */
100
+ export declare class Namespaces extends Construct implements INamespaceSelector, networkpolicy.INetworkPolicyPeer {
101
+ private readonly expressions?;
102
+ private readonly names?;
103
+ private readonly labels?;
104
+ /**
105
+ * Select specific namespaces.
106
+ */
107
+ static select(scope: Construct, id: string, options: NamespacesSelectOptions): Namespaces;
108
+ /**
109
+ * Select all namespaces.
110
+ */
111
+ static all(scope: Construct, id: string): Namespaces;
112
+ private readonly _pods;
113
+ constructor(scope: Construct, id: string, expressions?: pod.LabelExpression[] | undefined, names?: string[] | undefined, labels?: {
114
+ [key: string]: string;
115
+ } | undefined);
116
+ /**
117
+ * @see INamespaceSelector.toNamespaceSelectorConfig()
118
+ */
119
+ toNamespaceSelectorConfig(): NamespaceSelectorConfig;
120
+ /**
121
+ * @see INetworkPolicyPeer.toNetworkPolicyPeerConfig()
122
+ */
123
+ toNetworkPolicyPeerConfig(): networkpolicy.NetworkPolicyPeerConfig;
124
+ /**
125
+ * @see INetworkPolicyPeer.toPodSelector()
126
+ */
127
+ toPodSelector(): pod.IPodSelector | undefined;
128
+ }
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Namespaces = exports.Namespace = void 0;
37
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
38
+ const cdk8s_1 = require("cdk8s");
39
+ const constructs_1 = require("constructs");
40
+ const base = __importStar(require("./base"));
41
+ const k8s = __importStar(require("./imports/k8s"));
42
+ const pod = __importStar(require("./pod"));
43
+ /**
44
+ * In Kubernetes, namespaces provides a mechanism for isolating groups of resources within a single cluster.
45
+ * Names of resources need to be unique within a namespace, but not across namespaces.
46
+ * Namespace-based scoping is applicable only for namespaced objects (e.g. Deployments, Services, etc) and
47
+ * not for cluster-wide objects (e.g. StorageClass, Nodes, PersistentVolumes, etc).
48
+ */
49
+ class Namespace extends base.Resource {
50
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk8s-plus-36.Namespace", version: "2.0.0" };
51
+ /**
52
+ * @see https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#automatic-labelling
53
+ */
54
+ static NAME_LABEL = 'kubernetes.io/metadata.name';
55
+ /**
56
+ * @see base.Resource.apiObject
57
+ */
58
+ apiObject;
59
+ resourceType = 'namespaces';
60
+ _pods;
61
+ constructor(scope, id, props = {}) {
62
+ super(scope, id);
63
+ this.apiObject = new k8s.KubeNamespace(this, 'Resource', {
64
+ metadata: props.metadata,
65
+ spec: cdk8s_1.Lazy.any({ produce: () => this._toKube() }),
66
+ });
67
+ this._pods = pod.Pods.all(this, 'Pods', {
68
+ namespaces: Namespaces.select(this, 'Namespaces', { names: [this.name] }),
69
+ });
70
+ }
71
+ /**
72
+ * @see INamespaceSelector.toNamespaceSelectorConfig()
73
+ */
74
+ toNamespaceSelectorConfig() {
75
+ return { names: [this.name] };
76
+ }
77
+ /**
78
+ * @see INetworkPolicyPeer.toNetworkPolicyPeerConfig()
79
+ */
80
+ toNetworkPolicyPeerConfig() {
81
+ return this._pods.toNetworkPolicyPeerConfig();
82
+ }
83
+ /**
84
+ * @see INetworkPolicyPeer.toPodSelector()
85
+ */
86
+ toPodSelector() {
87
+ return this._pods.toPodSelector();
88
+ }
89
+ /**
90
+ * @internal
91
+ */
92
+ _toKube() {
93
+ return {};
94
+ }
95
+ }
96
+ exports.Namespace = Namespace;
97
+ /**
98
+ * Represents a group of namespaces.
99
+ */
100
+ class Namespaces extends constructs_1.Construct {
101
+ expressions;
102
+ names;
103
+ labels;
104
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk8s-plus-36.Namespaces", version: "2.0.0" };
105
+ /**
106
+ * Select specific namespaces.
107
+ */
108
+ static select(scope, id, options) {
109
+ return new Namespaces(scope, id, options.expressions, options.names, options.labels);
110
+ }
111
+ /**
112
+ * Select all namespaces.
113
+ */
114
+ static all(scope, id) {
115
+ return Namespaces.select(scope, id, { expressions: [], labels: {} });
116
+ }
117
+ _pods;
118
+ constructor(scope, id, expressions, names, labels) {
119
+ super(scope, id);
120
+ this.expressions = expressions;
121
+ this.names = names;
122
+ this.labels = labels;
123
+ this._pods = pod.Pods.all(this, 'Pods', { namespaces: this });
124
+ }
125
+ /**
126
+ * @see INamespaceSelector.toNamespaceSelectorConfig()
127
+ */
128
+ toNamespaceSelectorConfig() {
129
+ return {
130
+ labelSelector: pod.LabelSelector.of({ expressions: this.expressions, labels: this.labels }),
131
+ names: this.names,
132
+ };
133
+ }
134
+ /**
135
+ * @see INetworkPolicyPeer.toNetworkPolicyPeerConfig()
136
+ */
137
+ toNetworkPolicyPeerConfig() {
138
+ return this._pods.toNetworkPolicyPeerConfig();
139
+ }
140
+ /**
141
+ * @see INetworkPolicyPeer.toPodSelector()
142
+ */
143
+ toPodSelector() {
144
+ return this._pods.toPodSelector();
145
+ }
146
+ }
147
+ exports.Namespaces = Namespaces;
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25hbWVzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQXdDO0FBQ3hDLDJDQUFtRDtBQUNuRCw2Q0FBK0I7QUFDL0IsbURBQXFDO0FBRXJDLDJDQUE2QjtBQWlDN0I7Ozs7O0dBS0c7QUFDSCxNQUFhLFNBQVUsU0FBUSxJQUFJLENBQUMsUUFBUTs7SUFFMUM7O09BRUc7SUFDSSxNQUFNLENBQVUsVUFBVSxHQUFHLDZCQUE2QixDQUFDO0lBRWxFOztPQUVHO0lBQ2dCLFNBQVMsQ0FBWTtJQUV4QixZQUFZLEdBQVcsWUFBWSxDQUFDO0lBRW5DLEtBQUssQ0FBVztJQUVqQyxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUF3QixFQUFFO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN2RCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsSUFBSSxFQUFFLFlBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7U0FDbEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3RDLFVBQVUsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUMxRSxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLHlCQUF5QjtRQUM5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOztBQXhESCw4QkEwREM7QUFpQ0Q7O0dBRUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQW1CcEI7SUFDQTtJQUNBOztJQW5CbkI7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE9BQWdDO1FBQ2pGLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFVO1FBQzVDLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRWdCLEtBQUssQ0FBVztJQUVqQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUNyQixXQUFtQyxFQUNuQyxLQUFnQixFQUNoQixNQUFrQztRQUNuRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSEEsZ0JBQVcsR0FBWCxXQUFXLENBQXdCO1FBQ25DLFVBQUssR0FBTCxLQUFLLENBQVc7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBNEI7UUFHbkQsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0kseUJBQXlCO1FBQzlCLE9BQU87WUFDTCxhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFFO1lBQzVGLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0kseUJBQXlCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7O0FBakRILGdDQW1EQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwaU9iamVjdCwgTGF6eSB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgYmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0ICogYXMgazhzIGZyb20gJy4vaW1wb3J0cy9rOHMnO1xuaW1wb3J0ICogYXMgbmV0d29ya3BvbGljeSBmcm9tICcuL25ldHdvcmstcG9saWN5JztcbmltcG9ydCAqIGFzIHBvZCBmcm9tICcuL3BvZCc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3Igc2VsZWN0aW5nIG5hbWVzcGFjZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZXNwYWNlU2VsZWN0b3JDb25maWcge1xuXG4gIC8qKlxuICAgKiBBIHNlbGVjdG9yIHRvIHNlbGVjdCBuYW1lc3BhY2VzIGJ5IGxhYmVscy5cbiAgICovXG4gIHJlYWRvbmx5IGxhYmVsU2VsZWN0b3I/OiBwb2QuTGFiZWxTZWxlY3RvcjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG5hbWVzIHRvIHNlbGVjdCBuYW1lc3BhY2VzIGJ5IG5hbWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIG9iamVjdCB0aGF0IGNhbiBzZWxlY3QgbmFtZXNwYWNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTmFtZXNwYWNlU2VsZWN0b3IgZXh0ZW5kcyBJQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFJldHVybiB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGlzIHNlbGVjdG9yLlxuICAgKi9cbiAgdG9OYW1lc3BhY2VTZWxlY3RvckNvbmZpZygpOiBOYW1lc3BhY2VTZWxlY3RvckNvbmZpZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBgTmFtZXNwYWNlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYW1lc3BhY2VQcm9wcyBleHRlbmRzIGJhc2UuUmVzb3VyY2VQcm9wcyB7fVxuXG4vKipcbiAqIEluIEt1YmVybmV0ZXMsIG5hbWVzcGFjZXMgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIGlzb2xhdGluZyBncm91cHMgb2YgcmVzb3VyY2VzIHdpdGhpbiBhIHNpbmdsZSBjbHVzdGVyLlxuICogTmFtZXMgb2YgcmVzb3VyY2VzIG5lZWQgdG8gYmUgdW5pcXVlIHdpdGhpbiBhIG5hbWVzcGFjZSwgYnV0IG5vdCBhY3Jvc3MgbmFtZXNwYWNlcy5cbiAqIE5hbWVzcGFjZS1iYXNlZCBzY29waW5nIGlzIGFwcGxpY2FibGUgb25seSBmb3IgbmFtZXNwYWNlZCBvYmplY3RzIChlLmcuIERlcGxveW1lbnRzLCBTZXJ2aWNlcywgZXRjKSBhbmRcbiAqIG5vdCBmb3IgY2x1c3Rlci13aWRlIG9iamVjdHMgKGUuZy4gU3RvcmFnZUNsYXNzLCBOb2RlcywgUGVyc2lzdGVudFZvbHVtZXMsIGV0YykuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2UgZXh0ZW5kcyBiYXNlLlJlc291cmNlIGltcGxlbWVudHMgSU5hbWVzcGFjZVNlbGVjdG9yLCBuZXR3b3JrcG9saWN5LklOZXR3b3JrUG9saWN5UGVlciB7XG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvb3ZlcnZpZXcvd29ya2luZy13aXRoLW9iamVjdHMvbmFtZXNwYWNlcy8jYXV0b21hdGljLWxhYmVsbGluZ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOQU1FX0xBQkVMID0gJ2t1YmVybmV0ZXMuaW8vbWV0YWRhdGEubmFtZSc7XG5cbiAgLyoqXG4gICAqIEBzZWUgYmFzZS5SZXNvdXJjZS5hcGlPYmplY3RcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhcGlPYmplY3Q6IEFwaU9iamVjdDtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VUeXBlOiBzdHJpbmcgPSAnbmFtZXNwYWNlcyc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcG9kczogcG9kLlBvZHM7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOYW1lc3BhY2VQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYXBpT2JqZWN0ID0gbmV3IGs4cy5LdWJlTmFtZXNwYWNlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG1ldGFkYXRhOiBwcm9wcy5tZXRhZGF0YSxcbiAgICAgIHNwZWM6IExhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5fdG9LdWJlKCkgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLl9wb2RzID0gcG9kLlBvZHMuYWxsKHRoaXMsICdQb2RzJywge1xuICAgICAgbmFtZXNwYWNlczogTmFtZXNwYWNlcy5zZWxlY3QodGhpcywgJ05hbWVzcGFjZXMnLCB7IG5hbWVzOiBbdGhpcy5uYW1lXSB9KSxcbiAgICB9KTtcblxuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgSU5hbWVzcGFjZVNlbGVjdG9yLnRvTmFtZXNwYWNlU2VsZWN0b3JDb25maWcoKVxuICAgKi9cbiAgcHVibGljIHRvTmFtZXNwYWNlU2VsZWN0b3JDb25maWcoKTogTmFtZXNwYWNlU2VsZWN0b3JDb25maWcge1xuICAgIHJldHVybiB7IG5hbWVzOiBbdGhpcy5uYW1lXSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgSU5ldHdvcmtQb2xpY3lQZWVyLnRvTmV0d29ya1BvbGljeVBlZXJDb25maWcoKVxuICAgKi9cbiAgcHVibGljIHRvTmV0d29ya1BvbGljeVBlZXJDb25maWcoKTogbmV0d29ya3BvbGljeS5OZXR3b3JrUG9saWN5UGVlckNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BvZHMudG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgSU5ldHdvcmtQb2xpY3lQZWVyLnRvUG9kU2VsZWN0b3IoKVxuICAgKi9cbiAgcHVibGljIHRvUG9kU2VsZWN0b3IoKTogcG9kLklQb2RTZWxlY3RvciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BvZHMudG9Qb2RTZWxlY3RvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0t1YmUoKTogazhzLk5hbWVzcGFjZVNwZWMge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYE5hbWVzcGFjZXMuc2VsZWN0YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYW1lc3BhY2VzU2VsZWN0T3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIExhYmVscyB0aGUgbmFtZXNwYWNlcyBtdXN0IGhhdmUuXG4gICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byB1c2luZyBhbiAnSXMnIHNlbGVjdG9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHN0cmljdCBsYWJlbHMgcmVxdWlyZW1lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWxzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogTmFtZXNwYWNlcyBtdXN0IHNhdGlzZnkgdGhlc2Ugc2VsZWN0b3JzLlxuICAgKiBUaGUgc2VsZWN0b3JzIHF1ZXJ5IGxhYmVscywganVzdCBsaWtlIHRoZSBgbGFiZWxzYCBwcm9wZXJ0eSwgYnV0IHRoZXlcbiAgICogcHJvdmlkZSBhIG1vcmUgYWR2YW5jZWQgbWF0Y2hpbmcgbWVjaGFuaXNtLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNlbGVjdG9yIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGV4cHJlc3Npb25zPzogcG9kLkxhYmVsRXhwcmVzc2lvbltdO1xuXG4gIC8qKlxuICAgKiBOYW1lc3BhY2VzIG5hbWVzIG11c3QgYmUgb25lIG9mIHRoZXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG5hbWUgcmVxdWlyZW1lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXM/OiBzdHJpbmdbXTtcblxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBncm91cCBvZiBuYW1lc3BhY2VzLlxuICovXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlcyBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElOYW1lc3BhY2VTZWxlY3RvciwgbmV0d29ya3BvbGljeS5JTmV0d29ya1BvbGljeVBlZXIge1xuXG4gIC8qKlxuICAgKiBTZWxlY3Qgc3BlY2lmaWMgbmFtZXNwYWNlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IE5hbWVzcGFjZXNTZWxlY3RPcHRpb25zKTogTmFtZXNwYWNlcyB7XG4gICAgcmV0dXJuIG5ldyBOYW1lc3BhY2VzKHNjb3BlLCBpZCwgb3B0aW9ucy5leHByZXNzaW9ucywgb3B0aW9ucy5uYW1lcywgb3B0aW9ucy5sYWJlbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBhbGwgbmFtZXNwYWNlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWxsKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpOiBOYW1lc3BhY2VzIHtcbiAgICByZXR1cm4gTmFtZXNwYWNlcy5zZWxlY3Qoc2NvcGUsIGlkLCB7IGV4cHJlc3Npb25zOiBbXSwgbGFiZWxzOiB7fSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BvZHM6IHBvZC5Qb2RzO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBleHByZXNzaW9ucz86IHBvZC5MYWJlbEV4cHJlc3Npb25bXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hbWVzPzogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBsYWJlbHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuX3BvZHMgPSBwb2QuUG9kcy5hbGwodGhpcywgJ1BvZHMnLCB7IG5hbWVzcGFjZXM6IHRoaXMgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJTmFtZXNwYWNlU2VsZWN0b3IudG9OYW1lc3BhY2VTZWxlY3RvckNvbmZpZygpXG4gICAqL1xuICBwdWJsaWMgdG9OYW1lc3BhY2VTZWxlY3RvckNvbmZpZygpOiBOYW1lc3BhY2VTZWxlY3RvckNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsU2VsZWN0b3I6IHBvZC5MYWJlbFNlbGVjdG9yLm9mKHsgZXhwcmVzc2lvbnM6IHRoaXMuZXhwcmVzc2lvbnMsIGxhYmVsczogdGhpcy5sYWJlbHMgfSApLFxuICAgICAgbmFtZXM6IHRoaXMubmFtZXMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIElOZXR3b3JrUG9saWN5UGVlci50b05ldHdvcmtQb2xpY3lQZWVyQ29uZmlnKClcbiAgICovXG4gIHB1YmxpYyB0b05ldHdvcmtQb2xpY3lQZWVyQ29uZmlnKCk6IG5ldHdvcmtwb2xpY3kuTmV0d29ya1BvbGljeVBlZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9wb2RzLnRvTmV0d29ya1BvbGljeVBlZXJDb25maWcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIElOZXR3b3JrUG9saWN5UGVlci50b1BvZFNlbGVjdG9yKClcbiAgICovXG4gIHB1YmxpYyB0b1BvZFNlbGVjdG9yKCk6IHBvZC5JUG9kU2VsZWN0b3IgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wb2RzLnRvUG9kU2VsZWN0b3IoKTtcbiAgfVxuXG59XG4iXX0=