UNPKG

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

Version:

This module is deprecated. All constructs are now available under aws-cdk-lib/aws-eks-v2

90 lines 16.9 kB
"use strict"; 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 core_1 = require("aws-cdk-lib/core"); const constructs_1 = require("constructs"); const kubectl_provider_1 = require("./kubectl-provider"); /** * 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 { static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-eks-v2-alpha.HelmChart", version: "2.240.0-alpha.0" }; /** * The CloudFormation resource type. */ static RESOURCE_TYPE = 'Custom::AWSCDK-EKS-HelmChart'; chart; repository; version; chartAsset; atomic; constructor(scope, id, props) { super(scope, id); try { jsiiDeprecationWarnings.print("@aws-cdk/aws-eks-v2-alpha.HelmChart", ""); 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 core_1.ValidationError('Kubectl Provider is not defined in this cluster. Define it when creating the cluster', this); } const timeout = props.timeout?.toSeconds(); if (timeout && timeout > 900) { throw new core_1.ValidationError('Helm chart timeout cannot be higher than 15 minutes.', this); } if (!this.chart && !this.chartAsset) { throw new core_1.ValidationError("Either 'chart' or 'chartAsset' must be specified to install a helm chart", this); } if (this.chartAsset && (this.repository || this.version)) { throw new core_1.ValidationError("Neither 'repository' nor 'version' can be used when configuring 'chartAsset'", this); } // 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, removalPolicy: props.removalPolicy, 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; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsbS1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhlbG0tY2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSwyQ0FBaUY7QUFDakYsMkNBQXVDO0FBRXZDLHlEQUFxRDtBQXFIckQ7Ozs7R0FJRztBQUNILE1BQWEsU0FBVSxTQUFRLHNCQUFTOztJQUN0Qzs7T0FFRztJQUNJLE1BQU0sQ0FBVSxhQUFhLEdBQUcsOEJBQThCLENBQUM7SUFDdEQsS0FBSyxDQUFVO0lBQ2YsVUFBVSxDQUFVO0lBQ3BCLE9BQU8sQ0FBVTtJQUNqQixVQUFVLENBQVM7SUFDbkIsTUFBTSxDQUFXO0lBRWpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7OzsrQ0FaUixTQUFTOzs7O1FBY2xCLG9EQUFvRDtRQUNwRCxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBRW5DLE1BQU0sS0FBSyxHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0IsTUFBTSxRQUFRLEdBQUcsa0NBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxzQkFBZSxDQUFDLHNGQUFzRixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFILENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzNDLElBQUksT0FBTyxJQUFJLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksc0JBQWUsQ0FBQyxzREFBc0QsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLHNCQUFlLENBQUMsMEVBQTBFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUcsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDekQsTUFBTSxJQUFJLHNCQUFlLENBQ3ZCLDhFQUE4RSxFQUM5RSxJQUFJLENBQ0wsQ0FBQztRQUNKLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUM7UUFDakMsa0NBQWtDO1FBQ2xDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDO1FBQ3RELHVDQUF1QztRQUN2QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUN6QyxpQ0FBaUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7UUFFckMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUssQ0FBQyxDQUFDO1FBRTNDLElBQUkscUJBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ25DLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxZQUFZLEVBQUUsU0FBUyxDQUFDLGFBQWE7WUFDckMsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLFVBQVUsRUFBRTtnQkFDVixXQUFXLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXO2dCQUN0QyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxZQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLDZDQUE2QztnQkFDdEgsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXO2dCQUMzQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLElBQUksRUFBRSxJQUFJLElBQUksU0FBUyxFQUFFLDBEQUEwRDtnQkFDbkYsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLDhDQUE4QztnQkFDdkcsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDckUsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksU0FBUztnQkFDdkMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixlQUFlLEVBQUUsZUFBZSxJQUFJLFNBQVM7Z0JBQzdDLFFBQVEsRUFBRSxRQUFRLElBQUksU0FBUztnQkFDL0IsTUFBTSxFQUFFLE1BQU0sSUFBSSxTQUFTLEVBQUUsMERBQTBEO2FBQ3hGO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7O0FBM0VILDhCQTRFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXNzZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB0eXBlIHsgRHVyYXRpb24sIFJlbW92YWxQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlLCBOYW1lcywgU3RhY2ssIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7IElDbHVzdGVyIH0gZnJvbSAnLi9jbHVzdGVyJztcbmltcG9ydCB7IEt1YmVjdGxQcm92aWRlciB9IGZyb20gJy4va3ViZWN0bC1wcm92aWRlcic7XG5cbi8qKlxuICogSGVsbSBDaGFydCBvcHRpb25zLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVsbUNoYXJ0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2hhcnQuXG4gICAqIEVpdGhlciB0aGlzIG9yIGBjaGFydEFzc2V0YCBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBjaGFydCBuYW1lLiBJbXBsaWVzIGBjaGFydEFzc2V0YCBpcyB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhcnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZWxlYXNlLlxuICAgKiBAZGVmYXVsdCAtIElmIG5vIHJlbGVhc2UgbmFtZSBpcyBnaXZlbiwgaXQgd2lsbCB1c2UgdGhlIGxhc3QgNTMgY2hhcmFjdGVycyBvZiB0aGUgbm9kZSdzIHVuaXF1ZSBpZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjaGFydCB2ZXJzaW9uIHRvIGluc3RhbGwuXG4gICAqIEBkZWZhdWx0IC0gSWYgdGhpcyBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbGF0ZXN0IHZlcnNpb24gaXMgaW5zdGFsbGVkXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSB3aGljaCBjb250YWlucyB0aGUgY2hhcnQuIEZvciBleGFtcGxlOiBodHRwczovL2NoYXJ0cy5oZWxtLnNoL3N0YWJsZS9cbiAgICogQGRlZmF1bHQgLSBObyByZXBvc2l0b3J5IHdpbGwgYmUgdXNlZCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgY2hhcnQgbmVlZHMgdG8gYmUgYW4gYWJzb2x1dGUgVVJMLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNoYXJ0IGluIHRoZSBmb3JtIG9mIGFuIGFzc2V0LlxuICAgKiBFaXRoZXIgdGhpcyBvciBgY2hhcnRgIG11c3QgYmUgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGNoYXJ0IGFzc2V0LiBJbXBsaWVzIGBjaGFydGAgaXMgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNoYXJ0QXNzZXQ/OiBBc3NldDtcblxuICAvKipcbiAgICogVGhlIEt1YmVybmV0ZXMgbmFtZXNwYWNlIHNjb3BlIG9mIHRoZSByZXF1ZXN0cy5cbiAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWVzIHRvIGJlIHVzZWQgYnkgdGhlIGNoYXJ0LlxuICAgKiBGb3IgbmVzdGVkIHZhbHVlcyB1c2UgYSBuZXN0ZWQgZGljdGlvbmFyeS4gRm9yIGV4YW1wbGU6XG4gICAqIHZhbHVlczoge1xuICAgKiAgaW5zdGFsbGF0aW9uQ1JEczogdHJ1ZSxcbiAgICogIHdlYmhvb2s6IHsgcG9ydDogOTQ0MyB9XG4gICAqIH1cbiAgICogQGRlZmF1bHQgLSBObyB2YWx1ZXMgYXJlIHByb3ZpZGVkIHRvIHRoZSBjaGFydC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlcz86IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCBIZWxtIHNob3VsZCB3YWl0IHVudGlsIGFsbCBQb2RzLCBQVkNzLCBTZXJ2aWNlcywgYW5kIG1pbmltdW0gbnVtYmVyIG9mIFBvZHMgb2YgYVxuICAgKiBEZXBsb3ltZW50LCBTdGF0ZWZ1bFNldCwgb3IgUmVwbGljYVNldCBhcmUgaW4gYSByZWFkeSBzdGF0ZSBiZWZvcmUgbWFya2luZyB0aGUgcmVsZWFzZSBhcyBzdWNjZXNzZnVsLlxuICAgKiBAZGVmYXVsdCAtIEhlbG0gd2lsbCBub3Qgd2FpdCBiZWZvcmUgbWFya2luZyByZWxlYXNlIGFzIHN1Y2Nlc3NmdWxcbiAgICovXG4gIHJlYWRvbmx5IHdhaXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbW91bnQgb2YgdGltZSB0byB3YWl0IGZvciBhbnkgaW5kaXZpZHVhbCBLdWJlcm5ldGVzIG9wZXJhdGlvbi4gTWF4aW11bSAxNSBtaW51dGVzLlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5taW51dGVzKDUpXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IEhlbG0gc2hvdWxkIHRyZWF0IHRoaXMgb3BlcmF0aW9uIGFzIGF0b21pYzsgaWYgc2V0LCB1cGdyYWRlIHByb2Nlc3Mgcm9sbHMgYmFjayBjaGFuZ2VzXG4gICAqIG1hZGUgaW4gY2FzZSBvZiBmYWlsZWQgdXBncmFkZS4gVGhlIC0td2FpdCBmbGFnIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgaWYgLS1hdG9taWMgaXMgdXNlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGF0b21pYz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGNyZWF0ZSBuYW1lc3BhY2UgaWYgbm90IGV4aXN0XG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZU5hbWVzcGFjZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGlmIHNldCwgbm8gQ1JEcyB3aWxsIGJlIGluc3RhbGxlZFxuICAgKiBAZGVmYXVsdCAtIENSRHMgYXJlIGluc3RhbGxlZCBpZiBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAqL1xuICByZWFkb25seSBza2lwQ3Jkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByZW1vdmFsIHBvbGljeSBhcHBsaWVkIHRvIHRoZSBjdXN0b20gcmVzb3VyY2UgdGhhdCBtYW5hZ2VzIHRoZSBIZWxtIGNoYXJ0LlxuICAgKlxuICAgKiBUaGUgcmVtb3ZhbCBwb2xpY3kgY29udHJvbHMgd2hhdCBoYXBwZW5zIHRvIHRoZSByZXNvdXJjZSBpZiBpdCBzdG9wcyBiZWluZyBtYW5hZ2VkIGJ5IENsb3VkRm9ybWF0aW9uLlxuICAgKiBUaGlzIGNhbiBoYXBwZW4gaW4gb25lIG9mIHRocmVlIHNpdHVhdGlvbnM6XG4gICAqXG4gICAqIC0gVGhlIHJlc291cmNlIGlzIHJlbW92ZWQgZnJvbSB0aGUgdGVtcGxhdGUsIHNvIENsb3VkRm9ybWF0aW9uIHN0b3BzIG1hbmFnaW5nIGl0XG4gICAqIC0gQSBjaGFuZ2UgdG8gdGhlIHJlc291cmNlIGlzIG1hZGUgdGhhdCByZXF1aXJlcyBpdCB0byBiZSByZXBsYWNlZCwgc28gQ2xvdWRGb3JtYXRpb24gc3RvcHMgbWFuYWdpbmcgaXRcbiAgICogLSBUaGUgc3RhY2sgaXMgZGVsZXRlZCwgc28gQ2xvdWRGb3JtYXRpb24gc3RvcHMgbWFuYWdpbmcgYWxsIHJlc291cmNlcyBpbiBpdFxuICAgKlxuICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LkRFU1RST1lcbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIEhlbG0gQ2hhcnQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIZWxtQ2hhcnRQcm9wcyBleHRlbmRzIEhlbG1DaGFydE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIEVLUyBjbHVzdGVyIHRvIGFwcGx5IHRoaXMgY29uZmlndXJhdGlvbiB0by5cbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpyZWYtdmlhLWludGVyZmFjZV1cbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI6IElDbHVzdGVyO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBoZWxtIGNoYXJ0IHdpdGhpbiB0aGUgS3ViZXJuZXRlcyBzeXN0ZW0uXG4gKlxuICogQXBwbGllcy9kZWxldGVzIHRoZSByZXNvdXJjZXMgdXNpbmcgYGt1YmVjdGxgIGluIHN5bmMgd2l0aCB0aGUgcmVzb3VyY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBIZWxtQ2hhcnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFU09VUkNFX1RZUEUgPSAnQ3VzdG9tOjpBV1NDREstRUtTLUhlbG1DaGFydCc7XG4gIHB1YmxpYyByZWFkb25seSBjaGFydD86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHJlcG9zaXRvcnk/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY2hhcnRBc3NldD86IEFzc2V0O1xuICBwdWJsaWMgcmVhZG9ubHkgYXRvbWljPzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSGVsbUNoYXJ0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gRXhwb3NpbmcgdGhlc2UgcHJvcGVydGllcyBpcyBkb25lIGZvciBjb252ZW5pZW5jZVxuICAgIC8vIEZvciBtb3JlIGRldGFpbHMgc2VlIGlzc3VlICMyNjY3OFxuICAgIHRoaXMuY2hhcnQgPSBwcm9wcy5jaGFydDtcbiAgICB0aGlzLnJlcG9zaXRvcnkgPSBwcm9wcy5yZXBvc2l0b3J5O1xuICAgIHRoaXMudmVyc2lvbiA9IHByb3BzLnZlcnNpb247XG4gICAgdGhpcy5jaGFydEFzc2V0ID0gcHJvcHMuY2hhcnRBc3NldDtcblxuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG5cbiAgICBjb25zdCBwcm92aWRlciA9IEt1YmVjdGxQcm92aWRlci5nZXRLdWJlY3RsUHJvdmlkZXIodGhpcywgcHJvcHMuY2x1c3Rlcik7XG4gICAgaWYgKCFwcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignS3ViZWN0bCBQcm92aWRlciBpcyBub3QgZGVmaW5lZCBpbiB0aGlzIGNsdXN0ZXIuIERlZmluZSBpdCB3aGVuIGNyZWF0aW5nIHRoZSBjbHVzdGVyJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dCA9IHByb3BzLnRpbWVvdXQ/LnRvU2Vjb25kcygpO1xuICAgIGlmICh0aW1lb3V0ICYmIHRpbWVvdXQgPiA5MDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0hlbG0gY2hhcnQgdGltZW91dCBjYW5ub3QgYmUgaGlnaGVyIHRoYW4gMTUgbWludXRlcy4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY2hhcnQgJiYgIXRoaXMuY2hhcnRBc3NldCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcIkVpdGhlciAnY2hhcnQnIG9yICdjaGFydEFzc2V0JyBtdXN0IGJlIHNwZWNpZmllZCB0byBpbnN0YWxsIGEgaGVsbSBjaGFydFwiLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jaGFydEFzc2V0ICYmICh0aGlzLnJlcG9zaXRvcnkgfHwgdGhpcy52ZXJzaW9uKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgXCJOZWl0aGVyICdyZXBvc2l0b3J5JyBub3IgJ3ZlcnNpb24nIGNhbiBiZSB1c2VkIHdoZW4gY29uZmlndXJpbmcgJ2NoYXJ0QXNzZXQnXCIsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIGRlZmF1bHQgbm90IHRvIHdhaXRcbiAgICBjb25zdCB3YWl0ID0gcHJvcHMud2FpdCA/PyBmYWxzZTtcbiAgICAvLyBkZWZhdWx0IHRvIGNyZWF0ZSBuZXcgbmFtZXNwYWNlXG4gICAgY29uc3QgY3JlYXRlTmFtZXNwYWNlID0gcHJvcHMuY3JlYXRlTmFtZXNwYWNlID8/IHRydWU7XG4gICAgLy8gZGVmYXVsdCB0byBub3Qgc2tpcCBjcmQgaW5zdGFsbGF0aW9uXG4gICAgY29uc3Qgc2tpcENyZHMgPSBwcm9wcy5za2lwQ3JkcyA/PyBmYWxzZTtcbiAgICAvLyBkZWZhdWx0IHRvIHNldCBhdG9taWMgYXMgZmFsc2VcbiAgICBjb25zdCBhdG9taWMgPSBwcm9wcy5hdG9taWMgPz8gZmFsc2U7XG5cbiAgICB0aGlzLmNoYXJ0QXNzZXQ/LmdyYW50UmVhZChwcm92aWRlci5yb2xlISk7XG5cbiAgICBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICByZXNvdXJjZVR5cGU6IEhlbG1DaGFydC5SRVNPVVJDRV9UWVBFLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgQ2x1c3Rlck5hbWU6IHByb3BzLmNsdXN0ZXIuY2x1c3Rlck5hbWUsXG4gICAgICAgIFJlbGVhc2U6IHByb3BzLnJlbGVhc2UgPz8gTmFtZXMudW5pcXVlSWQodGhpcykuc2xpY2UoLTUzKS50b0xvd2VyQ2FzZSgpLCAvLyBIZWxtIGhhcyBhIDUzIGNoYXJhY3RlciBsaW1pdCBmb3IgdGhlIG5hbWVcbiAgICAgICAgQ2hhcnQ6IHRoaXMuY2hhcnQsXG4gICAgICAgIENoYXJ0QXNzZXRVUkw6IHRoaXMuY2hhcnRBc3NldD8uczNPYmplY3RVcmwsXG4gICAgICAgIFZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgV2FpdDogd2FpdCB8fCB1bmRlZmluZWQsIC8vIHByb3BzIGFyZSBzdHJpbmdpZmllZCBzbyB3ZSBlbmNvZGUg4oCcZmFsc2XigJ0gYXMgdW5kZWZpbmVkXG4gICAgICAgIFRpbWVvdXQ6IHRpbWVvdXQgPyBgJHt0aW1lb3V0LnRvU3RyaW5nKCl9c2AgOiB1bmRlZmluZWQsIC8vIEhlbG0gdjMgZXhwZWN0cyBkdXJhdGlvbiBpbnN0ZWFkIG9mIGludGVnZXJcbiAgICAgICAgVmFsdWVzOiAocHJvcHMudmFsdWVzID8gc3RhY2sudG9Kc29uU3RyaW5nKHByb3BzLnZhbHVlcykgOiB1bmRlZmluZWQpLFxuICAgICAgICBOYW1lc3BhY2U6IHByb3BzLm5hbWVzcGFjZSA/PyAnZGVmYXVsdCcsXG4gICAgICAgIFJlcG9zaXRvcnk6IHRoaXMucmVwb3NpdG9yeSxcbiAgICAgICAgQ3JlYXRlTmFtZXNwYWNlOiBjcmVhdGVOYW1lc3BhY2UgfHwgdW5kZWZpbmVkLFxuICAgICAgICBTa2lwQ3Jkczogc2tpcENyZHMgfHwgdW5kZWZpbmVkLFxuICAgICAgICBBdG9taWM6IGF0b21pYyB8fCB1bmRlZmluZWQsIC8vIHByb3BzIGFyZSBzdHJpbmdpZmllZCBzbyB3ZSBlbmNvZGUg4oCcZmFsc2XigJ0gYXMgdW5kZWZpbmVkXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=