UNPKG

@aws-cdk/aws-eks-v2-alpha

Version:

The CDK Construct Library for AWS::EKS

85 lines 15.3 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.HelmChart = void 0; const jsiiDeprecationWarnings = require("../.warnings.jsii.js"); const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const constructs_1 = require("constructs"); const kubectl_provider_1 = require("./kubectl-provider"); const core_1 = require("aws-cdk-lib/core"); /** * Represents a helm chart within the Kubernetes system. * * Applies/deletes the resources using `kubectl` in sync with the resource. */ class HelmChart extends constructs_1.Construct { constructor(scope, id, props) { super(scope, id); try { jsiiDeprecationWarnings._aws_cdk_aws_eks_v2_alpha_HelmChartProps(props); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, HelmChart); } throw error; } // Exposing these properties is done for convenience // For more details see issue #26678 this.chart = props.chart; this.repository = props.repository; this.version = props.version; this.chartAsset = props.chartAsset; const stack = core_1.Stack.of(this); const provider = kubectl_provider_1.KubectlProvider.getKubectlProvider(this, props.cluster); if (!provider) { throw new Error('Kubectl Provider is not defined in this cluster. Define it when creating the cluster'); } const timeout = props.timeout?.toSeconds(); if (timeout && timeout > 900) { throw new Error('Helm chart timeout cannot be higher than 15 minutes.'); } if (!this.chart && !this.chartAsset) { throw new Error("Either 'chart' or 'chartAsset' must be specified to install a helm chart"); } if (this.chartAsset && (this.repository || this.version)) { throw new Error("Neither 'repository' nor 'version' can be used when configuring 'chartAsset'"); } // default not to wait const wait = props.wait ?? false; // default to create new namespace const createNamespace = props.createNamespace ?? true; // default to not skip crd installation const skipCrds = props.skipCrds ?? false; // default to set atomic as false const atomic = props.atomic ?? false; this.chartAsset?.grantRead(provider.role); new core_1.CustomResource(this, 'Resource', { serviceToken: provider.serviceToken, resourceType: HelmChart.RESOURCE_TYPE, properties: { ClusterName: props.cluster.clusterName, Release: props.release ?? core_1.Names.uniqueId(this).slice(-53).toLowerCase(), // Helm has a 53 character limit for the name Chart: this.chart, ChartAssetURL: this.chartAsset?.s3ObjectUrl, Version: this.version, Wait: wait || undefined, // props are stringified so we encode “false” as undefined Timeout: timeout ? `${timeout.toString()}s` : undefined, // Helm v3 expects duration instead of integer Values: (props.values ? stack.toJsonString(props.values) : undefined), Namespace: props.namespace ?? 'default', Repository: this.repository, CreateNamespace: createNamespace || undefined, SkipCrds: skipCrds || undefined, Atomic: atomic || undefined, // props are stringified so we encode “false” as undefined }, }); } } exports.HelmChart = HelmChart; _a = JSII_RTTI_SYMBOL_1; HelmChart[_a] = { fqn: "@aws-cdk/aws-eks-v2-alpha.HelmChart", version: "2.208.0-alpha.0" }; /** * The CloudFormation resource type. */ HelmChart.RESOURCE_TYPE = 'Custom::AWSCDK-EKS-HelmChart'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsbS1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhlbG0tY2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkNBQXVDO0FBRXZDLHlEQUFxRDtBQUVyRCwyQ0FBMEU7QUF1RzFFOzs7O0dBSUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxzQkFBUztJQVd0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXFCO1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzsrQ0FaUixTQUFTOzs7O1FBY2xCLG9EQUFvRDtRQUNwRCxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBRW5DLE1BQU0sS0FBSyxHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0IsTUFBTSxRQUFRLEdBQUcsa0NBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsc0ZBQXNGLENBQUMsQ0FBQztRQUMxRyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUMzQyxJQUFJLE9BQU8sSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLDBFQUEwRSxDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDekQsTUFBTSxJQUFJLEtBQUssQ0FDYiw4RUFBOEUsQ0FDL0UsQ0FBQztRQUNKLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUM7UUFDakMsa0NBQWtDO1FBQ2xDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDO1FBQ3RELHVDQUF1QztRQUN2QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUN6QyxpQ0FBaUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7UUFFckMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUssQ0FBQyxDQUFDO1FBRTNDLElBQUkscUJBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ25DLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxZQUFZLEVBQUUsU0FBUyxDQUFDLGFBQWE7WUFDckMsVUFBVSxFQUFFO2dCQUNWLFdBQVcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVc7Z0JBQ3RDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLFlBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsNkNBQTZDO2dCQUN0SCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLGFBQWEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVc7Z0JBQzNDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsSUFBSSxFQUFFLElBQUksSUFBSSxTQUFTLEVBQUUsMERBQTBEO2dCQUNuRixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsOENBQThDO2dCQUN2RyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNyRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxTQUFTO2dCQUN2QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLGVBQWUsRUFBRSxlQUFlLElBQUksU0FBUztnQkFDN0MsUUFBUSxFQUFFLFFBQVEsSUFBSSxTQUFTO2dCQUMvQixNQUFNLEVBQUUsTUFBTSxJQUFJLFNBQVMsRUFBRSwwREFBMEQ7YUFDeEY7U0FDRixDQUFDLENBQUM7S0FDSjs7QUF6RUgsOEJBMEVDOzs7QUF6RUM7O0dBRUc7QUFDb0IsdUJBQWEsR0FBRyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUNsdXN0ZXIgfSBmcm9tICcuL2NsdXN0ZXInO1xuaW1wb3J0IHsgS3ViZWN0bFByb3ZpZGVyIH0gZnJvbSAnLi9rdWJlY3RsLXByb3ZpZGVyJztcbmltcG9ydCB7IEFzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSwgRHVyYXRpb24sIE5hbWVzLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuXG4vKipcbiAqIEhlbG0gQ2hhcnQgb3B0aW9ucy5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlbG1DaGFydE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNoYXJ0LlxuICAgKiBFaXRoZXIgdGhpcyBvciBgY2hhcnRBc3NldGAgbXVzdCBiZSBzcGVjaWZpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gY2hhcnQgbmFtZS4gSW1wbGllcyBgY2hhcnRBc3NldGAgaXMgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNoYXJ0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcmVsZWFzZS5cbiAgICogQGRlZmF1bHQgLSBJZiBubyByZWxlYXNlIG5hbWUgaXMgZ2l2ZW4sIGl0IHdpbGwgdXNlIHRoZSBsYXN0IDUzIGNoYXJhY3RlcnMgb2YgdGhlIG5vZGUncyB1bmlxdWUgaWQuXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcnQgdmVyc2lvbiB0byBpbnN0YWxsLlxuICAgKiBAZGVmYXVsdCAtIElmIHRoaXMgaXMgbm90IHNwZWNpZmllZCwgdGhlIGxhdGVzdCB2ZXJzaW9uIGlzIGluc3RhbGxlZFxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgd2hpY2ggY29udGFpbnMgdGhlIGNoYXJ0LiBGb3IgZXhhbXBsZTogaHR0cHM6Ly9jaGFydHMuaGVsbS5zaC9zdGFibGUvXG4gICAqIEBkZWZhdWx0IC0gTm8gcmVwb3NpdG9yeSB3aWxsIGJlIHVzZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGNoYXJ0IG5lZWRzIHRvIGJlIGFuIGFic29sdXRlIFVSTC5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjaGFydCBpbiB0aGUgZm9ybSBvZiBhbiBhc3NldC5cbiAgICogRWl0aGVyIHRoaXMgb3IgYGNoYXJ0YCBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBjaGFydCBhc3NldC4gSW1wbGllcyBgY2hhcnRgIGlzIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBjaGFydEFzc2V0PzogQXNzZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBLdWJlcm5ldGVzIG5hbWVzcGFjZSBzY29wZSBvZiB0aGUgcmVxdWVzdHMuXG4gICAqIEBkZWZhdWx0IGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzcGFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhbHVlcyB0byBiZSB1c2VkIGJ5IHRoZSBjaGFydC5cbiAgICogRm9yIG5lc3RlZCB2YWx1ZXMgdXNlIGEgbmVzdGVkIGRpY3Rpb25hcnkuIEZvciBleGFtcGxlOlxuICAgKiB2YWx1ZXM6IHtcbiAgICogIGluc3RhbGxhdGlvbkNSRHM6IHRydWUsXG4gICAqICB3ZWJob29rOiB7IHBvcnQ6IDk0NDMgfVxuICAgKiB9XG4gICAqIEBkZWZhdWx0IC0gTm8gdmFsdWVzIGFyZSBwcm92aWRlZCB0byB0aGUgY2hhcnQuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZXM/OiB7W2tleTogc3RyaW5nXTogYW55fTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgSGVsbSBzaG91bGQgd2FpdCB1bnRpbCBhbGwgUG9kcywgUFZDcywgU2VydmljZXMsIGFuZCBtaW5pbXVtIG51bWJlciBvZiBQb2RzIG9mIGFcbiAgICogRGVwbG95bWVudCwgU3RhdGVmdWxTZXQsIG9yIFJlcGxpY2FTZXQgYXJlIGluIGEgcmVhZHkgc3RhdGUgYmVmb3JlIG1hcmtpbmcgdGhlIHJlbGVhc2UgYXMgc3VjY2Vzc2Z1bC5cbiAgICogQGRlZmF1bHQgLSBIZWxtIHdpbGwgbm90IHdhaXQgYmVmb3JlIG1hcmtpbmcgcmVsZWFzZSBhcyBzdWNjZXNzZnVsXG4gICAqL1xuICByZWFkb25seSB3YWl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQW1vdW50IG9mIHRpbWUgdG8gd2FpdCBmb3IgYW55IGluZGl2aWR1YWwgS3ViZXJuZXRlcyBvcGVyYXRpb24uIE1heGltdW0gMTUgbWludXRlcy5cbiAgICogQGRlZmF1bHQgRHVyYXRpb24ubWludXRlcyg1KVxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCBIZWxtIHNob3VsZCB0cmVhdCB0aGlzIG9wZXJhdGlvbiBhcyBhdG9taWM7IGlmIHNldCwgdXBncmFkZSBwcm9jZXNzIHJvbGxzIGJhY2sgY2hhbmdlc1xuICAgKiBtYWRlIGluIGNhc2Ugb2YgZmFpbGVkIHVwZ3JhZGUuIFRoZSAtLXdhaXQgZmxhZyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGlmIC0tYXRvbWljIGlzIHVzZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhdG9taWM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBjcmVhdGUgbmFtZXNwYWNlIGlmIG5vdCBleGlzdFxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVOYW1lc3BhY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBpZiBzZXQsIG5vIENSRHMgd2lsbCBiZSBpbnN0YWxsZWRcbiAgICogQGRlZmF1bHQgLSBDUkRzIGFyZSBpbnN0YWxsZWQgaWYgbm90IGFscmVhZHkgcHJlc2VudFxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcENyZHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEhlbG0gQ2hhcnQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIZWxtQ2hhcnRQcm9wcyBleHRlbmRzIEhlbG1DaGFydE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIEVLUyBjbHVzdGVyIHRvIGFwcGx5IHRoaXMgY29uZmlndXJhdGlvbiB0by5cbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpyZWYtdmlhLWludGVyZmFjZV1cbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI6IElDbHVzdGVyO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBoZWxtIGNoYXJ0IHdpdGhpbiB0aGUgS3ViZXJuZXRlcyBzeXN0ZW0uXG4gKlxuICogQXBwbGllcy9kZWxldGVzIHRoZSByZXNvdXJjZXMgdXNpbmcgYGt1YmVjdGxgIGluIHN5bmMgd2l0aCB0aGUgcmVzb3VyY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBIZWxtQ2hhcnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFU09VUkNFX1RZUEUgPSAnQ3VzdG9tOjpBV1NDREstRUtTLUhlbG1DaGFydCc7XG4gIHB1YmxpYyByZWFkb25seSBjaGFydD86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHJlcG9zaXRvcnk/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY2hhcnRBc3NldD86IEFzc2V0O1xuICBwdWJsaWMgcmVhZG9ubHkgYXRvbWljPzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSGVsbUNoYXJ0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gRXhwb3NpbmcgdGhlc2UgcHJvcGVydGllcyBpcyBkb25lIGZvciBjb252ZW5pZW5jZVxuICAgIC8vIEZvciBtb3JlIGRldGFpbHMgc2VlIGlzc3VlICMyNjY3OFxuICAgIHRoaXMuY2hhcnQgPSBwcm9wcy5jaGFydDtcbiAgICB0aGlzLnJlcG9zaXRvcnkgPSBwcm9wcy5yZXBvc2l0b3J5O1xuICAgIHRoaXMudmVyc2lvbiA9IHByb3BzLnZlcnNpb247XG4gICAgdGhpcy5jaGFydEFzc2V0ID0gcHJvcHMuY2hhcnRBc3NldDtcblxuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG5cbiAgICBjb25zdCBwcm92aWRlciA9IEt1YmVjdGxQcm92aWRlci5nZXRLdWJlY3RsUHJvdmlkZXIodGhpcywgcHJvcHMuY2x1c3Rlcik7XG4gICAgaWYgKCFwcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdLdWJlY3RsIFByb3ZpZGVyIGlzIG5vdCBkZWZpbmVkIGluIHRoaXMgY2x1c3Rlci4gRGVmaW5lIGl0IHdoZW4gY3JlYXRpbmcgdGhlIGNsdXN0ZXInKTtcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lb3V0ID0gcHJvcHMudGltZW91dD8udG9TZWNvbmRzKCk7XG4gICAgaWYgKHRpbWVvdXQgJiYgdGltZW91dCA+IDkwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdIZWxtIGNoYXJ0IHRpbWVvdXQgY2Fubm90IGJlIGhpZ2hlciB0aGFuIDE1IG1pbnV0ZXMuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNoYXJ0ICYmICF0aGlzLmNoYXJ0QXNzZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkVpdGhlciAnY2hhcnQnIG9yICdjaGFydEFzc2V0JyBtdXN0IGJlIHNwZWNpZmllZCB0byBpbnN0YWxsIGEgaGVsbSBjaGFydFwiKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jaGFydEFzc2V0ICYmICh0aGlzLnJlcG9zaXRvcnkgfHwgdGhpcy52ZXJzaW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk5laXRoZXIgJ3JlcG9zaXRvcnknIG5vciAndmVyc2lvbicgY2FuIGJlIHVzZWQgd2hlbiBjb25maWd1cmluZyAnY2hhcnRBc3NldCdcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZGVmYXVsdCBub3QgdG8gd2FpdFxuICAgIGNvbnN0IHdhaXQgPSBwcm9wcy53YWl0ID8/IGZhbHNlO1xuICAgIC8vIGRlZmF1bHQgdG8gY3JlYXRlIG5ldyBuYW1lc3BhY2VcbiAgICBjb25zdCBjcmVhdGVOYW1lc3BhY2UgPSBwcm9wcy5jcmVhdGVOYW1lc3BhY2UgPz8gdHJ1ZTtcbiAgICAvLyBkZWZhdWx0IHRvIG5vdCBza2lwIGNyZCBpbnN0YWxsYXRpb25cbiAgICBjb25zdCBza2lwQ3JkcyA9IHByb3BzLnNraXBDcmRzID8/IGZhbHNlO1xuICAgIC8vIGRlZmF1bHQgdG8gc2V0IGF0b21pYyBhcyBmYWxzZVxuICAgIGNvbnN0IGF0b21pYyA9IHByb3BzLmF0b21pYyA/PyBmYWxzZTtcblxuICAgIHRoaXMuY2hhcnRBc3NldD8uZ3JhbnRSZWFkKHByb3ZpZGVyLnJvbGUhKTtcblxuICAgIG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHJlc291cmNlVHlwZTogSGVsbUNoYXJ0LlJFU09VUkNFX1RZUEUsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIENsdXN0ZXJOYW1lOiBwcm9wcy5jbHVzdGVyLmNsdXN0ZXJOYW1lLFxuICAgICAgICBSZWxlYXNlOiBwcm9wcy5yZWxlYXNlID8/IE5hbWVzLnVuaXF1ZUlkKHRoaXMpLnNsaWNlKC01MykudG9Mb3dlckNhc2UoKSwgLy8gSGVsbSBoYXMgYSA1MyBjaGFyYWN0ZXIgbGltaXQgZm9yIHRoZSBuYW1lXG4gICAgICAgIENoYXJ0OiB0aGlzLmNoYXJ0LFxuICAgICAgICBDaGFydEFzc2V0VVJMOiB0aGlzLmNoYXJ0QXNzZXQ/LnMzT2JqZWN0VXJsLFxuICAgICAgICBWZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICAgIFdhaXQ6IHdhaXQgfHwgdW5kZWZpbmVkLCAvLyBwcm9wcyBhcmUgc3RyaW5naWZpZWQgc28gd2UgZW5jb2RlIOKAnGZhbHNl4oCdIGFzIHVuZGVmaW5lZFxuICAgICAgICBUaW1lb3V0OiB0aW1lb3V0ID8gYCR7dGltZW91dC50b1N0cmluZygpfXNgIDogdW5kZWZpbmVkLCAvLyBIZWxtIHYzIGV4cGVjdHMgZHVyYXRpb24gaW5zdGVhZCBvZiBpbnRlZ2VyXG4gICAgICAgIFZhbHVlczogKHByb3BzLnZhbHVlcyA/IHN0YWNrLnRvSnNvblN0cmluZyhwcm9wcy52YWx1ZXMpIDogdW5kZWZpbmVkKSxcbiAgICAgICAgTmFtZXNwYWNlOiBwcm9wcy5uYW1lc3BhY2UgPz8gJ2RlZmF1bHQnLFxuICAgICAgICBSZXBvc2l0b3J5OiB0aGlzLnJlcG9zaXRvcnksXG4gICAgICAgIENyZWF0ZU5hbWVzcGFjZTogY3JlYXRlTmFtZXNwYWNlIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgU2tpcENyZHM6IHNraXBDcmRzIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgQXRvbWljOiBhdG9taWMgfHwgdW5kZWZpbmVkLCAvLyBwcm9wcyBhcmUgc3RyaW5naWZpZWQgc28gd2UgZW5jb2RlIOKAnGZhbHNl4oCdIGFzIHVuZGVmaW5lZFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19