@bluedynamics/cdk8s-plone 0.0.80 → 0.1.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.
@@ -1,30 +1,85 @@
1
1
  import { Construct } from 'constructs';
2
2
  import { Plone } from './plone';
3
+ /**
4
+ * Configuration options for PloneHttpcache (Varnish caching layer).
5
+ */
3
6
  export interface PloneHttpcacheOptions {
4
7
  /**
5
- * plone chart
6
- * @default - none
8
+ * The Plone construct to attach the HTTP cache to.
9
+ * The cache will automatically connect to the backend and frontend services.
7
10
  */
8
11
  readonly plone: Plone;
9
- /** varnishVcl
10
- * @default - file in config folder
12
+ /**
13
+ * Varnish VCL configuration as a string.
14
+ * If provided, this takes precedence over varnishVclFile.
15
+ * @default - loaded from varnishVclFile or default config file
11
16
  */
12
17
  readonly varnishVcl?: string;
13
- /** varnishVclFile
14
- * @default - undefined
18
+ /**
19
+ * Path to a Varnish VCL configuration file.
20
+ * If not provided, uses the default VCL file included in the library.
21
+ * @default - uses default config/varnish.tpl.vcl
15
22
  */
16
23
  readonly varnishVclFile?: string | undefined;
17
- /** existingSecret - Read admin credentials from user provided secret
18
- * @default - undefined
19
- */
24
+ /**
25
+ * Name of an existing Kubernetes secret containing Varnish admin credentials.
26
+ * The secret should be created separately in the same namespace.
27
+ * @default - undefined (no existing secret)
28
+ */
20
29
  readonly existingSecret?: string;
30
+ /**
31
+ * CPU limit for Varnish pods.
32
+ * @default '500m'
33
+ */
21
34
  readonly limitCpu?: string;
35
+ /**
36
+ * Memory limit for Varnish pods.
37
+ * @default '500Mi'
38
+ */
22
39
  readonly limitMemory?: string;
40
+ /**
41
+ * CPU request for Varnish pods.
42
+ * @default '100m'
43
+ */
23
44
  readonly requestCpu?: string;
45
+ /**
46
+ * Memory request for Varnish pods.
47
+ * @default '100Mi'
48
+ */
24
49
  readonly requestMemory?: string;
50
+ /**
51
+ * Enable Prometheus ServiceMonitor for metrics collection.
52
+ * Requires Prometheus Operator to be installed in the cluster.
53
+ * @default false
54
+ */
25
55
  readonly servicemonitor?: boolean;
56
+ /**
57
+ * Number of Varnish pod replicas to run.
58
+ * @default 2
59
+ */
60
+ readonly replicas?: number;
26
61
  }
62
+ /**
63
+ * PloneHttpcache construct for deploying Varnish HTTP caching layer.
64
+ *
65
+ * Uses the mittwald/kube-httpcache Helm chart to deploy Varnish as a
66
+ * caching proxy in front of Plone backend and/or frontend services.
67
+ *
68
+ * The cache automatically connects to the Plone services and provides
69
+ * HTTP cache invalidation capabilities.
70
+ *
71
+ * @example
72
+ * const plone = new Plone(chart, 'plone');
73
+ * const cache = new PloneHttpcache(chart, 'cache', {
74
+ * plone: plone,
75
+ * existingSecret: 'varnish-secret',
76
+ * });
77
+ */
27
78
  export declare class PloneHttpcache extends Construct {
79
+ /**
80
+ * Name of the Varnish service created by the Helm chart.
81
+ * Use this to reference the cache service from ingress or other constructs.
82
+ */
28
83
  readonly httpcacheServiceName: string;
29
84
  constructor(scope: Construct, id: string, options: PloneHttpcacheOptions);
30
85
  }
package/lib/httpcache.js CHANGED
@@ -7,6 +7,22 @@ const fs = require("fs");
7
7
  const path = require("path");
8
8
  const cdk8s_1 = require("cdk8s");
9
9
  const constructs_1 = require("constructs");
10
+ /**
11
+ * PloneHttpcache construct for deploying Varnish HTTP caching layer.
12
+ *
13
+ * Uses the mittwald/kube-httpcache Helm chart to deploy Varnish as a
14
+ * caching proxy in front of Plone backend and/or frontend services.
15
+ *
16
+ * The cache automatically connects to the Plone services and provides
17
+ * HTTP cache invalidation capabilities.
18
+ *
19
+ * @example
20
+ * const plone = new Plone(chart, 'plone');
21
+ * const cache = new PloneHttpcache(chart, 'cache', {
22
+ * plone: plone,
23
+ * existingSecret: 'varnish-secret',
24
+ * });
25
+ */
10
26
  class PloneHttpcache extends constructs_1.Construct {
11
27
  constructor(scope, id, options) {
12
28
  super(scope, id);
@@ -29,7 +45,7 @@ class PloneHttpcache extends constructs_1.Construct {
29
45
  repo: 'https://helm.mittwald.de',
30
46
  chart: 'kube-httpcache',
31
47
  values: {
32
- replicaCount: 2,
48
+ replicaCount: options.replicas ?? 2,
33
49
  cache: {
34
50
  // need to looks at the frontendWatch, do we need it?
35
51
  frontendWatch: false,
@@ -94,5 +110,5 @@ class PloneHttpcache extends constructs_1.Construct {
94
110
  }
95
111
  exports.PloneHttpcache = PloneHttpcache;
96
112
  _a = JSII_RTTI_SYMBOL_1;
97
- PloneHttpcache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.0.80" };
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2h0dHBjYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsaUNBQTZCO0FBQzdCLDJDQUF1QztBQW1DdkMsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFJM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksVUFBa0IsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLElBQUksT0FBZSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDbkMsQ0FBQztZQUNELFVBQVUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLFlBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQzVDLHVEQUF1RDtZQUN2RCxJQUFJLEVBQUUsMEJBQTBCO1lBQ2hDLEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsTUFBTSxFQUFFO2dCQUNOLFlBQVksRUFBRSxDQUFDO2dCQUNmLEtBQUssRUFBRTtvQkFDTCxxREFBcUQ7b0JBQ3JELGFBQWEsRUFBRSxLQUFLO29CQUNwQixZQUFZLEVBQUUsS0FBSztvQkFDbkIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLElBQUksU0FBUztpQkFDcEQ7Z0JBQ0QsV0FBVyxFQUFFLFVBQVU7Z0JBQ3ZCLFlBQVksRUFBRTtvQkFDWixFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRTtvQkFDekUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtvQkFDL0MsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO29CQUN4RCxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtvQkFDM0UsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtpQkFDakQ7Z0JBQ0QsNERBQTREO2dCQUM1RCxZQUFZLEVBQUU7b0JBQ1osb0JBQW9CLEVBQUUsT0FBTztpQkFDOUI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULE1BQU0sRUFBRTt3QkFDTixHQUFHLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO3dCQUMvQixNQUFNLEVBQUUsT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPO3FCQUN2QztvQkFDRCxRQUFRLEVBQUU7d0JBQ1IsR0FBRyxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksTUFBTTt3QkFDakMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxhQUFhLElBQUksT0FBTztxQkFDekM7aUJBQ0Y7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLE9BQU8sRUFBRSxLQUFLO2lCQUNmO2dCQUNELFFBQVEsRUFBRTtvQkFDUixPQUFPLEVBQUUsSUFBSTtvQkFDYixTQUFTLEVBQUU7d0JBQ1QsTUFBTSxFQUFFOzRCQUNOLEdBQUcsRUFBRSxNQUFNOzRCQUNYLE1BQU0sRUFBRSxPQUFPO3lCQUNoQjt3QkFDRCxRQUFRLEVBQUU7NEJBQ1IsR0FBRyxFQUFFLEtBQUs7NEJBQ1YsTUFBTSxFQUFFLE1BQU07eUJBQ2Y7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsY0FBYyxFQUFFO29CQUNkLE9BQU8sRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLEtBQUs7b0JBQ3hDLGVBQWUsRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLEtBQUs7aUJBQ2pEO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzVGLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQztZQUN4QixDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDOztBQXBGSCx3Q0FxRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSGVsbSB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUGxvbmUgfSBmcm9tICcuL3Bsb25lJztcblxuZXhwb3J0IGludGVyZmFjZSBQbG9uZUh0dHBjYWNoZU9wdGlvbnMge1xuICAvKipcbiAgICogcGxvbmUgY2hhcnRcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBwbG9uZTogUGxvbmU7XG5cbiAgLyoqIHZhcm5pc2hWY2xcbiAgICogQGRlZmF1bHQgLSBmaWxlIGluIGNvbmZpZyBmb2xkZXJcbiAgICovXG4gIHJlYWRvbmx5IHZhcm5pc2hWY2w/OiBzdHJpbmc7XG5cbiAgLyoqIHZhcm5pc2hWY2xGaWxlXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSB2YXJuaXNoVmNsRmlsZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKiogZXhpc3RpbmdTZWNyZXQgLSBSZWFkIGFkbWluIGNyZWRlbnRpYWxzIGZyb20gdXNlciBwcm92aWRlZCBzZWNyZXRcbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgKi9cbiAgcmVhZG9ubHkgZXhpc3RpbmdTZWNyZXQ/OiBzdHJpbmc7XG5cblxuICAvLyByZXNvdXJjZXNcbiAgcmVhZG9ubHkgbGltaXRDcHU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxpbWl0TWVtb3J5Pzogc3RyaW5nO1xuICByZWFkb25seSByZXF1ZXN0Q3B1Pzogc3RyaW5nO1xuICByZWFkb25seSByZXF1ZXN0TWVtb3J5Pzogc3RyaW5nO1xuICAvLyBtZXRyaWNzXG4gIHJlYWRvbmx5IHNlcnZpY2Vtb25pdG9yPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFBsb25lSHR0cGNhY2hlIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgaHR0cGNhY2hlU2VydmljZU5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRpb25zOiBQbG9uZUh0dHBjYWNoZU9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGxldCB2YXJuaXNoVmNsOiBzdHJpbmc7XG4gICAgaWYgKCFvcHRpb25zLnZhcm5pc2hWY2wpIHtcbiAgICAgIGxldCB2Y2xQYXRoOiBzdHJpbmc7XG4gICAgICBpZiAoIW9wdGlvbnMudmFybmlzaFZjbEZpbGUpIHtcbiAgICAgICAgdmNsUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdjb25maWcnLCAndmFybmlzaC50cGwudmNsJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2Y2xQYXRoID0gb3B0aW9ucy52YXJuaXNoVmNsRmlsZTtcbiAgICAgIH1cbiAgICAgIHZhcm5pc2hWY2wgPSBmcy5yZWFkRmlsZVN5bmModmNsUGF0aCwgJ3V0ZjgnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFybmlzaFZjbCA9IG9wdGlvbnMudmFybmlzaFZjbDtcbiAgICB9XG4gICAgY29uc3QgaHR0cGNhY2hlID0gbmV3IEhlbG0odGhpcywgJ2h0dHBjYWNoZScsIHtcbiAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWl0dHdhbGQva3ViZS1odHRwY2FjaGUvY2hhcnRcbiAgICAgIHJlcG86ICdodHRwczovL2hlbG0ubWl0dHdhbGQuZGUnLFxuICAgICAgY2hhcnQ6ICdrdWJlLWh0dHBjYWNoZScsXG4gICAgICB2YWx1ZXM6IHtcbiAgICAgICAgcmVwbGljYUNvdW50OiAyLFxuICAgICAgICBjYWNoZToge1xuICAgICAgICAgIC8vIG5lZWQgdG8gbG9va3MgYXQgdGhlIGZyb250ZW5kV2F0Y2gsIGRvIHdlIG5lZWQgaXQ/XG4gICAgICAgICAgZnJvbnRlbmRXYXRjaDogZmFsc2UsXG4gICAgICAgICAgYmFja2VuZFdhdGNoOiBmYWxzZSxcbiAgICAgICAgICBleGlzdGluZ1NlY3JldDogb3B0aW9ucy5leGlzdGluZ1NlY3JldCA/PyB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICAgIHZjbFRlbXBsYXRlOiB2YXJuaXNoVmNsLFxuICAgICAgICBleHRyYUVudlZhcnM6IFtcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NFUlZJQ0VfTkFNRScsIHZhbHVlOiBvcHRpb25zLnBsb25lLmJhY2tlbmRTZXJ2aWNlTmFtZSB9LFxuICAgICAgICAgIHsgbmFtZTogJ0JBQ0tFTkRfU0VSVklDRV9QT1JUJywgdmFsdWU6ICc4MDgwJyB9LFxuICAgICAgICAgIHsgbmFtZTogJ0JBQ0tFTkRfU0lURV9JRCcsIHZhbHVlOiBvcHRpb25zLnBsb25lLnNpdGVJZCB9LFxuICAgICAgICAgIHsgbmFtZTogJ0ZST05URU5EX1NFUlZJQ0VfTkFNRScsIHZhbHVlOiBvcHRpb25zLnBsb25lLmZyb250ZW5kU2VydmljZU5hbWUgfSxcbiAgICAgICAgICB7IG5hbWU6ICdGUk9OVEVORF9TRVJWSUNFX1BPUlQnLCB2YWx1ZTogJzMwMDAnIH0sXG4gICAgICAgIF0sXG4gICAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWl0dHdhbGQva3ViZS1odHRwY2FjaGUvaXNzdWVzLzI1M1xuICAgICAgICBub2RlU2VsZWN0b3I6IHtcbiAgICAgICAgICAna3ViZXJuZXRlcy5pby9hcmNoJzogJ2FtZDY0JyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICBjcHU6IG9wdGlvbnMubGltaXRDcHUgfHwgJzUwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLmxpbWl0TWVtb3J5IHx8ICc1MDBNaScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1ZXN0czoge1xuICAgICAgICAgICAgY3B1OiBvcHRpb25zLnJlcXVlc3RDcHUgfHwgJzEwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLnJlcXVlc3RNZW1vcnkgfHwgJzEwME1pJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByYmFjOiB7XG4gICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGV4cG9ydGVyOiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICByZXNvdXJjZXM6IHtcbiAgICAgICAgICAgIGxpbWl0czoge1xuICAgICAgICAgICAgICBjcHU6ICcxMDBtJyxcbiAgICAgICAgICAgICAgbWVtb3J5OiAnMTAwTWknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVlc3RzOiB7XG4gICAgICAgICAgICAgIGNwdTogJzEwbScsXG4gICAgICAgICAgICAgIG1lbW9yeTogJzUwTWknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzZXJ2aWNlTW9uaXRvcjoge1xuICAgICAgICAgIGVuYWJsZWQ6IG9wdGlvbnMuc2VydmljZW1vbml0b3IgfHwgZmFsc2UsXG4gICAgICAgICAgc2NyYXBlU2lnbmFsbGVyOiBvcHRpb25zLnNlcnZpY2Vtb25pdG9yIHx8IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb25zdCBodHRwY2FjaGVTZXJ2aWNlID0gaHR0cGNhY2hlLmFwaU9iamVjdHMuZmluZCgoY29uc3RydWN0KSA9PiB7XG4gICAgICBpZiAoKGNvbnN0cnVjdC5raW5kID09PSAnU2VydmljZScpICYmIChjb25zdHJ1Y3QubWV0YWRhdGEubmFtZT8uZW5kc1dpdGgoJ2t1YmUtaHR0cGNhY2hlJykpKSB7XG4gICAgICAgIHJldHVybiBjb25zdHJ1Y3QubmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgaWYgKGh0dHBjYWNoZVNlcnZpY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBodHRwY2FjaGUgc2VydmljZScpO1xuICAgIH1cbiAgICB0aGlzLmh0dHBjYWNoZVNlcnZpY2VOYW1lID0gaHR0cGNhY2hlU2VydmljZS5uYW1lO1xuICB9XG59Il19
113
+ PloneHttpcache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.1.0" };
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2h0dHBjYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsaUNBQTZCO0FBQzdCLDJDQUF1QztBQXdFdkM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFPM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksVUFBa0IsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLElBQUksT0FBZSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDbkMsQ0FBQztZQUNELFVBQVUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLFlBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQzVDLHVEQUF1RDtZQUN2RCxJQUFJLEVBQUUsMEJBQTBCO1lBQ2hDLEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsTUFBTSxFQUFFO2dCQUNOLFlBQVksRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUM7Z0JBQ25DLEtBQUssRUFBRTtvQkFDTCxxREFBcUQ7b0JBQ3JELGFBQWEsRUFBRSxLQUFLO29CQUNwQixZQUFZLEVBQUUsS0FBSztvQkFDbkIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLElBQUksU0FBUztpQkFDcEQ7Z0JBQ0QsV0FBVyxFQUFFLFVBQVU7Z0JBQ3ZCLFlBQVksRUFBRTtvQkFDWixFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRTtvQkFDekUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtvQkFDL0MsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO29CQUN4RCxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtvQkFDM0UsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtpQkFDakQ7Z0JBQ0QsNERBQTREO2dCQUM1RCxZQUFZLEVBQUU7b0JBQ1osb0JBQW9CLEVBQUUsT0FBTztpQkFDOUI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULE1BQU0sRUFBRTt3QkFDTixHQUFHLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNO3dCQUMvQixNQUFNLEVBQUUsT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPO3FCQUN2QztvQkFDRCxRQUFRLEVBQUU7d0JBQ1IsR0FBRyxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksTUFBTTt3QkFDakMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxhQUFhLElBQUksT0FBTztxQkFDekM7aUJBQ0Y7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLE9BQU8sRUFBRSxLQUFLO2lCQUNmO2dCQUNELFFBQVEsRUFBRTtvQkFDUixPQUFPLEVBQUUsSUFBSTtvQkFDYixTQUFTLEVBQUU7d0JBQ1QsTUFBTSxFQUFFOzRCQUNOLEdBQUcsRUFBRSxNQUFNOzRCQUNYLE1BQU0sRUFBRSxPQUFPO3lCQUNoQjt3QkFDRCxRQUFRLEVBQUU7NEJBQ1IsR0FBRyxFQUFFLEtBQUs7NEJBQ1YsTUFBTSxFQUFFLE1BQU07eUJBQ2Y7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsY0FBYyxFQUFFO29CQUNkLE9BQU8sRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLEtBQUs7b0JBQ3hDLGVBQWUsRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLEtBQUs7aUJBQ2pEO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzVGLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQztZQUN4QixDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDOztBQXZGSCx3Q0F3RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSGVsbSB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUGxvbmUgfSBmcm9tICcuL3Bsb25lJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFBsb25lSHR0cGNhY2hlIChWYXJuaXNoIGNhY2hpbmcgbGF5ZXIpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsb25lSHR0cGNhY2hlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgUGxvbmUgY29uc3RydWN0IHRvIGF0dGFjaCB0aGUgSFRUUCBjYWNoZSB0by5cbiAgICogVGhlIGNhY2hlIHdpbGwgYXV0b21hdGljYWxseSBjb25uZWN0IHRvIHRoZSBiYWNrZW5kIGFuZCBmcm9udGVuZCBzZXJ2aWNlcy5cbiAgICovXG4gIHJlYWRvbmx5IHBsb25lOiBQbG9uZTtcblxuICAvKipcbiAgICogVmFybmlzaCBWQ0wgY29uZmlndXJhdGlvbiBhcyBhIHN0cmluZy5cbiAgICogSWYgcHJvdmlkZWQsIHRoaXMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhcm5pc2hWY2xGaWxlLlxuICAgKiBAZGVmYXVsdCAtIGxvYWRlZCBmcm9tIHZhcm5pc2hWY2xGaWxlIG9yIGRlZmF1bHQgY29uZmlnIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHZhcm5pc2hWY2w/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gYSBWYXJuaXNoIFZDTCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgdXNlcyB0aGUgZGVmYXVsdCBWQ0wgZmlsZSBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeS5cbiAgICogQGRlZmF1bHQgLSB1c2VzIGRlZmF1bHQgY29uZmlnL3Zhcm5pc2gudHBsLnZjbFxuICAgKi9cbiAgcmVhZG9ubHkgdmFybmlzaFZjbEZpbGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgYW4gZXhpc3RpbmcgS3ViZXJuZXRlcyBzZWNyZXQgY29udGFpbmluZyBWYXJuaXNoIGFkbWluIGNyZWRlbnRpYWxzLlxuICAgKiBUaGUgc2VjcmV0IHNob3VsZCBiZSBjcmVhdGVkIHNlcGFyYXRlbHkgaW4gdGhlIHNhbWUgbmFtZXNwYWNlLlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZCAobm8gZXhpc3Rpbmcgc2VjcmV0KVxuICAgKi9cbiAgcmVhZG9ubHkgZXhpc3RpbmdTZWNyZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENQVSBsaW1pdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnNTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0Q3B1Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNZW1vcnkgbGltaXQgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzUwME1pJ1xuICAgKi9cbiAgcmVhZG9ubHkgbGltaXRNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENQVSByZXF1ZXN0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICcxMDBtJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdENwdT86IHN0cmluZztcblxuICAvKipcbiAgICogTWVtb3J5IHJlcXVlc3QgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzEwME1pJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1lbW9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogRW5hYmxlIFByb21ldGhldXMgU2VydmljZU1vbml0b3IgZm9yIG1ldHJpY3MgY29sbGVjdGlvbi5cbiAgICogUmVxdWlyZXMgUHJvbWV0aGV1cyBPcGVyYXRvciB0byBiZSBpbnN0YWxsZWQgaW4gdGhlIGNsdXN0ZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlbW9uaXRvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBWYXJuaXNoIHBvZCByZXBsaWNhcyB0byBydW4uXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2FzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFBsb25lSHR0cGNhY2hlIGNvbnN0cnVjdCBmb3IgZGVwbG95aW5nIFZhcm5pc2ggSFRUUCBjYWNoaW5nIGxheWVyLlxuICpcbiAqIFVzZXMgdGhlIG1pdHR3YWxkL2t1YmUtaHR0cGNhY2hlIEhlbG0gY2hhcnQgdG8gZGVwbG95IFZhcm5pc2ggYXMgYVxuICogY2FjaGluZyBwcm94eSBpbiBmcm9udCBvZiBQbG9uZSBiYWNrZW5kIGFuZC9vciBmcm9udGVuZCBzZXJ2aWNlcy5cbiAqXG4gKiBUaGUgY2FjaGUgYXV0b21hdGljYWxseSBjb25uZWN0cyB0byB0aGUgUGxvbmUgc2VydmljZXMgYW5kIHByb3ZpZGVzXG4gKiBIVFRQIGNhY2hlIGludmFsaWRhdGlvbiBjYXBhYmlsaXRpZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHBsb25lID0gbmV3IFBsb25lKGNoYXJ0LCAncGxvbmUnKTtcbiAqIGNvbnN0IGNhY2hlID0gbmV3IFBsb25lSHR0cGNhY2hlKGNoYXJ0LCAnY2FjaGUnLCB7XG4gKiAgIHBsb25lOiBwbG9uZSxcbiAqICAgZXhpc3RpbmdTZWNyZXQ6ICd2YXJuaXNoLXNlY3JldCcsXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGNsYXNzIFBsb25lSHR0cGNhY2hlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIFZhcm5pc2ggc2VydmljZSBjcmVhdGVkIGJ5IHRoZSBIZWxtIGNoYXJ0LlxuICAgKiBVc2UgdGhpcyB0byByZWZlcmVuY2UgdGhlIGNhY2hlIHNlcnZpY2UgZnJvbSBpbmdyZXNzIG9yIG90aGVyIGNvbnN0cnVjdHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaHR0cGNhY2hlU2VydmljZU5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRpb25zOiBQbG9uZUh0dHBjYWNoZU9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGxldCB2YXJuaXNoVmNsOiBzdHJpbmc7XG4gICAgaWYgKCFvcHRpb25zLnZhcm5pc2hWY2wpIHtcbiAgICAgIGxldCB2Y2xQYXRoOiBzdHJpbmc7XG4gICAgICBpZiAoIW9wdGlvbnMudmFybmlzaFZjbEZpbGUpIHtcbiAgICAgICAgdmNsUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdjb25maWcnLCAndmFybmlzaC50cGwudmNsJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2Y2xQYXRoID0gb3B0aW9ucy52YXJuaXNoVmNsRmlsZTtcbiAgICAgIH1cbiAgICAgIHZhcm5pc2hWY2wgPSBmcy5yZWFkRmlsZVN5bmModmNsUGF0aCwgJ3V0ZjgnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFybmlzaFZjbCA9IG9wdGlvbnMudmFybmlzaFZjbDtcbiAgICB9XG4gICAgY29uc3QgaHR0cGNhY2hlID0gbmV3IEhlbG0odGhpcywgJ2h0dHBjYWNoZScsIHtcbiAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWl0dHdhbGQva3ViZS1odHRwY2FjaGUvY2hhcnRcbiAgICAgIHJlcG86ICdodHRwczovL2hlbG0ubWl0dHdhbGQuZGUnLFxuICAgICAgY2hhcnQ6ICdrdWJlLWh0dHBjYWNoZScsXG4gICAgICB2YWx1ZXM6IHtcbiAgICAgICAgcmVwbGljYUNvdW50OiBvcHRpb25zLnJlcGxpY2FzID8/IDIsXG4gICAgICAgIGNhY2hlOiB7XG4gICAgICAgICAgLy8gbmVlZCB0byBsb29rcyBhdCB0aGUgZnJvbnRlbmRXYXRjaCwgZG8gd2UgbmVlZCBpdD9cbiAgICAgICAgICBmcm9udGVuZFdhdGNoOiBmYWxzZSxcbiAgICAgICAgICBiYWNrZW5kV2F0Y2g6IGZhbHNlLFxuICAgICAgICAgIGV4aXN0aW5nU2VjcmV0OiBvcHRpb25zLmV4aXN0aW5nU2VjcmV0ID8/IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgdmNsVGVtcGxhdGU6IHZhcm5pc2hWY2wsXG4gICAgICAgIGV4dHJhRW52VmFyczogW1xuICAgICAgICAgIHsgbmFtZTogJ0JBQ0tFTkRfU0VSVklDRV9OQU1FJywgdmFsdWU6IG9wdGlvbnMucGxvbmUuYmFja2VuZFNlcnZpY2VOYW1lIH0sXG4gICAgICAgICAgeyBuYW1lOiAnQkFDS0VORF9TRVJWSUNFX1BPUlQnLCB2YWx1ZTogJzgwODAnIH0sXG4gICAgICAgICAgeyBuYW1lOiAnQkFDS0VORF9TSVRFX0lEJywgdmFsdWU6IG9wdGlvbnMucGxvbmUuc2l0ZUlkIH0sXG4gICAgICAgICAgeyBuYW1lOiAnRlJPTlRFTkRfU0VSVklDRV9OQU1FJywgdmFsdWU6IG9wdGlvbnMucGxvbmUuZnJvbnRlbmRTZXJ2aWNlTmFtZSB9LFxuICAgICAgICAgIHsgbmFtZTogJ0ZST05URU5EX1NFUlZJQ0VfUE9SVCcsIHZhbHVlOiAnMzAwMCcgfSxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9taXR0d2FsZC9rdWJlLWh0dHBjYWNoZS9pc3N1ZXMvMjUzXG4gICAgICAgIG5vZGVTZWxlY3Rvcjoge1xuICAgICAgICAgICdrdWJlcm5ldGVzLmlvL2FyY2gnOiAnYW1kNjQnLFxuICAgICAgICB9LFxuICAgICAgICByZXNvdXJjZXM6IHtcbiAgICAgICAgICBsaW1pdHM6IHtcbiAgICAgICAgICAgIGNwdTogb3B0aW9ucy5saW1pdENwdSB8fCAnNTAwbScsXG4gICAgICAgICAgICBtZW1vcnk6IG9wdGlvbnMubGltaXRNZW1vcnkgfHwgJzUwME1pJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVlc3RzOiB7XG4gICAgICAgICAgICBjcHU6IG9wdGlvbnMucmVxdWVzdENwdSB8fCAnMTAwbScsXG4gICAgICAgICAgICBtZW1vcnk6IG9wdGlvbnMucmVxdWVzdE1lbW9yeSB8fCAnMTAwTWknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJiYWM6IHtcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwb3J0ZXI6IHtcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICAgIGNwdTogJzEwMG0nLFxuICAgICAgICAgICAgICBtZW1vcnk6ICcxMDBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWVzdHM6IHtcbiAgICAgICAgICAgICAgY3B1OiAnMTBtJyxcbiAgICAgICAgICAgICAgbWVtb3J5OiAnNTBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNlcnZpY2VNb25pdG9yOiB7XG4gICAgICAgICAgZW5hYmxlZDogb3B0aW9ucy5zZXJ2aWNlbW9uaXRvciB8fCBmYWxzZSxcbiAgICAgICAgICBzY3JhcGVTaWduYWxsZXI6IG9wdGlvbnMuc2VydmljZW1vbml0b3IgfHwgZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGh0dHBjYWNoZVNlcnZpY2UgPSBodHRwY2FjaGUuYXBpT2JqZWN0cy5maW5kKChjb25zdHJ1Y3QpID0+IHtcbiAgICAgIGlmICgoY29uc3RydWN0LmtpbmQgPT09ICdTZXJ2aWNlJykgJiYgKGNvbnN0cnVjdC5tZXRhZGF0YS5uYW1lPy5lbmRzV2l0aCgna3ViZS1odHRwY2FjaGUnKSkpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdC5uYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpZiAoaHR0cGNhY2hlU2VydmljZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGh0dHBjYWNoZSBzZXJ2aWNlJyk7XG4gICAgfVxuICAgIHRoaXMuaHR0cGNhY2hlU2VydmljZU5hbWUgPSBodHRwY2FjaGVTZXJ2aWNlLm5hbWU7XG4gIH1cbn0iXX0=
package/lib/pdb.d.ts CHANGED
@@ -1,24 +1,39 @@
1
1
  import { Construct } from 'constructs';
2
+ /**
3
+ * Configuration options for PodDisruptionBudget.
4
+ */
2
5
  export interface PlonePDBOptions {
3
6
  /**
4
- * maxUnavailable specification
5
- * @default - none
7
+ * Maximum number or percentage of pods that can be unavailable during voluntary disruptions.
8
+ * Can be an absolute number (e.g., 1) or a percentage (e.g., '50%').
9
+ * Cannot be used together with minAvailable.
10
+ * @example 1 or '25%'
11
+ * @default - not set (defaults to minAvailable=1 if neither is specified)
6
12
  */
7
13
  readonly maxUnavailable?: number | string;
8
14
  /**
9
- * minAvailable specification.
10
- * default only set if maxUnavailable is not set.
11
- * @default 1
15
+ * Minimum number or percentage of pods that must remain available during voluntary disruptions.
16
+ * Can be an absolute number (e.g., 1) or a percentage (e.g., '50%').
17
+ * Cannot be used together with maxUnavailable.
18
+ * @example 2 or '50%'
19
+ * @default 1 (if maxUnavailable is not set)
12
20
  */
13
21
  readonly minAvailable?: number | string;
14
22
  /**
15
- * Extra labels to associate with resources.
16
- * @default - none
23
+ * Additional Kubernetes labels for the PodDisruptionBudget.
24
+ * @default - standard Plone labels only
17
25
  */
18
26
  readonly labels?: {
19
27
  [name: string]: string;
20
28
  };
21
29
  }
30
+ /**
31
+ * PlonePDB creates a Kubernetes PodDisruptionBudget for high availability.
32
+ *
33
+ * This is an internal construct used by PloneDeployment.
34
+ * It ensures a minimum number of pods remain available during voluntary
35
+ * disruptions like node drains or cluster upgrades.
36
+ */
22
37
  export declare class PlonePDB extends Construct {
23
38
  constructor(scope: Construct, id: string, selectorLabel: {
24
39
  [name: string]: string;
package/lib/pdb.js CHANGED
@@ -3,6 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PlonePDB = void 0;
4
4
  const constructs_1 = require("constructs");
5
5
  const k8s = require("./imports/k8s");
6
+ /**
7
+ * PlonePDB creates a Kubernetes PodDisruptionBudget for high availability.
8
+ *
9
+ * This is an internal construct used by PloneDeployment.
10
+ * It ensures a minimum number of pods remain available during voluntary
11
+ * disruptions like node drains or cluster upgrades.
12
+ */
6
13
  class PlonePDB extends constructs_1.Construct {
7
14
  constructor(scope, id, selectorLabel, options) {
8
15
  super(scope, id);
@@ -52,4 +59,4 @@ class PlonePDB extends constructs_1.Construct {
52
59
  }
53
60
  }
54
61
  exports.PlonePDB = PlonePDB;
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BkYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMscUNBQXFDO0FBdUJyQyxNQUFhLFFBQVMsU0FBUSxzQkFBUztJQUVyQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLGFBQXlDLEVBQUUsT0FBd0I7UUFDM0csS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLElBQUksR0FBZ0MsRUFBRSxDQUFDO1FBQzNDLElBQUksT0FBTyxPQUFPLENBQUMsY0FBYyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9DLElBQUksR0FBRztnQkFDTCxjQUFjLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGNBQXdCLENBQUM7YUFDN0UsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLE9BQU8sT0FBTyxDQUFDLGNBQWMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0RCxJQUFJLEdBQUc7Z0JBQ0wsY0FBYyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxjQUF3QixDQUFDO2FBQzdFLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0MsSUFBSSxHQUFHO2dCQUNMLEdBQUcsSUFBSTtnQkFDUCxZQUFZLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQXNCLENBQUM7YUFDekUsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLE9BQU8sT0FBTyxDQUFDLFlBQVksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNwRCxJQUFJLEdBQUc7Z0JBQ0wsR0FBRyxJQUFJO2dCQUNQLFlBQVksRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBc0IsQ0FBQzthQUN6RSxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvRSxJQUFJLEdBQUc7Z0JBQ0wsWUFBWSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUM1QyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksR0FBRztZQUNMLEdBQUcsSUFBSTtZQUNQLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUU7U0FDekMsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQ3ZCLDJCQUEyQixFQUFFLE9BQU87WUFDcEMsOEJBQThCLEVBQUUsYUFBYTtTQUM5QyxDQUFDO1FBRUYsSUFBSSxHQUFHLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUMzQyxRQUFRLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLFVBQVU7YUFDbkI7WUFDRCxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWpERCw0QkFpREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGs4cyBmcm9tICcuL2ltcG9ydHMvazhzJztcblxuZXhwb3J0IGludGVyZmFjZSBQbG9uZVBEQk9wdGlvbnMge1xuICAvKipcbiAgICogbWF4VW5hdmFpbGFibGUgc3BlY2lmaWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IG1heFVuYXZhaWxhYmxlPzogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBtaW5BdmFpbGFibGUgc3BlY2lmaWNhdGlvbi5cbiAgICogZGVmYXVsdCBvbmx5IHNldCBpZiBtYXhVbmF2YWlsYWJsZSBpcyBub3Qgc2V0LlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBtaW5BdmFpbGFibGU/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dHJhIGxhYmVscyB0byBhc3NvY2lhdGUgd2l0aCByZXNvdXJjZXMuXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWxzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBjbGFzcyBQbG9uZVBEQiBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgc2VsZWN0b3JMYWJlbDogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sIG9wdGlvbnM6IFBsb25lUERCT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB2YXIgc3BlYzogazhzLlBvZERpc3J1cHRpb25CdWRnZXRTcGVjID0ge307XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLm1heFVuYXZhaWxhYmxlID09PSAnbnVtYmVyJykge1xuICAgICAgc3BlYyA9IHtcbiAgICAgICAgbWF4VW5hdmFpbGFibGU6IGs4cy5JbnRPclN0cmluZy5mcm9tTnVtYmVyKG9wdGlvbnMubWF4VW5hdmFpbGFibGUgYXMgbnVtYmVyKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucy5tYXhVbmF2YWlsYWJsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNwZWMgPSB7XG4gICAgICAgIG1heFVuYXZhaWxhYmxlOiBrOHMuSW50T3JTdHJpbmcuZnJvbVN0cmluZyhvcHRpb25zLm1heFVuYXZhaWxhYmxlIGFzIHN0cmluZyksXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMubWluQXZhaWxhYmxlID09PSAnbnVtYmVyJykge1xuICAgICAgc3BlYyA9IHtcbiAgICAgICAgLi4uc3BlYyxcbiAgICAgICAgbWluQXZhaWxhYmxlOiBrOHMuSW50T3JTdHJpbmcuZnJvbU51bWJlcihvcHRpb25zLm1pbkF2YWlsYWJsZSBhcyBudW1iZXIpLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLm1pbkF2YWlsYWJsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNwZWMgPSB7XG4gICAgICAgIC4uLnNwZWMsXG4gICAgICAgIG1pbkF2YWlsYWJsZTogazhzLkludE9yU3RyaW5nLmZyb21TdHJpbmcob3B0aW9ucy5taW5BdmFpbGFibGUgYXMgc3RyaW5nKSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1heFVuYXZhaWxhYmxlID09PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5taW5BdmFpbGFibGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc3BlYyA9IHtcbiAgICAgICAgbWluQXZhaWxhYmxlOiBrOHMuSW50T3JTdHJpbmcuZnJvbU51bWJlcigxKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgc3BlYyA9IHtcbiAgICAgIC4uLnNwZWMsXG4gICAgICBzZWxlY3RvcjogeyBtYXRjaExhYmVsczogc2VsZWN0b3JMYWJlbCB9LFxuICAgIH07XG4gICAgY29uc3QgcGRiX2xhYmVscyA9IHtcbiAgICAgIC4uLm9wdGlvbnMubGFiZWxzID8/IHt9LFxuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2YnOiAncGxvbmUnLFxuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL21hbmFnZWQtYnknOiAnY2RrOHMtcGxvbmUnLFxuICAgIH07XG5cbiAgICBuZXcgazhzLkt1YmVQb2REaXNydXB0aW9uQnVkZ2V0KHRoaXMsICdQREInLCB7XG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBsYWJlbHM6IHBkYl9sYWJlbHMsXG4gICAgICB9LFxuICAgICAgc3BlYzogc3BlYyxcbiAgICB9KTtcbiAgfVxufVxuIl19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BkYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMscUNBQXFDO0FBK0JyQzs7Ozs7O0dBTUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxzQkFBUztJQUVyQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLGFBQXlDLEVBQUUsT0FBd0I7UUFDM0csS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLElBQUksR0FBZ0MsRUFBRSxDQUFDO1FBQzNDLElBQUksT0FBTyxPQUFPLENBQUMsY0FBYyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9DLElBQUksR0FBRztnQkFDTCxjQUFjLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGNBQXdCLENBQUM7YUFDN0UsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLE9BQU8sT0FBTyxDQUFDLGNBQWMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0RCxJQUFJLEdBQUc7Z0JBQ0wsY0FBYyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxjQUF3QixDQUFDO2FBQzdFLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0MsSUFBSSxHQUFHO2dCQUNMLEdBQUcsSUFBSTtnQkFDUCxZQUFZLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQXNCLENBQUM7YUFDekUsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLE9BQU8sT0FBTyxDQUFDLFlBQVksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNwRCxJQUFJLEdBQUc7Z0JBQ0wsR0FBRyxJQUFJO2dCQUNQLFlBQVksRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBc0IsQ0FBQzthQUN6RSxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvRSxJQUFJLEdBQUc7Z0JBQ0wsWUFBWSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUM1QyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksR0FBRztZQUNMLEdBQUcsSUFBSTtZQUNQLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUU7U0FDekMsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQ3ZCLDJCQUEyQixFQUFFLE9BQU87WUFDcEMsOEJBQThCLEVBQUUsYUFBYTtTQUM5QyxDQUFDO1FBRUYsSUFBSSxHQUFHLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUMzQyxRQUFRLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLFVBQVU7YUFDbkI7WUFDRCxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWpERCw0QkFpREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGs4cyBmcm9tICcuL2ltcG9ydHMvazhzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFBvZERpc3J1cHRpb25CdWRnZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxvbmVQREJPcHRpb25zIHtcbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9yIHBlcmNlbnRhZ2Ugb2YgcG9kcyB0aGF0IGNhbiBiZSB1bmF2YWlsYWJsZSBkdXJpbmcgdm9sdW50YXJ5IGRpc3J1cHRpb25zLlxuICAgKiBDYW4gYmUgYW4gYWJzb2x1dGUgbnVtYmVyIChlLmcuLCAxKSBvciBhIHBlcmNlbnRhZ2UgKGUuZy4sICc1MCUnKS5cbiAgICogQ2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBtaW5BdmFpbGFibGUuXG4gICAqIEBleGFtcGxlIDEgb3IgJzI1JSdcbiAgICogQGRlZmF1bHQgLSBub3Qgc2V0IChkZWZhdWx0cyB0byBtaW5BdmFpbGFibGU9MSBpZiBuZWl0aGVyIGlzIHNwZWNpZmllZClcbiAgICovXG4gIHJlYWRvbmx5IG1heFVuYXZhaWxhYmxlPzogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNaW5pbXVtIG51bWJlciBvciBwZXJjZW50YWdlIG9mIHBvZHMgdGhhdCBtdXN0IHJlbWFpbiBhdmFpbGFibGUgZHVyaW5nIHZvbHVudGFyeSBkaXNydXB0aW9ucy5cbiAgICogQ2FuIGJlIGFuIGFic29sdXRlIG51bWJlciAoZS5nLiwgMSkgb3IgYSBwZXJjZW50YWdlIChlLmcuLCAnNTAlJykuXG4gICAqIENhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggbWF4VW5hdmFpbGFibGUuXG4gICAqIEBleGFtcGxlIDIgb3IgJzUwJSdcbiAgICogQGRlZmF1bHQgMSAoaWYgbWF4VW5hdmFpbGFibGUgaXMgbm90IHNldClcbiAgICovXG4gIHJlYWRvbmx5IG1pbkF2YWlsYWJsZT86IG51bWJlciB8IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBLdWJlcm5ldGVzIGxhYmVscyBmb3IgdGhlIFBvZERpc3J1cHRpb25CdWRnZXQuXG4gICAqIEBkZWZhdWx0IC0gc3RhbmRhcmQgUGxvbmUgbGFiZWxzIG9ubHlcbiAgICovXG4gIHJlYWRvbmx5IGxhYmVscz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFBsb25lUERCIGNyZWF0ZXMgYSBLdWJlcm5ldGVzIFBvZERpc3J1cHRpb25CdWRnZXQgZm9yIGhpZ2ggYXZhaWxhYmlsaXR5LlxuICpcbiAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29uc3RydWN0IHVzZWQgYnkgUGxvbmVEZXBsb3ltZW50LlxuICogSXQgZW5zdXJlcyBhIG1pbmltdW0gbnVtYmVyIG9mIHBvZHMgcmVtYWluIGF2YWlsYWJsZSBkdXJpbmcgdm9sdW50YXJ5XG4gKiBkaXNydXB0aW9ucyBsaWtlIG5vZGUgZHJhaW5zIG9yIGNsdXN0ZXIgdXBncmFkZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbG9uZVBEQiBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgc2VsZWN0b3JMYWJlbDogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sIG9wdGlvbnM6IFBsb25lUERCT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB2YXIgc3BlYzogazhzLlBvZERpc3J1cHRpb25CdWRnZXRTcGVjID0ge307XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLm1heFVuYXZhaWxhYmxlID09PSAnbnVtYmVyJykge1xuICAgICAgc3BlYyA9IHtcbiAgICAgICAgbWF4VW5hdmFpbGFibGU6IGs4cy5JbnRPclN0cmluZy5mcm9tTnVtYmVyKG9wdGlvbnMubWF4VW5hdmFpbGFibGUgYXMgbnVtYmVyKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucy5tYXhVbmF2YWlsYWJsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNwZWMgPSB7XG4gICAgICAgIG1heFVuYXZhaWxhYmxlOiBrOHMuSW50T3JTdHJpbmcuZnJvbVN0cmluZyhvcHRpb25zLm1heFVuYXZhaWxhYmxlIGFzIHN0cmluZyksXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMubWluQXZhaWxhYmxlID09PSAnbnVtYmVyJykge1xuICAgICAgc3BlYyA9IHtcbiAgICAgICAgLi4uc3BlYyxcbiAgICAgICAgbWluQXZhaWxhYmxlOiBrOHMuSW50T3JTdHJpbmcuZnJvbU51bWJlcihvcHRpb25zLm1pbkF2YWlsYWJsZSBhcyBudW1iZXIpLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLm1pbkF2YWlsYWJsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNwZWMgPSB7XG4gICAgICAgIC4uLnNwZWMsXG4gICAgICAgIG1pbkF2YWlsYWJsZTogazhzLkludE9yU3RyaW5nLmZyb21TdHJpbmcob3B0aW9ucy5taW5BdmFpbGFibGUgYXMgc3RyaW5nKSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1heFVuYXZhaWxhYmxlID09PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5taW5BdmFpbGFibGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc3BlYyA9IHtcbiAgICAgICAgbWluQXZhaWxhYmxlOiBrOHMuSW50T3JTdHJpbmcuZnJvbU51bWJlcigxKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgc3BlYyA9IHtcbiAgICAgIC4uLnNwZWMsXG4gICAgICBzZWxlY3RvcjogeyBtYXRjaExhYmVsczogc2VsZWN0b3JMYWJlbCB9LFxuICAgIH07XG4gICAgY29uc3QgcGRiX2xhYmVscyA9IHtcbiAgICAgIC4uLm9wdGlvbnMubGFiZWxzID8/IHt9LFxuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2YnOiAncGxvbmUnLFxuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL21hbmFnZWQtYnknOiAnY2RrOHMtcGxvbmUnLFxuICAgIH07XG5cbiAgICBuZXcgazhzLkt1YmVQb2REaXNydXB0aW9uQnVkZ2V0KHRoaXMsICdQREInLCB7XG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBsYWJlbHM6IHBkYl9sYWJlbHMsXG4gICAgICB9LFxuICAgICAgc3BlYzogc3BlYyxcbiAgICB9KTtcbiAgfVxufVxuIl19
package/lib/plone.d.ts CHANGED
@@ -1,45 +1,258 @@
1
1
  import * as kplus from 'cdk8s-plus-30';
2
2
  import { Construct } from 'constructs';
3
+ /**
4
+ * Base options for Plone backend or frontend configuration.
5
+ * These options control container image, replica count, resource limits,
6
+ * environment variables, and health probes.
7
+ */
3
8
  export interface PloneBaseOptions {
9
+ /**
10
+ * Container image to use for the deployment.
11
+ * @example 'plone/plone-backend:6.0.10' or 'plone/plone-frontend:16.0.0'
12
+ * @default - 'plone/plone-backend:latest' for backend, 'plone/plone-frontend:latest' for frontend
13
+ */
4
14
  readonly image?: string;
15
+ /**
16
+ * Image pull policy for the container.
17
+ * @default 'IfNotPresent'
18
+ */
5
19
  readonly imagePullPolicy?: string;
20
+ /**
21
+ * Number of pod replicas to run.
22
+ * @default 2
23
+ */
6
24
  readonly replicas?: number;
25
+ /**
26
+ * Maximum number of pods that can be unavailable during updates.
27
+ * Can be an absolute number (e.g., 1) or a percentage (e.g., '50%').
28
+ * Used in PodDisruptionBudget if specified.
29
+ * @default - undefined (not set)
30
+ */
7
31
  readonly maxUnavailable?: number | string;
32
+ /**
33
+ * Minimum number of pods that must be available during updates.
34
+ * Can be an absolute number (e.g., 1) or a percentage (e.g., '50%').
35
+ * Used in PodDisruptionBudget if specified.
36
+ * @default - undefined (not set)
37
+ */
8
38
  readonly minAvailable?: number | string;
39
+ /**
40
+ * CPU limit for the container.
41
+ * @example '500m' or '1' or '2000m'
42
+ * @default '500m' for both backend and frontend
43
+ */
9
44
  readonly limitCpu?: string;
45
+ /**
46
+ * Memory limit for the container.
47
+ * @example '512Mi' or '1Gi'
48
+ * @default '512Mi' for backend, '1Gi' for frontend
49
+ */
10
50
  readonly limitMemory?: string;
51
+ /**
52
+ * CPU request for the container.
53
+ * @example '200m' or '0.5'
54
+ * @default '200m'
55
+ */
11
56
  readonly requestCpu?: string;
57
+ /**
58
+ * Memory request for the container.
59
+ * @example '256Mi' or '512Mi'
60
+ * @default '256Mi'
61
+ */
12
62
  readonly requestMemory?: string;
63
+ /**
64
+ * Environment variables to set in the container.
65
+ * Use cdk8s-plus-30 Env class to define variables and sources.
66
+ * @default - undefined (no additional environment variables)
67
+ */
13
68
  readonly environment?: kplus.Env;
69
+ /**
70
+ * Enable readiness probe for the container.
71
+ * Readiness probes determine when a container is ready to accept traffic.
72
+ * @default true
73
+ */
14
74
  readonly readinessEnabled?: boolean;
75
+ /**
76
+ * Number of seconds after container start before readiness probe is initiated.
77
+ * @default 10
78
+ */
15
79
  readonly readinessInitialDelaySeconds?: number;
16
- readonly readinessIimeoutSeconds?: number;
80
+ /**
81
+ * Number of seconds after which the readiness probe times out.
82
+ * @default 15
83
+ */
84
+ readonly readinessTimeoutSeconds?: number;
85
+ /**
86
+ * How often (in seconds) to perform the readiness probe.
87
+ * @default 10
88
+ */
17
89
  readonly readinessPeriodSeconds?: number;
90
+ /**
91
+ * Minimum consecutive successes for the readiness probe to be considered successful.
92
+ * @default 1
93
+ */
18
94
  readonly readinessSuccessThreshold?: number;
95
+ /**
96
+ * Minimum consecutive failures for the readiness probe to be considered failed.
97
+ * @default 3
98
+ */
19
99
  readonly readinessFailureThreshold?: number;
100
+ /**
101
+ * Enable liveness probe for the container.
102
+ * Liveness probes determine when to restart a container.
103
+ * Recommended: true for frontend, false for backend (Zope has its own recovery).
104
+ * @default false
105
+ */
20
106
  readonly livenessEnabled?: boolean;
107
+ /**
108
+ * Number of seconds after container start before liveness probe is initiated.
109
+ * @default 30
110
+ */
21
111
  readonly livenessInitialDelaySeconds?: number;
22
- readonly livenessIimeoutSeconds?: number;
112
+ /**
113
+ * Number of seconds after which the liveness probe times out.
114
+ * @default 5
115
+ */
116
+ readonly livenessTimeoutSeconds?: number;
117
+ /**
118
+ * How often (in seconds) to perform the liveness probe.
119
+ * @default 10
120
+ */
23
121
  readonly livenessPeriodSeconds?: number;
122
+ /**
123
+ * Minimum consecutive successes for the liveness probe to be considered successful.
124
+ * @default 1
125
+ */
24
126
  readonly livenessSuccessThreshold?: number;
127
+ /**
128
+ * Minimum consecutive failures for the liveness probe to be considered failed.
129
+ * @default 3
130
+ */
25
131
  readonly livenessFailureThreshold?: number;
132
+ /**
133
+ * Annotations to add to the Deployment metadata.
134
+ * @example { 'deployment.kubernetes.io/revision': '1' }
135
+ * @default - no additional annotations
136
+ */
137
+ readonly annotations?: {
138
+ [name: string]: string;
139
+ };
140
+ /**
141
+ * Annotations to add to the Pod template metadata.
142
+ * Common for Prometheus, Istio, backup policies, etc.
143
+ * @example { 'prometheus.io/scrape': 'true', 'prometheus.io/port': '8080' }
144
+ * @default - no additional annotations
145
+ */
146
+ readonly podAnnotations?: {
147
+ [name: string]: string;
148
+ };
149
+ /**
150
+ * Annotations to add to the Service metadata.
151
+ * Common for external-dns, load balancers, service mesh, etc.
152
+ * @example { 'external-dns.alpha.kubernetes.io/hostname': 'plone.example.com' }
153
+ * @default - no additional annotations
154
+ */
155
+ readonly serviceAnnotations?: {
156
+ [name: string]: string;
157
+ };
26
158
  }
159
+ /**
160
+ * Plone deployment variants.
161
+ */
27
162
  export declare enum PloneVariant {
163
+ /**
164
+ * Volto variant: ReactJS frontend (Volto) with REST API backend.
165
+ * Deploys both frontend and backend services.
166
+ */
28
167
  VOLTO = "volto",
168
+ /**
169
+ * Classic UI variant: Traditional Plone with server-side rendering.
170
+ * Deploys only the backend service.
171
+ */
29
172
  CLASSICUI = "classicui"
30
173
  }
174
+ /**
175
+ * Main configuration options for Plone deployment.
176
+ */
31
177
  export interface PloneOptions {
178
+ /**
179
+ * Version string for labeling the deployment.
180
+ * This is used in Kubernetes labels and doesn't affect the actual image versions.
181
+ * @default 'undefined'
182
+ */
32
183
  readonly version?: string;
184
+ /**
185
+ * Plone site ID in the ZODB.
186
+ * This is used to construct the internal API path for Volto frontend.
187
+ * @default 'Plone'
188
+ */
33
189
  readonly siteId?: string;
190
+ /**
191
+ * Plone deployment variant to use.
192
+ * @default PloneVariant.VOLTO
193
+ */
34
194
  readonly variant?: PloneVariant;
195
+ /**
196
+ * Backend (Plone API) configuration.
197
+ * @default {} (uses default values from PloneBaseOptions)
198
+ */
35
199
  readonly backend?: PloneBaseOptions;
200
+ /**
201
+ * Frontend (Volto) configuration.
202
+ * Only used when variant is PloneVariant.VOLTO.
203
+ * @default {} (uses default values from PloneBaseOptions)
204
+ */
36
205
  readonly frontend?: PloneBaseOptions;
206
+ /**
207
+ * Names of Kubernetes secrets to use for pulling private container images.
208
+ * These secrets must exist in the same namespace as the deployment.
209
+ * @example ['my-registry-secret']
210
+ * @default [] (no image pull secrets)
211
+ */
37
212
  readonly imagePullSecrets?: string[];
38
213
  }
214
+ /**
215
+ * Plone construct for deploying Plone CMS to Kubernetes.
216
+ *
217
+ * This construct creates all necessary Kubernetes resources for running Plone:
218
+ * - Deployment(s) for backend (and optionally frontend)
219
+ * - Service(s) for network access
220
+ * - Optional PodDisruptionBudget for high availability
221
+ *
222
+ * Supports two deployment variants:
223
+ * - VOLTO: Modern React frontend with REST API backend (default)
224
+ * - CLASSICUI: Traditional server-side rendered Plone
225
+ *
226
+ * @example
227
+ * new Plone(chart, 'my-plone', {
228
+ * variant: PloneVariant.VOLTO,
229
+ * backend: {
230
+ * image: 'plone/plone-backend:6.0.10',
231
+ * replicas: 3,
232
+ * },
233
+ * frontend: {
234
+ * image: 'plone/plone-frontend:16.0.0',
235
+ * },
236
+ * });
237
+ */
39
238
  export declare class Plone extends Construct {
239
+ /**
240
+ * Name of the backend Kubernetes service.
241
+ * Use this to reference the backend service from other constructs.
242
+ */
40
243
  readonly backendServiceName: string;
244
+ /**
245
+ * Name of the frontend Kubernetes service.
246
+ * Only set when variant is VOLTO, otherwise undefined.
247
+ */
41
248
  readonly frontendServiceName: string | undefined;
249
+ /**
250
+ * The deployment variant being used (VOLTO or CLASSICUI).
251
+ */
42
252
  readonly variant: PloneVariant;
253
+ /**
254
+ * The Plone site ID in ZODB.
255
+ */
43
256
  readonly siteId: string;
44
257
  constructor(scope: Construct, id: string, options?: PloneOptions);
45
258
  }