@cdklabs/multi-az-observability 0.0.1-alpha.4 → 0.0.1-alpha.41
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 +2237 -769
- package/API.md +5141 -1591
- package/README.md +63 -54
- package/cdk.json +1 -1
- package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.d.ts +14 -12
- package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.js +50 -49
- package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.js +2 -2
- package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.d.ts +6 -15
- package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.js +2 -10
- package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.d.ts +11 -3
- package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.js +24 -13
- package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.d.ts +0 -8
- package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/IOperationAlarmsAndRules.d.ts +20 -27
- package/lib/alarmsandrules/IOperationAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/IServerSideOperationRegionalAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/IServiceAlarmsAndRules.d.ts +19 -15
- package/lib/alarmsandrules/IServiceAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/OperationAlarmsAndRules.d.ts +15 -22
- package/lib/alarmsandrules/OperationAlarmsAndRules.js +52 -72
- package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.d.ts +5 -5
- package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.js +2 -3
- package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.d.ts +21 -13
- package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.js +43 -29
- package/lib/alarmsandrules/ServiceAlarmsAndRules.d.ts +19 -15
- package/lib/alarmsandrules/ServiceAlarmsAndRules.js +34 -136
- package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.d.ts +4 -3
- package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.js +1 -1
- package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.d.ts +6 -44
- package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.js +1 -1
- package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.d.ts +28 -7
- package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.js +1 -1
- package/lib/azmapper/AvailabilityZoneMapper.js +8 -9
- package/lib/basic_observability/BasicServiceDashboard.d.ts +0 -3
- package/lib/basic_observability/BasicServiceDashboard.js +24 -112
- package/lib/basic_observability/BasicServiceMultiAZObservability.d.ts +8 -9
- package/lib/basic_observability/BasicServiceMultiAZObservability.js +98 -312
- package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.d.ts +51 -0
- package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.js +3 -0
- package/lib/basic_observability/props/BasicServiceDashboardProps.d.ts +27 -13
- package/lib/basic_observability/props/BasicServiceDashboardProps.js +1 -1
- package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.d.ts +10 -38
- package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.js +1 -1
- package/lib/basic_observability/props/NatGatewayDetectionProps.d.ts +31 -0
- package/lib/basic_observability/props/NatGatewayDetectionProps.js +3 -0
- package/lib/canaries/CanaryFunction.js +14 -13
- package/lib/canaries/CanaryTest.js +4 -4
- package/lib/canaries/src/canary.zip +0 -0
- package/lib/dashboards/ContributorInsightsWidget.d.ts +1 -1
- package/lib/dashboards/ContributorInsightsWidget.js +13 -17
- package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.d.ts +2 -6
- package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +445 -507
- package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.d.ts +2 -10
- package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +350 -437
- package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.d.ts +3 -66
- package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.js +1 -1
- package/lib/dashboards/props/OperationAvailabilityWidgetProps.d.ts +7 -2
- package/lib/dashboards/props/OperationAvailabilityWidgetProps.js +1 -1
- package/lib/dashboards/props/OperationLatencyWidgetProps.d.ts +7 -2
- package/lib/dashboards/props/OperationLatencyWidgetProps.js +1 -1
- package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.d.ts +8 -8
- package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.js +1 -1
- package/lib/index.d.ts +54 -24
- package/lib/index.js +36 -17
- package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +77 -3
- package/lib/metrics/ApplicationLoadBalancerMetrics.js +813 -32
- package/lib/metrics/AvailabilityAndLatencyMetrics.d.ts +23 -0
- package/lib/metrics/AvailabilityAndLatencyMetrics.js +120 -26
- package/lib/metrics/NatGatewayMetrics.d.ts +113 -0
- package/lib/metrics/NatGatewayMetrics.js +357 -0
- package/lib/metrics/RegionalAvailabilityMetrics.js +4 -5
- package/lib/metrics/RegionalLatencyMetrics.d.ts +1 -1
- package/lib/metrics/RegionalLatencyMetrics.js +27 -20
- package/lib/metrics/ZonalAvailabilityMetrics.d.ts +2 -8
- package/lib/metrics/ZonalAvailabilityMetrics.js +10 -25
- package/lib/metrics/ZonalLatencyMetrics.d.ts +2 -1
- package/lib/metrics/ZonalLatencyMetrics.js +33 -23
- package/lib/metrics/props/AvailabilityAndLatencyMetricProps.d.ts +4 -0
- package/lib/metrics/props/AvailabilityAndLatencyMetricProps.js +1 -1
- package/lib/metrics/props/LatencyMetricProps.d.ts +6 -0
- package/lib/metrics/props/LatencyMetricProps.js +1 -1
- package/lib/metrics/props/ZonalAvailabilityMetricProps.d.ts +4 -0
- package/lib/metrics/props/ZonalAvailabilityMetricProps.js +1 -1
- package/lib/metrics/props/ZonalLatencyMetricProps.d.ts +4 -0
- package/lib/metrics/props/ZonalLatencyMetricProps.js +1 -1
- package/lib/monitoring/src/monitoring-layer.zip +0 -0
- package/lib/outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm.d.ts +10 -0
- package/lib/outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm.js +15 -0
- package/lib/outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm.d.ts +18 -0
- package/lib/outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm.js +23 -0
- package/lib/outlier-detection/OutlierDetectionFunction.js +7 -6
- package/lib/outlier-detection/PacketLossOutlierAlgorithm.d.ts +10 -0
- package/lib/outlier-detection/PacketLossOutlierAlgorithm.js +15 -0
- package/lib/outlier-detection/src/outlier-detection.zip +0 -0
- package/lib/outlier-detection/src/scipy-layer.zip +0 -0
- package/lib/services/CanaryMetrics.d.ts +4 -3
- package/lib/services/CanaryMetrics.js +3 -4
- package/lib/services/CanaryTestAvailabilityMetricsOverride.d.ts +21 -0
- package/lib/services/CanaryTestAvailabilityMetricsOverride.js +23 -0
- package/lib/services/CanaryTestLatencyMetricsOverride.d.ts +15 -0
- package/lib/services/CanaryTestLatencyMetricsOverride.js +20 -0
- package/lib/services/CanaryTestMetricsOverride.d.ts +1 -13
- package/lib/services/CanaryTestMetricsOverride.js +2 -4
- package/lib/services/ContributorInsightRuleDetails.js +1 -1
- package/lib/services/ICanaryMetrics.d.ts +4 -3
- package/lib/services/ICanaryMetrics.js +1 -1
- package/lib/services/ICanaryTestAvailabilityMetricsOverride.d.ts +23 -0
- package/lib/services/ICanaryTestAvailabilityMetricsOverride.js +3 -0
- package/lib/services/ICanaryTestLatencyMetricsOverride.d.ts +13 -0
- package/lib/services/ICanaryTestLatencyMetricsOverride.js +3 -0
- package/lib/services/ICanaryTestMetricsOverride.d.ts +0 -12
- package/lib/services/ICanaryTestMetricsOverride.js +1 -1
- package/lib/services/IInstrumentedServiceMultiAZObservability.d.ts +13 -3
- package/lib/services/IInstrumentedServiceMultiAZObservability.js +1 -1
- package/lib/services/IOperation.d.ts +8 -6
- package/lib/services/IOperation.js +1 -1
- package/lib/services/IOperationAvailabilityMetricDetails.d.ts +18 -0
- package/lib/services/IOperationAvailabilityMetricDetails.js +3 -0
- package/lib/services/IOperationLatencyMetricDetails.d.ts +12 -0
- package/lib/services/IOperationLatencyMetricDetails.js +3 -0
- package/lib/services/IOperationMetricDetails.d.ts +0 -12
- package/lib/services/IOperationMetricDetails.js +1 -1
- package/lib/services/IService.d.ts +4 -3
- package/lib/services/IService.js +1 -1
- package/lib/services/IServiceAvailabilityMetricDetails.d.ts +18 -0
- package/lib/services/IServiceAvailabilityMetricDetails.js +3 -0
- package/lib/services/IServiceLatencyMetricDetails.d.ts +12 -0
- package/lib/services/IServiceLatencyMetricDetails.js +3 -0
- package/lib/services/IServiceMetricDetails.d.ts +0 -12
- package/lib/services/IServiceMetricDetails.js +1 -1
- package/lib/services/InstrumentedServiceMultiAZObservability.d.ts +15 -3
- package/lib/services/InstrumentedServiceMultiAZObservability.js +197 -208
- package/lib/services/Operation.d.ts +8 -6
- package/lib/services/Operation.js +2 -2
- package/lib/services/OperationAvailabilityMetricDetails.d.ts +22 -0
- package/lib/services/OperationAvailabilityMetricDetails.js +24 -0
- package/lib/services/OperationLatencyMetricDetails.d.ts +16 -0
- package/lib/services/OperationLatencyMetricDetails.js +21 -0
- package/lib/services/OperationMetricDetails.d.ts +1 -13
- package/lib/services/OperationMetricDetails.js +2 -8
- package/lib/services/Service.d.ts +4 -3
- package/lib/services/Service.js +2 -2
- package/lib/services/ServiceAvailabilityMetricDetails.d.ts +21 -0
- package/lib/services/ServiceAvailabilityMetricDetails.js +20 -0
- package/lib/services/ServiceLatencyMetricDetails.d.ts +15 -0
- package/lib/services/ServiceLatencyMetricDetails.js +19 -0
- package/lib/services/ServiceMetricDetails.d.ts +1 -13
- package/lib/services/ServiceMetricDetails.js +2 -4
- package/lib/services/props/CanaryMetricProps.d.ts +4 -3
- package/lib/services/props/CanaryMetricProps.js +1 -1
- package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.d.ts +22 -0
- package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.js +3 -0
- package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.d.ts +14 -0
- package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.js +3 -0
- package/lib/services/props/CanaryTestMetricsOverrideProps.d.ts +0 -16
- package/lib/services/props/CanaryTestMetricsOverrideProps.js +1 -1
- package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.d.ts +1 -1
- package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.js +1 -1
- package/lib/services/props/MetricDimensions.js +1 -1
- package/lib/services/props/OperationAvailabilityMetricDetailsProps.d.ts +22 -0
- package/lib/services/props/OperationAvailabilityMetricDetailsProps.js +3 -0
- package/lib/services/props/OperationLatencyMetricDetailsProps.d.ts +14 -0
- package/lib/services/props/OperationLatencyMetricDetailsProps.js +3 -0
- package/lib/services/props/OperationMetricDetailsProps.d.ts +0 -16
- package/lib/services/props/OperationMetricDetailsProps.js +1 -1
- package/lib/services/props/OperationProps.d.ts +4 -3
- package/lib/services/props/OperationProps.js +1 -1
- package/lib/services/props/ServiceAvailabilityMetricDetailsProps.d.ts +18 -0
- package/lib/services/props/ServiceAvailabilityMetricDetailsProps.js +3 -0
- package/lib/services/props/ServiceLatencyMetricDetailsProps.d.ts +12 -0
- package/lib/services/props/ServiceLatencyMetricDetailsProps.js +3 -0
- package/lib/services/props/ServiceMetricDetailsProps.d.ts +0 -12
- package/lib/services/props/ServiceMetricDetailsProps.js +1 -1
- package/lib/services/props/ServiceProps.d.ts +4 -3
- package/lib/services/props/ServiceProps.js +1 -1
- package/lib/utilities/MetricsHelper.d.ts +17 -9
- package/lib/utilities/MetricsHelper.js +34 -10
- package/package.json +10 -10
- package/lib/services/IBasicServiceMultiAZObservability.d.ts +0 -45
- package/lib/services/IBasicServiceMultiAZObservability.js +0 -3
|
@@ -16,33 +16,37 @@ export declare class ServiceAlarmsAndRules extends Construct implements IService
|
|
|
16
16
|
* triggers for availability or latency impact to any critical operation in that AZ
|
|
17
17
|
* that indicates it has isolated impact as measured by canaries or server-side.
|
|
18
18
|
*/
|
|
19
|
-
zonalAggregateIsolatedImpactAlarms:
|
|
19
|
+
zonalAggregateIsolatedImpactAlarms: {
|
|
20
|
+
[key: string]: IAlarm;
|
|
21
|
+
};
|
|
20
22
|
/**
|
|
21
23
|
* The zonal server-side isolated impact alarms. There is 1 alarm per AZ that triggers
|
|
22
|
-
* on availability or
|
|
24
|
+
* on availability or latency impact to any critical operation in that AZ. These are useful
|
|
23
25
|
* for deployment monitoring to not inadvertently fail when a canary can't contact an AZ
|
|
24
26
|
* during a deployment.
|
|
25
27
|
*/
|
|
26
|
-
zonalServerSideIsolatedImpactAlarms:
|
|
28
|
+
zonalServerSideIsolatedImpactAlarms: {
|
|
29
|
+
[key: string]: IAlarm;
|
|
30
|
+
};
|
|
27
31
|
/**
|
|
28
|
-
* An alarm
|
|
32
|
+
* An alarm indicating the canary has discovered an availability or latency impact on a critical
|
|
33
|
+
* operation while testing the regional endpoint.
|
|
29
34
|
*/
|
|
30
|
-
|
|
35
|
+
regionalCanaryAlarm?: IAlarm;
|
|
31
36
|
/**
|
|
32
|
-
* An alarm
|
|
37
|
+
* An alarm indicating there is availability or latency impact on a critical operation
|
|
38
|
+
* that is not scoped to a single availability zone as measured by the server-side and/or canary (if present)
|
|
33
39
|
*/
|
|
34
|
-
|
|
40
|
+
regionalImpactAlarm: IAlarm;
|
|
35
41
|
/**
|
|
36
|
-
* An alarm
|
|
42
|
+
* An alarm indicating there is availability or latency impact on a critical operation
|
|
43
|
+
* that is not scoped to a single availability zone as measured by the server-side
|
|
37
44
|
*/
|
|
38
|
-
|
|
45
|
+
regionalServerSideImpactAlarm: IAlarm;
|
|
39
46
|
/**
|
|
40
|
-
*
|
|
47
|
+
* This is the top level alarm you should tie notifications/paging/alerting to. It triggers
|
|
48
|
+
* on any impact to a critical operation either zonally scoped or regionally scoped.
|
|
41
49
|
*/
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* An alarm for fault count exceeding a regional threshold for all critical operations.
|
|
45
|
-
*/
|
|
46
|
-
regionalFaultCountServerSideAlarm: IAlarm;
|
|
50
|
+
serviceImpactAlarm: IAlarm;
|
|
47
51
|
constructor(scope: Construct, id: string, props: ServiceAlarmsAndRulesProps);
|
|
48
52
|
}
|
|
@@ -3,12 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ServiceAlarmsAndRules = void 0;
|
|
4
4
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
5
5
|
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
6
|
const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
|
|
8
7
|
const constructs_1 = require("constructs");
|
|
9
|
-
const RegionalAvailabilityMetrics_1 = require("../metrics/RegionalAvailabilityMetrics");
|
|
10
|
-
const AvailabilityMetricType_1 = require("../utilities/AvailabilityMetricType");
|
|
11
|
-
const MetricsHelper_1 = require("../utilities/MetricsHelper");
|
|
12
8
|
/**
|
|
13
9
|
* Service level alarms and rules using critical operations
|
|
14
10
|
*/
|
|
@@ -16,151 +12,53 @@ class ServiceAlarmsAndRules extends constructs_1.Construct {
|
|
|
16
12
|
constructor(scope, id, props) {
|
|
17
13
|
super(scope, id);
|
|
18
14
|
this.service = props.service;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
for (let i = 0; i < availabilityZoneIds.length; i++) {
|
|
29
|
-
let availabilityZonedId = availabilityZoneIds[i];
|
|
30
|
-
this.zonalAggregateIsolatedImpactAlarms.push(new aws_cloudwatch_1.CompositeAlarm(this, 'AZ' + counter + 'ServiceAggregateIsolatedImpactAlarm', {
|
|
15
|
+
// Critical operation alarms and rules
|
|
16
|
+
let criticalOperationAlarmsAndRules = Object.values(props.perOperationAlarmsAndRules).filter((operation) => operation.operation.critical == true);
|
|
17
|
+
// Get the zonal impact alarms for the server side and in aggregate
|
|
18
|
+
this.zonalAggregateIsolatedImpactAlarms = {};
|
|
19
|
+
this.zonalServerSideIsolatedImpactAlarms = {};
|
|
20
|
+
props.service.availabilityZoneNames.forEach((availabilityZone, index) => {
|
|
21
|
+
let azLetter = availabilityZone.substring(availabilityZone.length - 1);
|
|
22
|
+
let availabilityZonedId = props.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(azLetter);
|
|
23
|
+
this.zonalAggregateIsolatedImpactAlarms[availabilityZone] = new aws_cloudwatch_1.CompositeAlarm(this, 'AZ' + index + 'ServiceAggregateIsolatedImpactAlarm', {
|
|
31
24
|
compositeAlarmName: availabilityZonedId +
|
|
32
25
|
'-' +
|
|
33
26
|
props.service.serviceName.toLowerCase() +
|
|
34
27
|
'-isolated-impact-aggregate-alarm',
|
|
35
|
-
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
return filtered;
|
|
40
|
-
}, {})).map((x) => x.aggregateZonalAlarms[i])),
|
|
41
|
-
}));
|
|
42
|
-
this.zonalServerSideIsolatedImpactAlarms.push(new aws_cloudwatch_1.CompositeAlarm(this, 'AZ' + counter + 'ServiceServerSideIsolatedImpactAlarm', {
|
|
28
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...criticalOperationAlarmsAndRules.map((x) => x.aggregateZonalAlarms[availabilityZone])),
|
|
29
|
+
});
|
|
30
|
+
this.zonalServerSideIsolatedImpactAlarms[availabilityZone] = new aws_cloudwatch_1.CompositeAlarm(this, 'AZ' + index + 'ServiceServerSideIsolatedImpactAlarm', {
|
|
43
31
|
compositeAlarmName: availabilityZonedId +
|
|
44
32
|
'-' +
|
|
45
33
|
props.service.serviceName.toLowerCase() +
|
|
46
34
|
'-isolated-impact-server-side-alarm',
|
|
47
|
-
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...
|
|
48
|
-
|
|
49
|
-
filtered[key] = value;
|
|
50
|
-
}
|
|
51
|
-
return filtered;
|
|
52
|
-
}, {})).map((x) => x.serverSideZonalAlarmsMap[availabilityZonedId])),
|
|
53
|
-
}));
|
|
54
|
-
counter++;
|
|
55
|
-
}
|
|
56
|
-
let keyPrefix = '';
|
|
57
|
-
let regionalOperationFaultCountMetrics = {};
|
|
58
|
-
props.service.operations
|
|
59
|
-
.filter((x) => x.critical == true)
|
|
60
|
-
.forEach((x) => {
|
|
61
|
-
keyPrefix = MetricsHelper_1.MetricsHelper.nextChar(keyPrefix);
|
|
62
|
-
regionalOperationFaultCountMetrics[keyPrefix] =
|
|
63
|
-
RegionalAvailabilityMetrics_1.RegionalAvailabilityMetrics.createRegionalAvailabilityMetric({
|
|
64
|
-
label: x.operationName + ' fault count',
|
|
65
|
-
metricDetails: x.serverSideAvailabilityMetricDetails,
|
|
66
|
-
metricType: AvailabilityMetricType_1.AvailabilityMetricType.FAULT_COUNT,
|
|
67
|
-
});
|
|
35
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...criticalOperationAlarmsAndRules.map((x) => x.serverSideZonalAlarmsAndRules[availabilityZone].isolatedImpactAlarm)),
|
|
36
|
+
});
|
|
68
37
|
});
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
label: props.service.serviceName + ' fault count',
|
|
73
|
-
period: props.service.period,
|
|
38
|
+
this.regionalImpactAlarm = new aws_cloudwatch_1.CompositeAlarm(this, "regional-impact-alarm", {
|
|
39
|
+
compositeAlarmName: `${props.service.serviceName.toLowerCase()}-regional-impact-alarm`,
|
|
40
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...criticalOperationAlarmsAndRules.map((operation) => operation.regionalImpactAlarm))
|
|
74
41
|
});
|
|
75
|
-
this.
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
props.service.serviceName.toLowerCase() +
|
|
79
|
-
'-fault-count',
|
|
80
|
-
datapointsToAlarm: 3,
|
|
81
|
-
evaluationPeriods: 5,
|
|
82
|
-
comparisonOperator: aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
83
|
-
threshold: props.service.faultCountThreshold,
|
|
84
|
-
alarmDescription: 'Counts faults from all critical operation in the service',
|
|
85
|
-
metric: regionalFaultCount,
|
|
42
|
+
this.serviceImpactAlarm = new aws_cloudwatch_1.CompositeAlarm(this, "service-impact-alarm", {
|
|
43
|
+
compositeAlarmName: `${props.service.serviceName.toLowerCase()}-impact-alarm`,
|
|
44
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(this.regionalImpactAlarm, ...Object.values(this.zonalAggregateIsolatedImpactAlarms))
|
|
86
45
|
});
|
|
87
|
-
let
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if (canaryAlarms !== undefined &&
|
|
101
|
-
canaryAlarms !== null &&
|
|
102
|
-
canaryAlarms.length > 0) {
|
|
103
|
-
this.regionalAvailabilityOrLatencyCanaryAlarm = new aws_cloudwatch_1.CompositeAlarm(this, 'ServiceCanaryAvailabilityOrLatencyAggregateAlarm', {
|
|
104
|
-
compositeAlarmName: aws_cdk_lib_1.Fn.ref('AWS::Region') +
|
|
105
|
-
'-' +
|
|
106
|
-
props.service.serviceName.toLowerCase() +
|
|
107
|
-
'-canary-availability-or-latency-aggregate-alarm',
|
|
108
|
-
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...canaryAlarms),
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
let canaryAvailabilityAlarms = Object.values(Object.entries(props.perOperationAlarmsAndRules).reduce((filtered, [key, value]) => {
|
|
112
|
-
if (criticalOperations.indexOf(key) > -1) {
|
|
113
|
-
filtered[key] = value;
|
|
114
|
-
}
|
|
115
|
-
return filtered;
|
|
116
|
-
}, {}))
|
|
117
|
-
.reduce((filtered, value) => {
|
|
118
|
-
if (value.canaryRegionalAlarmsAndRules !== undefined) {
|
|
119
|
-
filtered.push(value.canaryRegionalAlarmsAndRules);
|
|
120
|
-
}
|
|
121
|
-
return filtered;
|
|
122
|
-
}, [])
|
|
123
|
-
.map((x) => x.availabilityAlarm);
|
|
124
|
-
if (canaryAvailabilityAlarms !== undefined &&
|
|
125
|
-
canaryAvailabilityAlarms !== null &&
|
|
126
|
-
canaryAvailabilityAlarms.length > 0) {
|
|
127
|
-
this.regionalAvailabilityCanaryAlarm = new aws_cloudwatch_1.CompositeAlarm(this, 'ServiceCanaryAvailabilityAggregateAlarm', {
|
|
128
|
-
compositeAlarmName: aws_cdk_lib_1.Fn.ref('AWS::Region') +
|
|
129
|
-
'-' +
|
|
130
|
-
props.service.serviceName.toLowerCase() +
|
|
131
|
-
'-canary-availability-aggregate-alarm',
|
|
132
|
-
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...canaryAvailabilityAlarms),
|
|
46
|
+
let serverSideRegionalAvailabilityOrLatencyAlarmsForCriticalOperations = criticalOperationAlarmsAndRules
|
|
47
|
+
.map((operation) => operation.serverSideRegionalAlarmsAndRules.availabilityOrLatencyAlarm);
|
|
48
|
+
this.regionalServerSideImpactAlarm = new aws_cloudwatch_1.CompositeAlarm(this, "server-side-regional-alarm", {
|
|
49
|
+
compositeAlarmName: `${props.service.serviceName.toLowerCase()}-server-side-regional-impact`,
|
|
50
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...serverSideRegionalAvailabilityOrLatencyAlarmsForCriticalOperations)
|
|
51
|
+
});
|
|
52
|
+
let canaryRegionalAvailabilityOrLatencyAlarmsForCriticalOperations = criticalOperationAlarmsAndRules
|
|
53
|
+
.filter((operation) => operation.canaryRegionalAlarmsAndRules)
|
|
54
|
+
.map((operation) => operation.canaryRegionalAlarmsAndRules.availabilityOrLatencyAlarm);
|
|
55
|
+
if (canaryRegionalAvailabilityOrLatencyAlarmsForCriticalOperations) {
|
|
56
|
+
this.regionalCanaryAlarm = new aws_cloudwatch_1.CompositeAlarm(this, "canary-regional-alarm", {
|
|
57
|
+
compositeAlarmName: `${props.service.serviceName.toLowerCase()}-canary-regional-impact`,
|
|
58
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...canaryRegionalAvailabilityOrLatencyAlarmsForCriticalOperations)
|
|
133
59
|
});
|
|
134
60
|
}
|
|
135
|
-
this.regionalAvailabilityOrLatencyServerSideAlarm = new aws_cloudwatch_1.CompositeAlarm(this, 'ServiceServerSideAggregateIsolatedImpactAlarm', {
|
|
136
|
-
compositeAlarmName: aws_cdk_lib_1.Fn.ref('AWS::Region') +
|
|
137
|
-
'-' +
|
|
138
|
-
props.service.serviceName.toLowerCase() +
|
|
139
|
-
'-server-side-aggregate-alarm',
|
|
140
|
-
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(Object.entries(props.perOperationAlarmsAndRules).reduce((filtered, [key, value]) => {
|
|
141
|
-
if (criticalOperations.indexOf(key) > -1) {
|
|
142
|
-
filtered[key] = value;
|
|
143
|
-
}
|
|
144
|
-
return filtered;
|
|
145
|
-
}, {}))
|
|
146
|
-
.map((x) => x.serverSideRegionalAlarmsAndRules)
|
|
147
|
-
.map((x) => x.availabilityOrLatencyAlarm)),
|
|
148
|
-
});
|
|
149
|
-
this.regionalAvailabilityServerSideAlarm = new aws_cloudwatch_1.CompositeAlarm(this, 'ServiceServerSideAvailabilityAlarm', {
|
|
150
|
-
compositeAlarmName: aws_cdk_lib_1.Fn.ref('AWS::Region') +
|
|
151
|
-
'-' +
|
|
152
|
-
props.service.serviceName.toLowerCase() +
|
|
153
|
-
'-server-side-availability-alarm',
|
|
154
|
-
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(Object.entries(props.perOperationAlarmsAndRules).reduce((filtered, [key, value]) => {
|
|
155
|
-
if (criticalOperations.indexOf(key) > -1) {
|
|
156
|
-
filtered[key] = value;
|
|
157
|
-
}
|
|
158
|
-
return filtered;
|
|
159
|
-
}, {}))
|
|
160
|
-
.map((x) => x.serverSideRegionalAlarmsAndRules)
|
|
161
|
-
.map((x) => x.availabilityAlarm)),
|
|
162
|
-
});
|
|
163
61
|
}
|
|
164
62
|
}
|
|
165
63
|
exports.ServiceAlarmsAndRules = ServiceAlarmsAndRules;
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUFsYXJtc0FuZFJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FsYXJtc2FuZHJ1bGVzL1NlcnZpY2VBbGFybXNBbmRSdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBQ3RDLDZDQUFpQztBQUNqQywrREFRb0M7QUFDcEMsMkNBQXVDO0FBS3ZDLHdGQUFxRjtBQUVyRixnRkFBNkU7QUFDN0UsOERBQTJEO0FBRTNEOztHQUVHO0FBQ0gsTUFBYSxxQkFDWCxTQUFRLHNCQUFTO0lBK0NqQixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRTdCLElBQUksa0JBQWtCLEdBQWEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVO2FBQ3hELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7YUFDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0IsSUFBSSxPQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLEVBQUUsQ0FBQztRQUU5QyxJQUFJLG1CQUFtQixHQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUN6RSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ0osT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUNoRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQzFCLENB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LENBQUMsTUFBTSxDQUNkLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUMsTUFBTSxDQUNyRCxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUN6QixJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN6QyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixDQUFDO2dCQUVELE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUMsRUFDRCxFQUFpRCxDQUNsRCxDQUNGO2lCQUNFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDO2lCQUM5QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUNuQztTQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWxURCxzREFrVEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBGbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEFsYXJtLFxuICBBbGFybVJ1bGUsXG4gIENvbXBhcmlzb25PcGVyYXRvcixcbiAgQ29tcG9zaXRlQWxhcm0sXG4gIElBbGFybSxcbiAgSU1ldHJpYyxcbiAgTWF0aEV4cHJlc3Npb24sXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElTZXJ2aWNlQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2aWNlQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgU2VydmljZUFsYXJtc0FuZFJ1bGVzUHJvcHMgfSBmcm9tICcuL3Byb3BzL1NlcnZpY2VBbGFybXNBbmRSdWxlc1Byb3BzJztcbmltcG9ydCB7IFJlZ2lvbmFsQXZhaWxhYmlsaXR5TWV0cmljcyB9IGZyb20gJy4uL21ldHJpY3MvUmVnaW9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzJztcbmltcG9ydCB7IElTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvSVNlcnZpY2UnO1xuaW1wb3J0IHsgQXZhaWxhYmlsaXR5TWV0cmljVHlwZSB9IGZyb20gJy4uL3V0aWxpdGllcy9BdmFpbGFiaWxpdHlNZXRyaWNUeXBlJztcbmltcG9ydCB7IE1ldHJpY3NIZWxwZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvTWV0cmljc0hlbHBlcic7XG5cbi8qKlxuICogU2VydmljZSBsZXZlbCBhbGFybXMgYW5kIHJ1bGVzIHVzaW5nIGNyaXRpY2FsIG9wZXJhdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZpY2VBbGFybXNBbmRSdWxlc1xuICBleHRlbmRzIENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElTZXJ2aWNlQWxhcm1zQW5kUnVsZXMge1xuICAvKipcbiAgICogVGhlIHNlcnZpY2UgdGhlc2UgYWxhcm1zIGFuZCBydWxlcyBhcmUgZm9yXG4gICAqL1xuICBzZXJ2aWNlOiBJU2VydmljZTtcblxuICAvKipcbiAgICogVGhlIHpvbmFsIGFnZ3JlZ2F0ZSBpc29sYXRlZCBpbXBhY3QgYWxhcm1zLiBUaGVyZSBpcyAxIGFsYXJtIHBlciBBWiB0aGF0XG4gICAqIHRyaWdnZXJzIGZvciBhdmFpbGFiaWxpdHkgb3IgbGF0ZW5jeSBpbXBhY3QgdG8gYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBpbiB0aGF0IEFaXG4gICAqIHRoYXQgaW5kaWNhdGVzIGl0IGhhcyBpc29sYXRlZCBpbXBhY3QgYXMgbWVhc3VyZWQgYnkgY2FuYXJpZXMgb3Igc2VydmVyLXNpZGUuXG4gICAqL1xuICB6b25hbEFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm1zOiBJQWxhcm1bXTtcblxuICAvKipcbiAgICogVGhlIHpvbmFsIHNlcnZlci1zaWRlIGlzb2xhdGVkIGltcGFjdCBhbGFybXMuIFRoZXJlIGlzIDEgYWxhcm0gcGVyIEFaIHRoYXQgdHJpZ2dlcnNcbiAgICogb24gYXZhaWxhYmlsaXR5IG9yIGF0ZW5jeSBpbXBhY3QgdG8gYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBpbiB0aGF0IEFaLiBUaGVzZSBhcmUgdXNlZnVsXG4gICAqIGZvciBkZXBsb3ltZW50IG1vbml0b3JpbmcgdG8gbm90IGluYWR2ZXJ0ZW50bHkgZmFpbCB3aGVuIGEgY2FuYXJ5IGNhbid0IGNvbnRhY3QgYW4gQVpcbiAgICogZHVyaW5nIGEgZGVwbG95bWVudC5cbiAgICovXG4gIHpvbmFsU2VydmVyU2lkZUlzb2xhdGVkSW1wYWN0QWxhcm1zOiBJQWxhcm1bXTtcblxuICAvKipcbiAgICogQW4gYWxhcm0gZm9yIHJlZ2lvbmFsIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGltcGFjdCBvZiBhbnkgY3JpdGljYWwgb3BlcmF0aW9uIGFzIG1lYXN1cmVkIGJ5IHRoZSBjYW5hcnkuXG4gICAqL1xuICByZWdpb25hbEF2YWlsYWJpbGl0eU9yTGF0ZW5jeUNhbmFyeUFsYXJtPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBmb3IgcmVnaW9uYWwgYXZhaWxhYmlsaXR5IGltcGFjdCBvZiBhbnkgY3JpdGljYWwgb3BlcmF0aW9uIGFzIG1lYXN1cmVkIGJ5IHRoZSBjYW5hcnkuXG4gICAqL1xuICByZWdpb25hbEF2YWlsYWJpbGl0eUNhbmFyeUFsYXJtPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBmb3IgcmVnaW9uYWwgYXZhaWxhYmlsaXR5IG9yIGxhdGVuY3kgaW1wYWN0IG9mIGFueSBjcml0aWNhbCBvcGVyYXRpb24gYXMgbWVhc3VyZWQgYnkgdGhlIHNlcnZlci1zaWRlLlxuICAgKi9cbiAgcmVnaW9uYWxBdmFpbGFiaWxpdHlPckxhdGVuY3lTZXJ2ZXJTaWRlQWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogQW4gYWxhcm0gZm9yIHJlZ2lvbmFsIGF2YWlsYWJpbGl0eSBpbXBhY3Qgb2YgYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBhcyBtZWFzdXJlZCBieSB0aGUgc2VydmVyLXNpZGUuXG4gICAqL1xuICByZWdpb25hbEF2YWlsYWJpbGl0eVNlcnZlclNpZGVBbGFybTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBmb3IgZmF1bHQgY291bnQgZXhjZWVkaW5nIGEgcmVnaW9uYWwgdGhyZXNob2xkIGZvciBhbGwgY3JpdGljYWwgb3BlcmF0aW9ucy5cbiAgICovXG4gIHJlZ2lvbmFsRmF1bHRDb3VudFNlcnZlclNpZGVBbGFybTogSUFsYXJtO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTZXJ2aWNlQWxhcm1zQW5kUnVsZXNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5zZXJ2aWNlID0gcHJvcHMuc2VydmljZTtcblxuICAgIGxldCBjcml0aWNhbE9wZXJhdGlvbnM6IHN0cmluZ1tdID0gcHJvcHMuc2VydmljZS5vcGVyYXRpb25zXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4LmNyaXRpY2FsID09IHRydWUpXG4gICAgICAubWFwKCh4KSA9PiB4Lm9wZXJhdGlvbk5hbWUpO1xuICAgIGxldCBjb3VudGVyOiBudW1iZXIgPSAxO1xuICAgIHRoaXMuem9uYWxBZ2dyZWdhdGVJc29sYXRlZEltcGFjdEFsYXJtcyA9IFtdO1xuICAgIHRoaXMuem9uYWxTZXJ2ZXJTaWRlSXNvbGF0ZWRJbXBhY3RBbGFybXMgPSBbXTtcblxuICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWRzOiBzdHJpbmdbXSA9IHByb3BzLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLm1hcChcbiAgICAgICh4KSA9PiB7XG4gICAgICAgIHJldHVybiBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihcbiAgICAgICAgICB4LnN1YnN0cmluZyh4Lmxlbmd0aCAtIDEpLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdmFpbGFiaWxpdHlab25lSWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZWRJZDogc3RyaW5nID0gYXZhaWxhYmlsaXR5Wm9uZUlkc1tpXTtcblxuICAgICAgdGhpcy56b25hbEFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm1zLnB1c2goXG4gICAgICAgIG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgICdBWicgKyBjb3VudGVyICsgJ1NlcnZpY2VBZ2dyZWdhdGVJc29sYXRlZEltcGFjdEFsYXJtJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6XG4gICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVkSWQgK1xuICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCkgK1xuICAgICAgICAgICAgICAnLWlzb2xhdGVkLWltcGFjdC1hZ2dyZWdhdGUtYWxhcm0nLFxuICAgICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXMoXG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgIChmaWx0ZXJlZCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjcml0aWNhbE9wZXJhdGlvbnMuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge30gYXMgeyBba2V5OiBzdHJpbmddOiBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLm1hcCgoeCkgPT4geC5hZ2dyZWdhdGVab25hbEFsYXJtc1tpXSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICB0aGlzLnpvbmFsU2VydmVyU2lkZUlzb2xhdGVkSW1wYWN0QWxhcm1zLnB1c2goXG4gICAgICAgIG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgICdBWicgKyBjb3VudGVyICsgJ1NlcnZpY2VTZXJ2ZXJTaWRlSXNvbGF0ZWRJbXBhY3RBbGFybScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lZElkICtcbiAgICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAgICAgJy1pc29sYXRlZC1pbXBhY3Qtc2VydmVyLXNpZGUtYWxhcm0nLFxuICAgICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXMoXG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgIChmaWx0ZXJlZCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjcml0aWNhbE9wZXJhdGlvbnMuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge30gYXMgeyBba2V5OiBzdHJpbmddOiBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLm1hcCgoeCkgPT4geC5zZXJ2ZXJTaWRlWm9uYWxBbGFybXNNYXBbYXZhaWxhYmlsaXR5Wm9uZWRJZF0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgY291bnRlcisrO1xuICAgIH1cblxuICAgIGxldCBrZXlQcmVmaXg6IHN0cmluZyA9ICcnO1xuXG4gICAgbGV0IHJlZ2lvbmFsT3BlcmF0aW9uRmF1bHRDb3VudE1ldHJpY3M6IHsgW2tleTogc3RyaW5nXTogSU1ldHJpYyB9ID0ge307XG5cbiAgICBwcm9wcy5zZXJ2aWNlLm9wZXJhdGlvbnNcbiAgICAgIC5maWx0ZXIoKHgpID0+IHguY3JpdGljYWwgPT0gdHJ1ZSlcbiAgICAgIC5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgIGtleVByZWZpeCA9IE1ldHJpY3NIZWxwZXIubmV4dENoYXIoa2V5UHJlZml4KTtcblxuICAgICAgICByZWdpb25hbE9wZXJhdGlvbkZhdWx0Q291bnRNZXRyaWNzW2tleVByZWZpeF0gPVxuICAgICAgICAgIFJlZ2lvbmFsQXZhaWxhYmlsaXR5TWV0cmljcy5jcmVhdGVSZWdpb25hbEF2YWlsYWJpbGl0eU1ldHJpYyh7XG4gICAgICAgICAgICBsYWJlbDogeC5vcGVyYXRpb25OYW1lICsgJyBmYXVsdCBjb3VudCcsXG4gICAgICAgICAgICBtZXRyaWNEZXRhaWxzOiB4LnNlcnZlclNpZGVBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgbWV0cmljVHlwZTogQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5GQVVMVF9DT1VOVCxcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbGV0IHJlZ2lvbmFsRmF1bHRDb3VudDogSU1ldHJpYyA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICB1c2luZ01ldHJpY3M6IHJlZ2lvbmFsT3BlcmF0aW9uRmF1bHRDb3VudE1ldHJpY3MsXG4gICAgICBleHByZXNzaW9uOiBPYmplY3Qua2V5cyhyZWdpb25hbE9wZXJhdGlvbkZhdWx0Q291bnRNZXRyaWNzKS5qb2luKCcrJyksXG4gICAgICBsYWJlbDogcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZSArICcgZmF1bHQgY291bnQnLFxuICAgICAgcGVyaW9kOiBwcm9wcy5zZXJ2aWNlLnBlcmlvZCxcbiAgICB9KTtcblxuICAgIHRoaXMucmVnaW9uYWxGYXVsdENvdW50U2VydmVyU2lkZUFsYXJtID0gbmV3IEFsYXJtKFxuICAgICAgdGhpcyxcbiAgICAgICdSZWdpb25hbEZhdWx0Q291bnQnLFxuICAgICAge1xuICAgICAgICBhbGFybU5hbWU6XG4gICAgICAgICAgRm4ucmVmKCdBV1M6OlJlZ2lvbicpICtcbiAgICAgICAgICAnLScgK1xuICAgICAgICAgIHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKSArXG4gICAgICAgICAgJy1mYXVsdC1jb3VudCcsXG4gICAgICAgIGRhdGFwb2ludHNUb0FsYXJtOiAzLFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogNSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgdGhyZXNob2xkOiBwcm9wcy5zZXJ2aWNlLmZhdWx0Q291bnRUaHJlc2hvbGQsXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246XG4gICAgICAgICAgJ0NvdW50cyBmYXVsdHMgZnJvbSBhbGwgY3JpdGljYWwgb3BlcmF0aW9uIGluIHRoZSBzZXJ2aWNlJyxcbiAgICAgICAgbWV0cmljOiByZWdpb25hbEZhdWx0Q291bnQsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBsZXQgY2FuYXJ5QWxhcm1zOiBJQWxhcm1bXSA9IE9iamVjdC52YWx1ZXMoXG4gICAgICBPYmplY3QuZW50cmllcyhwcm9wcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlcykucmVkdWNlKFxuICAgICAgICAoZmlsdGVyZWQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGlmIChjcml0aWNhbE9wZXJhdGlvbnMuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0sXG4gICAgICApLFxuICAgIClcbiAgICAgIC5yZWR1Y2UoKGZpbHRlcmVkLCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUuY2FuYXJ5UmVnaW9uYWxBbGFybXNBbmRSdWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh2YWx1ZS5jYW5hcnlSZWdpb25hbEFsYXJtc0FuZFJ1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9LCBbXSBhcyBJQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1tdKVxuICAgICAgLm1hcCgoeCkgPT4geC5hdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybSk7XG5cbiAgICBpZiAoXG4gICAgICBjYW5hcnlBbGFybXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2FuYXJ5QWxhcm1zICE9PSBudWxsICYmXG4gICAgICBjYW5hcnlBbGFybXMubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5yZWdpb25hbEF2YWlsYWJpbGl0eU9yTGF0ZW5jeUNhbmFyeUFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnU2VydmljZUNhbmFyeUF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFnZ3JlZ2F0ZUFsYXJtJyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTpcbiAgICAgICAgICAgIEZuLnJlZignQVdTOjpSZWdpb24nKSArXG4gICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAgICctY2FuYXJ5LWF2YWlsYWJpbGl0eS1vci1sYXRlbmN5LWFnZ3JlZ2F0ZS1hbGFybScsXG4gICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoLi4uY2FuYXJ5QWxhcm1zKSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGNhbmFyeUF2YWlsYWJpbGl0eUFsYXJtczogSUFsYXJtW10gPSBPYmplY3QudmFsdWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpLnJlZHVjZShcbiAgICAgICAgKGZpbHRlcmVkLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBpZiAoY3JpdGljYWxPcGVyYXRpb25zLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICAgICAgICBmaWx0ZXJlZFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgICB9LFxuICAgICAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB9LFxuICAgICAgKSxcbiAgICApXG4gICAgICAucmVkdWNlKChmaWx0ZXJlZCwgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLmNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2godmFsdWUuY2FuYXJ5UmVnaW9uYWxBbGFybXNBbmRSdWxlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfSwgW10gYXMgSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNbXSlcbiAgICAgIC5tYXAoKHgpID0+IHguYXZhaWxhYmlsaXR5QWxhcm0pO1xuXG4gICAgaWYgKFxuICAgICAgY2FuYXJ5QXZhaWxhYmlsaXR5QWxhcm1zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGNhbmFyeUF2YWlsYWJpbGl0eUFsYXJtcyAhPT0gbnVsbCAmJlxuICAgICAgY2FuYXJ5QXZhaWxhYmlsaXR5QWxhcm1zLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMucmVnaW9uYWxBdmFpbGFiaWxpdHlDYW5hcnlBbGFybSA9IG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ1NlcnZpY2VDYW5hcnlBdmFpbGFiaWxpdHlBZ2dyZWdhdGVBbGFybScsXG4gICAgICAgIHtcbiAgICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6XG4gICAgICAgICAgICBGbi5yZWYoJ0FXUzo6UmVnaW9uJykgK1xuICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgIHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKSArXG4gICAgICAgICAgICAnLWNhbmFyeS1hdmFpbGFiaWxpdHktYWdncmVnYXRlLWFsYXJtJyxcbiAgICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZiguLi5jYW5hcnlBdmFpbGFiaWxpdHlBbGFybXMpLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlZ2lvbmFsQXZhaWxhYmlsaXR5T3JMYXRlbmN5U2VydmVyU2lkZUFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgdGhpcyxcbiAgICAgICdTZXJ2aWNlU2VydmVyU2lkZUFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm0nLFxuICAgICAge1xuICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6XG4gICAgICAgICAgRm4ucmVmKCdBV1M6OlJlZ2lvbicpICtcbiAgICAgICAgICAnLScgK1xuICAgICAgICAgIHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKSArXG4gICAgICAgICAgJy1zZXJ2ZXItc2lkZS1hZ2dyZWdhdGUtYWxhcm0nLFxuICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZihcbiAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgKGZpbHRlcmVkLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY3JpdGljYWxPcGVyYXRpb25zLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJlZFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKCh4KSA9PiB4LnNlcnZlclNpZGVSZWdpb25hbEFsYXJtc0FuZFJ1bGVzKVxuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5hdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybSksXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLnJlZ2lvbmFsQXZhaWxhYmlsaXR5U2VydmVyU2lkZUFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgdGhpcyxcbiAgICAgICdTZXJ2aWNlU2VydmVyU2lkZUF2YWlsYWJpbGl0eUFsYXJtJyxcbiAgICAgIHtcbiAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgIEZuLnJlZignQVdTOjpSZWdpb24nKSArXG4gICAgICAgICAgJy0nICtcbiAgICAgICAgICBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCkgK1xuICAgICAgICAgICctc2VydmVyLXNpZGUtYXZhaWxhYmlsaXR5LWFsYXJtJyxcbiAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzKS5yZWR1Y2UoXG4gICAgICAgICAgICAgIChmaWx0ZXJlZCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNyaXRpY2FsT3BlcmF0aW9ucy5pbmRleE9mKGtleSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgZmlsdGVyZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge30gYXMgeyBba2V5OiBzdHJpbmddOiBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5zZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXNBbmRSdWxlcylcbiAgICAgICAgICAgIC5tYXAoKHgpID0+IHguYXZhaWxhYmlsaXR5QWxhcm0pLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUFsYXJtc0FuZFJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FsYXJtc2FuZHJ1bGVzL1NlcnZpY2VBbGFybXNBbmRSdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBQ3RDLCtEQUlvQztBQUNwQywyQ0FBdUM7QUFLdkM7O0dBRUc7QUFDSCxNQUFhLHFCQUNYLFNBQVEsc0JBQVM7SUErQ2pCLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBaUM7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFFN0Isc0NBQXNDO1FBQ3RDLElBQUksK0JBQStCLEdBQStCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBbUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUM7UUFFeE0sbUVBQW1FO1FBQ25FLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLEVBQUUsQ0FBQztRQUU5QyxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUF3QixFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ3RGLElBQUksUUFBUSxHQUFXLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFBSSxtQkFBbUIsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXhHLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElB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dUJBQXVCLEVBQ3ZCO2dCQUNFLGtCQUFrQixFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLHlCQUF5QjtnQkFDdkYsU0FBUyxFQUFFLDBCQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsOERBQThELENBQUM7YUFDOUYsQ0FDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQWxKRCxzREFrSkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQge1xuICBBbGFybVJ1bGUsXG4gIENvbXBvc2l0ZUFsYXJtLFxuICBJQWxhcm0sXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSVNlcnZpY2VBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vSVNlcnZpY2VBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBTZXJ2aWNlQWxhcm1zQW5kUnVsZXNQcm9wcyB9IGZyb20gJy4vcHJvcHMvU2VydmljZUFsYXJtc0FuZFJ1bGVzUHJvcHMnO1xuaW1wb3J0IHsgSVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9JU2VydmljZSc7XG4vKipcbiAqIFNlcnZpY2UgbGV2ZWwgYWxhcm1zIGFuZCBydWxlcyB1c2luZyBjcml0aWNhbCBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQWxhcm1zQW5kUnVsZXNcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJU2VydmljZUFsYXJtc0FuZFJ1bGVzIHtcblxuICAvKipcbiAgICogVGhlIHNlcnZpY2UgdGhlc2UgYWxhcm1zIGFuZCBydWxlcyBhcmUgZm9yXG4gICAqL1xuICBzZXJ2aWNlOiBJU2VydmljZTtcblxuICAvKipcbiAgICogVGhlIHpvbmFsIGFnZ3JlZ2F0ZSBpc29sYXRlZCBpbXBhY3QgYWxhcm1zLiBUaGVyZSBpcyAxIGFsYXJtIHBlciBBWiB0aGF0XG4gICAqIHRyaWdnZXJzIGZvciBhdmFpbGFiaWxpdHkgb3IgbGF0ZW5jeSBpbXBhY3QgdG8gYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBpbiB0aGF0IEFaXG4gICAqIHRoYXQgaW5kaWNhdGVzIGl0IGhhcyBpc29sYXRlZCBpbXBhY3QgYXMgbWVhc3VyZWQgYnkgY2FuYXJpZXMgb3Igc2VydmVyLXNpZGUuXG4gICAqL1xuICB6b25hbEFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm1zOiB7W2tleTogc3RyaW5nXTogSUFsYXJtfTtcblxuICAvKipcbiAgICogVGhlIHpvbmFsIHNlcnZlci1zaWRlIGlzb2xhdGVkIGltcGFjdCBhbGFybXMuIFRoZXJlIGlzIDEgYWxhcm0gcGVyIEFaIHRoYXQgdHJpZ2dlcnNcbiAgICogb24gYXZhaWxhYmlsaXR5IG9yIGxhdGVuY3kgaW1wYWN0IHRvIGFueSBjcml0aWNhbCBvcGVyYXRpb24gaW4gdGhhdCBBWi4gVGhlc2UgYXJlIHVzZWZ1bFxuICAgKiBmb3IgZGVwbG95bWVudCBtb25pdG9yaW5nIHRvIG5vdCBpbmFkdmVydGVudGx5IGZhaWwgd2hlbiBhIGNhbmFyeSBjYW4ndCBjb250YWN0IGFuIEFaXG4gICAqIGR1cmluZyBhIGRlcGxveW1lbnQuXG4gICAqL1xuICB6b25hbFNlcnZlclNpZGVJc29sYXRlZEltcGFjdEFsYXJtczoge1trZXk6IHN0cmluZ106IElBbGFybX07XG5cbiAgLyoqXG4gICAqIEFuIGFsYXJtIGluZGljYXRpbmcgdGhlIGNhbmFyeSBoYXMgZGlzY292ZXJlZCBhbiBhdmFpbGFiaWxpdHkgb3IgbGF0ZW5jeSBpbXBhY3Qgb24gYSBjcml0aWNhbFxuICAgKiBvcGVyYXRpb24gd2hpbGUgdGVzdGluZyB0aGUgcmVnaW9uYWwgZW5kcG9pbnQuXG4gICAqL1xuICByZWdpb25hbENhbmFyeUFsYXJtPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBpbmRpY2F0aW5nIHRoZXJlIGlzIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGltcGFjdCBvbiBhIGNyaXRpY2FsIG9wZXJhdGlvblxuICAgKiB0aGF0IGlzIG5vdCBzY29wZWQgdG8gYSBzaW5nbGUgYXZhaWxhYmlsaXR5IHpvbmUgYXMgbWVhc3VyZWQgYnkgdGhlIHNlcnZlci1zaWRlIGFuZC9vciBjYW5hcnkgKGlmIHByZXNlbnQpXG4gICAqL1xuICByZWdpb25hbEltcGFjdEFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFuIGFsYXJtIGluZGljYXRpbmcgdGhlcmUgaXMgYXZhaWxhYmlsaXR5IG9yIGxhdGVuY3kgaW1wYWN0IG9uIGEgY3JpdGljYWwgb3BlcmF0aW9uXG4gICAqIHRoYXQgaXMgbm90IHNjb3BlZCB0byBhIHNpbmdsZSBhdmFpbGFiaWxpdHkgem9uZSBhcyBtZWFzdXJlZCBieSB0aGUgc2VydmVyLXNpZGVcbiAgICovXG4gIHJlZ2lvbmFsU2VydmVyU2lkZUltcGFjdEFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIHRvcCBsZXZlbCBhbGFybSB5b3Ugc2hvdWxkIHRpZSBub3RpZmljYXRpb25zL3BhZ2luZy9hbGVydGluZyB0by4gSXQgdHJpZ2dlcnNcbiAgICogb24gYW55IGltcGFjdCB0byBhIGNyaXRpY2FsIG9wZXJhdGlvbiBlaXRoZXIgem9uYWxseSBzY29wZWQgb3IgcmVnaW9uYWxseSBzY29wZWQuXG4gICAqL1xuICBzZXJ2aWNlSW1wYWN0QWxhcm06IElBbGFybTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2VydmljZUFsYXJtc0FuZFJ1bGVzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuc2VydmljZSA9IHByb3BzLnNlcnZpY2U7XG5cbiAgICAvLyBDcml0aWNhbCBvcGVyYXRpb24gYWxhcm1zIGFuZCBydWxlc1xuICAgIGxldCBjcml0aWNhbE9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzOiBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNbXSA9IE9iamVjdC52YWx1ZXMocHJvcHMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpLmZpbHRlcigob3BlcmF0aW9uOiBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpID0+IG9wZXJhdGlvbi5vcGVyYXRpb24uY3JpdGljYWwgPT0gdHJ1ZSk7XG5cbiAgICAvLyBHZXQgdGhlIHpvbmFsIGltcGFjdCBhbGFybXMgZm9yIHRoZSBzZXJ2ZXIgc2lkZSBhbmQgaW4gYWdncmVnYXRlXG4gICAgdGhpcy56b25hbEFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm1zID0ge307XG4gICAgdGhpcy56b25hbFNlcnZlclNpZGVJc29sYXRlZEltcGFjdEFsYXJtcyA9IHt9O1xuXG4gICAgcHJvcHMuc2VydmljZS5hdmFpbGFiaWxpdHlab25lTmFtZXMuZm9yRWFjaCgoYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBsZXQgYXpMZXR0ZXI6IHN0cmluZyA9IGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZWRJZDogc3RyaW5nID0gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICB0aGlzLnpvbmFsQWdncmVnYXRlSXNvbGF0ZWRJbXBhY3RBbGFybXNbYXZhaWxhYmlsaXR5Wm9uZV0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdBWicgKyBpbmRleCArICdTZXJ2aWNlQWdncmVnYXRlSXNvbGF0ZWRJbXBhY3RBbGFybScsXG4gICAgICAgIHtcbiAgICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6XG4gICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lZElkICtcbiAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCkgK1xuICAgICAgICAgICAgJy1pc29sYXRlZC1pbXBhY3QtYWdncmVnYXRlLWFsYXJtJyxcbiAgICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZihcbiAgICAgICAgICAgIC4uLmNyaXRpY2FsT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMubWFwKCh4KSA9PiB4LmFnZ3JlZ2F0ZVpvbmFsQWxhcm1zW2F2YWlsYWJpbGl0eVpvbmVdKSxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgdGhpcy56b25hbFNlcnZlclNpZGVJc29sYXRlZEltcGFjdEFsYXJtc1thdmFpbGFiaWxpdHlab25lXSA9IG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ0FaJyArIGluZGV4ICsgJ1NlcnZpY2VTZXJ2ZXJTaWRlSXNvbGF0ZWRJbXBhY3RBbGFybScsXG4gICAgICAgIHtcbiAgICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6XG4gICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lZElkICtcbiAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCkgK1xuICAgICAgICAgICAgJy1pc29sYXRlZC1pbXBhY3Qtc2VydmVyLXNpZGUtYWxhcm0nLFxuICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgLi4uY3JpdGljYWxPcGVyYXRpb25BbGFybXNBbmRSdWxlcy5tYXAoKHgpID0+IHguc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXNbYXZhaWxhYmlsaXR5Wm9uZV0uaXNvbGF0ZWRJbXBhY3RBbGFybSksXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZ2lvbmFsSW1wYWN0QWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICB0aGlzLFxuICAgICAgXCJyZWdpb25hbC1pbXBhY3QtYWxhcm1cIixcbiAgICAgIHtcbiAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOiBgJHtwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCl9LXJlZ2lvbmFsLWltcGFjdC1hbGFybWAsXG4gICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgIC4uLmNyaXRpY2FsT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMubWFwKChvcGVyYXRpb246IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcykgPT4gXG4gICAgICAgICAgICBvcGVyYXRpb24ucmVnaW9uYWxJbXBhY3RBbGFybVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnNlcnZpY2VJbXBhY3RBbGFybSA9IG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgIHRoaXMsXG4gICAgICBcInNlcnZpY2UtaW1wYWN0LWFsYXJtXCIsXG4gICAgICB7XG4gICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYCR7cHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpfS1pbXBhY3QtYWxhcm1gLFxuICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZihcbiAgICAgICAgICB0aGlzLnJlZ2lvbmFsSW1wYWN0QWxhcm0sXG4gICAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyh0aGlzLnpvbmFsQWdncmVnYXRlSXNvbGF0ZWRJbXBhY3RBbGFybXMpXG4gICAgICAgIClcbiAgICAgIH1cbiAgICApXG5cbiAgICBsZXQgc2VydmVyU2lkZVJlZ2lvbmFsQXZhaWxhYmlsaXR5T3JMYXRlbmN5QWxhcm1zRm9yQ3JpdGljYWxPcGVyYXRpb25zOiBJQWxhcm1bXSA9IGNyaXRpY2FsT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNcbiAgICAgIC5tYXAoKG9wZXJhdGlvbjogSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzKSA9PiBvcGVyYXRpb24uc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMuYXZhaWxhYmlsaXR5T3JMYXRlbmN5QWxhcm0pO1xuXG4gICAgdGhpcy5yZWdpb25hbFNlcnZlclNpZGVJbXBhY3RBbGFybSA9IG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgIHRoaXMsXG4gICAgICBcInNlcnZlci1zaWRlLXJlZ2lvbmFsLWFsYXJtXCIsXG4gICAgICB7XG4gICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYCR7cHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpfS1zZXJ2ZXItc2lkZS1yZWdpb25hbC1pbXBhY3RgLFxuICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZiguLi5zZXJ2ZXJTaWRlUmVnaW9uYWxBdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybXNGb3JDcml0aWNhbE9wZXJhdGlvbnMpXG4gICAgICB9XG4gICAgKTtcblxuICAgIGxldCBjYW5hcnlSZWdpb25hbEF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFsYXJtc0ZvckNyaXRpY2FsT3BlcmF0aW9uczogSUFsYXJtW10gPSBjcml0aWNhbE9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzXG4gICAgICAuZmlsdGVyKChvcGVyYXRpb246IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcykgPT4gb3BlcmF0aW9uLmNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMpXG4gICAgICAubWFwKChvcGVyYXRpb246IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcykgPT4gb3BlcmF0aW9uLmNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMhLmF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFsYXJtKTtcblxuICAgIGlmIChjYW5hcnlSZWdpb25hbEF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFsYXJtc0ZvckNyaXRpY2FsT3BlcmF0aW9ucykge1xuICAgICAgdGhpcy5yZWdpb25hbENhbmFyeUFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcImNhbmFyeS1yZWdpb25hbC1hbGFybVwiLFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOiBgJHtwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCl9LWNhbmFyeS1yZWdpb25hbC1pbXBhY3RgLFxuICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKC4uLmNhbmFyeVJlZ2lvbmFsQXZhaWxhYmlsaXR5T3JMYXRlbmN5QWxhcm1zRm9yQ3JpdGljYWxPcGVyYXRpb25zKVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IContributorInsightRuleDetails } from '../../services/IContributorInsightRuleDetails';
|
|
2
|
-
import {
|
|
2
|
+
import { IOperationAvailabilityMetricDetails } from '../../services/IOperationAvailabilityMetricDetails';
|
|
3
|
+
import { IOperationLatencyMetricDetails } from '../../services/IOperationLatencyMetricDetails';
|
|
3
4
|
/**
|
|
4
5
|
* The base props for an operation regional alarms and rules configuration
|
|
5
6
|
*/
|
|
@@ -7,11 +8,11 @@ export interface BaseOperationRegionalAlarmsAndRulesProps {
|
|
|
7
8
|
/**
|
|
8
9
|
* The metric details for availability metrics
|
|
9
10
|
*/
|
|
10
|
-
readonly availabilityMetricDetails:
|
|
11
|
+
readonly availabilityMetricDetails: IOperationAvailabilityMetricDetails;
|
|
11
12
|
/**
|
|
12
13
|
* The metric details for latency metrics
|
|
13
14
|
*/
|
|
14
|
-
readonly latencyMetricDetails:
|
|
15
|
+
readonly latencyMetricDetails: IOperationLatencyMetricDetails;
|
|
15
16
|
/**
|
|
16
17
|
* (Optional) A suffix to be appended to alarm and rule names
|
|
17
18
|
*/
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGFybXNhbmRydWxlcy9wcm9wcy9CYXNlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9JQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9JT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uTGF0ZW5jeU1ldHJpY0RldGFpbHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9JT3BlcmF0aW9uTGF0ZW5jeU1ldHJpY0RldGFpbHMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIHByb3BzIGZvciBhbiBvcGVyYXRpb24gcmVnaW9uYWwgYWxhcm1zIGFuZCBydWxlcyBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbWV0cmljIGRldGFpbHMgZm9yIGF2YWlsYWJpbGl0eSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzOiBJT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscztcblxuICAvKipcbiAgICogVGhlIG1ldHJpYyBkZXRhaWxzIGZvciBsYXRlbmN5IG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IGxhdGVuY3lNZXRyaWNEZXRhaWxzOiBJT3BlcmF0aW9uTGF0ZW5jeU1ldHJpY0RldGFpbHM7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgQSBzdWZmaXggdG8gYmUgYXBwZW5kZWQgdG8gYWxhcm0gYW5kIHJ1bGUgbmFtZXNcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVTdWZmaXg6IHN0cmluZztcblxuICAvKipcbiAgICogKE9wdGlvbmFsKSBEZXRhaWxzIGZvciBjcmVhdGluZyBjb250cmlidXRvciBpbnNpZ2h0IHJ1bGVzLCB3aGljaCBoZWxwXG4gICAqIG1ha2UgdGhlIHNlcnZlci1zaWRlIGFsYXJtcyBmb3IgZGV0ZWN0aW5nIHNpbmdsZSBBWiBmYWlsdXJlcyBtb3JlIGFjY3VyYXRlXG4gICAqL1xuICByZWFkb25seSBjb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscz86IElDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscztcbn1cbiJdfQ==
|
|
@@ -1,62 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { IAvailabilityZoneMapper } from '../../azmapper/IAvailabilityZoneMapper';
|
|
3
|
-
import { IContributorInsightRuleDetails } from '../../services/IContributorInsightRuleDetails';
|
|
4
|
-
import { IOperationMetricDetails } from '../../services/IOperationMetricDetails';
|
|
5
|
-
import { Operation } from '../../services/Operation';
|
|
6
|
-
import { OutlierDetectionAlgorithm } from '../../utilities/OutlierDetectionAlgorithm';
|
|
1
|
+
import { OperationAlarmsAndRulesProps } from './OperationAlarmsAndRulesProps';
|
|
7
2
|
/**
|
|
8
3
|
* The base properties for an operation zonal alarms and rules configuration
|
|
4
|
+
* TODO: Figure out if this and "OperationAlarmsAndRulesProps" should be related/inherited
|
|
9
5
|
*/
|
|
10
6
|
export interface BaseOperationZonalAlarmsAndRulesProps {
|
|
11
7
|
/**
|
|
12
|
-
* The operation
|
|
8
|
+
* The operation alarm and rules props
|
|
13
9
|
*/
|
|
14
|
-
readonly
|
|
10
|
+
readonly operationAlarmsAndRulesProps: OperationAlarmsAndRulesProps;
|
|
15
11
|
/**
|
|
16
|
-
* The
|
|
12
|
+
* The Availability Zone the alarms and rules are being created for
|
|
17
13
|
*/
|
|
18
|
-
readonly
|
|
19
|
-
/**
|
|
20
|
-
* The latency metric details to create alarms and rules from
|
|
21
|
-
*/
|
|
22
|
-
readonly latencyMetricDetails: IOperationMetricDetails;
|
|
23
|
-
/**
|
|
24
|
-
* The Availability Zone Id the alarms and rules are being created for
|
|
25
|
-
*/
|
|
26
|
-
readonly availabilityZoneId: string;
|
|
14
|
+
readonly availabilityZone: string;
|
|
27
15
|
/**
|
|
28
16
|
* A counter used to name the CDK constructs uniquely
|
|
29
17
|
*/
|
|
30
18
|
readonly counter: number;
|
|
31
|
-
/**
|
|
32
|
-
* Used when the OutlierDetectionAlgorithm is set to STATIC, should be a
|
|
33
|
-
* number between 0 and 1, non-inclusive, representing the percentage
|
|
34
|
-
* or faults or high latency responses that an AZ must have to be considered
|
|
35
|
-
* an outlier.
|
|
36
|
-
*/
|
|
37
|
-
readonly outlierThreshold: number;
|
|
38
|
-
/**
|
|
39
|
-
* (Optional) Details for creating contributor insight rules, which help
|
|
40
|
-
* make the server-side alarms for detecting single AZ failures more accurate
|
|
41
|
-
*/
|
|
42
|
-
readonly contributorInsightRuleDetails?: IContributorInsightRuleDetails;
|
|
43
|
-
/**
|
|
44
|
-
* The outlier detection algorithm used to determine if Availability Zones
|
|
45
|
-
* or instances are outliers for latency or availability impact. Currently this property
|
|
46
|
-
* is ignored and only STATIC is used.
|
|
47
|
-
*/
|
|
48
|
-
readonly outlierDetectionAlgorithm: OutlierDetectionAlgorithm;
|
|
49
19
|
/**
|
|
50
20
|
* (Optional) A suffix to apply to alarm and rules names, like "-server" for server
|
|
51
21
|
* side metrics and alarms
|
|
52
22
|
*/
|
|
53
23
|
readonly nameSuffix?: string;
|
|
54
|
-
/**
|
|
55
|
-
* The AZ mapper
|
|
56
|
-
*/
|
|
57
|
-
readonly azMapper: IAvailabilityZoneMapper;
|
|
58
|
-
/**
|
|
59
|
-
* A function that is used to perform outlier detection
|
|
60
|
-
*/
|
|
61
|
-
readonly outlierDetectionFunction?: IFunction;
|
|
62
24
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGFybXNhbmRydWxlcy9wcm9wcy9CYXNlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBPcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzIH0gZnJvbSAnLi9PcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBwcm9wZXJ0aWVzIGZvciBhbiBvcGVyYXRpb24gem9uYWwgYWxhcm1zIGFuZCBydWxlcyBjb25maWd1cmF0aW9uXG4gKiBUT0RPOiBGaWd1cmUgb3V0IGlmIHRoaXMgYW5kIFwiT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wc1wiIHNob3VsZCBiZSByZWxhdGVkL2luaGVyaXRlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzUHJvcHMge1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW9uIGFsYXJtIGFuZCBydWxlcyBwcm9wc1xuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wczogT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wcztcblxuICAvKipcbiAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIHRoZSBhbGFybXMgYW5kIHJ1bGVzIGFyZSBiZWluZyBjcmVhdGVkIGZvclxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNvdW50ZXIgdXNlZCB0byBuYW1lIHRoZSBDREsgY29uc3RydWN0cyB1bmlxdWVseVxuICAgKi9cbiAgcmVhZG9ubHkgY291bnRlcjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEEgc3VmZml4IHRvIGFwcGx5IHRvIGFsYXJtIGFuZCBydWxlcyBuYW1lcywgbGlrZSBcIi1zZXJ2ZXJcIiBmb3Igc2VydmVyXG4gICAqIHNpZGUgbWV0cmljcyBhbmQgYWxhcm1zXG4gICAqL1xuICByZWFkb25seSBuYW1lU3VmZml4Pzogc3RyaW5nO1xufVxuIl19
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ILoadBalancerV2 } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
|
|
2
2
|
import { IFunction } from 'aws-cdk-lib/aws-lambda';
|
|
3
3
|
import { IAvailabilityZoneMapper } from '../../azmapper/IAvailabilityZoneMapper';
|
|
4
|
-
import { ContributorInsightRuleDetails } from '../../services/ContributorInsightRuleDetails';
|
|
5
4
|
import { Operation } from '../../services/Operation';
|
|
6
5
|
import { OutlierDetectionAlgorithm } from '../../utilities/OutlierDetectionAlgorithm';
|
|
7
6
|
/**
|
|
@@ -22,17 +21,39 @@ export interface OperationAlarmsAndRulesProps {
|
|
|
22
21
|
*/
|
|
23
22
|
readonly loadBalancer?: ILoadBalancerV2;
|
|
24
23
|
/**
|
|
25
|
-
*
|
|
24
|
+
* Used when the OutlierDetectionAlgorithm is set to STATIC, should be a
|
|
25
|
+
* number between 0 and 1, non-inclusive, representing the percentage
|
|
26
|
+
* of faults that an AZ must have to be considered
|
|
27
|
+
* an outlier.
|
|
26
28
|
*/
|
|
27
|
-
readonly
|
|
29
|
+
readonly availabilityOutlierThreshold: number;
|
|
28
30
|
/**
|
|
29
|
-
*
|
|
31
|
+
* Used when the OutlierDetectionAlgorithm is set to STATIC, should be a
|
|
32
|
+
* number between 0 and 1, non-inclusive, representing the percentage
|
|
33
|
+
* of high latency responses that an AZ must have to be considered
|
|
34
|
+
* an outlier.
|
|
30
35
|
*/
|
|
31
|
-
readonly
|
|
36
|
+
readonly latencyOutlierThreshold: number;
|
|
32
37
|
/**
|
|
33
|
-
* The
|
|
38
|
+
* The number of instances that need to be impacted to consider
|
|
39
|
+
* an AZ to be impacted. This helps to ensure "more than one" instance
|
|
40
|
+
* isn't making an AZ look bad.
|
|
41
|
+
*
|
|
42
|
+
* @default 2
|
|
43
|
+
*/
|
|
44
|
+
readonly numberOfInstancesToConsiderAZImpacted?: number;
|
|
45
|
+
/**
|
|
46
|
+
* The outlier detection algorithm used to determine if Availability Zones
|
|
47
|
+
* or instances are outliers for latency or availability impact. Currently this property
|
|
48
|
+
* is ignored and only STATIC is used.
|
|
49
|
+
*/
|
|
50
|
+
readonly availabilityOutlierDetectionAlgorithm: OutlierDetectionAlgorithm;
|
|
51
|
+
/**
|
|
52
|
+
* The outlier detection algorithm used to determine if Availability Zones
|
|
53
|
+
* or instances are outliers for latency or availability impact. Currently this property
|
|
54
|
+
* is ignored and only STATIC is used.
|
|
34
55
|
*/
|
|
35
|
-
readonly
|
|
56
|
+
readonly latencyOutlierDetectionAlgorithm: OutlierDetectionAlgorithm;
|
|
36
57
|
/**
|
|
37
58
|
* The AZ Mapper
|
|
38
59
|
*/
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGFybXNhbmRydWxlcy9wcm9wcy9PcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJTG9hZEJhbGFuY2VyVjIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mic7XG5pbXBvcnQgeyBJRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IElBdmFpbGFiaWxpdHlab25lTWFwcGVyIH0gZnJvbSAnLi4vLi4vYXptYXBwZXIvSUF2YWlsYWJpbGl0eVpvbmVNYXBwZXInO1xuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvT3BlcmF0aW9uJztcbmltcG9ydCB7IE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvT3V0bGllckRldGVjdGlvbkFsZ29yaXRobSc7XG5cbi8qKlxuICogVGhlIHByb3BlcnRpZXMgZm9yIHRoZSBvcGVyYXRpb24gYWxhcm1zIGFuZCBydWxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMge1xuICAvKipcbiAgICogVGhlIG9wZXJhdGlvbiB0aGUgYWxhcm1zIGFuZCBydWxlcyBhcmUgZm9yXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb246IE9wZXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxvYWQgYmFsYW5jZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3BlcmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIG5vdCBwcm92aWRlZCwgaXRzIEFSTiB3aWxsIG5vdCBiZSBpbmNsdWRlZFxuICAgKiBpbiB0b3AgbGV2ZWwgYWxhcm0gZGVzY3JpcHRpb25zIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWQgYnlcbiAgICogYXV0b21hdGlvbiB0byBpZGVudGlmeSB3aGljaCBsb2FkIGJhbGFuY2VycyBzaG91bGQgZXhlY3V0ZVxuICAgKiBhIHpvbmFsIHNoaWZ0LlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyPzogSUxvYWRCYWxhbmNlclYyO1xuXG4gIC8qKlxuICAgKiBVc2VkIHdoZW4gdGhlIE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0gaXMgc2V0IHRvIFNUQVRJQywgc2hvdWxkIGJlIGFcbiAgICogbnVtYmVyIGJldHdlZW4gMCBhbmQgMSwgbm9uLWluY2x1c2l2ZSwgcmVwcmVzZW50aW5nIHRoZSBwZXJjZW50YWdlXG4gICAqIG9mIGZhdWx0cyAgdGhhdCBhbiBBWiBtdXN0IGhhdmUgdG8gYmUgY29uc2lkZXJlZFxuICAgKiBhbiBvdXRsaWVyLlxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5T3V0bGllclRocmVzaG9sZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBVc2VkIHdoZW4gdGhlIE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0gaXMgc2V0IHRvIFNUQVRJQywgc2hvdWxkIGJlIGFcbiAgICogbnVtYmVyIGJldHdlZW4gMCBhbmQgMSwgbm9uLWluY2x1c2l2ZSwgcmVwcmVzZW50aW5nIHRoZSBwZXJjZW50YWdlXG4gICAqIG9mIGhpZ2ggbGF0ZW5jeSByZXNwb25zZXMgdGhhdCBhbiBBWiBtdXN0IGhhdmUgdG8gYmUgY29uc2lkZXJlZFxuICAgKiBhbiBvdXRsaWVyLlxuICAgKi9cbiAgcmVhZG9ubHkgbGF0ZW5jeU91dGxpZXJUaHJlc2hvbGQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBpbnN0YW5jZXMgdGhhdCBuZWVkIHRvIGJlIGltcGFjdGVkIHRvIGNvbnNpZGVyXG4gICAqIGFuIEFaIHRvIGJlIGltcGFjdGVkLiBUaGlzIGhlbHBzIHRvIGVuc3VyZSBcIm1vcmUgdGhhbiBvbmVcIiBpbnN0YW5jZVxuICAgKiBpc24ndCBtYWtpbmcgYW4gQVogbG9vayBiYWQuXG4gICAqIFxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICByZWFkb25seSBudW1iZXJPZkluc3RhbmNlc1RvQ29uc2lkZXJBWkltcGFjdGVkPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgb3V0bGllciBkZXRlY3Rpb24gYWxnb3JpdGhtIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIEF2YWlsYWJpbGl0eSBab25lc1xuICAgKiBvciBpbnN0YW5jZXMgYXJlIG91dGxpZXJzIGZvciBsYXRlbmN5IG9yIGF2YWlsYWJpbGl0eSBpbXBhY3QuIEN1cnJlbnRseSB0aGlzIHByb3BlcnR5XG4gICAqIGlzIGlnbm9yZWQgYW5kIG9ubHkgU1RBVElDIGlzIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtOiBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtO1xuXG4gIC8qKlxuICAgKiBUaGUgb3V0bGllciBkZXRlY3Rpb24gYWxnb3JpdGhtIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIEF2YWlsYWJpbGl0eSBab25lc1xuICAgKiBvciBpbnN0YW5jZXMgYXJlIG91dGxpZXJzIGZvciBsYXRlbmN5IG9yIGF2YWlsYWJpbGl0eSBpbXBhY3QuIEN1cnJlbnRseSB0aGlzIHByb3BlcnR5XG4gICAqIGlzIGlnbm9yZWQgYW5kIG9ubHkgU1RBVElDIGlzIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBsYXRlbmN5T3V0bGllckRldGVjdGlvbkFsZ29yaXRobTogT3V0bGllckRldGVjdGlvbkFsZ29yaXRobTtcblxuICAvKipcbiAgICogVGhlIEFaIE1hcHBlclxuICAgKi9cbiAgcmVhZG9ubHkgYXpNYXBwZXI6IElBdmFpbGFiaWxpdHlab25lTWFwcGVyO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBMYW1iZGEgZnVuY3Rpb24gdXNlZCB0byBwZXJmb3JtIG91dGxpZXIgZGV0ZWN0aW9uXG4gICAqIGZvciBjaGktc3F1YXJlZCBvciB6LXNjb3JlIGFsZ29yaXRobXNcbiAgICovXG4gIHJlYWRvbmx5IG91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbj86IElGdW5jdGlvbjtcbn1cbiJdfQ==
|