UNPKG

raindancers-network

Version:
130 lines 18.6 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.EnterpriseVpcLambda = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const path = require("path"); const cdk = require("aws-cdk-lib"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const constructs = require("constructs"); class EnterpriseVpcLambda extends constructs.Construct { /** * * @param scope * @param id */ constructor(scope, id) { super(scope, id); // attach vpc to cloudwan const attachToCloudwan = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'attachtoCloudwan', { uuid: 'FEAD99771132', runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9, handler: 'vpcattachment.on_event', code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/evpc'), { bundling: { image: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9.bundlingImage, command: [ 'bash', '-c', 'pip install -r requirements.txt -t /asset-output && cp -au . /asset-output', ], }, }), timeout: cdk.Duration.seconds(899), }); attachToCloudwan.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({ effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW, resources: ['*'], actions: [ 'networkmanager:CreateVpcAttachment', 'networkmanager:TagResource', 'networkmanager:DeleteVpcAttachment', 'networkmanager:DeleteAttachment', 'account:ListRegions', 'ec2:DescribeRegions', 'iam:CreateServiceLinkedRole', ], })); const isAttachmentComplete = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'isattachmentComplete', { uuid: 'FEAD99771134', runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9, handler: 'vpcattachment.is_complete', code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/evpc'), { bundling: { image: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9.bundlingImage, command: [ 'bash', '-c', 'pip install -r requirements.txt -t /asset-output && cp -au . /asset-output', ], }, }), timeout: cdk.Duration.seconds(899), }); isAttachmentComplete.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({ effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW, resources: ['*'], actions: [ 'networkmanager:getVpcAttachment', ], })); this.attachToCloudwanProvider = new aws_cdk_lib_1.custom_resources.Provider(this, 'AttachToCloudwanProvider', { onEventHandler: attachToCloudwan, isCompleteHandler: isAttachmentComplete, logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.ONE_DAY, totalTimeout: cdk.Duration.minutes(15), queryInterval: cdk.Duration.seconds(15), }); // add routes lambda const addRoutesLambda = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'lookupIdLambda-evpc', { uuid: '00001122AA', runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9, handler: 'addRoutes.on_event', code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/evpc')), timeout: cdk.Duration.seconds(899), }); addRoutesLambda.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({ effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW, resources: ['*'], actions: [ 'ec2:CreateRoute', 'ec2:DeleteRoute', 'ec2:ReplaceRoute', 'networkmanager:ListCoreNetworks', ], })); this.addRoutesProvider = new aws_cdk_lib_1.custom_resources.Provider(this, 'NetworkManagerProvider', { onEventHandler: addRoutesLambda, }); // transit gateway is ready const tgwaittofinishOnEvent = new aws_cdk_lib_1.aws_lambda.Function(this, 'tgReadyOnevent', { runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9, handler: 'checktgready.on_event', code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/evpc')), timeout: cdk.Duration.seconds(899), }); const tgwaittofinishIsComplete = new aws_cdk_lib_1.aws_lambda.Function(this, 'tgReadyisComplete', { runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9, handler: 'checktgready.is_complete', code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/evpc')), timeout: cdk.Duration.seconds(899), }); tgwaittofinishIsComplete.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({ effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW, resources: ['*'], actions: [ 'ec2:DescribeTransitGateway*', ], })); this.tgWaiterProvider = new aws_cdk_lib_1.custom_resources.Provider(this, 'WaittoFinishProvider', { onEventHandler: tgwaittofinishOnEvent, isCompleteHandler: tgwaittofinishIsComplete, totalTimeout: cdk.Duration.minutes(119), queryInterval: cdk.Duration.seconds(20), logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.ONE_MONTH, providerFunctionName: cdk.PhysicalName.GENERATE_IF_NEEDED, }); } } exports.EnterpriseVpcLambda = EnterpriseVpcLambda; _a = JSII_RTTI_SYMBOL_1; EnterpriseVpcLambda[_a] = { fqn: "raindancers-network.network.EnterpriseVpcLambda", version: "1.29.3" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50ZXJwcmlzZXZwY2xhbWJkYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZwYy9lbnRlcnByaXNldnBjbGFtYmRhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixtQ0FBbUM7QUFDbkMsNkNBTXFCO0FBRXJCLHlDQUF5QztBQUd6QyxNQUFhLG1CQUFvQixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBZTNEOzs7O1NBSUU7SUFDRixZQUFZLEtBQTJCLEVBQUUsRUFBVTtRQUNsRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWhCLHlCQUF5QjtRQUN6QixNQUFNLGdCQUFnQixHQUFHLElBQUksd0JBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDbEYsSUFBSSxFQUFFLGNBQWM7WUFDcEIsT0FBTyxFQUFFLHdCQUFVLENBQUMsT0FBTyxDQUFDLFVBQVU7WUFDdEMsT0FBTyxFQUFFLHdCQUF3QjtZQUNqQyxJQUFJLEVBQUUsd0JBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLEVBQUU7Z0JBQ3pFLFFBQVEsRUFBRTtvQkFDUixLQUFLLEVBQUUsd0JBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGFBQWE7b0JBQ2xELE9BQU8sRUFBRTt3QkFDUCxNQUFNLEVBQUUsSUFBSTt3QkFDWiw0RUFBNEU7cUJBQzdFO2lCQUNGO2FBQ0YsQ0FBQztZQUNGLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDbkMsQ0FBQyxDQUFDO1FBRUgsZ0JBQWdCLENBQUMsZUFBZSxDQUM5QixJQUFJLHFCQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3RCLE1BQU0sRUFBRSxxQkFBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3hCLFNBQVMs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RUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDdkMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxZQUFZLEVBQUUsc0JBQUksQ0FBQyxhQUFhLENBQUMsU0FBUztZQUMxQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLGtCQUFrQjtTQUMxRCxDQUFDLENBQUM7SUFDTCxDQUFDOztBQTNKSCxrREE0SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIGF3c19sYW1iZGEsXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbG9ncyBhcyBsb2dzLFxuICBjdXN0b21fcmVzb3VyY2VzIGFzIGNyLFxufVxuICBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5cblxuZXhwb3J0IGNsYXNzIEVudGVycHJpc2VWcGNMYW1iZGEgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIC8qKlxuXHQgKiBBIGN1c3RvbSByZXNvdXJjZSB0byB1c2UgZm9yIGFkZGluZyByb3V0ZXNcblx0ICovXG4gIHB1YmxpYyByZWFkb25seSBhZGRSb3V0ZXNQcm92aWRlcjogY3IuUHJvdmlkZXI7XG4gIC8qKlxuXHQgKiBBIGNoZWNrIHRvIHNlZSBpZiB0cmFuc2l0Z2F0ZXdheSBpcyByZWFkeSB0byByb3V0ZSB0by5cblx0ICovXG4gIHB1YmxpYyByZWFkb25seSB0Z1dhaXRlclByb3ZpZGVyOiBjci5Qcm92aWRlcjtcbiAgLyoqXG4gICAqIGF0dGFjaCB0byBjbG91ZHdhbiB3aXRoIGEgd2F0ZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRhY2hUb0Nsb3Vkd2FuUHJvdmlkZXI6IGNyLlByb3ZpZGVyO1xuXG5cbiAgLyoqXG5cdCAqXG5cdCAqIEBwYXJhbSBzY29wZVxuXHQgKiBAcGFyYW0gaWRcblx0ICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuXHQgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBhdHRhY2ggdnBjIHRvIGNsb3Vkd2FuXG4gICAgY29uc3QgYXR0YWNoVG9DbG91ZHdhbiA9IG5ldyBhd3NfbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uKHRoaXMsICdhdHRhY2h0b0Nsb3Vkd2FuJywge1xuICAgICAgdXVpZDogJ0ZFQUQ5OTc3MTEzMicsXG4gICAgICBydW50aW1lOiBhd3NfbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfOSxcbiAgICAgIGhhbmRsZXI6ICd2cGNhdHRhY2htZW50Lm9uX2V2ZW50JyxcbiAgICAgIGNvZGU6IGF3c19sYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uL2xhbWJkYS9ldnBjJyksIHtcbiAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICBpbWFnZTogYXdzX2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzkuYnVuZGxpbmdJbWFnZSxcbiAgICAgICAgICBjb21tYW5kOiBbXG4gICAgICAgICAgICAnYmFzaCcsICctYycsXG4gICAgICAgICAgICAncGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dCAtdCAvYXNzZXQtb3V0cHV0ICYmIGNwIC1hdSAuIC9hc3NldC1vdXRwdXQnLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDg5OSksXG4gICAgfSk7XG5cbiAgICBhdHRhY2hUb0Nsb3Vkd2FuLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ25ldHdvcmttYW5hZ2VyOkNyZWF0ZVZwY0F0dGFjaG1lbnQnLFxuICAgICAgICAgICduZXR3b3JrbWFuYWdlcjpUYWdSZXNvdXJjZScsXG4gICAgICAgICAgJ25ldHdvcmttYW5hZ2VyOkRlbGV0ZVZwY0F0dGFjaG1lbnQnLFxuICAgICAgICAgICduZXR3b3JrbWFuYWdlcjpEZWxldGVBdHRhY2htZW50JyxcbiAgICAgICAgICAnYWNjb3VudDpMaXN0UmVnaW9ucycsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZVJlZ2lvbnMnLFxuICAgICAgICAgICdpYW06Q3JlYXRlU2VydmljZUxpbmtlZFJvbGUnLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGlzQXR0YWNobWVudENvbXBsZXRlID0gbmV3IGF3c19sYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24odGhpcywgJ2lzYXR0YWNobWVudENvbXBsZXRlJywge1xuICAgICAgdXVpZDogJ0ZFQUQ5OTc3MTEzNCcsXG4gICAgICBydW50aW1lOiBhd3NfbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfOSxcbiAgICAgIGhhbmRsZXI6ICd2cGNhdHRhY2htZW50LmlzX2NvbXBsZXRlJyxcbiAgICAgIGNvZGU6IGF3c19sYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uL2xhbWJkYS9ldnBjJyksIHtcbiAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICBpbWFnZTogYXdzX2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzkuYnVuZGxpbmdJbWFnZSxcbiAgICAgICAgICBjb21tYW5kOiBbXG4gICAgICAgICAgICAnYmFzaCcsICctYycsXG4gICAgICAgICAgICAncGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dCAtdCAvYXNzZXQtb3V0cHV0ICYmIGNwIC1hdSAuIC9hc3NldC1vdXRwdXQnLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDg5OSksXG4gICAgfSk7XG5cbiAgICBpc0F0dGFjaG1lbnRDb21wbGV0ZS5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICduZXR3b3JrbWFuYWdlcjpnZXRWcGNBdHRhY2htZW50JyxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICB0aGlzLmF0dGFjaFRvQ2xvdWR3YW5Qcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCAnQXR0YWNoVG9DbG91ZHdhblByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IGF0dGFjaFRvQ2xvdWR3YW4sXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaXNBdHRhY2htZW50Q29tcGxldGUsIC8vIG9wdGlvbmFsIGFzeW5jIFwid2FpdGVyXCJcbiAgICAgIGxvZ1JldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9EQVksIC8vIGRlZmF1bHQgaXMgSU5GSU5JVEVcbiAgICAgIHRvdGFsVGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgcXVlcnlJbnRlcnZhbDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMTUpLFxuICAgIH0pO1xuXG5cblx0ICAvLyBhZGQgIHJvdXRlcyBsYW1iZGFcbiAgICBjb25zdCBhZGRSb3V0ZXNMYW1iZGEgPSBuZXcgYXdzX2xhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnbG9va3VwSWRMYW1iZGEtZXZwYycsIHtcbiAgICAgIHV1aWQ6ICcwMDAwMTEyMkFBJyxcbiAgICAgIHJ1bnRpbWU6IGF3c19sYW1iZGEuUnVudGltZS5QWVRIT05fM185LFxuICAgICAgaGFuZGxlcjogJ2FkZFJvdXRlcy5vbl9ldmVudCcsXG4gICAgICBjb2RlOiBhd3NfbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9sYW1iZGEvZXZwYycpKSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDg5OSksXG4gICAgfSk7XG5cbiAgICBhZGRSb3V0ZXNMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnZWMyOkNyZWF0ZVJvdXRlJyxcbiAgICAgICAgICAnZWMyOkRlbGV0ZVJvdXRlJyxcbiAgICAgICAgICAnZWMyOlJlcGxhY2VSb3V0ZScsXG4gICAgICAgICAgJ25ldHdvcmttYW5hZ2VyOkxpc3RDb3JlTmV0d29ya3MnLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuYWRkUm91dGVzUHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIodGhpcywgJ05ldHdvcmtNYW5hZ2VyUHJvdmlkZXInLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogYWRkUm91dGVzTGFtYmRhLFxuICAgIH0pO1xuXG5cbiAgICAvLyB0cmFuc2l0IGdhdGV3YXkgaXMgcmVhZHlcbiAgICBjb25zdCB0Z3dhaXR0b2ZpbmlzaE9uRXZlbnQgPSBuZXcgYXdzX2xhbWJkYS5GdW5jdGlvbih0aGlzLCAndGdSZWFkeU9uZXZlbnQnLCB7XG5cbiAgICAgIHJ1bnRpbWU6IGF3c19sYW1iZGEuUnVudGltZS5QWVRIT05fM185LFxuICAgICAgaGFuZGxlcjogJ2NoZWNrdGdyZWFkeS5vbl9ldmVudCcsXG4gICAgICBjb2RlOiBhd3NfbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9sYW1iZGEvZXZwYycpKSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDg5OSksXG4gICAgICAvL2Z1bmN0aW9uTmFtZTogJ2Nsb3Vkd2FuUG9saWN5RXhlY3V0ZXdhaXR0b2ZpbmlzaG9uZXZlbnQnLCAvL2Nkay5QaHlzaWNhbE5hbWUuR0VORVJBVEVfSUZfTkVFREVEXG4gICAgfSk7XG5cblxuICAgIGNvbnN0IHRnd2FpdHRvZmluaXNoSXNDb21wbGV0ZSA9IG5ldyBhd3NfbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICd0Z1JlYWR5aXNDb21wbGV0ZScsIHtcbiAgICAgIHJ1bnRpbWU6IGF3c19sYW1iZGEuUnVudGltZS5QWVRIT05fM185LFxuICAgICAgaGFuZGxlcjogJ2NoZWNrdGdyZWFkeS5pc19jb21wbGV0ZScsXG4gICAgICBjb2RlOiBhd3NfbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9sYW1iZGEvZXZwYycpKSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDg5OSksXG4gICAgICAvL2Z1bmN0aW9uTmFtZTogJ2Nsb3Vkd2FuUG9saWN5RXhlY3V0ZXdhaXRpc2NvbXBsZXRlJywgLy9jZGsuUGh5c2ljYWxOYW1lLkdFTkVSQVRFX0lGX05FRURFRFxuICAgIH0pO1xuXG4gICAgdGd3YWl0dG9maW5pc2hJc0NvbXBsZXRlLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZVRyYW5zaXRHYXRld2F5KicsXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy50Z1dhaXRlclByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsICdXYWl0dG9GaW5pc2hQcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiB0Z3dhaXR0b2ZpbmlzaE9uRXZlbnQsXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogdGd3YWl0dG9maW5pc2hJc0NvbXBsZXRlLFxuICAgICAgdG90YWxUaW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxMTkpLFx0Ly8gbm90ZSB0aGlzIGNhbiBiZSBsb25nZXIgdGhhbiB0aGUgbGFtYmRhIHRpbWVvdXRcbiAgICAgIHF1ZXJ5SW50ZXJ2YWw6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDIwKSxcbiAgICAgIGxvZ1JldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgIHByb3ZpZGVyRnVuY3Rpb25OYW1lOiBjZGsuUGh5c2ljYWxOYW1lLkdFTkVSQVRFX0lGX05FRURFRCxcbiAgICB9KTtcbiAgfVxufSJdfQ==