@rio-cloud/cdk-v2-constructs 2.5.2 → 2.5.3

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 CHANGED
@@ -2990,46 +2990,6 @@
2990
2990
  }
2991
2991
  },
2992
2992
  "types": {
2993
- "@rio-cloud/cdk-v2-constructs.AWSBackupMonitors": {
2994
- "assembly": "@rio-cloud/cdk-v2-constructs",
2995
- "base": "constructs.Construct",
2996
- "docs": {
2997
- "remarks": "The construct creates monitors for AWS Backup jobs",
2998
- "stability": "stable",
2999
- "summary": "This is a beta construct and is likely to have breaking changes."
3000
- },
3001
- "fqn": "@rio-cloud/cdk-v2-constructs.AWSBackupMonitors",
3002
- "initializer": {
3003
- "docs": {
3004
- "stability": "stable"
3005
- },
3006
- "locationInModule": {
3007
- "filename": "src/contributions/team-claid/datadog/backup-monitor.ts",
3008
- "line": 13
3009
- },
3010
- "parameters": [
3011
- {
3012
- "name": "scope",
3013
- "type": {
3014
- "fqn": "constructs.Construct"
3015
- }
3016
- },
3017
- {
3018
- "name": "id",
3019
- "type": {
3020
- "primitive": "string"
3021
- }
3022
- }
3023
- ]
3024
- },
3025
- "kind": "class",
3026
- "locationInModule": {
3027
- "filename": "src/contributions/team-claid/datadog/backup-monitor.ts",
3028
- "line": 12
3029
- },
3030
- "name": "AWSBackupMonitors",
3031
- "symbolId": "src/contributions/team-claid/datadog/backup-monitor:AWSBackupMonitors"
3032
- },
3033
2993
  "@rio-cloud/cdk-v2-constructs.AppStackProps": {
3034
2994
  "assembly": "@rio-cloud/cdk-v2-constructs",
3035
2995
  "datatype": true,
@@ -3080,6 +3040,46 @@
3080
3040
  ],
3081
3041
  "symbolId": "src/contributions/team-transport-two/pipeline/pipeline-stack:AppStackProps"
3082
3042
  },
3043
+ "@rio-cloud/cdk-v2-constructs.AwsBackupMonitoring": {
3044
+ "assembly": "@rio-cloud/cdk-v2-constructs",
3045
+ "base": "constructs.Construct",
3046
+ "docs": {
3047
+ "remarks": "The construct creates monitors for AWS Backup jobs",
3048
+ "stability": "stable",
3049
+ "summary": "This is a beta construct and is likely to have breaking changes."
3050
+ },
3051
+ "fqn": "@rio-cloud/cdk-v2-constructs.AwsBackupMonitoring",
3052
+ "initializer": {
3053
+ "docs": {
3054
+ "stability": "stable"
3055
+ },
3056
+ "locationInModule": {
3057
+ "filename": "src/contributions/team-claid/aws-backup-monitoring/aws-backup-monitoring.ts",
3058
+ "line": 15
3059
+ },
3060
+ "parameters": [
3061
+ {
3062
+ "name": "scope",
3063
+ "type": {
3064
+ "fqn": "constructs.Construct"
3065
+ }
3066
+ },
3067
+ {
3068
+ "name": "id",
3069
+ "type": {
3070
+ "primitive": "string"
3071
+ }
3072
+ }
3073
+ ]
3074
+ },
3075
+ "kind": "class",
3076
+ "locationInModule": {
3077
+ "filename": "src/contributions/team-claid/aws-backup-monitoring/aws-backup-monitoring.ts",
3078
+ "line": 14
3079
+ },
3080
+ "name": "AwsBackupMonitoring",
3081
+ "symbolId": "src/contributions/team-claid/aws-backup-monitoring/aws-backup-monitoring:AwsBackupMonitoring"
3082
+ },
3083
3083
  "@rio-cloud/cdk-v2-constructs.Claidometer": {
3084
3084
  "assembly": "@rio-cloud/cdk-v2-constructs",
3085
3085
  "base": "constructs.Construct",
@@ -4104,8 +4104,8 @@
4104
4104
  "stability": "stable"
4105
4105
  },
4106
4106
  "locationInModule": {
4107
- "filename": "src/contributions/team-claid/datadog/datadog-usage-monitoring.ts",
4108
- "line": 30
4107
+ "filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
4108
+ "line": 32
4109
4109
  },
4110
4110
  "parameters": [
4111
4111
  {
@@ -4130,11 +4130,11 @@
4130
4130
  },
4131
4131
  "kind": "class",
4132
4132
  "locationInModule": {
4133
- "filename": "src/contributions/team-claid/datadog/datadog-usage-monitoring.ts",
4134
- "line": 29
4133
+ "filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
4134
+ "line": 31
4135
4135
  },
4136
4136
  "name": "DatadogUsageMonitoring",
4137
- "symbolId": "src/contributions/team-claid/datadog/datadog-usage-monitoring:DatadogUsageMonitoring"
4137
+ "symbolId": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring:DatadogUsageMonitoring"
4138
4138
  },
4139
4139
  "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoringProps": {
4140
4140
  "assembly": "@rio-cloud/cdk-v2-constructs",
@@ -4145,8 +4145,8 @@
4145
4145
  "fqn": "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoringProps",
4146
4146
  "kind": "interface",
4147
4147
  "locationInModule": {
4148
- "filename": "src/contributions/team-claid/datadog/datadog-usage-monitoring.ts",
4149
- "line": 23
4148
+ "filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
4149
+ "line": 25
4150
4150
  },
4151
4151
  "name": "DatadogUsageMonitoringProps",
4152
4152
  "properties": [
@@ -4157,8 +4157,8 @@
4157
4157
  },
4158
4158
  "immutable": true,
4159
4159
  "locationInModule": {
4160
- "filename": "src/contributions/team-claid/datadog/datadog-usage-monitoring.ts",
4161
- "line": 25
4160
+ "filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
4161
+ "line": 27
4162
4162
  },
4163
4163
  "name": "alertType",
4164
4164
  "type": {
@@ -4172,8 +4172,8 @@
4172
4172
  },
4173
4173
  "immutable": true,
4174
4174
  "locationInModule": {
4175
- "filename": "src/contributions/team-claid/datadog/datadog-usage-monitoring.ts",
4176
- "line": 26
4175
+ "filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
4176
+ "line": 28
4177
4177
  },
4178
4178
  "name": "organization",
4179
4179
  "type": {
@@ -4187,8 +4187,8 @@
4187
4187
  },
4188
4188
  "immutable": true,
4189
4189
  "locationInModule": {
4190
- "filename": "src/contributions/team-claid/datadog/datadog-usage-monitoring.ts",
4191
- "line": 24
4190
+ "filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
4191
+ "line": 26
4192
4192
  },
4193
4193
  "name": "serviceName",
4194
4194
  "type": {
@@ -4196,7 +4196,7 @@
4196
4196
  }
4197
4197
  }
4198
4198
  ],
4199
- "symbolId": "src/contributions/team-claid/datadog/datadog-usage-monitoring:DatadogUsageMonitoringProps"
4199
+ "symbolId": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring:DatadogUsageMonitoringProps"
4200
4200
  },
4201
4201
  "@rio-cloud/cdk-v2-constructs.FargateTaskDefinitionProps": {
4202
4202
  "assembly": "@rio-cloud/cdk-v2-constructs",
@@ -8361,5 +8361,5 @@
8361
8361
  }
8362
8362
  },
8363
8363
  "version": "0.0.0",
8364
- "fingerprint": "MSHB3zTXI0ldPPBRHDgX/h7r1x/rZSrfXtBI/Uq7VA0="
8364
+ "fingerprint": "s86Raade0/lwQD8NBR62i7rNnsrvJpTzb8m2ey4XMEE="
8365
8365
  }
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [2.5.3](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.5.2&sourceBranch=refs%2Ftags%2Fv2.5.3) (2022-07-28)
6
+
5
7
  ### [2.5.2](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.5.1&sourceBranch=refs%2Ftags%2Fv2.5.2) (2022-07-28)
6
8
 
7
9
  ### [2.5.1](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.5.0&sourceBranch=refs%2Ftags%2Fv2.5.1) (2022-07-28)
package/CONTRIBUTION.md CHANGED
@@ -87,7 +87,8 @@ The file must contain the following information.
87
87
 
88
88
  #### Provide a `CHANGELOG.md` file
89
89
 
90
- * Use [semantic versioning](https://semver.org/) (make sure to update the `Claidometer` construct accordingly on new relases)
90
+ * Use [semantic versioning](https://semver.org/) (make sure to update the `Claidometer` construct accordingly on new releases)
91
+ * Reference the corresponding construct library's version
91
92
  * Describe the changes, e.g.,
92
93
  > * 🎉 new feature released
93
94
  > * 🐛 bug squashed
@@ -3,6 +3,6 @@ import { Construct } from 'constructs';
3
3
  * This is a beta construct and is likely to have breaking changes.
4
4
  * The construct creates monitors for AWS Backup jobs
5
5
  */
6
- export declare class AWSBackupMonitors extends Construct {
6
+ export declare class AwsBackupMonitoring extends Construct {
7
7
  constructor(scope: Construct, id: string);
8
8
  }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AwsBackupMonitoring = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const path = require("path");
7
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
8
+ const constructs_1 = require("constructs");
9
+ const rio_claidometer_1 = require("../../../rio-claidometer");
10
+ /**
11
+ * This is a beta construct and is likely to have breaking changes.
12
+ * The construct creates monitors for AWS Backup jobs
13
+ */
14
+ class AwsBackupMonitoring extends constructs_1.Construct {
15
+ constructor(scope, id) {
16
+ super(scope, id);
17
+ const teamName = aws_cdk_lib_1.aws_ssm.StringParameter.fromStringParameterName(this, 'TeamName', '/config/team/name').stringValue;
18
+ new aws_cdk_lib_1.CfnResource(this, 'BackupMonitoringCopyJobs', {
19
+ type: 'Datadog::Monitors::Monitor',
20
+ properties: {
21
+ Name: `[P4] : ${teamName} AWS Backup Copy Job to central account failed`,
22
+ Type: 'query alert',
23
+ Query: `sum(last_1d):sum:aws.backup.number_of_copy_jobs_failed{account_id:${aws_cdk_lib_1.Stack.of(this).account}}.as_count() > 0`,
24
+ Message: `AWS Backup Copy job to central backup account has failed @opsgenie-${teamName}.\nCheck the job under AWS Backup -> Jobs -> Copy Jobs`,
25
+ },
26
+ });
27
+ new aws_cdk_lib_1.CfnResource(this, 'BackupMonitoringJob', {
28
+ type: 'Datadog::Monitors::Monitor',
29
+ properties: {
30
+ Name: `[P4] : ${teamName} AWS Backup Job Monitor`,
31
+ Type: 'query alert',
32
+ Query: `sum(last_1d):sum:aws.backup.number_of_backup_jobs_failed{account_id:${aws_cdk_lib_1.Stack.of(this).account}}.as_count() > 0`,
33
+ Message: `AWS Backup job has failed @opsgenie-${teamName}.\nCheck the job under AWS Backup -> Jobs -> Backup Jobs`,
34
+ },
35
+ });
36
+ const [feature, packageName] = __dirname.split(path.sep).reverse();
37
+ new rio_claidometer_1.Claidometer(this, 'Claidometer', {
38
+ product: rio_claidometer_1.ClaidometerProduct.CDK_CONTRIBUTION,
39
+ packageName,
40
+ feature,
41
+ version: '0.0.4',
42
+ });
43
+ }
44
+ }
45
+ exports.AwsBackupMonitoring = AwsBackupMonitoring;
46
+ _a = JSII_RTTI_SYMBOL_1;
47
+ AwsBackupMonitoring[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.AwsBackupMonitoring", version: "0.0.0" };
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWJhY2t1cC1tb25pdG9yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9hd3MtYmFja3VwLW1vbml0b3JpbmcvYXdzLWJhY2t1cC1tb25pdG9yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDZDQUlxQjtBQUNyQiwyQ0FBdUM7QUFDdkMsOERBQTJFO0FBRTNFOzs7R0FHRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsc0JBQVM7SUFDaEQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFFBQVEsR0FBRyxxQkFBTyxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUMsV0FBVyxDQUFDO1FBRXBILElBQUkseUJBQVcsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLEVBQUU7WUFDaEQsSUFBSSxFQUFFLDRCQUE0QjtZQUNsQyxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFVBQVUsUUFBUSxnREFBZ0Q7Z0JBQ3hFLElBQUksRUFBRSxhQUFhO2dCQUNuQixLQUFLLEVBQUUscUVBQXFFLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sa0JBQWtCO2dCQUNwSCxPQUFPLEVBQUUsc0VBQXNFLFFBQVEsd0RBQXdEO2FBQ2hKO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSx5QkFBVyxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUMzQyxJQUFJLEVBQUUsNEJBQTRCO1lBQ2xDLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsVUFBVSxRQUFRLHlCQUF5QjtnQkFDakQsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSx1RUFBdUUsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxrQkFBa0I7Z0JBQ3RILE9BQU8sRUFBRSx1Q0FBdUMsUUFBUSwwREFBMEQ7YUFDbkg7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25FLElBQUksNkJBQVcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ25DLE9BQU8sRUFBRSxvQ0FBa0IsQ0FBQyxnQkFBZ0I7WUFDNUMsV0FBVztZQUNYLE9BQU87WUFDUCxPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWpDSCxrREFrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgQ2ZuUmVzb3VyY2UsXG4gIFN0YWNrLFxuICBhd3Nfc3NtLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IENsYWlkb21ldGVyLCBDbGFpZG9tZXRlclByb2R1Y3QgfSBmcm9tICcuLi8uLi8uLi9yaW8tY2xhaWRvbWV0ZXInO1xuXG4vKipcbiAqIFRoaXMgaXMgYSBiZXRhIGNvbnN0cnVjdCBhbmQgaXMgbGlrZWx5IHRvIGhhdmUgYnJlYWtpbmcgY2hhbmdlcy5cbiAqIFRoZSBjb25zdHJ1Y3QgY3JlYXRlcyBtb25pdG9ycyBmb3IgQVdTIEJhY2t1cCBqb2JzXG4gKi9cbmV4cG9ydCBjbGFzcyBBd3NCYWNrdXBNb25pdG9yaW5nIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB0ZWFtTmFtZSA9IGF3c19zc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsICdUZWFtTmFtZScsICcvY29uZmlnL3RlYW0vbmFtZScpLnN0cmluZ1ZhbHVlO1xuXG4gICAgbmV3IENmblJlc291cmNlKHRoaXMsICdCYWNrdXBNb25pdG9yaW5nQ29weUpvYnMnLCB7XG4gICAgICB0eXBlOiAnRGF0YWRvZzo6TW9uaXRvcnM6Ok1vbml0b3InLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBOYW1lOiBgW1A0XSA6ICR7dGVhbU5hbWV9IEFXUyBCYWNrdXAgQ29weSBKb2IgdG8gY2VudHJhbCBhY2NvdW50IGZhaWxlZGAsXG4gICAgICAgIFR5cGU6ICdxdWVyeSBhbGVydCcsXG4gICAgICAgIFF1ZXJ5OiBgc3VtKGxhc3RfMWQpOnN1bTphd3MuYmFja3VwLm51bWJlcl9vZl9jb3B5X2pvYnNfZmFpbGVke2FjY291bnRfaWQ6JHtTdGFjay5vZih0aGlzKS5hY2NvdW50fX0uYXNfY291bnQoKSA+IDBgLFxuICAgICAgICBNZXNzYWdlOiBgQVdTIEJhY2t1cCBDb3B5IGpvYiB0byBjZW50cmFsIGJhY2t1cCBhY2NvdW50IGhhcyBmYWlsZWQgQG9wc2dlbmllLSR7dGVhbU5hbWV9LlxcbkNoZWNrIHRoZSBqb2IgdW5kZXIgQVdTIEJhY2t1cCAtPiBKb2JzIC0+IENvcHkgSm9ic2AsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgbmV3IENmblJlc291cmNlKHRoaXMsICdCYWNrdXBNb25pdG9yaW5nSm9iJywge1xuICAgICAgdHlwZTogJ0RhdGFkb2c6Ok1vbml0b3JzOjpNb25pdG9yJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgTmFtZTogYFtQNF0gOiAke3RlYW1OYW1lfSBBV1MgQmFja3VwIEpvYiBNb25pdG9yYCxcbiAgICAgICAgVHlwZTogJ3F1ZXJ5IGFsZXJ0JyxcbiAgICAgICAgUXVlcnk6IGBzdW0obGFzdF8xZCk6c3VtOmF3cy5iYWNrdXAubnVtYmVyX29mX2JhY2t1cF9qb2JzX2ZhaWxlZHthY2NvdW50X2lkOiR7U3RhY2sub2YodGhpcykuYWNjb3VudH19LmFzX2NvdW50KCkgPiAwYCxcbiAgICAgICAgTWVzc2FnZTogYEFXUyBCYWNrdXAgam9iIGhhcyBmYWlsZWQgQG9wc2dlbmllLSR7dGVhbU5hbWV9LlxcbkNoZWNrIHRoZSBqb2IgdW5kZXIgQVdTIEJhY2t1cCAtPiBKb2JzIC0+IEJhY2t1cCBKb2JzYCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBbZmVhdHVyZSwgcGFja2FnZU5hbWVdID0gX19kaXJuYW1lLnNwbGl0KHBhdGguc2VwKS5yZXZlcnNlKCk7XG4gICAgbmV3IENsYWlkb21ldGVyKHRoaXMsICdDbGFpZG9tZXRlcicsIHtcbiAgICAgIHByb2R1Y3Q6IENsYWlkb21ldGVyUHJvZHVjdC5DREtfQ09OVFJJQlVUSU9OLFxuICAgICAgcGFja2FnZU5hbWUsXG4gICAgICBmZWF0dXJlLFxuICAgICAgdmVyc2lvbjogJzAuMC40JyxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ export * from './aws-backup-monitoring';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./aws-backup-monitoring"), exports);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2F3cy1iYWNrdXAtbW9uaXRvcmluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwwREFBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F3cy1iYWNrdXAtbW9uaXRvcmluZyc7XG4iXX0=
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DatadogUsageMonitoring = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const path = require("path");
7
+ const constructs = require("constructs");
8
+ const datadogMonitor_1 = require("../../../datadog/datadogMonitor");
9
+ const rio_claidometer_1 = require("../../../rio-claidometer");
10
+ function getOrganizationUrlPrefix(organization) {
11
+ switch (organization) {
12
+ case 'EU':
13
+ return 'app';
14
+ case 'LATAM':
15
+ return 'rio-brazil';
16
+ case 'Landing Zone':
17
+ return 'rio-landingzone';
18
+ }
19
+ }
20
+ class DatadogUsageMonitoring extends constructs.Construct {
21
+ constructor(scope, id, props) {
22
+ super(scope, id);
23
+ const infrastructureUsageSpikeMonitors = [
24
+ {
25
+ humanReadableName: 'infrastructure hosts',
26
+ query: 'sum:datadog.estimated_usage.hosts{*}',
27
+ },
28
+ {
29
+ humanReadableName: "infrastructure hosts for '{{child_org_name.name}}'",
30
+ query: 'sum:datadog.estimated_usage.hosts{*} by {child_org_name}',
31
+ },
32
+ { humanReadableName: 'Fargate tasks', query: 'sum:datadog.apm.fargate_task_instance{*}' },
33
+ { humanReadableName: 'profiled Fargate tasks', query: 'sum:datadog.profiling.fargate{*}' },
34
+ {
35
+ humanReadableName: 'custom metrics',
36
+ query: 'sum:datadog.estimated_usage.metrics.custom{*}',
37
+ },
38
+ {
39
+ humanReadableName: "custom metrics for '{{child_org_name.name}}'",
40
+ query: 'sum:datadog.estimated_usage.metrics.custom{*} by {child_org_name}',
41
+ },
42
+ ];
43
+ const additionalMessageLogManagementForGloballyScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/465/log-management-estimated-usage for more details.`;
44
+ const additionalMessageLogManagementForLogIndexScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/465/log-management-estimated-usage?tpl_var_datadog_index={{datadog_index.name}} for more details.`;
45
+ const logManagementUsageSpikeMonitors = [
46
+ {
47
+ humanReadableName: 'log ingestion',
48
+ query: 'sum:datadog.estimated_usage.logs.ingested_bytes{*}.as_count()',
49
+ additionalMessage: additionalMessageLogManagementForGloballyScopedMonitors,
50
+ },
51
+ {
52
+ humanReadableName: "log ingestion for '{{datadog_index.name}}'",
53
+ query: 'sum:datadog.estimated_usage.logs.ingested_bytes{*} by {datadog_index}.as_count()',
54
+ additionalMessage: additionalMessageLogManagementForLogIndexScopedMonitors,
55
+ },
56
+ {
57
+ humanReadableName: 'log indexing',
58
+ query: 'sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false}.as_count()',
59
+ additionalMessage: additionalMessageLogManagementForGloballyScopedMonitors,
60
+ },
61
+ {
62
+ humanReadableName: "log indexing for '{{datadog_index.name}}'",
63
+ query: 'sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false} by {datadog_index}.as_count()',
64
+ additionalMessage: additionalMessageLogManagementForLogIndexScopedMonitors,
65
+ },
66
+ ];
67
+ const additionalMessageApmForGloballyScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/489/apm-traces-estimated-usage for more details.`;
68
+ const additionalMessageApmForEnvScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/489/apm-traces-estimated-usage?tpl_var_env={{env.name}} for more details.`;
69
+ const apmUsageSpikeMonitors = [
70
+ { humanReadableName: 'APM hosts', query: 'sum:datadog.estimated_usage.apm_hosts{*}' },
71
+ {
72
+ humanReadableName: "APM hosts for '{{child_org_name.name}}'",
73
+ query: 'sum:datadog.estimated_usage.apm_hosts{*} by {child_org_name}',
74
+ additionalMessage: additionalMessageApmForGloballyScopedMonitors,
75
+ },
76
+ {
77
+ humanReadableName: 'span ingestion',
78
+ query: 'sum:datadog.estimated_usage.apm.ingested_bytes{*}.as_count()',
79
+ },
80
+ {
81
+ humanReadableName: "span ingestion for '{{env.name}}'",
82
+ query: 'sum:datadog.estimated_usage.apm.ingested_bytes{*} by {env}.as_count()',
83
+ additionalMessage: additionalMessageApmForEnvScopedMonitors,
84
+ },
85
+ {
86
+ humanReadableName: 'span indexing',
87
+ query: 'sum:datadog.estimated_usage.apm.indexed_spans{*}.as_count()',
88
+ additionalMessage: additionalMessageApmForGloballyScopedMonitors,
89
+ },
90
+ {
91
+ humanReadableName: "span indexing for '{{env.name}}'",
92
+ query: 'sum:datadog.estimated_usage.apm.indexed_spans{*} by {env}.as_count()',
93
+ additionalMessage: additionalMessageApmForEnvScopedMonitors,
94
+ },
95
+ ];
96
+ const syntheticUsageSpikeMonitors = [
97
+ {
98
+ humanReadableName: 'Synthetic API tests',
99
+ query: 'sum:datadog.estimated_usage.synthetics.api_test_runs{*}.as_count()',
100
+ },
101
+ ];
102
+ const serverlessUsageSpikeMonitors = [
103
+ {
104
+ humanReadableName: 'serverless functions',
105
+ query: 'sum:datadog.estimated_usage.serverless.aws_lambda_functions{*}',
106
+ },
107
+ {
108
+ humanReadableName: "serverless functions for '{{child_org_name.name}}'",
109
+ query: 'sum:datadog.estimated_usage.serverless.aws_lambda_functions{*} by {child_org_name}',
110
+ },
111
+ ];
112
+ for (const usageSpikeMonitor of [].concat(infrastructureUsageSpikeMonitors, logManagementUsageSpikeMonitors, apmUsageSpikeMonitors, serverlessUsageSpikeMonitors, syntheticUsageSpikeMonitors)) {
113
+ this.createAnomalyMonitorForSpikes(props.serviceName, props.alertType, usageSpikeMonitor);
114
+ }
115
+ const [feature, packageName] = __dirname.split(path.sep).reverse();
116
+ new rio_claidometer_1.Claidometer(this, 'Claidometer', {
117
+ product: rio_claidometer_1.ClaidometerProduct.CDK_CONTRIBUTION,
118
+ packageName,
119
+ feature,
120
+ version: '0.0.4',
121
+ });
122
+ }
123
+ createAnomalyMonitorForSpikes(serviceName, alertType, usageSpikeMonitor) {
124
+ var _b;
125
+ return new datadogMonitor_1.DatadogMonitor(this, usageSpikeMonitor.humanReadableName, {
126
+ serviceName,
127
+ alertTypes: [alertType],
128
+ monitor: {
129
+ name: `${usageSpikeMonitor.humanReadableName} spike`,
130
+ type: 'query alert',
131
+ query: `avg(last_12h):anomalies(${usageSpikeMonitor.query}, 'agile', 3, direction='above', interval=120, alert_window='last_30m', seasonality='weekly', timezone='europe/berlin', count_default_zero='true') >= 1`,
132
+ message: `${usageSpikeMonitor.humanReadableName} are getting out-of-control. ${(_b = usageSpikeMonitor.additionalMessage) !== null && _b !== void 0 ? _b : ''}`,
133
+ options: {
134
+ include_tags: false,
135
+ notify_no_data: false,
136
+ threshold_windows: {
137
+ trigger_window: 'last_15m',
138
+ recovery_window: 'last_15m',
139
+ },
140
+ },
141
+ },
142
+ });
143
+ }
144
+ }
145
+ exports.DatadogUsageMonitoring = DatadogUsageMonitoring;
146
+ _a = JSII_RTTI_SYMBOL_1;
147
+ DatadogUsageMonitoring[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoring", version: "0.0.0" };
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcvZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLHlDQUF5QztBQUN6QyxvRUFBbUY7QUFDbkYsOERBQTJFO0FBSTNFLFNBQVMsd0JBQXdCLENBQUMsWUFBaUM7SUFDakUsUUFBUSxZQUFZLEVBQUU7UUFDcEIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLE9BQU87WUFDVixPQUFPLFlBQVksQ0FBQztRQUN0QixLQUFLLGNBQWM7WUFDakIsT0FBTyxpQkFBaUIsQ0FBQztLQUM1QjtBQUNILENBQUM7QUFjRCxNQUFhLHNCQUF1QixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQzlELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBa0M7UUFDckYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLGdDQUFnQyxHQUF3QjtZQUM1RDtnQkFDRSxpQkFBaUIsRUFBRSxzQkFBc0I7Z0JBQ3pDLEtBQUssRUFBRSxzQ0FBc0M7YUFDOUM7WUFDRDtnQkFDRSxpQkFBaUIsRUFBRSxvREFBb0Q7Z0JBQ3ZFLEtBQUssRUFBRSwwREFBMEQ7YUFDbEU7WUFDRCxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsMENBQTBDLEVBQUU7WUFDekYsRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsa0NBQWtDLEVBQUU7WUFDMUY7Z0JBQ0UsaUJBQWlCLEVBQUUsZ0JBQWdCO2dCQUNuQyxLQUFLLEVBQUUsK0NBQStDO2FBQ3ZEO1lBQ0Q7Z0JBQ0UsaUJBQWlCLEVBQUUsOENBQThDO2dCQUNqRSxL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WUFDbkMsT0FBTyxFQUFFLG9DQUFrQixDQUFDLGdCQUFnQjtZQUM1QyxXQUFXO1lBQ1gsT0FBTztZQUNQLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyw2QkFBNkIsQ0FDbkMsV0FBbUIsRUFDbkIsU0FBMkIsRUFDM0IsaUJBQW9DOztRQUVwQyxPQUFPLElBQUksK0JBQWMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUU7WUFDbkUsV0FBVztZQUNYLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN2QixPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsaUJBQWlCLFFBQVE7Z0JBQ3BELElBQUksRUFBRSxhQUFhO2dCQUNuQixLQUFLLEVBQUUsMkJBQTJCLGlCQUFpQixDQUFDLEtBQUsseUpBQXlKO2dCQUNsTixPQUFPLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsZ0NBQzdDLE1BQUEsaUJBQWlCLENBQUMsaUJBQWlCLG1DQUFJLEVBQ3pDLEVBQUU7Z0JBQ0YsT0FBTyxFQUFFO29CQUNQLFlBQVksRUFBRSxLQUFLO29CQUNuQixjQUFjLEVBQUUsS0FBSztvQkFDckIsaUJBQWlCLEVBQUU7d0JBQ2pCLGNBQWMsRUFBRSxVQUFVO3dCQUMxQixlQUFlLEVBQUUsVUFBVTtxQkFDNUI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBdEpILHdEQXVKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YWRvZ0FsZXJ0VHlwZSwgRGF0YWRvZ01vbml0b3IgfSBmcm9tICcuLi8uLi8uLi9kYXRhZG9nL2RhdGFkb2dNb25pdG9yJztcbmltcG9ydCB7IENsYWlkb21ldGVyLCBDbGFpZG9tZXRlclByb2R1Y3QgfSBmcm9tICcuLi8uLi8uLi9yaW8tY2xhaWRvbWV0ZXInO1xuXG5leHBvcnQgdHlwZSBEYXRhZG9nT3JnYW5pemF0aW9uID0gJ0VVJyB8ICdMQVRBTScgfCAnTGFuZGluZyBab25lJztcblxuZnVuY3Rpb24gZ2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KG9yZ2FuaXphdGlvbjogRGF0YWRvZ09yZ2FuaXphdGlvbik6IHN0cmluZyB7XG4gIHN3aXRjaCAob3JnYW5pemF0aW9uKSB7XG4gICAgY2FzZSAnRVUnOlxuICAgICAgcmV0dXJuICdhcHAnO1xuICAgIGNhc2UgJ0xBVEFNJzpcbiAgICAgIHJldHVybiAncmlvLWJyYXppbCc7XG4gICAgY2FzZSAnTGFuZGluZyBab25lJzpcbiAgICAgIHJldHVybiAncmlvLWxhbmRpbmd6b25lJztcbiAgfVxufVxuXG5pbnRlcmZhY2UgVXNhZ2VTcGlrZU1vbml0b3Ige1xuICBodW1hblJlYWRhYmxlTmFtZTogc3RyaW5nO1xuICBxdWVyeTogc3RyaW5nO1xuICBhZGRpdGlvbmFsTWVzc2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nUHJvcHMge1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBhbGVydFR5cGU6IERhdGFkb2dBbGVydFR5cGU7XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbjogRGF0YWRvZ09yZ2FuaXphdGlvbjtcbn1cblxuZXhwb3J0IGNsYXNzIERhdGFkb2dVc2FnZU1vbml0b3JpbmcgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFkb2dVc2FnZU1vbml0b3JpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBpbmZyYXN0cnVjdHVyZVVzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdpbmZyYXN0cnVjdHVyZSBob3N0cycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmhvc3Rzeyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImluZnJhc3RydWN0dXJlIGhvc3RzIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmhvc3Rzeyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgfSxcbiAgICAgIHsgaHVtYW5SZWFkYWJsZU5hbWU6ICdGYXJnYXRlIHRhc2tzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5hcG0uZmFyZ2F0ZV90YXNrX2luc3RhbmNleyp9JyB9LFxuICAgICAgeyBodW1hblJlYWRhYmxlTmFtZTogJ3Byb2ZpbGVkIEZhcmdhdGUgdGFza3MnLCBxdWVyeTogJ3N1bTpkYXRhZG9nLnByb2ZpbGluZy5mYXJnYXRleyp9JyB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2N1c3RvbSBtZXRyaWNzJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubWV0cmljcy5jdXN0b217Kn0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwiY3VzdG9tIG1ldHJpY3MgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubWV0cmljcy5jdXN0b217Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBhZGRpdGlvbmFsTWVzc2FnZUxvZ01hbmFnZW1lbnRGb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzID0gYFRha2UgYSBsb29rIGF0IGh0dHBzOi8vJHtnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgoXG4gICAgICBwcm9wcy5vcmdhbml6YXRpb24sXG4gICAgKX0uZGF0YWRvZ2hxLmV1L2Rhc2gvaW50ZWdyYXRpb24vNDY1L2xvZy1tYW5hZ2VtZW50LWVzdGltYXRlZC11c2FnZSBmb3IgbW9yZSBkZXRhaWxzLmA7XG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yTG9nSW5kZXhTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ2NS9sb2ctbWFuYWdlbWVudC1lc3RpbWF0ZWQtdXNhZ2U/dHBsX3Zhcl9kYXRhZG9nX2luZGV4PXt7ZGF0YWRvZ19pbmRleC5uYW1lfX0gZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGxvZ01hbmFnZW1lbnRVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnbG9nIGluZ2VzdGlvbicsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfYnl0ZXN7Kn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUxvZ01hbmFnZW1lbnRGb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwibG9nIGluZ2VzdGlvbiBmb3IgJ3t7ZGF0YWRvZ19pbmRleC5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfYnl0ZXN7Kn0gYnkge2RhdGFkb2dfaW5kZXh9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yTG9nSW5kZXhTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnbG9nIGluZGV4aW5nJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ldmVudHN7ZGF0YWRvZ19pc19leGNsdWRlZDpmYWxzZX0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUxvZ01hbmFnZW1lbnRGb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwibG9nIGluZGV4aW5nIGZvciAne3tkYXRhZG9nX2luZGV4Lm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ldmVudHN7ZGF0YWRvZ19pc19leGNsdWRlZDpmYWxzZX0gYnkge2RhdGFkb2dfaW5kZXh9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yTG9nSW5kZXhTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ4OS9hcG0tdHJhY2VzLWVzdGltYXRlZC11c2FnZSBmb3IgbW9yZSBkZXRhaWxzLmA7XG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JFbnZTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ4OS9hcG0tdHJhY2VzLWVzdGltYXRlZC11c2FnZT90cGxfdmFyX2Vudj17e2Vudi5uYW1lfX0gZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGFwbVVzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHsgaHVtYW5SZWFkYWJsZU5hbWU6ICdBUE0gaG9zdHMnLCBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG1faG9zdHN7Kn0nIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcIkFQTSBob3N0cyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG1faG9zdHN7Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ3NwYW4gaW5nZXN0aW9uJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZ2VzdGVkX2J5dGVzeyp9LmFzX2NvdW50KCknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwic3BhbiBpbmdlc3Rpb24gZm9yICd7e2Vudi5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmdlc3RlZF9ieXRlc3sqfSBieSB7ZW52fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yRW52U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ3NwYW4gaW5kZXhpbmcnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5kZXhlZF9zcGFuc3sqfS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNwYW4gaW5kZXhpbmcgZm9yICd7e2Vudi5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmRleGVkX3NwYW5zeyp9IGJ5IHtlbnZ9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JFbnZTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHN5bnRoZXRpY1VzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdTeW50aGV0aWMgQVBJIHRlc3RzJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2Uuc3ludGhldGljcy5hcGlfdGVzdF9ydW5zeyp9LmFzX2NvdW50KCknLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc2VydmVybGVzc1VzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzZXJ2ZXJsZXNzIGZ1bmN0aW9ucycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnNlcnZlcmxlc3MuYXdzX2xhbWJkYV9mdW5jdGlvbnN7Kn0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwic2VydmVybGVzcyBmdW5jdGlvbnMgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2Uuc2VydmVybGVzcy5hd3NfbGFtYmRhX2Z1bmN0aW9uc3sqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgdXNhZ2VTcGlrZU1vbml0b3Igb2YgKFtdIGFzIFVzYWdlU3Bpa2VNb25pdG9yW10pLmNvbmNhdChcbiAgICAgIGluZnJhc3RydWN0dXJlVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICAgbG9nTWFuYWdlbWVudFVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIGFwbVVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIHNlcnZlcmxlc3NVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBzeW50aGV0aWNVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgKSkge1xuICAgICAgdGhpcy5jcmVhdGVBbm9tYWx5TW9uaXRvckZvclNwaWtlcyhwcm9wcy5zZXJ2aWNlTmFtZSwgcHJvcHMuYWxlcnRUeXBlLCB1c2FnZVNwaWtlTW9uaXRvcik7XG4gICAgfVxuXG4gICAgY29uc3QgW2ZlYXR1cmUsIHBhY2thZ2VOYW1lXSA9IF9fZGlybmFtZS5zcGxpdChwYXRoLnNlcCkucmV2ZXJzZSgpO1xuICAgIG5ldyBDbGFpZG9tZXRlcih0aGlzLCAnQ2xhaWRvbWV0ZXInLCB7XG4gICAgICBwcm9kdWN0OiBDbGFpZG9tZXRlclByb2R1Y3QuQ0RLX0NPTlRSSUJVVElPTixcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgZmVhdHVyZSxcbiAgICAgIHZlcnNpb246ICcwLjAuNCcsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFub21hbHlNb25pdG9yRm9yU3Bpa2VzKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgYWxlcnRUeXBlOiBEYXRhZG9nQWxlcnRUeXBlLFxuICAgIHVzYWdlU3Bpa2VNb25pdG9yOiBVc2FnZVNwaWtlTW9uaXRvcixcbiAgKTogRGF0YWRvZ01vbml0b3Ige1xuICAgIHJldHVybiBuZXcgRGF0YWRvZ01vbml0b3IodGhpcywgdXNhZ2VTcGlrZU1vbml0b3IuaHVtYW5SZWFkYWJsZU5hbWUsIHtcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgYWxlcnRUeXBlczogW2FsZXJ0VHlwZV0sXG4gICAgICBtb25pdG9yOiB7XG4gICAgICAgIG5hbWU6IGAke3VzYWdlU3Bpa2VNb25pdG9yLmh1bWFuUmVhZGFibGVOYW1lfSBzcGlrZWAsXG4gICAgICAgIHR5cGU6ICdxdWVyeSBhbGVydCcsXG4gICAgICAgIHF1ZXJ5OiBgYXZnKGxhc3RfMTJoKTphbm9tYWxpZXMoJHt1c2FnZVNwaWtlTW9uaXRvci5xdWVyeX0sICdhZ2lsZScsIDMsIGRpcmVjdGlvbj0nYWJvdmUnLCBpbnRlcnZhbD0xMjAsIGFsZXJ0X3dpbmRvdz0nbGFzdF8zMG0nLCBzZWFzb25hbGl0eT0nd2Vla2x5JywgdGltZXpvbmU9J2V1cm9wZS9iZXJsaW4nLCBjb3VudF9kZWZhdWx0X3plcm89J3RydWUnKSA+PSAxYCxcbiAgICAgICAgbWVzc2FnZTogYCR7dXNhZ2VTcGlrZU1vbml0b3IuaHVtYW5SZWFkYWJsZU5hbWV9IGFyZSBnZXR0aW5nIG91dC1vZi1jb250cm9sLiAke1xuICAgICAgICAgIHVzYWdlU3Bpa2VNb25pdG9yLmFkZGl0aW9uYWxNZXNzYWdlID8/ICcnXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgaW5jbHVkZV90YWdzOiBmYWxzZSxcbiAgICAgICAgICBub3RpZnlfbm9fZGF0YTogZmFsc2UsXG4gICAgICAgICAgdGhyZXNob2xkX3dpbmRvd3M6IHtcbiAgICAgICAgICAgIHRyaWdnZXJfd2luZG93OiAnbGFzdF8xNW0nLFxuICAgICAgICAgICAgcmVjb3Zlcnlfd2luZG93OiAnbGFzdF8xNW0nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,2 +1 @@
1
- export * from './backup-monitor';
2
1
  export * from './datadog-usage-monitoring';
@@ -10,6 +10,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./backup-monitor"), exports);
14
13
  __exportStar(require("./datadog-usage-monitoring"), exports);
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2RhdGFkb2cvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWlDO0FBQ2pDLDZEQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFja3VwLW1vbml0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcnO1xuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2RhdGFkb2ctdXNhZ2UtbW9uaXRvcmluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSw2REFBMkMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGFkb2ctdXNhZ2UtbW9uaXRvcmluZyc7XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -20,4 +20,5 @@ export * from './pipeline/rio-backup-secrets-restore-stage';
20
20
  export * from './kafka';
21
21
  export * from './datadog';
22
22
  export * from './contributions/team-transport-two/pipeline';
23
- export * from './contributions/team-claid/datadog';
23
+ export * from './contributions/team-claid/aws-backup-monitoring';
24
+ export * from './contributions/team-claid/datadog-usage-monitoring';
package/lib/index.js CHANGED
@@ -32,5 +32,6 @@ __exportStar(require("./pipeline/rio-backup-secrets-restore-stage"), exports);
32
32
  __exportStar(require("./kafka"), exports);
33
33
  __exportStar(require("./datadog"), exports);
34
34
  __exportStar(require("./contributions/team-transport-two/pipeline"), exports);
35
- __exportStar(require("./contributions/team-claid/datadog"), exports);
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLG9EQUFrQztBQUNsQyxpREFBK0I7QUFDL0IsbURBQWlDO0FBQ2pDLHNEQUFvQztBQUNwQyxvREFBa0M7QUFDbEMseURBQXVDO0FBQ3ZDLGtFQUFnRDtBQUNoRCwrREFBNkM7QUFDN0Msc0RBQW9DO0FBQ3BDLDBEQUF3QztBQUN4QyxpREFBK0I7QUFDL0Isd0RBQXNDO0FBRXRDLHFEQUFtQztBQUNuQyxzREFBb0M7QUFDcEMsb0RBQWtDO0FBRWxDLGdFQUE4QztBQUU5Qyx5RUFBdUQ7QUFDdkQsOEVBQTREO0FBRTVELDBDQUF3QjtBQUV4Qiw0Q0FBMEI7QUFFMUIsOEVBQTREO0FBRTVELHFFQUFtRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvYWxiJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvYXNwZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvZWNzJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvZG9jZGInO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9keW5hbW9kYic7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2xhbWJkYSc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL3RhcmdldGdyb3VwJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvZGF0YWRvZy1tZXRyaWMtYWxhcm0nO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9kYXRhZG9nLWxvZy1hbGFybSc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL3dhdGNoZnVsJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvbWV0cmljLWFsYXJtJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvcmRzJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvY2xvdWRmcm9udCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcmlvLWxhbmRpbmctem9uZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jpby1sb2FkLWJhbGFuY2VyJztcbmV4cG9ydCAqIGZyb20gJy4vcmlvLWNsYWlkb21ldGVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9mYXJnYXRlL3Jpby1mYXJnYXRlLXNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lL3Jpby1iaXRidWNrZXQtc291cmNlLWFjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lL3Jpby1iYWNrdXAtc2VjcmV0cy1yZXN0b3JlLXN0YWdlJztcblxuZXhwb3J0ICogZnJvbSAnLi9rYWZrYSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZGF0YWRvZyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY29udHJpYnV0aW9ucy90ZWFtLXRyYW5zcG9ydC10d28vcGlwZWxpbmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nJztcbiJdfQ==
35
+ __exportStar(require("./contributions/team-claid/aws-backup-monitoring"), exports);
36
+ __exportStar(require("./contributions/team-claid/datadog-usage-monitoring"), exports);
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLG9EQUFrQztBQUNsQyxpREFBK0I7QUFDL0IsbURBQWlDO0FBQ2pDLHNEQUFvQztBQUNwQyxvREFBa0M7QUFDbEMseURBQXVDO0FBQ3ZDLGtFQUFnRDtBQUNoRCwrREFBNkM7QUFDN0Msc0RBQW9DO0FBQ3BDLDBEQUF3QztBQUN4QyxpREFBK0I7QUFDL0Isd0RBQXNDO0FBRXRDLHFEQUFtQztBQUNuQyxzREFBb0M7QUFDcEMsb0RBQWtDO0FBRWxDLGdFQUE4QztBQUU5Qyx5RUFBdUQ7QUFDdkQsOEVBQTREO0FBRTVELDBDQUF3QjtBQUV4Qiw0Q0FBMEI7QUFFMUIsOEVBQTREO0FBRTVELG1GQUFpRTtBQUNqRSxzRkFBb0UiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2FsYic7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2FzcGVjdCc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2Vjcyc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2RvY2RiJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvZHluYW1vZGInO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9sYW1iZGEnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC90YXJnZXRncm91cCc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2RhdGFkb2ctbWV0cmljLWFsYXJtJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvZGF0YWRvZy1sb2ctYWxhcm0nO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC93YXRjaGZ1bCc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL21ldHJpYy1hbGFybSc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL3Jkcyc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2Nsb3VkZnJvbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL3Jpby1sYW5kaW5nLXpvbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9yaW8tbG9hZC1iYWxhbmNlcic7XG5leHBvcnQgKiBmcm9tICcuL3Jpby1jbGFpZG9tZXRlcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZmFyZ2F0ZS9yaW8tZmFyZ2F0ZS1zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS9yaW8tYml0YnVja2V0LXNvdXJjZS1hY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS9yaW8tYmFja3VwLXNlY3JldHMtcmVzdG9yZS1zdGFnZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4va2Fma2EnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RhdGFkb2cnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyaWJ1dGlvbnMvdGVhbS10cmFuc3BvcnQtdHdvL3BpcGVsaW5lJztcblxuZXhwb3J0ICogZnJvbSAnLi9jb250cmlidXRpb25zL3RlYW0tY2xhaWQvYXdzLWJhY2t1cC1tb25pdG9yaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2RhdGFkb2ctdXNhZ2UtbW9uaXRvcmluZyc7XG4iXX0=
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  ],
16
16
  "main": "lib/index.js",
17
17
  "license": "Apache-2.0",
18
- "version": "2.5.2",
18
+ "version": "2.5.3",
19
19
  "types": "lib/index.d.ts",
20
20
  "stability": "stable",
21
21
  "jsii": {
package/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "2.5.2"
2
+ "version": "2.5.3"
3
3
  }
@@ -1,39 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AWSBackupMonitors = void 0;
5
- const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const aws_cdk_lib_1 = require("aws-cdk-lib");
7
- const constructs_1 = require("constructs");
8
- /**
9
- * This is a beta construct and is likely to have breaking changes.
10
- * The construct creates monitors for AWS Backup jobs
11
- */
12
- class AWSBackupMonitors extends constructs_1.Construct {
13
- constructor(scope, id) {
14
- super(scope, id);
15
- const teamName = aws_cdk_lib_1.aws_ssm.StringParameter.fromStringParameterName(this, 'TeamName', '/config/team/name').stringValue;
16
- new aws_cdk_lib_1.CfnResource(this, 'BackupMonitoringCopyJobs', {
17
- type: 'Datadog::Monitors::Monitor',
18
- properties: {
19
- Name: `[P4] : ${teamName} AWS Backup Copy Job to central account failed`,
20
- Type: 'query alert',
21
- Query: `sum(last_1d):sum:aws.backup.number_of_copy_jobs_failed{account_id:${aws_cdk_lib_1.Stack.of(this).account}}.as_count() > 0`,
22
- Message: `AWS Backup Copy job to central backup account has failed @opsgenie-${teamName}.\nCheck the job under AWS Backup -> Jobs -> Copy Jobs`,
23
- },
24
- });
25
- new aws_cdk_lib_1.CfnResource(this, 'BackupMonitoringJob', {
26
- type: 'Datadog::Monitors::Monitor',
27
- properties: {
28
- Name: `[P4] : ${teamName} AWS Backup Job Monitor`,
29
- Type: 'query alert',
30
- Query: `sum(last_1d):sum:aws.backup.number_of_backup_jobs_failed{account_id:${aws_cdk_lib_1.Stack.of(this).account}}.as_count() > 0`,
31
- Message: `AWS Backup job has failed @opsgenie-${teamName}.\nCheck the job under AWS Backup -> Jobs -> Backup Jobs`,
32
- },
33
- });
34
- }
35
- }
36
- exports.AWSBackupMonitors = AWSBackupMonitors;
37
- _a = JSII_RTTI_SYMBOL_1;
38
- AWSBackupMonitors[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.AWSBackupMonitors", version: "0.0.0" };
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwLW1vbml0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2RhdGFkb2cvYmFja3VwLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FJcUI7QUFDckIsMkNBQXVDO0FBRXZDOzs7R0FHRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsc0JBQVM7SUFDOUMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFFBQVEsR0FBRyxxQkFBTyxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUMsV0FBVyxDQUFDO1FBRXBILElBQUkseUJBQVcsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLEVBQUU7WUFDaEQsSUFBSSxFQUFFLDRCQUE0QjtZQUNsQyxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFVBQVUsUUFBUSxnREFBZ0Q7Z0JBQ3hFLElBQUksRUFBRSxhQUFhO2dCQUNuQixLQUFLLEVBQUUscUVBQXFFLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sa0JBQWtCO2dCQUNwSCxPQUFPLEVBQUUsc0VBQXNFLFFBQVEsd0RBQXdEO2FBQ2hKO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSx5QkFBVyxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUMzQyxJQUFJLEVBQUUsNEJBQTRCO1lBQ2xDLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsVUFBVSxRQUFRLHlCQUF5QjtnQkFDakQsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSx1RUFBdUUsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxrQkFBa0I7Z0JBQ3RILE9BQU8sRUFBRSx1Q0FBdUMsUUFBUSwwREFBMEQ7YUFDbkg7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQXpCSCw4Q0EwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDZm5SZXNvdXJjZSxcbiAgU3RhY2ssXG4gIGF3c19zc20sXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFRoaXMgaXMgYSBiZXRhIGNvbnN0cnVjdCBhbmQgaXMgbGlrZWx5IHRvIGhhdmUgYnJlYWtpbmcgY2hhbmdlcy5cbiAqIFRoZSBjb25zdHJ1Y3QgY3JlYXRlcyBtb25pdG9ycyBmb3IgQVdTIEJhY2t1cCBqb2JzXG4gKi9cbmV4cG9ydCBjbGFzcyBBV1NCYWNrdXBNb25pdG9ycyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgdGVhbU5hbWUgPSBhd3Nfc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnVGVhbU5hbWUnLCAnL2NvbmZpZy90ZWFtL25hbWUnKS5zdHJpbmdWYWx1ZTtcblxuICAgIG5ldyBDZm5SZXNvdXJjZSh0aGlzLCAnQmFja3VwTW9uaXRvcmluZ0NvcHlKb2JzJywge1xuICAgICAgdHlwZTogJ0RhdGFkb2c6Ok1vbml0b3JzOjpNb25pdG9yJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgTmFtZTogYFtQNF0gOiAke3RlYW1OYW1lfSBBV1MgQmFja3VwIENvcHkgSm9iIHRvIGNlbnRyYWwgYWNjb3VudCBmYWlsZWRgLFxuICAgICAgICBUeXBlOiAncXVlcnkgYWxlcnQnLFxuICAgICAgICBRdWVyeTogYHN1bShsYXN0XzFkKTpzdW06YXdzLmJhY2t1cC5udW1iZXJfb2ZfY29weV9qb2JzX2ZhaWxlZHthY2NvdW50X2lkOiR7U3RhY2sub2YodGhpcykuYWNjb3VudH19LmFzX2NvdW50KCkgPiAwYCxcbiAgICAgICAgTWVzc2FnZTogYEFXUyBCYWNrdXAgQ29weSBqb2IgdG8gY2VudHJhbCBiYWNrdXAgYWNjb3VudCBoYXMgZmFpbGVkIEBvcHNnZW5pZS0ke3RlYW1OYW1lfS5cXG5DaGVjayB0aGUgam9iIHVuZGVyIEFXUyBCYWNrdXAgLT4gSm9icyAtPiBDb3B5IEpvYnNgLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIG5ldyBDZm5SZXNvdXJjZSh0aGlzLCAnQmFja3VwTW9uaXRvcmluZ0pvYicsIHtcbiAgICAgIHR5cGU6ICdEYXRhZG9nOjpNb25pdG9yczo6TW9uaXRvcicsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIE5hbWU6IGBbUDRdIDogJHt0ZWFtTmFtZX0gQVdTIEJhY2t1cCBKb2IgTW9uaXRvcmAsXG4gICAgICAgIFR5cGU6ICdxdWVyeSBhbGVydCcsXG4gICAgICAgIFF1ZXJ5OiBgc3VtKGxhc3RfMWQpOnN1bTphd3MuYmFja3VwLm51bWJlcl9vZl9iYWNrdXBfam9ic19mYWlsZWR7YWNjb3VudF9pZDoke1N0YWNrLm9mKHRoaXMpLmFjY291bnR9fS5hc19jb3VudCgpID4gMGAsXG4gICAgICAgIE1lc3NhZ2U6IGBBV1MgQmFja3VwIGpvYiBoYXMgZmFpbGVkIEBvcHNnZW5pZS0ke3RlYW1OYW1lfS5cXG5DaGVjayB0aGUgam9iIHVuZGVyIEFXUyBCYWNrdXAgLT4gSm9icyAtPiBCYWNrdXAgSm9ic2AsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59Il19
@@ -1,133 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.DatadogUsageMonitoring = void 0;
5
- const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const constructs = require("constructs");
7
- const datadogMonitor_1 = require("../../../datadog/datadogMonitor");
8
- function getOrganizationUrlPrefix(organization) {
9
- switch (organization) {
10
- case 'EU':
11
- return 'app';
12
- case 'LATAM':
13
- return 'rio-brazil';
14
- case 'Landing Zone':
15
- return 'rio-landingzone';
16
- }
17
- }
18
- class DatadogUsageMonitoring extends constructs.Construct {
19
- constructor(scope, id, props) {
20
- super(scope, id);
21
- const additionalMessageForLogIndexScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/465/log-management-estimated-usage?tpl_var_datadog_index={{datadog_index.name}} for more details.`;
22
- const additionalMessageForEnvScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/489/apm-traces-estimated-usage?tpl_var_env={{env.name}} for more details.`;
23
- const infrastructureUsageSpikeMonitors = [
24
- {
25
- humanReadableName: 'infrastructure hosts',
26
- query: 'sum:datadog.estimated_usage.hosts{*}',
27
- },
28
- {
29
- humanReadableName: "infrastructure hosts for '{{child_org_name.name}}'",
30
- query: 'sum:datadog.estimated_usage.hosts{*} by {child_org_name}',
31
- },
32
- { humanReadableName: 'Fargate tasks', query: 'sum:datadog.apm.fargate_task_instance{*}' },
33
- { humanReadableName: 'profiled Fargate tasks', query: 'sum:datadog.profiling.fargate{*}' },
34
- {
35
- humanReadableName: 'custom metrics',
36
- query: 'sum:datadog.estimated_usage.metrics.custom{*}',
37
- },
38
- {
39
- humanReadableName: "custom metrics for '{{child_org_name.name}}'",
40
- query: 'sum:datadog.estimated_usage.metrics.custom{*} by {child_org_name}',
41
- },
42
- ];
43
- const logManagementUsageSpikeMonitors = [
44
- {
45
- humanReadableName: 'log ingestion',
46
- query: 'sum:datadog.estimated_usage.logs.ingested_bytes{*}.as_count()',
47
- },
48
- {
49
- humanReadableName: "log ingestion for '{{datadog_index.name}}'",
50
- query: 'sum:datadog.estimated_usage.logs.ingested_bytes{*} by {datadog_index}.as_count()',
51
- additionalMessage: additionalMessageForLogIndexScopedMonitors,
52
- },
53
- {
54
- humanReadableName: 'log indexing',
55
- query: 'sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false}.as_count()',
56
- },
57
- {
58
- humanReadableName: "log indexing for '{{datadog_index.name}}'",
59
- query: 'sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false} by {datadog_index}.as_count()',
60
- additionalMessage: additionalMessageForLogIndexScopedMonitors,
61
- },
62
- ];
63
- const apmUsageSpikeMonitors = [
64
- { humanReadableName: 'APM hosts', query: 'sum:datadog.estimated_usage.apm_hosts{*}' },
65
- {
66
- humanReadableName: "APM hosts for '{{child_org_name.name}}'",
67
- query: 'sum:datadog.estimated_usage.apm_hosts{*} by {child_org_name}',
68
- },
69
- {
70
- humanReadableName: 'span ingestion',
71
- query: 'sum:datadog.estimated_usage.apm.ingested_bytes{*}.as_count()',
72
- },
73
- {
74
- humanReadableName: "span ingestion for '{{env.name}}'",
75
- query: 'sum:datadog.estimated_usage.apm.ingested_bytes{*} by {env}.as_count()',
76
- additionalMessage: additionalMessageForEnvScopedMonitors,
77
- },
78
- {
79
- humanReadableName: 'span indexing',
80
- query: 'sum:datadog.estimated_usage.apm.indexed_spans{*}.as_count()',
81
- },
82
- {
83
- humanReadableName: "span indexing for '{{env.name}}'",
84
- query: 'sum:datadog.estimated_usage.apm.indexed_spans{*} by {env}.as_count()',
85
- additionalMessage: additionalMessageForEnvScopedMonitors,
86
- },
87
- ];
88
- const syntheticUsageSpikeMonitors = [
89
- {
90
- humanReadableName: 'Synthetic API tests',
91
- query: 'sum:datadog.estimated_usage.synthetics.api_test_runs{*}.as_count()',
92
- },
93
- ];
94
- const serverlessUsageSpikeMonitors = [
95
- {
96
- humanReadableName: 'serverless functions',
97
- query: 'sum:datadog.estimated_usage.serverless.aws_lambda_functions{*}',
98
- },
99
- {
100
- humanReadableName: "serverless functions for '{{child_org_name.name}}'",
101
- query: 'sum:datadog.estimated_usage.serverless.aws_lambda_functions{*} by {child_org_name}',
102
- },
103
- ];
104
- for (const usageSpikeMonitor of [].concat(infrastructureUsageSpikeMonitors, logManagementUsageSpikeMonitors, apmUsageSpikeMonitors, serverlessUsageSpikeMonitors, syntheticUsageSpikeMonitors)) {
105
- this.createAnomalyMonitorForSpikes(props.serviceName, props.alertType, usageSpikeMonitor);
106
- }
107
- }
108
- createAnomalyMonitorForSpikes(serviceName, alertType, usageSpikeMonitor) {
109
- var _b;
110
- return new datadogMonitor_1.DatadogMonitor(this, usageSpikeMonitor.humanReadableName, {
111
- serviceName,
112
- alertTypes: [alertType],
113
- monitor: {
114
- name: `${usageSpikeMonitor.humanReadableName} spike`,
115
- type: 'query alert',
116
- query: `avg(last_4h):anomalies(${usageSpikeMonitor.query}, \'agile\', 2, direction=\'above\', interval=60, alert_window=\'last_15m\', seasonality=\'weekly\', timezone=\'Europe/Berlin\', count_default_zero=\'true\') >= 1`,
117
- message: `${usageSpikeMonitor.humanReadableName} are getting out-of-control. ${(_b = usageSpikeMonitor.additionalMessage) !== null && _b !== void 0 ? _b : ''}`,
118
- options: {
119
- include_tags: false,
120
- notify_no_data: false,
121
- threshold_windows: {
122
- trigger_window: 'last_15m',
123
- recovery_window: 'last_15m',
124
- },
125
- },
126
- },
127
- });
128
- }
129
- }
130
- exports.DatadogUsageMonitoring = DatadogUsageMonitoring;
131
- _a = JSII_RTTI_SYMBOL_1;
132
- DatadogUsageMonitoring[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoring", version: "0.0.0" };
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nL2RhdGFkb2ctdXNhZ2UtbW9uaXRvcmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlDQUF5QztBQUN6QyxvRUFBbUY7QUFJbkYsU0FBUyx3QkFBd0IsQ0FBQyxZQUFpQztJQUNqRSxRQUFRLFlBQVksRUFBRTtRQUNwQixLQUFLLElBQUk7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNmLEtBQUssT0FBTztZQUNWLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLEtBQUssY0FBYztZQUNqQixPQUFPLGlCQUFpQixDQUFDO0tBQzVCO0FBQ0gsQ0FBQztBQWNELE1BQWEsc0JBQXVCLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFDOUQsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUFrQztRQUNyRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sMENBQTBDLEdBQUcsMEJBQTBCLHdCQUF3QixDQUNuRyxLQUFLLENBQUMsWUFBWSxDQUNuQixrSUFBa0ksQ0FBQztRQUNwSSxNQUFNLHFDQUFxQyxHQUFHLDBCQUEwQix3QkFBd0IsQ0FDOUYsS0FBSyxDQUFDLFlBQVksQ0FDbkIsMEdBQTBHLENBQUM7UUFFNUcsTUFBTSxnQ0FBZ0MsR0FBd0I7WUFDNUQ7Z0JBQ0UsaUJBQWlCLEVBQUUsc0JBQXNCO2dCQUN6QyxLQUFLLEVBQUUsc0NBQXNDO2FBQzlDO1lBQ0Q7Z0JBQ0UsaUJBQWlCLEVBQUUsb0RBQW9EO2dCQUN2RSxLQUFLLEVBQUUsMERBQTBEO2FBQ2xFO1lBQ0QsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLDBDQUEwQyxFQUFFO1lBQ3pGLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLGtD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b0JBQ3JCLGlCQUFpQixFQUFFO3dCQUNqQixjQUFjLEVBQUUsVUFBVTt3QkFDMUIsZUFBZSxFQUFFLFVBQVU7cUJBQzVCO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQXRJSCx3REF1SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YWRvZ0FsZXJ0VHlwZSwgRGF0YWRvZ01vbml0b3IgfSBmcm9tICcuLi8uLi8uLi9kYXRhZG9nL2RhdGFkb2dNb25pdG9yJztcblxuZXhwb3J0IHR5cGUgRGF0YWRvZ09yZ2FuaXphdGlvbiA9ICdFVScgfCAnTEFUQU0nIHwgJ0xhbmRpbmcgWm9uZSc7XG5cbmZ1bmN0aW9uIGdldE9yZ2FuaXphdGlvblVybFByZWZpeChvcmdhbml6YXRpb246IERhdGFkb2dPcmdhbml6YXRpb24pOiBzdHJpbmcge1xuICBzd2l0Y2ggKG9yZ2FuaXphdGlvbikge1xuICAgIGNhc2UgJ0VVJzpcbiAgICAgIHJldHVybiAnYXBwJztcbiAgICBjYXNlICdMQVRBTSc6XG4gICAgICByZXR1cm4gJ3Jpby1icmF6aWwnO1xuICAgIGNhc2UgJ0xhbmRpbmcgWm9uZSc6XG4gICAgICByZXR1cm4gJ3Jpby1sYW5kaW5nem9uZSc7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFVzYWdlU3Bpa2VNb25pdG9yIHtcbiAgaHVtYW5SZWFkYWJsZU5hbWU6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgYWRkaXRpb25hbE1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ1VzYWdlTW9uaXRvcmluZ1Byb3BzIHtcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYWxlcnRUeXBlOiBEYXRhZG9nQWxlcnRUeXBlO1xuICByZWFkb25seSBvcmdhbml6YXRpb246IERhdGFkb2dPcmdhbml6YXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VGb3JMb2dJbmRleFNjb3BlZE1vbml0b3JzID0gYFRha2UgYSBsb29rIGF0IGh0dHBzOi8vJHtnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgoXG4gICAgICBwcm9wcy5vcmdhbml6YXRpb24sXG4gICAgKX0uZGF0YWRvZ2hxLmV1L2Rhc2gvaW50ZWdyYXRpb24vNDY1L2xvZy1tYW5hZ2VtZW50LWVzdGltYXRlZC11c2FnZT90cGxfdmFyX2RhdGFkb2dfaW5kZXg9e3tkYXRhZG9nX2luZGV4Lm5hbWV9fSBmb3IgbW9yZSBkZXRhaWxzLmA7XG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VGb3JFbnZTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ4OS9hcG0tdHJhY2VzLWVzdGltYXRlZC11c2FnZT90cGxfdmFyX2Vudj17e2Vudi5uYW1lfX0gZm9yIG1vcmUgZGV0YWlscy5gO1xuXG4gICAgY29uc3QgaW5mcmFzdHJ1Y3R1cmVVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnaW5mcmFzdHJ1Y3R1cmUgaG9zdHMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5ob3N0c3sqfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJpbmZyYXN0cnVjdHVyZSBob3N0cyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5ob3N0c3sqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAnRmFyZ2F0ZSB0YXNrcycsIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuYXBtLmZhcmdhdGVfdGFza19pbnN0YW5jZXsqfScgfSxcbiAgICAgIHsgaHVtYW5SZWFkYWJsZU5hbWU6ICdwcm9maWxlZCBGYXJnYXRlIHRhc2tzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5wcm9maWxpbmcuZmFyZ2F0ZXsqfScgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdjdXN0b20gbWV0cmljcycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLm1ldHJpY3MuY3VzdG9teyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImN1c3RvbSBtZXRyaWNzIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLm1ldHJpY3MuY3VzdG9teyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgbG9nTWFuYWdlbWVudFVzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdsb2cgaW5nZXN0aW9uJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ieXRlc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImxvZyBpbmdlc3Rpb24gZm9yICd7e2RhdGFkb2dfaW5kZXgubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2J5dGVzeyp9IGJ5IHtkYXRhZG9nX2luZGV4fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlRm9yTG9nSW5kZXhTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnbG9nIGluZGV4aW5nJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ldmVudHN7ZGF0YWRvZ19pc19leGNsdWRlZDpmYWxzZX0uYXNfY291bnQoKScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJsb2cgaW5kZXhpbmcgZm9yICd7e2RhdGFkb2dfaW5kZXgubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTpcbiAgICAgICAgICAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2V9IGJ5IHtkYXRhZG9nX2luZGV4fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlRm9yTG9nSW5kZXhTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IGFwbVVzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHsgaHVtYW5SZWFkYWJsZU5hbWU6ICdBUE0gaG9zdHMnLCBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG1faG9zdHN7Kn0nIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcIkFQTSBob3N0cyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG1faG9zdHN7Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ3NwYW4gaW5nZXN0aW9uJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZ2VzdGVkX2J5dGVzeyp9LmFzX2NvdW50KCknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwic3BhbiBpbmdlc3Rpb24gZm9yICd7e2Vudi5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmdlc3RlZF9ieXRlc3sqfSBieSB7ZW52fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlRm9yRW52U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ3NwYW4gaW5kZXhpbmcnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5kZXhlZF9zcGFuc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNwYW4gaW5kZXhpbmcgZm9yICd7e2Vudi5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmRleGVkX3NwYW5zeyp9IGJ5IHtlbnZ9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VGb3JFbnZTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHN5bnRoZXRpY1VzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdTeW50aGV0aWMgQVBJIHRlc3RzJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2Uuc3ludGhldGljcy5hcGlfdGVzdF9ydW5zeyp9LmFzX2NvdW50KCknLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc2VydmVybGVzc1VzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzZXJ2ZXJsZXNzIGZ1bmN0aW9ucycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnNlcnZlcmxlc3MuYXdzX2xhbWJkYV9mdW5jdGlvbnN7Kn0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwic2VydmVybGVzcyBmdW5jdGlvbnMgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2Uuc2VydmVybGVzcy5hd3NfbGFtYmRhX2Z1bmN0aW9uc3sqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgdXNhZ2VTcGlrZU1vbml0b3Igb2YgKFtdIGFzIFVzYWdlU3Bpa2VNb25pdG9yW10pLmNvbmNhdChcbiAgICAgIGluZnJhc3RydWN0dXJlVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICAgbG9nTWFuYWdlbWVudFVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIGFwbVVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIHNlcnZlcmxlc3NVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBzeW50aGV0aWNVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgKSkge1xuICAgICAgdGhpcy5jcmVhdGVBbm9tYWx5TW9uaXRvckZvclNwaWtlcyhwcm9wcy5zZXJ2aWNlTmFtZSwgcHJvcHMuYWxlcnRUeXBlLCB1c2FnZVNwaWtlTW9uaXRvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbm9tYWx5TW9uaXRvckZvclNwaWtlcyhcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICAgIGFsZXJ0VHlwZTogRGF0YWRvZ0FsZXJ0VHlwZSxcbiAgICB1c2FnZVNwaWtlTW9uaXRvcjogVXNhZ2VTcGlrZU1vbml0b3IsXG4gICk6IERhdGFkb2dNb25pdG9yIHtcbiAgICByZXR1cm4gbmV3IERhdGFkb2dNb25pdG9yKHRoaXMsIHVzYWdlU3Bpa2VNb25pdG9yLmh1bWFuUmVhZGFibGVOYW1lLCB7XG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIGFsZXJ0VHlwZXM6IFthbGVydFR5cGVdLFxuICAgICAgbW9uaXRvcjoge1xuICAgICAgICBuYW1lOiBgJHt1c2FnZVNwaWtlTW9uaXRvci5odW1hblJlYWRhYmxlTmFtZX0gc3Bpa2VgLFxuICAgICAgICB0eXBlOiAncXVlcnkgYWxlcnQnLFxuICAgICAgICBxdWVyeTogYGF2ZyhsYXN0XzRoKTphbm9tYWxpZXMoJHt1c2FnZVNwaWtlTW9uaXRvci5xdWVyeX0sIFxcJ2FnaWxlXFwnLCAyLCBkaXJlY3Rpb249XFwnYWJvdmVcXCcsIGludGVydmFsPTYwLCBhbGVydF93aW5kb3c9XFwnbGFzdF8xNW1cXCcsIHNlYXNvbmFsaXR5PVxcJ3dlZWtseVxcJywgdGltZXpvbmU9XFwnRXVyb3BlL0JlcmxpblxcJywgY291bnRfZGVmYXVsdF96ZXJvPVxcJ3RydWVcXCcpID49IDFgLFxuICAgICAgICBtZXNzYWdlOiBgJHt1c2FnZVNwaWtlTW9uaXRvci5odW1hblJlYWRhYmxlTmFtZX0gYXJlIGdldHRpbmcgb3V0LW9mLWNvbnRyb2wuICR7XG4gICAgICAgICAgdXNhZ2VTcGlrZU1vbml0b3IuYWRkaXRpb25hbE1lc3NhZ2UgPz8gJydcbiAgICAgICAgfWAsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBpbmNsdWRlX3RhZ3M6IGZhbHNlLFxuICAgICAgICAgIG5vdGlmeV9ub19kYXRhOiBmYWxzZSxcbiAgICAgICAgICB0aHJlc2hvbGRfd2luZG93czoge1xuICAgICAgICAgICAgdHJpZ2dlcl93aW5kb3c6ICdsYXN0XzE1bScsXG4gICAgICAgICAgICByZWNvdmVyeV93aW5kb3c6ICdsYXN0XzE1bScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==