@robhan-cdk-lib/aws_aps 0.0.0

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.
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateLoggingConfiguration = validateLoggingConfiguration;
4
+ exports.validateCloudWatchLogDestination = validateCloudWatchLogDestination;
5
+ exports.validateLoggingFilter = validateLoggingFilter;
6
+ exports.validateLoggingDestination = validateLoggingDestination;
7
+ exports.validateQueryLoggingConfiguration = validateQueryLoggingConfiguration;
8
+ exports.validateLimitsPerLabelSetEntry = validateLimitsPerLabelSetEntry;
9
+ exports.validateLabel = validateLabel;
10
+ exports.validateLimitsPerLabelSet = validateLimitsPerLabelSet;
11
+ exports.validateWorkspaceConfiguration = validateWorkspaceConfiguration;
12
+ exports.validateAlertManagerDefinition = validateAlertManagerDefinition;
13
+ exports.validateAlias = validateAlias;
14
+ const utils_1 = require("@robhan-cdk-lib/utils");
15
+ function validateLoggingConfiguration(loggingConfiguration) {
16
+ const errors = [];
17
+ if (typeof loggingConfiguration !== 'object') {
18
+ errors.push('must be an object');
19
+ return errors; // No need to check further if not an object
20
+ }
21
+ const loggingConfigurationObject = loggingConfiguration;
22
+ errors.push(...(0, utils_1.validateObjectAttributes)({
23
+ inputObject: loggingConfigurationObject,
24
+ mandatoryAttributes: [],
25
+ optionalAttributes: ['logGroup'],
26
+ }));
27
+ return errors;
28
+ }
29
+ function validateCloudWatchLogDestination(cloudWatchLogDestination) {
30
+ const errors = [];
31
+ if (typeof cloudWatchLogDestination !== 'object') {
32
+ errors.push('must be an object');
33
+ return errors; // No need to check further if not an object
34
+ }
35
+ const cloudWatchLogDestinationObject = cloudWatchLogDestination;
36
+ errors.push(...(0, utils_1.validateObjectAttributes)({
37
+ inputObject: cloudWatchLogDestinationObject,
38
+ mandatoryAttributes: ['logGroup'],
39
+ optionalAttributes: [],
40
+ }));
41
+ return errors;
42
+ }
43
+ function validateLoggingFilter(loggingFilter) {
44
+ const errors = [];
45
+ if (typeof loggingFilter !== 'object') {
46
+ errors.push('must be an object');
47
+ return errors; // No need to check further if not an object
48
+ }
49
+ const loggingFilterObject = loggingFilter;
50
+ errors.push(...(0, utils_1.validateObjectAttributes)({
51
+ inputObject: loggingFilterObject,
52
+ mandatoryAttributes: ['qspThreshold'],
53
+ optionalAttributes: [],
54
+ }));
55
+ if (loggingFilterObject.qspThreshold !== undefined) {
56
+ if (typeof loggingFilterObject.qspThreshold !== 'number') {
57
+ errors.push('qspThreshold: must be a number');
58
+ }
59
+ else {
60
+ errors.push(...(0, utils_1.validateNumberRange)({
61
+ value: loggingFilterObject.qspThreshold,
62
+ min: 0,
63
+ messagePrefix: 'qspThreshold: ',
64
+ }));
65
+ }
66
+ }
67
+ return errors;
68
+ }
69
+ function validateLoggingDestination(loggingDestination) {
70
+ const errors = [];
71
+ if (typeof loggingDestination !== 'object') {
72
+ errors.push('must be an object');
73
+ return errors; // No need to check further if not an object
74
+ }
75
+ const loggingDestinationObject = loggingDestination;
76
+ errors.push(...(0, utils_1.validateObjectAttributes)({
77
+ inputObject: loggingDestinationObject,
78
+ mandatoryAttributes: ['cloudWatchLogs', 'filters'],
79
+ optionalAttributes: [],
80
+ }));
81
+ if (loggingDestinationObject.cloudWatchLogs !== undefined) {
82
+ errors.push(...validateCloudWatchLogDestination(loggingDestinationObject.cloudWatchLogs).map((err) => `cloudWatchLogs: ${err}`));
83
+ }
84
+ if (loggingDestinationObject.filters !== undefined) {
85
+ errors.push(...validateLoggingFilter(loggingDestinationObject.filters).map((err) => `filters: ${err}`));
86
+ }
87
+ return errors;
88
+ }
89
+ function validateQueryLoggingConfiguration(queryLoggingConfiguration) {
90
+ const errors = [];
91
+ if (typeof queryLoggingConfiguration !== 'object') {
92
+ errors.push('must be an object');
93
+ return errors; // No need to check further if not an object
94
+ }
95
+ const queryLoggingConfigurationObject = queryLoggingConfiguration;
96
+ errors.push(...(0, utils_1.validateObjectAttributes)({
97
+ inputObject: queryLoggingConfigurationObject,
98
+ mandatoryAttributes: ['destinations'],
99
+ optionalAttributes: [],
100
+ }));
101
+ if (queryLoggingConfigurationObject.destinations !== undefined) {
102
+ errors.push(...queryLoggingConfigurationObject.destinations.map((d, i) => {
103
+ return validateLoggingDestination(d).map((err) => `destinations[${i}]: ${err}`);
104
+ }).flat());
105
+ }
106
+ return errors;
107
+ }
108
+ function validateLimitsPerLabelSetEntry(limitsPerLabelSetEntry) {
109
+ const errors = [];
110
+ if (typeof limitsPerLabelSetEntry !== 'object') {
111
+ errors.push('must be an object');
112
+ return errors; // No need to check further if not an object
113
+ }
114
+ const limitsPerLabelSetEntryObject = limitsPerLabelSetEntry;
115
+ errors.push(...(0, utils_1.validateObjectAttributes)({
116
+ inputObject: limitsPerLabelSetEntryObject,
117
+ mandatoryAttributes: [],
118
+ optionalAttributes: ['maxSeries'],
119
+ }));
120
+ if (limitsPerLabelSetEntryObject.maxSeries !== undefined) {
121
+ if (typeof limitsPerLabelSetEntryObject.maxSeries !== 'number') {
122
+ errors.push('maxSeries: must be a number');
123
+ }
124
+ else {
125
+ errors.push(...(0, utils_1.validateNumberRange)({
126
+ value: limitsPerLabelSetEntryObject.maxSeries,
127
+ min: 0,
128
+ messagePrefix: 'maxSeries: ',
129
+ }));
130
+ }
131
+ }
132
+ return errors;
133
+ }
134
+ function validateLabel(label) {
135
+ const errors = [];
136
+ if (typeof label !== 'object') {
137
+ errors.push('must be an object');
138
+ return errors; // No need to check further if not an object
139
+ }
140
+ const labelObject = label;
141
+ errors.push(...(0, utils_1.validateObjectAttributes)({
142
+ inputObject: labelObject,
143
+ mandatoryAttributes: ['name', 'value'],
144
+ optionalAttributes: [],
145
+ }));
146
+ if (labelObject.name !== undefined) {
147
+ if (typeof labelObject.name !== 'string') {
148
+ errors.push('name: must be a string');
149
+ }
150
+ else {
151
+ errors.push(...(0, utils_1.validateRegExp)({
152
+ regExp: /^[a-zA-Z_][a-zA-Z0-9_]*$/,
153
+ value: labelObject.name,
154
+ messagePrefix: 'name: ',
155
+ }));
156
+ errors.push(...(0, utils_1.validateStringLength)({
157
+ value: labelObject.name,
158
+ min: 1,
159
+ }));
160
+ }
161
+ }
162
+ if (labelObject.value !== undefined) {
163
+ if (typeof labelObject.value !== 'string') {
164
+ errors.push('value: must be a string');
165
+ }
166
+ else {
167
+ errors.push(...(0, utils_1.validateStringLength)({
168
+ value: labelObject.value,
169
+ min: 1,
170
+ messagePrefix: 'value: ',
171
+ }));
172
+ }
173
+ }
174
+ return errors;
175
+ }
176
+ function validateLimitsPerLabelSet(limitsPerLabelSet) {
177
+ const errors = [];
178
+ if (typeof limitsPerLabelSet !== 'object') {
179
+ errors.push('must be an object');
180
+ return errors; // No need to check further if not an object
181
+ }
182
+ const limitsPerLabelSetObject = limitsPerLabelSet;
183
+ errors.push(...(0, utils_1.validateObjectAttributes)({
184
+ inputObject: limitsPerLabelSetObject,
185
+ mandatoryAttributes: ['labelSet', 'limits'],
186
+ optionalAttributes: [],
187
+ }));
188
+ if (limitsPerLabelSetObject.labelSet !== undefined) {
189
+ errors.push(...limitsPerLabelSetObject.labelSet.map((l, i) => {
190
+ return validateLabel(l).map((err) => `labelSet[${i}]: ${err}`);
191
+ }).flat());
192
+ }
193
+ if (limitsPerLabelSetObject.limits !== undefined) {
194
+ errors.push(...validateLimitsPerLabelSetEntry(limitsPerLabelSetObject.limits).map((err) => `limits: ${err}`));
195
+ }
196
+ return errors;
197
+ }
198
+ function validateWorkspaceConfiguration(workspaceConfiguration) {
199
+ const errors = [];
200
+ if (typeof workspaceConfiguration !== 'object') {
201
+ errors.push('must be an object');
202
+ return errors; // No need to check further if not an object
203
+ }
204
+ const workspaceConfigurationObject = workspaceConfiguration;
205
+ errors.push(...(0, utils_1.validateObjectAttributes)({
206
+ inputObject: workspaceConfigurationObject,
207
+ mandatoryAttributes: [],
208
+ optionalAttributes: ['limitsPerLabelSets', 'retentionPeriodInDays'],
209
+ }));
210
+ if (workspaceConfigurationObject.limitsPerLabelSets !== undefined) {
211
+ if (!Array.isArray(workspaceConfigurationObject.limitsPerLabelSets)) {
212
+ errors.push('limitsPerLabelSets: must be an array');
213
+ }
214
+ else {
215
+ errors.push(...(0, utils_1.validateArrayLength)({
216
+ value: workspaceConfigurationObject.limitsPerLabelSets,
217
+ min: 0,
218
+ messagePrefix: 'limitsPerLabelSets: ',
219
+ }));
220
+ errors.push(...workspaceConfigurationObject.limitsPerLabelSets.map((l, i) => {
221
+ return validateLimitsPerLabelSet(l).map((err) => `limitsPerLabelSets[${i}]: ${err}`);
222
+ }).flat());
223
+ }
224
+ }
225
+ if (workspaceConfigurationObject.retentionPeriodInDays !== undefined) {
226
+ if (typeof workspaceConfigurationObject.retentionPeriodInDays !== 'number') {
227
+ errors.push('retentionPeriodInDays: must be a number');
228
+ }
229
+ else {
230
+ errors.push(...(0, utils_1.validateNumberRange)({
231
+ value: workspaceConfigurationObject.retentionPeriodInDays,
232
+ min: 1,
233
+ messagePrefix: 'retentionPeriodInDays: ',
234
+ }));
235
+ }
236
+ }
237
+ return errors;
238
+ }
239
+ function validateAlertManagerDefinition(alertManagerDefinition) {
240
+ const errors = [];
241
+ if (typeof alertManagerDefinition !== 'string') {
242
+ errors.push('must be a string');
243
+ return errors; // No need to check further if not a string
244
+ }
245
+ return errors;
246
+ }
247
+ function validateAlias(alias) {
248
+ const errors = [];
249
+ if (typeof alias !== 'string') {
250
+ errors.push('must be a string');
251
+ return errors; // No need to check further if not a string
252
+ }
253
+ errors.push(...(0, utils_1.validateStringLength)({
254
+ value: alias,
255
+ min: 0,
256
+ max: 100,
257
+ }));
258
+ return errors;
259
+ }
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi93b3Jrc3BhY2UtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLG9FQWdCQztBQUVELDRFQWdCQztBQUVELHNEQTZCQztBQUVELGdFQXdCQztBQUVELDhFQXNCQztBQUVELHdFQTRCQztBQUVELHNDQTZDQztBQUVELDhEQTBCQztBQUVELHdFQTRDQztBQUVELHdFQVFDO0FBRUQsc0NBY0M7QUFqVEQsaURBQWlKO0FBYWpKLFNBQWdCLDRCQUE0QixDQUFDLG9CQUE2QjtJQUN4RSxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFFNUIsSUFBSSxPQUFPLG9CQUFvQixLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNqQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLDRDQUE0QztJQUM3RCxDQUFDO0lBRUQsTUFBTSwwQkFBMEIsR0FBRyxvQkFBNEMsQ0FBQztJQUNoRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBQSxnQ0FBd0IsRUFBQztRQUN0QyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLG1CQUFtQixFQUFFLEVBQUU7UUFDdkIsa0JBQWtCLEVBQUUsQ0FBQyxVQUFVLENBQUM7S0FDakMsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBZ0IsZ0NBQWdDLENBQUMsd0JBQWlDO0lBQ2hGLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUU1QixJQUFJLE9BQU8sd0JBQXdCLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDakQsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sTUFBTSxDQUFDLENBQUMsNENBQTRDO0lBQzdELENBQUM7SUFFRCxNQUFNLDhCQUE4QixHQUFHLHdCQUFv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aCwgdmFsaWRhdGVOdW1iZXJSYW5nZSwgdmFsaWRhdGVPYmplY3RBdHRyaWJ1dGVzLCB2YWxpZGF0ZVJlZ0V4cCwgdmFsaWRhdGVTdHJpbmdMZW5ndGggfSBmcm9tICdAcm9iaGFuLWNkay1saWIvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ2xvdWRXYXRjaExvZ0Rlc3RpbmF0aW9uLFxuICBMb2dnaW5nQ29uZmlndXJhdGlvbixcbiAgTG9nZ2luZ0ZpbHRlcixcbiAgTG9nZ2luZ0Rlc3RpbmF0aW9uLFxuICBRdWVyeUxvZ2dpbmdDb25maWd1cmF0aW9uLFxuICBMaW1pdHNQZXJMYWJlbFNldEVudHJ5LFxuICBMYWJlbCxcbiAgTGltaXRzUGVyTGFiZWxTZXQsXG4gIFdvcmtzcGFjZUNvbmZpZ3VyYXRpb24sXG59IGZyb20gJy4uL3dvcmtzcGFjZS1iYXNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTG9nZ2luZ0NvbmZpZ3VyYXRpb24obG9nZ2luZ0NvbmZpZ3VyYXRpb246IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICBpZiAodHlwZW9mIGxvZ2dpbmdDb25maWd1cmF0aW9uICE9PSAnb2JqZWN0Jykge1xuICAgIGVycm9ycy5wdXNoKCdtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIHJldHVybiBlcnJvcnM7IC8vIE5vIG5lZWQgdG8gY2hlY2sgZnVydGhlciBpZiBub3QgYW4gb2JqZWN0XG4gIH1cblxuICBjb25zdCBsb2dnaW5nQ29uZmlndXJhdGlvbk9iamVjdCA9IGxvZ2dpbmdDb25maWd1cmF0aW9uIGFzIExvZ2dpbmdDb25maWd1cmF0aW9uO1xuICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZU9iamVjdEF0dHJpYnV0ZXMoe1xuICAgIGlucHV0T2JqZWN0OiBsb2dnaW5nQ29uZmlndXJhdGlvbk9iamVjdCxcbiAgICBtYW5kYXRvcnlBdHRyaWJ1dGVzOiBbXSxcbiAgICBvcHRpb25hbEF0dHJpYnV0ZXM6IFsnbG9nR3JvdXAnXSxcbiAgfSkpO1xuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNsb3VkV2F0Y2hMb2dEZXN0aW5hdGlvbihjbG91ZFdhdGNoTG9nRGVzdGluYXRpb246IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICBpZiAodHlwZW9mIGNsb3VkV2F0Y2hMb2dEZXN0aW5hdGlvbiAhPT0gJ29iamVjdCcpIHtcbiAgICBlcnJvcnMucHVzaCgnbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICByZXR1cm4gZXJyb3JzOyAvLyBObyBuZWVkIHRvIGNoZWNrIGZ1cnRoZXIgaWYgbm90IGFuIG9iamVjdFxuICB9XG5cbiAgY29uc3QgY2xvdWRXYXRjaExvZ0Rlc3RpbmF0aW9uT2JqZWN0ID0gY2xvdWRXYXRjaExvZ0Rlc3RpbmF0aW9uIGFzIENsb3VkV2F0Y2hMb2dEZXN0aW5hdGlvbjtcbiAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVPYmplY3RBdHRyaWJ1dGVzKHtcbiAgICBpbnB1dE9iamVjdDogY2xvdWRXYXRjaExvZ0Rlc3RpbmF0aW9uT2JqZWN0LFxuICAgIG1hbmRhdG9yeUF0dHJpYnV0ZXM6IFsnbG9nR3JvdXAnXSxcbiAgICBvcHRpb25hbEF0dHJpYnV0ZXM6IFtdLFxuICB9KSk7XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTG9nZ2luZ0ZpbHRlcihsb2dnaW5nRmlsdGVyOiB1bmtub3duKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgaWYgKHR5cGVvZiBsb2dnaW5nRmlsdGVyICE9PSAnb2JqZWN0Jykge1xuICAgIGVycm9ycy5wdXNoKCdtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIHJldHVybiBlcnJvcnM7IC8vIE5vIG5lZWQgdG8gY2hlY2sgZnVydGhlciBpZiBub3QgYW4gb2JqZWN0XG4gIH1cblxuICBjb25zdCBsb2dnaW5nRmlsdGVyT2JqZWN0ID0gbG9nZ2luZ0ZpbHRlciBhcyBMb2dnaW5nRmlsdGVyO1xuICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZU9iamVjdEF0dHJpYnV0ZXMoe1xuICAgIGlucHV0T2JqZWN0OiBsb2dnaW5nRmlsdGVyT2JqZWN0LFxuICAgIG1hbmRhdG9yeUF0dHJpYnV0ZXM6IFsncXNwVGhyZXNob2xkJ10sXG4gICAgb3B0aW9uYWxBdHRyaWJ1dGVzOiBbXSxcbiAgfSkpO1xuXG4gIGlmIChsb2dnaW5nRmlsdGVyT2JqZWN0LnFzcFRocmVzaG9sZCAhPT0gdW5kZWZpbmVkKSB7XG5cbiAgICBpZiAodHlwZW9mIGxvZ2dpbmdGaWx0ZXJPYmplY3QucXNwVGhyZXNob2xkICE9PSAnbnVtYmVyJykge1xuICAgICAgZXJyb3JzLnB1c2goJ3FzcFRocmVzaG9sZDogbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZU51bWJlclJhbmdlKHtcbiAgICAgICAgdmFsdWU6IGxvZ2dpbmdGaWx0ZXJPYmplY3QucXNwVGhyZXNob2xkLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1lc3NhZ2VQcmVmaXg6ICdxc3BUaHJlc2hvbGQ6ICcsXG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTG9nZ2luZ0Rlc3RpbmF0aW9uKGxvZ2dpbmdEZXN0aW5hdGlvbjogdW5rbm93bik6IHN0cmluZ1tdIHtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGlmICh0eXBlb2YgbG9nZ2luZ0Rlc3RpbmF0aW9uICE9PSAnb2JqZWN0Jykge1xuICAgIGVycm9ycy5wdXNoKCdtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIHJldHVybiBlcnJvcnM7IC8vIE5vIG5lZWQgdG8gY2hlY2sgZnVydGhlciBpZiBub3QgYW4gb2JqZWN0XG4gIH1cblxuICBjb25zdCBsb2dnaW5nRGVzdGluYXRpb25PYmplY3QgPSBsb2dnaW5nRGVzdGluYXRpb24gYXMgTG9nZ2luZ0Rlc3RpbmF0aW9uO1xuICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZU9iamVjdEF0dHJpYnV0ZXMoe1xuICAgIGlucHV0T2JqZWN0OiBsb2dnaW5nRGVzdGluYXRpb25PYmplY3QsXG4gICAgbWFuZGF0b3J5QXR0cmlidXRlczogWydjbG91ZFdhdGNoTG9ncycsICdmaWx0ZXJzJ10sXG4gICAgb3B0aW9uYWxBdHRyaWJ1dGVzOiBbXSxcbiAgfSkpO1xuXG4gIGlmIChsb2dnaW5nRGVzdGluYXRpb25PYmplY3QuY2xvdWRXYXRjaExvZ3MgIT09IHVuZGVmaW5lZCkge1xuICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlQ2xvdWRXYXRjaExvZ0Rlc3RpbmF0aW9uKGxvZ2dpbmdEZXN0aW5hdGlvbk9iamVjdC5jbG91ZFdhdGNoTG9ncykubWFwKChlcnIpID0+IGBjbG91ZFdhdGNoTG9nczogJHtlcnJ9YCkpO1xuICB9XG5cbiAgaWYgKGxvZ2dpbmdEZXN0aW5hdGlvbk9iamVjdC5maWx0ZXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZUxvZ2dpbmdGaWx0ZXIobG9nZ2luZ0Rlc3RpbmF0aW9uT2JqZWN0LmZpbHRlcnMpLm1hcCgoZXJyKSA9PiBgZmlsdGVyczogJHtlcnJ9YCkpO1xuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUXVlcnlMb2dnaW5nQ29uZmlndXJhdGlvbihxdWVyeUxvZ2dpbmdDb25maWd1cmF0aW9uOiB1bmtub3duKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgaWYgKHR5cGVvZiBxdWVyeUxvZ2dpbmdDb25maWd1cmF0aW9uICE9PSAnb2JqZWN0Jykge1xuICAgIGVycm9ycy5wdXNoKCdtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIHJldHVybiBlcnJvcnM7IC8vIE5vIG5lZWQgdG8gY2hlY2sgZnVydGhlciBpZiBub3QgYW4gb2JqZWN0XG4gIH1cblxuICBjb25zdCBxdWVyeUxvZ2dpbmdDb25maWd1cmF0aW9uT2JqZWN0ID0gcXVlcnlMb2dnaW5nQ29uZmlndXJhdGlvbiBhcyBRdWVyeUxvZ2dpbmdDb25maWd1cmF0aW9uO1xuICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZU9iamVjdEF0dHJpYnV0ZXMoe1xuICAgIGlucHV0T2JqZWN0OiBxdWVyeUxvZ2dpbmdDb25maWd1cmF0aW9uT2JqZWN0LFxuICAgIG1hbmRhdG9yeUF0dHJpYnV0ZXM6IFsnZGVzdGluYXRpb25zJ10sXG4gICAgb3B0aW9uYWxBdHRyaWJ1dGVzOiBbXSxcbiAgfSkpO1xuXG4gIGlmIChxdWVyeUxvZ2dpbmdDb25maWd1cmF0aW9uT2JqZWN0LmRlc3RpbmF0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZXJyb3JzLnB1c2goLi4ucXVlcnlMb2dnaW5nQ29uZmlndXJhdGlvbk9iamVjdC5kZXN0aW5hdGlvbnMubWFwKChkLCBpKSA9PiB7XG4gICAgICByZXR1cm4gdmFsaWRhdGVMb2dnaW5nRGVzdGluYXRpb24oZCkubWFwKChlcnIpID0+IGBkZXN0aW5hdGlvbnNbJHtpfV06ICR7ZXJyfWApO1xuICAgIH0pLmZsYXQoKSk7XG4gIH1cblxuICByZXR1cm4gZXJyb3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMaW1pdHNQZXJMYWJlbFNldEVudHJ5KGxpbWl0c1BlckxhYmVsU2V0RW50cnk6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICBpZiAodHlwZW9mIGxpbWl0c1BlckxhYmVsU2V0RW50cnkgIT09ICdvYmplY3QnKSB7XG4gICAgZXJyb3JzLnB1c2goJ211c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgcmV0dXJuIGVycm9yczsgLy8gTm8gbmVlZCB0byBjaGVjayBmdXJ0aGVyIGlmIG5vdCBhbiBvYmplY3RcbiAgfVxuXG4gIGNvbnN0IGxpbWl0c1BlckxhYmVsU2V0RW50cnlPYmplY3QgPSBsaW1pdHNQZXJMYWJlbFNldEVudHJ5IGFzIExpbWl0c1BlckxhYmVsU2V0RW50cnk7XG4gIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlT2JqZWN0QXR0cmlidXRlcyh7XG4gICAgaW5wdXRPYmplY3Q6IGxpbWl0c1BlckxhYmVsU2V0RW50cnlPYmplY3QsXG4gICAgbWFuZGF0b3J5QXR0cmlidXRlczogW10sXG4gICAgb3B0aW9uYWxBdHRyaWJ1dGVzOiBbJ21heFNlcmllcyddLFxuICB9KSk7XG5cbiAgaWYgKGxpbWl0c1BlckxhYmVsU2V0RW50cnlPYmplY3QubWF4U2VyaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIGxpbWl0c1BlckxhYmVsU2V0RW50cnlPYmplY3QubWF4U2VyaWVzICE9PSAnbnVtYmVyJykge1xuICAgICAgZXJyb3JzLnB1c2goJ21heFNlcmllczogbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZU51bWJlclJhbmdlKHtcbiAgICAgICAgdmFsdWU6IGxpbWl0c1BlckxhYmVsU2V0RW50cnlPYmplY3QubWF4U2VyaWVzLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1lc3NhZ2VQcmVmaXg6ICdtYXhTZXJpZXM6ICcsXG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGFiZWwobGFiZWw6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICBpZiAodHlwZW9mIGxhYmVsICE9PSAnb2JqZWN0Jykge1xuICAgIGVycm9ycy5wdXNoKCdtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIHJldHVybiBlcnJvcnM7IC8vIE5vIG5lZWQgdG8gY2hlY2sgZnVydGhlciBpZiBub3QgYW4gb2JqZWN0XG4gIH1cblxuICBjb25zdCBsYWJlbE9iamVjdCA9IGxhYmVsIGFzIExhYmVsO1xuICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZU9iamVjdEF0dHJpYnV0ZXMoe1xuICAgIGlucHV0T2JqZWN0OiBsYWJlbE9iamVjdCxcbiAgICBtYW5kYXRvcnlBdHRyaWJ1dGVzOiBbJ25hbWUnLCAndmFsdWUnXSxcbiAgICBvcHRpb25hbEF0dHJpYnV0ZXM6IFtdLFxuICB9KSk7XG5cbiAgaWYgKGxhYmVsT2JqZWN0Lm5hbWUgIT09IHVuZGVmaW5lZCkge1xuXG4gICAgaWYgKHR5cGVvZiBsYWJlbE9iamVjdC5uYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgZXJyb3JzLnB1c2goJ25hbWU6IG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVSZWdFeHAoe1xuICAgICAgICByZWdFeHA6IC9eW2EtekEtWl9dW2EtekEtWjAtOV9dKiQvLFxuICAgICAgICB2YWx1ZTogbGFiZWxPYmplY3QubmFtZSxcbiAgICAgICAgbWVzc2FnZVByZWZpeDogJ25hbWU6ICcsXG4gICAgICB9KSk7XG4gICAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZVN0cmluZ0xlbmd0aCh7XG4gICAgICAgIHZhbHVlOiBsYWJlbE9iamVjdC5uYW1lLFxuICAgICAgICBtaW46IDEsXG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGxhYmVsT2JqZWN0LnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIGxhYmVsT2JqZWN0LnZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgZXJyb3JzLnB1c2goJ3ZhbHVlOiBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlU3RyaW5nTGVuZ3RoKHtcbiAgICAgICAgdmFsdWU6IGxhYmVsT2JqZWN0LnZhbHVlLFxuICAgICAgICBtaW46IDEsXG4gICAgICAgIG1lc3NhZ2VQcmVmaXg6ICd2YWx1ZTogJyxcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXJyb3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMaW1pdHNQZXJMYWJlbFNldChsaW1pdHNQZXJMYWJlbFNldDogdW5rbm93bik6IHN0cmluZ1tdIHtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGlmICh0eXBlb2YgbGltaXRzUGVyTGFiZWxTZXQgIT09ICdvYmplY3QnKSB7XG4gICAgZXJyb3JzLnB1c2goJ211c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgcmV0dXJuIGVycm9yczsgLy8gTm8gbmVlZCB0byBjaGVjayBmdXJ0aGVyIGlmIG5vdCBhbiBvYmplY3RcbiAgfVxuXG4gIGNvbnN0IGxpbWl0c1BlckxhYmVsU2V0T2JqZWN0ID0gbGltaXRzUGVyTGFiZWxTZXQgYXMgTGltaXRzUGVyTGFiZWxTZXQ7XG4gIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlT2JqZWN0QXR0cmlidXRlcyh7XG4gICAgaW5wdXRPYmplY3Q6IGxpbWl0c1BlckxhYmVsU2V0T2JqZWN0LFxuICAgIG1hbmRhdG9yeUF0dHJpYnV0ZXM6IFsnbGFiZWxTZXQnLCAnbGltaXRzJ10sXG4gICAgb3B0aW9uYWxBdHRyaWJ1dGVzOiBbXSxcbiAgfSkpO1xuXG4gIGlmIChsaW1pdHNQZXJMYWJlbFNldE9iamVjdC5sYWJlbFNldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZXJyb3JzLnB1c2goLi4ubGltaXRzUGVyTGFiZWxTZXRPYmplY3QubGFiZWxTZXQubWFwKChsLCBpKSA9PiB7XG4gICAgICByZXR1cm4gdmFsaWRhdGVMYWJlbChsKS5tYXAoKGVycikgPT4gYGxhYmVsU2V0WyR7aX1dOiAke2Vycn1gKTtcbiAgICB9KS5mbGF0KCkpO1xuICB9XG5cbiAgaWYgKGxpbWl0c1BlckxhYmVsU2V0T2JqZWN0LmxpbWl0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVMaW1pdHNQZXJMYWJlbFNldEVudHJ5KGxpbWl0c1BlckxhYmVsU2V0T2JqZWN0LmxpbWl0cykubWFwKChlcnIpID0+IGBsaW1pdHM6ICR7ZXJyfWApKTtcbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVdvcmtzcGFjZUNvbmZpZ3VyYXRpb24od29ya3NwYWNlQ29uZmlndXJhdGlvbjogdW5rbm93bik6IHN0cmluZ1tdIHtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGlmICh0eXBlb2Ygd29ya3NwYWNlQ29uZmlndXJhdGlvbiAhPT0gJ29iamVjdCcpIHtcbiAgICBlcnJvcnMucHVzaCgnbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICByZXR1cm4gZXJyb3JzOyAvLyBObyBuZWVkIHRvIGNoZWNrIGZ1cnRoZXIgaWYgbm90IGFuIG9iamVjdFxuICB9XG5cbiAgY29uc3Qgd29ya3NwYWNlQ29uZmlndXJhdGlvbk9iamVjdCA9IHdvcmtzcGFjZUNvbmZpZ3VyYXRpb24gYXMgV29ya3NwYWNlQ29uZmlndXJhdGlvbjtcbiAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVPYmplY3RBdHRyaWJ1dGVzKHtcbiAgICBpbnB1dE9iamVjdDogd29ya3NwYWNlQ29uZmlndXJhdGlvbk9iamVjdCxcbiAgICBtYW5kYXRvcnlBdHRyaWJ1dGVzOiBbXSxcbiAgICBvcHRpb25hbEF0dHJpYnV0ZXM6IFsnbGltaXRzUGVyTGFiZWxTZXRzJywgJ3JldGVudGlvblBlcmlvZEluRGF5cyddLFxuICB9KSk7XG5cbiAgaWYgKHdvcmtzcGFjZUNvbmZpZ3VyYXRpb25PYmplY3QubGltaXRzUGVyTGFiZWxTZXRzICE9PSB1bmRlZmluZWQpIHtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh3b3Jrc3BhY2VDb25maWd1cmF0aW9uT2JqZWN0LmxpbWl0c1BlckxhYmVsU2V0cykpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdsaW1pdHNQZXJMYWJlbFNldHM6IG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVBcnJheUxlbmd0aCh7XG4gICAgICAgIHZhbHVlOiB3b3Jrc3BhY2VDb25maWd1cmF0aW9uT2JqZWN0LmxpbWl0c1BlckxhYmVsU2V0cyxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtZXNzYWdlUHJlZml4OiAnbGltaXRzUGVyTGFiZWxTZXRzOiAnLFxuICAgICAgfSkpO1xuICAgICAgZXJyb3JzLnB1c2goLi4ud29ya3NwYWNlQ29uZmlndXJhdGlvbk9iamVjdC5saW1pdHNQZXJMYWJlbFNldHMubWFwKChsLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZUxpbWl0c1BlckxhYmVsU2V0KGwpLm1hcCgoZXJyKSA9PiBgbGltaXRzUGVyTGFiZWxTZXRzWyR7aX1dOiAke2Vycn1gKTtcbiAgICAgIH0pLmZsYXQoKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHdvcmtzcGFjZUNvbmZpZ3VyYXRpb25PYmplY3QucmV0ZW50aW9uUGVyaW9kSW5EYXlzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIHdvcmtzcGFjZUNvbmZpZ3VyYXRpb25PYmplY3QucmV0ZW50aW9uUGVyaW9kSW5EYXlzICE9PSAnbnVtYmVyJykge1xuICAgICAgZXJyb3JzLnB1c2goJ3JldGVudGlvblBlcmlvZEluRGF5czogbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZU51bWJlclJhbmdlKHtcbiAgICAgICAgdmFsdWU6IHdvcmtzcGFjZUNvbmZpZ3VyYXRpb25PYmplY3QucmV0ZW50aW9uUGVyaW9kSW5EYXlzLFxuICAgICAgICBtaW46IDEsXG4gICAgICAgIG1lc3NhZ2VQcmVmaXg6ICdyZXRlbnRpb25QZXJpb2RJbkRheXM6ICcsXG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQWxlcnRNYW5hZ2VyRGVmaW5pdGlvbihhbGVydE1hbmFnZXJEZWZpbml0aW9uOiB1bmtub3duKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgaWYgKHR5cGVvZiBhbGVydE1hbmFnZXJEZWZpbml0aW9uICE9PSAnc3RyaW5nJykge1xuICAgIGVycm9ycy5wdXNoKCdtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgcmV0dXJuIGVycm9yczsgLy8gTm8gbmVlZCB0byBjaGVjayBmdXJ0aGVyIGlmIG5vdCBhIHN0cmluZ1xuICB9XG4gIHJldHVybiBlcnJvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFsaWFzKGFsaWFzOiB1bmtub3duKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgaWYgKHR5cGVvZiBhbGlhcyAhPT0gJ3N0cmluZycpIHtcbiAgICBlcnJvcnMucHVzaCgnbXVzdCBiZSBhIHN0cmluZycpO1xuICAgIHJldHVybiBlcnJvcnM7IC8vIE5vIG5lZWQgdG8gY2hlY2sgZnVydGhlciBpZiBub3QgYSBzdHJpbmdcbiAgfVxuXG4gIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlU3RyaW5nTGVuZ3RoKHtcbiAgICB2YWx1ZTogYWxpYXMsXG4gICAgbWluOiAwLFxuICAgIG1heDogMTAwLFxuICB9KSk7XG4gIHJldHVybiBlcnJvcnM7XG59Il19
@@ -0,0 +1,217 @@
1
+ import { IResource, Resource } from 'aws-cdk-lib';
2
+ import { IKey } from 'aws-cdk-lib/aws-kms';
3
+ import { ILogGroup } from 'aws-cdk-lib/aws-logs';
4
+ /**
5
+ * Contains information about the rules and alerting logging configuration for the workspace.
6
+ */
7
+ export interface LoggingConfiguration {
8
+ /**
9
+ * The CloudWatch log group to which the vended log data will be published.
10
+ */
11
+ readonly logGroup?: ILogGroup;
12
+ }
13
+ /**
14
+ * Configuration details for logging to CloudWatch Logs.
15
+ */
16
+ export interface CloudWatchLogDestination {
17
+ /**
18
+ * The CloudWatch log group.
19
+ */
20
+ readonly logGroup: ILogGroup;
21
+ }
22
+ /**
23
+ * Filtering criteria that determine which queries are logged.
24
+ */
25
+ export interface LoggingFilter {
26
+ /**
27
+ * Integer.
28
+ *
29
+ * Minimum 0
30
+ */
31
+ readonly qspThreshold: number;
32
+ }
33
+ /**
34
+ * The logging destination in an Amazon Managed Service for Prometheus workspace.
35
+ */
36
+ export interface LoggingDestination {
37
+ /**
38
+ * Configuration details for logging to CloudWatch Logs.
39
+ */
40
+ readonly cloudWatchLogs: CloudWatchLogDestination;
41
+ /**
42
+ * Filtering criteria that determine which queries are logged.
43
+ */
44
+ readonly filters: LoggingFilter;
45
+ }
46
+ /**
47
+ * The query logging configuration in an Amazon Managed Service for Prometheus workspace.
48
+ */
49
+ export interface QueryLoggingConfiguration {
50
+ /**
51
+ * Defines a destination and its associated filtering criteria for query logging.
52
+ *
53
+ * Minimum 1 and maximum 1 item in array.
54
+ */
55
+ readonly destinations: LoggingDestination[];
56
+ }
57
+ /**
58
+ * This structure contains the limits that apply to time series that match one label set.
59
+ */
60
+ export interface LimitsPerLabelSetEntry {
61
+ /**
62
+ * The maximum number of active series that can be ingested that match this label set.
63
+ * Setting this to 0 causes no label set limit to be enforced, but it does cause Amazon Managed
64
+ * Service for Prometheus to vend label set metrics to CloudWatch Logs.
65
+ *
66
+ * Minimum 0
67
+ */
68
+ readonly maxSeries?: number;
69
+ }
70
+ /**
71
+ * A label is a name:value pair used to add context to ingested metrics. This structure defines the
72
+ * name and value for one label that is used in a label set. You can set ingestion limits on time
73
+ * series that match defined label sets, to help prevent a workspace from being overwhelmed with
74
+ * unexpected spikes in time series ingestion.
75
+ */
76
+ export interface Label {
77
+ /**
78
+ * The name for this label.
79
+ *
80
+ * Pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
81
+ *
82
+ * At least one character.
83
+ */
84
+ readonly name: string;
85
+ /**
86
+ * The value for this label.
87
+ *
88
+ * At least one character.
89
+ */
90
+ readonly value: string;
91
+ }
92
+ /**
93
+ * This defines a label set for the workspace, and defines the ingestion limit for active time
94
+ * series that match that label set. Each label name in a label set must be unique.
95
+ */
96
+ export interface LimitsPerLabelSet {
97
+ /**
98
+ * This defines one label set that will have an enforced ingestion limit. You can set ingestion
99
+ * limits on time series that match defined label sets, to help prevent a workspace from being
100
+ * overwhelmed with unexpected spikes in time series ingestion.
101
+ *
102
+ * Label values accept all UTF-8 characters with one exception. If the label name is metric
103
+ * name label __name__, then the metric part of the name must conform to the following pattern:
104
+ * [a-zA-Z_:][a-zA-Z0-9_:]*
105
+ *
106
+ * Minimum 0
107
+ */
108
+ readonly labelSet: Label[];
109
+ /**
110
+ * This structure contains the information about the limits that apply to time series that
111
+ * match this label set.
112
+ */
113
+ readonly limits: LimitsPerLabelSetEntry;
114
+ }
115
+ /**
116
+ * Use this structure to define label sets and the ingestion limits for time series that match
117
+ * label sets, and to specify the retention period of the workspace.
118
+ */
119
+ export interface WorkspaceConfiguration {
120
+ /**
121
+ * This is an array of structures, where each structure defines a label set for the workspace,
122
+ * and defines the ingestion limit for active time series for each of those label sets. Each
123
+ * label name in a label set must be unique.
124
+ *
125
+ * Minimum 0
126
+ */
127
+ readonly limitsPerLabelSets?: LimitsPerLabelSet[];
128
+ /**
129
+ * Specifies how many days that metrics will be retained in the workspace.
130
+ *
131
+ * Minimum 1
132
+ */
133
+ readonly retentionPeriodInDays?: number;
134
+ }
135
+ export interface IWorkspace extends IResource {
136
+ /**
137
+ * The alert manager definition, a YAML configuration for the alert manager in your Amazon
138
+ * Managed Service for Prometheus workspace.
139
+ */
140
+ readonly alertManagerDefinition?: string;
141
+ /**
142
+ * The alias that is assigned to this workspace to help identify it. It does not need to be
143
+ * unique.
144
+ */
145
+ readonly alias?: string;
146
+ /**
147
+ * The customer managed AWS KMS key to use for encrypting data within your workspace.
148
+ */
149
+ readonly kmsKey?: IKey;
150
+ /**
151
+ * Contains information about the current rules and alerting logging configuration for the
152
+ * workspace.
153
+ *
154
+ * Note: These logging configurations are only for rules and alerting logs.
155
+ */
156
+ readonly loggingConfiguration?: LoggingConfiguration;
157
+ /**
158
+ * The definition of logging configuration in an Amazon Managed Service for Prometheus workspace.
159
+ */
160
+ readonly queryLoggingConfiguration?: QueryLoggingConfiguration;
161
+ /**
162
+ * Use this structure to define label sets and the ingestion limits for time series that match
163
+ * label sets, and to specify the retention period of the workspace.
164
+ */
165
+ readonly workspaceConfiguration?: WorkspaceConfiguration;
166
+ /**
167
+ * The unique ID for the workspace.
168
+ * @attribute
169
+ */
170
+ readonly workspaceId: string;
171
+ /**
172
+ * The ARN of the workspace.
173
+ * @attribute
174
+ */
175
+ readonly workspaceArn: string;
176
+ }
177
+ export declare abstract class WorkspaceBase extends Resource implements IWorkspace {
178
+ /**
179
+ * The alert manager definition, a YAML configuration for the alert manager in your Amazon
180
+ * Managed Service for Prometheus workspace.
181
+ */
182
+ abstract readonly alertManagerDefinition?: string;
183
+ /**
184
+ * The alias that is assigned to this workspace to help identify it. It does not need to be
185
+ * unique.
186
+ */
187
+ abstract readonly alias?: string;
188
+ /**
189
+ * The customer managed AWS KMS key to use for encrypting data within your workspace.
190
+ */
191
+ abstract readonly kmsKey?: IKey;
192
+ /**
193
+ * Contains information about the current rules and alerting logging configuration for the
194
+ * workspace.
195
+ *
196
+ * Note: These logging configurations are only for rules and alerting logs.
197
+ */
198
+ abstract readonly loggingConfiguration?: LoggingConfiguration;
199
+ /**
200
+ * The definition of logging configuration in an Amazon Managed Service for Prometheus workspace.
201
+ */
202
+ abstract readonly queryLoggingConfiguration?: QueryLoggingConfiguration;
203
+ /**
204
+ * Use this structure to define label sets and the ingestion limits for time series that match
205
+ * label sets, and to specify the retention period of the workspace.
206
+ */
207
+ abstract readonly workspaceConfiguration?: WorkspaceConfiguration;
208
+ /**
209
+ * The unique ID for the workspace.
210
+ */
211
+ abstract readonly workspaceId: string;
212
+ /**
213
+ * The ARN of the workspace.
214
+ */
215
+ abstract readonly workspaceArn: string;
216
+ protected getWorkspaceId(workspaceArn: string): string;
217
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.WorkspaceBase = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ class WorkspaceBase extends aws_cdk_lib_1.Resource {
8
+ getWorkspaceId(workspaceArn) {
9
+ return workspaceArn.substring(workspaceArn.lastIndexOf('/') + 1);
10
+ }
11
+ }
12
+ exports.WorkspaceBase = WorkspaceBase;
13
+ _a = JSII_RTTI_SYMBOL_1;
14
+ WorkspaceBase[_a] = { fqn: "@robhan-cdk-lib/aws_aps.WorkspaceBase", version: "0.0.0" };
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd29ya3NwYWNlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBa0Q7QUFvTWxELE1BQXNCLGFBQWMsU0FBUSxzQkFBUTtJQStDeEMsY0FBYyxDQUFDLFlBQW9CO1FBQzNDLE9BQU8sWUFBWSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7O0FBakRILHNDQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElSZXNvdXJjZSwgUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJS2V5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgeyBJTG9nR3JvdXAgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5cbi8qKlxuICogQ29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJ1bGVzIGFuZCBhbGVydGluZyBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB3b3Jrc3BhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2luZ0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIENsb3VkV2F0Y2ggbG9nIGdyb3VwIHRvIHdoaWNoIHRoZSB2ZW5kZWQgbG9nIGRhdGEgd2lsbCBiZSBwdWJsaXNoZWQuXG4gICAqL1xuICByZWFkb25seSBsb2dHcm91cD86IElMb2dHcm91cDtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGRldGFpbHMgZm9yIGxvZ2dpbmcgdG8gQ2xvdWRXYXRjaCBMb2dzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkV2F0Y2hMb2dEZXN0aW5hdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRXYXRjaCBsb2cgZ3JvdXAuXG4gICAqL1xuICByZWFkb25seSBsb2dHcm91cDogSUxvZ0dyb3VwO1xufVxuXG4vKipcbiAqIEZpbHRlcmluZyBjcml0ZXJpYSB0aGF0IGRldGVybWluZSB3aGljaCBxdWVyaWVzIGFyZSBsb2dnZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2luZ0ZpbHRlciB7XG4gIC8qKlxuICAgKiBJbnRlZ2VyLlxuICAgKlxuICAgKiBNaW5pbXVtIDBcbiAgICovXG4gIHJlYWRvbmx5IHFzcFRocmVzaG9sZDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSBsb2dnaW5nIGRlc3RpbmF0aW9uIGluIGFuIEFtYXpvbiBNYW5hZ2VkIFNlcnZpY2UgZm9yIFByb21ldGhldXMgd29ya3NwYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dpbmdEZXN0aW5hdGlvbiB7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGRldGFpbHMgZm9yIGxvZ2dpbmcgdG8gQ2xvdWRXYXRjaCBMb2dzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRXYXRjaExvZ3M6IENsb3VkV2F0Y2hMb2dEZXN0aW5hdGlvbjtcbiAgLyoqXG4gICAqIEZpbHRlcmluZyBjcml0ZXJpYSB0aGF0IGRldGVybWluZSB3aGljaCBxdWVyaWVzIGFyZSBsb2dnZWQuXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJzOiBMb2dnaW5nRmlsdGVyO1xufVxuXG4vKipcbiAqIFRoZSBxdWVyeSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gaW4gYW4gQW1hem9uIE1hbmFnZWQgU2VydmljZSBmb3IgUHJvbWV0aGV1cyB3b3Jrc3BhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlMb2dnaW5nQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgZGVzdGluYXRpb24gYW5kIGl0cyBhc3NvY2lhdGVkIGZpbHRlcmluZyBjcml0ZXJpYSBmb3IgcXVlcnkgbG9nZ2luZy5cbiAgICpcbiAgICogTWluaW11bSAxIGFuZCBtYXhpbXVtIDEgaXRlbSBpbiBhcnJheS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uczogTG9nZ2luZ0Rlc3RpbmF0aW9uW107XG59XG5cbi8qKlxuICogIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBsaW1pdHMgdGhhdCBhcHBseSB0byB0aW1lIHNlcmllcyB0aGF0IG1hdGNoIG9uZSBsYWJlbCBzZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGltaXRzUGVyTGFiZWxTZXRFbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgYWN0aXZlIHNlcmllcyB0aGF0IGNhbiBiZSBpbmdlc3RlZCB0aGF0IG1hdGNoIHRoaXMgbGFiZWwgc2V0LlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gMCBjYXVzZXMgbm8gbGFiZWwgc2V0IGxpbWl0IHRvIGJlIGVuZm9yY2VkLCBidXQgaXQgZG9lcyBjYXVzZSBBbWF6b24gTWFuYWdlZFxuICAgKiBTZXJ2aWNlIGZvciBQcm9tZXRoZXVzIHRvIHZlbmQgbGFiZWwgc2V0IG1ldHJpY3MgdG8gQ2xvdWRXYXRjaCBMb2dzLlxuICAgKlxuICAgKiBNaW5pbXVtIDBcbiAgICovXG4gIHJlYWRvbmx5IG1heFNlcmllcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIGxhYmVsIGlzIGEgbmFtZTp2YWx1ZSBwYWlyIHVzZWQgdG8gYWRkIGNvbnRleHQgdG8gaW5nZXN0ZWQgbWV0cmljcy4gVGhpcyBzdHJ1Y3R1cmUgZGVmaW5lcyB0aGVcbiAqIG5hbWUgYW5kIHZhbHVlIGZvciBvbmUgbGFiZWwgdGhhdCBpcyB1c2VkIGluIGEgbGFiZWwgc2V0LiBZb3UgY2FuIHNldCBpbmdlc3Rpb24gbGltaXRzIG9uIHRpbWVcbiAqIHNlcmllcyB0aGF0IG1hdGNoIGRlZmluZWQgbGFiZWwgc2V0cywgdG8gaGVscCBwcmV2ZW50IGEgd29ya3NwYWNlIGZyb20gYmVpbmcgb3ZlcndoZWxtZWQgd2l0aFxuICogdW5leHBlY3RlZCBzcGlrZXMgaW4gdGltZSBzZXJpZXMgaW5nZXN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhYmVsIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIGZvciB0aGlzIGxhYmVsLlxuICAgKlxuICAgKiBQYXR0ZXJuOiBeW2EtekEtWl9dW2EtekEtWjAtOV9dKiRcbiAgICpcbiAgICogQXQgbGVhc3Qgb25lIGNoYXJhY3Rlci5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhpcyBsYWJlbC5cbiAgICpcbiAgICogQXQgbGVhc3Qgb25lIGNoYXJhY3Rlci5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhpcyBkZWZpbmVzIGEgbGFiZWwgc2V0IGZvciB0aGUgd29ya3NwYWNlLCBhbmQgZGVmaW5lcyB0aGUgaW5nZXN0aW9uIGxpbWl0IGZvciBhY3RpdmUgdGltZVxuICogc2VyaWVzIHRoYXQgbWF0Y2ggdGhhdCBsYWJlbCBzZXQuIEVhY2ggbGFiZWwgbmFtZSBpbiBhIGxhYmVsIHNldCBtdXN0IGJlIHVuaXF1ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW1pdHNQZXJMYWJlbFNldCB7XG4gIC8qKlxuICAgKiBUaGlzIGRlZmluZXMgb25lIGxhYmVsIHNldCB0aGF0IHdpbGwgaGF2ZSBhbiBlbmZvcmNlZCBpbmdlc3Rpb24gbGltaXQuIFlvdSBjYW4gc2V0IGluZ2VzdGlvblxuICAgKiBsaW1pdHMgb24gdGltZSBzZXJpZXMgdGhhdCBtYXRjaCBkZWZpbmVkIGxhYmVsIHNldHMsIHRvIGhlbHAgcHJldmVudCBhIHdvcmtzcGFjZSBmcm9tIGJlaW5nXG4gICAqIG92ZXJ3aGVsbWVkIHdpdGggdW5leHBlY3RlZCBzcGlrZXMgaW4gdGltZSBzZXJpZXMgaW5nZXN0aW9uLlxuICAgKlxuICAgKiBMYWJlbCB2YWx1ZXMgYWNjZXB0IGFsbCBVVEYtOCBjaGFyYWN0ZXJzIHdpdGggb25lIGV4Y2VwdGlvbi4gSWYgdGhlIGxhYmVsIG5hbWUgaXMgbWV0cmljXG4gICAqIG5hbWUgbGFiZWwgX19uYW1lX18sIHRoZW4gdGhlIG1ldHJpYyBwYXJ0IG9mIHRoZSBuYW1lIG11c3QgY29uZm9ybSB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XG4gICAqIFthLXpBLVpfOl1bYS16QS1aMC05XzpdKlxuICAgKlxuICAgKiBNaW5pbXVtIDBcbiAgICovXG4gIHJlYWRvbmx5IGxhYmVsU2V0OiBMYWJlbFtdO1xuXG4gIC8qKlxuICAgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpbWl0cyB0aGF0IGFwcGx5IHRvIHRpbWUgc2VyaWVzIHRoYXRcbiAgICogbWF0Y2ggdGhpcyBsYWJlbCBzZXQuXG4gICAqL1xuICByZWFkb25seSBsaW1pdHM6IExpbWl0c1BlckxhYmVsU2V0RW50cnk7XG59XG5cbi8qKlxuICogVXNlIHRoaXMgc3RydWN0dXJlIHRvIGRlZmluZSBsYWJlbCBzZXRzIGFuZCB0aGUgaW5nZXN0aW9uIGxpbWl0cyBmb3IgdGltZSBzZXJpZXMgdGhhdCBtYXRjaFxuICogbGFiZWwgc2V0cywgYW5kIHRvIHNwZWNpZnkgdGhlIHJldGVudGlvbiBwZXJpb2Qgb2YgdGhlIHdvcmtzcGFjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gYXJyYXkgb2Ygc3RydWN0dXJlcywgd2hlcmUgZWFjaCBzdHJ1Y3R1cmUgZGVmaW5lcyBhIGxhYmVsIHNldCBmb3IgdGhlIHdvcmtzcGFjZSxcbiAgICogYW5kIGRlZmluZXMgdGhlIGluZ2VzdGlvbiBsaW1pdCBmb3IgYWN0aXZlIHRpbWUgc2VyaWVzIGZvciBlYWNoIG9mIHRob3NlIGxhYmVsIHNldHMuIEVhY2hcbiAgICogbGFiZWwgbmFtZSBpbiBhIGxhYmVsIHNldCBtdXN0IGJlIHVuaXF1ZS5cbiAgICpcbiAgICogTWluaW11bSAwXG4gICAqL1xuICByZWFkb25seSBsaW1pdHNQZXJMYWJlbFNldHM/OiBMaW1pdHNQZXJMYWJlbFNldFtdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IG1hbnkgZGF5cyB0aGF0IG1ldHJpY3Mgd2lsbCBiZSByZXRhaW5lZCBpbiB0aGUgd29ya3NwYWNlLlxuICAgKlxuICAgKiBNaW5pbXVtIDFcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvblBlcmlvZEluRGF5cz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJV29ya3NwYWNlIGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBhbGVydCBtYW5hZ2VyIGRlZmluaXRpb24sIGEgWUFNTCBjb25maWd1cmF0aW9uIGZvciB0aGUgYWxlcnQgbWFuYWdlciBpbiB5b3VyIEFtYXpvblxuICAgKiBNYW5hZ2VkIFNlcnZpY2UgZm9yIFByb21ldGhldXMgd29ya3NwYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxlcnRNYW5hZ2VyRGVmaW5pdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFsaWFzIHRoYXQgaXMgYXNzaWduZWQgdG8gdGhpcyB3b3Jrc3BhY2UgdG8gaGVscCBpZGVudGlmeSBpdC4gSXQgZG9lcyBub3QgbmVlZCB0byBiZVxuICAgKiB1bmlxdWUuXG4gICAqL1xuICByZWFkb25seSBhbGlhcz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGN1c3RvbWVyIG1hbmFnZWQgQVdTIEtNUyBrZXkgdG8gdXNlIGZvciBlbmNyeXB0aW5nIGRhdGEgd2l0aGluIHlvdXIgd29ya3NwYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5PzogSUtleTtcblxuICAvKipcbiAgICogQ29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgcnVsZXMgYW5kIGFsZXJ0aW5nIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlXG4gICAqIHdvcmtzcGFjZS5cbiAgICpcbiAgICogTm90ZTogVGhlc2UgbG9nZ2luZyBjb25maWd1cmF0aW9ucyBhcmUgb25seSBmb3IgcnVsZXMgYW5kIGFsZXJ0aW5nIGxvZ3MuXG4gICAqL1xuICByZWFkb25seSBsb2dnaW5nQ29uZmlndXJhdGlvbj86IExvZ2dpbmdDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmaW5pdGlvbiBvZiBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gaW4gYW4gQW1hem9uIE1hbmFnZWQgU2VydmljZSBmb3IgUHJvbWV0aGV1cyB3b3Jrc3BhY2UuXG4gICAqL1xuICByZWFkb25seSBxdWVyeUxvZ2dpbmdDb25maWd1cmF0aW9uPzogUXVlcnlMb2dnaW5nQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVXNlIHRoaXMgc3RydWN0dXJlIHRvIGRlZmluZSBsYWJlbCBzZXRzIGFuZCB0aGUgaW5nZXN0aW9uIGxpbWl0cyBmb3IgdGltZSBzZXJpZXMgdGhhdCBtYXRjaFxuICAgKiBsYWJlbCBzZXRzLCBhbmQgdG8gc3BlY2lmeSB0aGUgcmV0ZW50aW9uIHBlcmlvZCBvZiB0aGUgd29ya3NwYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya3NwYWNlQ29uZmlndXJhdGlvbj86IFdvcmtzcGFjZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgSUQgZm9yIHRoZSB3b3Jrc3BhY2UuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtzcGFjZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHdvcmtzcGFjZS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya3NwYWNlQXJuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBXb3Jrc3BhY2VCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJV29ya3NwYWNlIHtcbiAgLyoqXG4gICAqIFRoZSBhbGVydCBtYW5hZ2VyIGRlZmluaXRpb24sIGEgWUFNTCBjb25maWd1cmF0aW9uIGZvciB0aGUgYWxlcnQgbWFuYWdlciBpbiB5b3VyIEFtYXpvblxuICAgKiBNYW5hZ2VkIFNlcnZpY2UgZm9yIFByb21ldGhldXMgd29ya3NwYWNlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFsZXJ0TWFuYWdlckRlZmluaXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhbGlhcyB0aGF0IGlzIGFzc2lnbmVkIHRvIHRoaXMgd29ya3NwYWNlIHRvIGhlbHAgaWRlbnRpZnkgaXQuIEl0IGRvZXMgbm90IG5lZWQgdG8gYmVcbiAgICogdW5pcXVlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tZXIgbWFuYWdlZCBBV1MgS01TIGtleSB0byB1c2UgZm9yIGVuY3J5cHRpbmcgZGF0YSB3aXRoaW4geW91ciB3b3Jrc3BhY2UuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkga21zS2V5PzogSUtleTtcblxuICAvKipcbiAgICogQ29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgcnVsZXMgYW5kIGFsZXJ0aW5nIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlXG4gICAqIHdvcmtzcGFjZS5cbiAgICpcbiAgICogTm90ZTogVGhlc2UgbG9nZ2luZyBjb25maWd1cmF0aW9ucyBhcmUgb25seSBmb3IgcnVsZXMgYW5kIGFsZXJ0aW5nIGxvZ3MuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgbG9nZ2luZ0NvbmZpZ3VyYXRpb24/OiBMb2dnaW5nQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGRlZmluaXRpb24gb2YgbG9nZ2luZyBjb25maWd1cmF0aW9uIGluIGFuIEFtYXpvbiBNYW5hZ2VkIFNlcnZpY2UgZm9yIFByb21ldGhldXMgd29ya3NwYWNlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHF1ZXJ5TG9nZ2luZ0NvbmZpZ3VyYXRpb24/OiBRdWVyeUxvZ2dpbmdDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzdHJ1Y3R1cmUgdG8gZGVmaW5lIGxhYmVsIHNldHMgYW5kIHRoZSBpbmdlc3Rpb24gbGltaXRzIGZvciB0aW1lIHNlcmllcyB0aGF0IG1hdGNoXG4gICAqIGxhYmVsIHNldHMsIGFuZCB0byBzcGVjaWZ5IHRoZSByZXRlbnRpb24gcGVyaW9kIG9mIHRoZSB3b3Jrc3BhY2UuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgd29ya3NwYWNlQ29uZmlndXJhdGlvbj86IFdvcmtzcGFjZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgSUQgZm9yIHRoZSB3b3Jrc3BhY2UuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgd29ya3NwYWNlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgd29ya3NwYWNlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHdvcmtzcGFjZUFybjogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBnZXRXb3Jrc3BhY2VJZCh3b3Jrc3BhY2VBcm46IHN0cmluZykge1xuICAgIHJldHVybiB3b3Jrc3BhY2VBcm4uc3Vic3RyaW5nKHdvcmtzcGFjZUFybi5sYXN0SW5kZXhPZignLycpICsgMSk7XG4gIH1cbn0iXX0=