@bluedynamics/cdk8s-plone 0.1.22 → 0.1.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +417 -5
- package/API.md +455 -0
- package/README.md +1 -1
- package/documentation/sources/explanation/architecture.md +18 -0
- package/documentation/sources/explanation/features.md +10 -2
- package/documentation/sources/how-to/deploy-with-vinyl-cache.md +115 -0
- package/documentation/sources/how-to/index.md +1 -0
- package/documentation/sources/reference/configuration-options.md +56 -0
- package/lib/httpcache.js +1 -1
- package/lib/imports/vinyl.bluedynamics.eu.d.ts +2419 -0
- package/lib/imports/vinyl.bluedynamics.eu.js +1281 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +4 -2
- package/lib/plone.js +1 -1
- package/lib/vinylcache.d.ts +128 -0
- package/lib/vinylcache.js +132 -0
- package/package.json +6 -5
|
@@ -294,6 +294,62 @@ new PloneHttpcache(chart, 'cache', {
|
|
|
294
294
|
|
|
295
295
|
---
|
|
296
296
|
|
|
297
|
+
### `PloneVinylCacheOptions`
|
|
298
|
+
|
|
299
|
+
Configuration for the Varnish HTTP cache layer via the cloud-vinyl operator.
|
|
300
|
+
Requires the [cloud-vinyl operator](https://github.com/bluedynamics/cloud-vinyl) to be installed in the cluster.
|
|
301
|
+
|
|
302
|
+
| Property | Type | Required | Default | Description |
|
|
303
|
+
|----------|------|----------|---------|-------------|
|
|
304
|
+
| `plone` | `Plone` | Yes | - | Plone construct to attach cache to |
|
|
305
|
+
| `replicas` | `number` | No | `2` | Number of Varnish replicas |
|
|
306
|
+
| `requestCpu` | `string` | No | `100m` | CPU request |
|
|
307
|
+
| `limitCpu` | `string` | No | `500m` | CPU limit |
|
|
308
|
+
| `requestMemory` | `string` | No | `256Mi` | Memory request |
|
|
309
|
+
| `limitMemory` | `string` | No | `512Mi` | Memory limit |
|
|
310
|
+
| `director` | `string` | No | `shard` | Director type: shard, round_robin, random, hash |
|
|
311
|
+
| `vclRecvSnippet` | `string` | No | built-in | Custom VCL snippet for vcl_recv |
|
|
312
|
+
| `vclBackendResponseSnippet` | `string` | No | built-in | Custom VCL snippet for vcl_backend_response |
|
|
313
|
+
| `invalidation` | `boolean` | No | `true` | Enable PURGE/BAN/xkey cache invalidation |
|
|
314
|
+
| `monitoring` | `boolean` | No | `false` | Enable Prometheus metrics and ServiceMonitor |
|
|
315
|
+
| `tolerations` | `VinylCacheToleration[]` | No | - | Node tolerations for Varnish pods |
|
|
316
|
+
|
|
317
|
+
**Example:**
|
|
318
|
+
```typescript
|
|
319
|
+
const cache = new PloneVinylCache(chart, 'cache', {
|
|
320
|
+
plone: ploneInstance,
|
|
321
|
+
replicas: 2,
|
|
322
|
+
requestCpu: '200m',
|
|
323
|
+
limitCpu: '1',
|
|
324
|
+
requestMemory: '256Mi',
|
|
325
|
+
limitMemory: '1Gi',
|
|
326
|
+
monitoring: true,
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
// Use the service name for IngressRoute
|
|
330
|
+
console.log(cache.vinylCacheServiceName);
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**Custom VCL Snippets:**
|
|
334
|
+
```typescript
|
|
335
|
+
new PloneVinylCache(chart, 'cache', {
|
|
336
|
+
plone: ploneInstance,
|
|
337
|
+
vclRecvSnippet: `
|
|
338
|
+
// Custom routing logic
|
|
339
|
+
if (req.url ~ "^/api/") {
|
|
340
|
+
set req.backend_hint = plone_backend.backend();
|
|
341
|
+
}
|
|
342
|
+
`,
|
|
343
|
+
});
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
**vs PloneHttpcache:**
|
|
347
|
+
- `PloneHttpcache` deploys Varnish via mittwald Helm chart (self-contained, no operator needed)
|
|
348
|
+
- `PloneVinylCache` creates a VinylCache CR managed by the cloud-vinyl operator (requires operator in cluster)
|
|
349
|
+
- VinylCache provides structured VCL generation, agent-based config delivery, and built-in invalidation proxy
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
297
353
|
## PloneVariant Enum
|
|
298
354
|
|
|
299
355
|
Defines the deployment variant:
|
package/lib/httpcache.js
CHANGED
|
@@ -115,5 +115,5 @@ class PloneHttpcache extends constructs_1.Construct {
|
|
|
115
115
|
}
|
|
116
116
|
exports.PloneHttpcache = PloneHttpcache;
|
|
117
117
|
_a = JSII_RTTI_SYMBOL_1;
|
|
118
|
-
PloneHttpcache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.1.
|
|
118
|
+
PloneHttpcache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.1.24" };
|
|
119
119
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2h0dHBjYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsaUNBQTZCO0FBQzdCLDJDQUF1QztBQXdKdkM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFPM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksVUFBa0IsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLElBQUksT0FBZSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDbkMsQ0FBQztZQUNELFVBQVUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDNUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxZQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUM1Qyx1REFBdUQ7WUFDdkQsSUFBSSxFQUFFLDBCQUEwQjtZQUNoQyxLQUFLLEVBQUUsZ0JBQWdCO1lBQ3ZCLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWTtZQUM3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QUM7UUFDRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0lBQ3BELENBQUM7O0FBNUZILHdDQTZGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBIZWxtIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBQbG9uZSB9IGZyb20gJy4vcGxvbmUnO1xuXG4vKipcbiAqIEFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHBhc3MgdG8gdGhlIGt1YmUtaHR0cGNhY2hlIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwY2FjaGVFbnZWYXIge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIEt1YmVybmV0ZXMgdG9sZXJhdGlvbiBmb3IgdGhlIFZhcm5pc2ggcG9kcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwY2FjaGVUb2xlcmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSB0YWludCBrZXkgdG8gdG9sZXJhdGUuXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9wZXJhdG9yIChFcXVhbCBvciBFeGlzdHMpLlxuICAgKiBAZGVmYXVsdCAnRXF1YWwnXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRvcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhaW50IHZhbHVlIHRvIG1hdGNoICh3aGVuIG9wZXJhdG9yIGlzIEVxdWFsKS5cbiAgICogQGRlZmF1bHQgLSBubyB2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWludCBlZmZlY3QgdG8gdG9sZXJhdGUgKE5vU2NoZWR1bGUsIFByZWZlck5vU2NoZWR1bGUsIE5vRXhlY3V0ZSkuXG4gICAqIEBkZWZhdWx0IC0gdG9sZXJhdGUgYWxsIGVmZmVjdHNcbiAgICovXG4gIHJlYWRvbmx5IGVmZmVjdD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFBsb25lSHR0cGNhY2hlIChWYXJuaXNoIGNhY2hpbmcgbGF5ZXIpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsb25lSHR0cGNhY2hlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgUGxvbmUgY29uc3RydWN0IHRvIGF0dGFjaCB0aGUgSFRUUCBjYWNoZSB0by5cbiAgICogVGhlIGNhY2hlIHdpbGwgYXV0b21hdGljYWxseSBjb25uZWN0IHRvIHRoZSBiYWNrZW5kIGFuZCBmcm9udGVuZCBzZXJ2aWNlcy5cbiAgICovXG4gIHJlYWRvbmx5IHBsb25lOiBQbG9uZTtcblxuICAvKipcbiAgICogVmFybmlzaCBWQ0wgY29uZmlndXJhdGlvbiBhcyBhIHN0cmluZy5cbiAgICogSWYgcHJvdmlkZWQsIHRoaXMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhcm5pc2hWY2xGaWxlLlxuICAgKiBAZGVmYXVsdCAtIGxvYWRlZCBmcm9tIHZhcm5pc2hWY2xGaWxlIG9yIGRlZmF1bHQgY29uZmlnIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHZhcm5pc2hWY2w/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gYSBWYXJuaXNoIFZDTCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgdXNlcyB0aGUgZGVmYXVsdCBWQ0wgZmlsZSBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeS5cbiAgICogQGRlZmF1bHQgLSB1c2VzIGRlZmF1bHQgY29uZmlnL3Zhcm5pc2gudHBsLnZjbFxuICAgKi9cbiAgcmVhZG9ubHkgdmFybmlzaFZjbEZpbGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgYW4gZXhpc3RpbmcgS3ViZXJuZXRlcyBzZWNyZXQgY29udGFpbmluZyBWYXJuaXNoIGFkbWluIGNyZWRlbnRpYWxzLlxuICAgKiBUaGUgc2VjcmV0IHNob3VsZCBiZSBjcmVhdGVkIHNlcGFyYXRlbHkgaW4gdGhlIHNhbWUgbmFtZXNwYWNlLlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZCAobm8gZXhpc3Rpbmcgc2VjcmV0KVxuICAgKi9cbiAgcmVhZG9ubHkgZXhpc3RpbmdTZWNyZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENQVSBsaW1pdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnNTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0Q3B1Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNZW1vcnkgbGltaXQgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzUwME1pJ1xuICAgKi9cbiAgcmVhZG9ubHkgbGltaXRNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENQVSByZXF1ZXN0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICcxMDBtJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdENwdT86IHN0cmluZztcblxuICAvKipcbiAgICogTWVtb3J5IHJlcXVlc3QgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzEwME1pJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1lbW9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogRW5hYmxlIFByb21ldGhldXMgU2VydmljZU1vbml0b3IgZm9yIG1ldHJpY3MgY29sbGVjdGlvbi5cbiAgICogUmVxdWlyZXMgUHJvbWV0aGV1cyBPcGVyYXRvciB0byBiZSBpbnN0YWxsZWQgaW4gdGhlIGNsdXN0ZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlbW9uaXRvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSB0aGUgUHJvbWV0aGV1cyBleHBvcnRlciBmb3IgVmFybmlzaCBtZXRyaWNzLlxuICAgKiBXaGVuIGVuYWJsZWQsIHRoZSBleHBvcnRlciBzaWRlY2FyIGNvbnRhaW5lciB3aWxsIGJlIGRlcGxveWVkIGFsb25nc2lkZSBWYXJuaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBleHBvcnRlckVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSBrdWJlLWh0dHBjYWNoZSBIZWxtIGNoYXJ0IHRvIHVzZS5cbiAgICogSWYgbm90IHNwZWNpZmllZCwgdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gdGhlIHJlcG9zaXRvcnkgd2lsbCBiZSB1c2VkLlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgKGxhdGVzdClcbiAgICovXG4gIHJlYWRvbmx5IGNoYXJ0VmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUga3ViZS1odHRwY2FjaGUgQ29udGFpbmVyIEltYWdlIHRvIHVzZS5cbiAgICogSWYgbm90IHNwZWNpZmllZCwgdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gdGhlIHJlcG9zaXRvcnkgd2lsbCBiZSB1c2VkLlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgKGNoYXJ0VmVyc2lvbiA9IHdpdGggZWFjaCBjaGFydCByZWxlYXNlIHRoZXJlIGlzIGFuIGltYWdlIHJlbGVhc2UgdG9vIClcbiAgICovXG4gIHJlYWRvbmx5IGFwcFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBWYXJuaXNoIHBvZCByZXBsaWNhcyB0byBydW4uXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2FzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBwYXNzIHRvIHRoZSBrdWJlLWh0dHBjYWNoZSBjb250YWluZXIuXG4gICAqIFRoZXNlIGFyZSBhcHBlbmRlZCB0byB0aGUgYnVpbHQtaW4gZW52IHZhcnMgKEJBQ0tFTkRfU0VSVklDRV9OQU1FLCBldGMuKVxuICAgKiBhbmQgY2FuIGJlIHJlZmVyZW5jZWQgaW4gVkNMIHRlbXBsYXRlcyB1c2luZyBHbyB0ZW1wbGF0ZSBzeW50YXg6IHt7IC5FbnYuVkFSX05BTUUgfX1cbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGVudiB2YXJzXG4gICAqL1xuICByZWFkb25seSBleHRyYUVudlZhcnM/OiBIdHRwY2FjaGVFbnZWYXJbXTtcblxuICAvKipcbiAgICogVG9sZXJhdGlvbnMgZm9yIHRoZSBWYXJuaXNoIHBvZHMuXG4gICAqIFVzZSB0aGlzIHRvIGFsbG93IHNjaGVkdWxpbmcgb24gbm9kZXMgd2l0aCBzcGVjaWZpYyB0YWludHMsXG4gICAqIGUuZy4gbm9kZXMgdGFpbnRlZCB3aXRoIGt1YmVybmV0ZXMuaW8vYXJjaD1hbWQ2NDpOb1NjaGVkdWxlLlxuICAgKiBAZGVmYXVsdCAtIG5vIHRvbGVyYXRpb25zXG4gICAqL1xuICByZWFkb25seSB0b2xlcmF0aW9ucz86IEh0dHBjYWNoZVRvbGVyYXRpb25bXTtcbn1cblxuLyoqXG4gKiBQbG9uZUh0dHBjYWNoZSBjb25zdHJ1Y3QgZm9yIGRlcGxveWluZyBWYXJuaXNoIEhUVFAgY2FjaGluZyBsYXllci5cbiAqXG4gKiBVc2VzIHRoZSBtaXR0d2FsZC9rdWJlLWh0dHBjYWNoZSBIZWxtIGNoYXJ0IHRvIGRlcGxveSBWYXJuaXNoIGFzIGFcbiAqIGNhY2hpbmcgcHJveHkgaW4gZnJvbnQgb2YgUGxvbmUgYmFja2VuZCBhbmQvb3IgZnJvbnRlbmQgc2VydmljZXMuXG4gKlxuICogVGhlIGNhY2hlIGF1dG9tYXRpY2FsbHkgY29ubmVjdHMgdG8gdGhlIFBsb25lIHNlcnZpY2VzIGFuZCBwcm92aWRlc1xuICogSFRUUCBjYWNoZSBpbnZhbGlkYXRpb24gY2FwYWJpbGl0aWVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwbG9uZSA9IG5ldyBQbG9uZShjaGFydCwgJ3Bsb25lJyk7XG4gKiBjb25zdCBjYWNoZSA9IG5ldyBQbG9uZUh0dHBjYWNoZShjaGFydCwgJ2NhY2hlJywge1xuICogICBwbG9uZTogcGxvbmUsXG4gKiAgIGV4aXN0aW5nU2VjcmV0OiAndmFybmlzaC1zZWNyZXQnLFxuICogfSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBQbG9uZUh0dHBjYWNoZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBWYXJuaXNoIHNlcnZpY2UgY3JlYXRlZCBieSB0aGUgSGVsbSBjaGFydC5cbiAgICogVXNlIHRoaXMgdG8gcmVmZXJlbmNlIHRoZSBjYWNoZSBzZXJ2aWNlIGZyb20gaW5ncmVzcyBvciBvdGhlciBjb25zdHJ1Y3RzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGh0dHBjYWNoZVNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgb3B0aW9uczogUGxvbmVIdHRwY2FjaGVPcHRpb25zKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBsZXQgdmFybmlzaFZjbDogc3RyaW5nO1xuICAgIGlmICghb3B0aW9ucy52YXJuaXNoVmNsKSB7XG4gICAgICBsZXQgdmNsUGF0aDogc3RyaW5nO1xuICAgICAgaWYgKCFvcHRpb25zLnZhcm5pc2hWY2xGaWxlKSB7XG4gICAgICAgIHZjbFBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnY29uZmlnJywgJ3Zhcm5pc2gudHBsLnZjbCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmNsUGF0aCA9IG9wdGlvbnMudmFybmlzaFZjbEZpbGU7XG4gICAgICB9XG4gICAgICB2YXJuaXNoVmNsID0gZnMucmVhZEZpbGVTeW5jKHZjbFBhdGgsICd1dGY4Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhcm5pc2hWY2wgPSBvcHRpb25zLnZhcm5pc2hWY2w7XG4gICAgfVxuICAgIGNvbnN0IGltYWdlVGFnID0gb3B0aW9ucy5hcHBWZXJzaW9uID8/IG9wdGlvbnMuY2hhcnRWZXJzaW9uO1xuICAgIGNvbnN0IGh0dHBjYWNoZSA9IG5ldyBIZWxtKHRoaXMsICdodHRwY2FjaGUnLCB7XG4gICAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21pdHR3YWxkL2t1YmUtaHR0cGNhY2hlL2NoYXJ0XG4gICAgICByZXBvOiAnaHR0cHM6Ly9oZWxtLm1pdHR3YWxkLmRlJyxcbiAgICAgIGNoYXJ0OiAna3ViZS1odHRwY2FjaGUnLFxuICAgICAgdmVyc2lvbjogb3B0aW9ucy5jaGFydFZlcnNpb24sXG4gICAgICB2YWx1ZXM6IHtcbiAgICAgICAgcmVwbGljYUNvdW50OiBvcHRpb25zLnJlcGxpY2FzID8/IDIsXG4gICAgICAgIC4uLihpbWFnZVRhZyAmJiB7IGltYWdlOiB7IHRhZzogaW1hZ2VUYWcgfSB9KSxcbiAgICAgICAgY2FjaGU6IHtcbiAgICAgICAgICAvLyBuZWVkIHRvIGxvb2tzIGF0IHRoZSBmcm9udGVuZFdhdGNoLCBkbyB3ZSBuZWVkIGl0P1xuICAgICAgICAgIGZyb250ZW5kV2F0Y2g6IGZhbHNlLFxuICAgICAgICAgIGJhY2tlbmRXYXRjaDogZmFsc2UsXG4gICAgICAgICAgZXhpc3RpbmdTZWNyZXQ6IG9wdGlvbnMuZXhpc3RpbmdTZWNyZXQgPz8gdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgICB2Y2xUZW1wbGF0ZTogdmFybmlzaFZjbCxcbiAgICAgICAgZXh0cmFFbnZWYXJzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnQkFDS0VORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5iYWNrZW5kU2VydmljZU5hbWUgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NFUlZJQ0VfUE9SVCcsIHZhbHVlOiAnODA4MCcgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NJVEVfSUQnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5zaXRlSWQgfSxcbiAgICAgICAgICB7IG5hbWU6ICdGUk9OVEVORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5mcm9udGVuZFNlcnZpY2VOYW1lIH0sXG4gICAgICAgICAgeyBuYW1lOiAnRlJPTlRFTkRfU0VSVklDRV9QT1JUJywgdmFsdWU6ICczMDAwJyB9LFxuICAgICAgICAgIC4uLihvcHRpb25zLmV4dHJhRW52VmFycyA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWl0dHdhbGQva3ViZS1odHRwY2FjaGUvaXNzdWVzLzI1M1xuICAgICAgICBub2RlU2VsZWN0b3I6IHtcbiAgICAgICAgICAna3ViZXJuZXRlcy5pby9hcmNoJzogJ2FtZDY0JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKG9wdGlvbnMudG9sZXJhdGlvbnMgJiYgeyB0b2xlcmF0aW9uczogb3B0aW9ucy50b2xlcmF0aW9ucyB9KSxcbiAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICBjcHU6IG9wdGlvbnMubGltaXRDcHUgfHwgJzUwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLmxpbWl0TWVtb3J5IHx8ICc1MDBNaScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1ZXN0czoge1xuICAgICAgICAgICAgY3B1OiBvcHRpb25zLnJlcXVlc3RDcHUgfHwgJzEwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLnJlcXVlc3RNZW1vcnkgfHwgJzEwME1pJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByYmFjOiB7XG4gICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGV4cG9ydGVyOiB7XG4gICAgICAgICAgZW5hYmxlZDogb3B0aW9ucy5leHBvcnRlckVuYWJsZWQgPz8gdHJ1ZSxcbiAgICAgICAgICByZXNvdXJjZXM6IHtcbiAgICAgICAgICAgIGxpbWl0czoge1xuICAgICAgICAgICAgICBjcHU6ICcxMDBtJyxcbiAgICAgICAgICAgICAgbWVtb3J5OiAnMTAwTWknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVlc3RzOiB7XG4gICAgICAgICAgICAgIGNwdTogJzEwbScsXG4gICAgICAgICAgICAgIG1lbW9yeTogJzUwTWknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzZXJ2aWNlTW9uaXRvcjoge1xuICAgICAgICAgIGVuYWJsZWQ6IG9wdGlvbnMuc2VydmljZW1vbml0b3IgfHwgZmFsc2UsXG4gICAgICAgICAgc2NyYXBlU2lnbmFsbGVyOiBvcHRpb25zLnNlcnZpY2Vtb25pdG9yIHx8IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb25zdCBodHRwY2FjaGVTZXJ2aWNlID0gaHR0cGNhY2hlLmFwaU9iamVjdHMuZmluZCgoY29uc3RydWN0KSA9PiB7XG4gICAgICBpZiAoKGNvbnN0cnVjdC5raW5kID09PSAnU2VydmljZScpICYmIChjb25zdHJ1Y3QubWV0YWRhdGEubmFtZT8uZW5kc1dpdGgoJ2t1YmUtaHR0cGNhY2hlJykpKSB7XG4gICAgICAgIHJldHVybiBjb25zdHJ1Y3QubmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgaWYgKGh0dHBjYWNoZVNlcnZpY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBodHRwY2FjaGUgc2VydmljZScpO1xuICAgIH1cbiAgICB0aGlzLmh0dHBjYWNoZVNlcnZpY2VOYW1lID0gaHR0cGNhY2hlU2VydmljZS5uYW1lO1xuICB9XG59Il19
|