UNPKG

cdk-monitoring-constructs

Version:

[![NPM version](https://badge.fury.io/js/cdk-monitoring-constructs.svg)](https://badge.fury.io/js/cdk-monitoring-constructs) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdkmonitoringconstructs/badge.svg)](https://m

61 lines 11.6 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.DynamicDashboardFactory = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch"); const constructs_1 = require("constructs"); const BitmapDashboard_1 = require("./BitmapDashboard"); const DashboardRenderingPreference_1 = require("./DashboardRenderingPreference"); const DashboardWithBitmapCopy_1 = require("./DashboardWithBitmapCopy"); const DefaultDashboardFactory_1 = require("./DefaultDashboardFactory"); class DynamicDashboardFactory extends constructs_1.Construct { constructor(scope, id, props) { super(scope, id); this.dashboards = {}; props.dashboardConfigs.forEach((dashboardConfig) => { if (this.dashboards[dashboardConfig.name]) { throw new Error(`Duplicate dashboard name found: ${dashboardConfig.name}`); } if (Object.values(DefaultDashboardFactory_1.DefaultDashboards).includes(dashboardConfig.name)) { throw new Error(`${dashboardConfig.name} is a reserved name and cannot be used`); } const renderingPreference = dashboardConfig.renderingPreference ?? DashboardRenderingPreference_1.DashboardRenderingPreference.INTERACTIVE_ONLY; const start = "-" + (dashboardConfig.range?.toIsoString() ?? aws_cdk_lib_1.Duration.hours(8).toIsoString()); const dashboard = this.createDashboard(renderingPreference, dashboardConfig.name, { dashboardName: `${props.dashboardNamePrefix}-${dashboardConfig.name}`, start, periodOverride: dashboardConfig.periodOverride ?? aws_cloudwatch_1.PeriodOverride.INHERIT, variables: dashboardConfig.variables, }); this.dashboards[dashboardConfig.name] = dashboard; }); } createDashboard(renderingPreference, id, props) { switch (renderingPreference) { case DashboardRenderingPreference_1.DashboardRenderingPreference.INTERACTIVE_ONLY: return new aws_cloudwatch_1.Dashboard(this, id, props); case DashboardRenderingPreference_1.DashboardRenderingPreference.BITMAP_ONLY: return new BitmapDashboard_1.BitmapDashboard(this, id, props); case DashboardRenderingPreference_1.DashboardRenderingPreference.INTERACTIVE_AND_BITMAP: return new DashboardWithBitmapCopy_1.DashboardWithBitmapCopy(this, id, props); } } addDynamicSegment(segment) { for (const type in this.dashboards) { const dashboard = this.dashboards[type]; dashboard.addWidgets(...segment.widgetsForDashboard(type)); } } getDashboard(type) { return this.dashboards[type]; } } exports.DynamicDashboardFactory = DynamicDashboardFactory; _a = JSII_RTTI_SYMBOL_1; DynamicDashboardFactory[_a] = { fqn: "cdk-monitoring-constructs.DynamicDashboardFactory", version: "9.15.2" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY0Rhc2hib2FyZEZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEeW5hbWljRGFzaGJvYXJkRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUF1QztBQUN2QywrREFLb0M7QUFDcEMsMkNBQXVDO0FBRXZDLHVEQUFvRDtBQUNwRCxpRkFBOEU7QUFDOUUsdUVBQW9FO0FBQ3BFLHVFQUE4RDtBQXNEOUQsTUFBYSx1QkFDWCxTQUFRLHNCQUFTO0lBS2pCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQXVDO1FBRXZDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFQVixlQUFVLEdBQThCLEVBQUUsQ0FBQztRQVNsRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDakQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekMsTUFBTSxJQUFJLEtBQUssQ0FDYixtQ0FBbUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUMxRCxDQUFDO2FBQ0g7WUFFRCxJQUNFLE1BQU0sQ0FBQyxNQUFNLENBQVMsMkNBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUN2RTtnQkFDQSxNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsZUFBZSxDQUFDLElBQUksd0NBQXdDLENBQ2hFLENBQUM7YUFDSDtZQUVELE1BQU0sbUJBQW1CLEdBQ3ZCLGVBQWUsQ0FBQyxtQkFBbUI7Z0JBQ25DLDJEQUE0QixDQUFDLGdCQUFnQixDQUFDO1lBQ2hELE1BQU0sS0FBSyxHQUNULEdBQUc7Z0JBQ0gsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtvQkFDbkMsc0JBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUVyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUNwQyxtQkFBbUIsRUFDbkIsZUFBZSxDQUFDLElBQUksRUFDcEI7Z0JBQ0UsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JFLEtBQUs7Z0JBQ0wsY0FBYyxFQUNaLGVBQWUsQ0FBQyxjQUFjLElBQUksK0JBQWMsQ0FBQyxPQUFPO2dCQUMxRCxTQUFTLEVBQUUsZUFBZSxDQUFDLFNBQVM7YUFDckMsQ0FDRixDQUFDO1lBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGVBQWUsQ0FDdkIsbUJBQWlELEVBQ2pELEVBQVUsRUFDVixLQUFxQjtRQUVyQixRQUFRLG1CQUFtQixFQUFFO1lBQzNCLEtBQUssMkRBQTRCLENBQUMsZ0JBQWdCO2dCQUNoRCxPQUFPLElBQUksMEJBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLEtBQUssMkRBQTRCLENBQUMsV0FBVztnQkFDM0MsT0FBTyxJQUFJLGlDQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QyxLQUFLLDJEQUE0QixDQUFDLHNCQUFzQjtnQkFDdEQsT0FBTyxJQUFJLGlEQUF1QixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBaUM7UUFDakQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFZO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDOztBQTVFSCwwREE2RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkLFxuICBEYXNoYm9hcmRQcm9wcyxcbiAgUGVyaW9kT3ZlcnJpZGUsXG4gIElWYXJpYWJsZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgeyBCaXRtYXBEYXNoYm9hcmQgfSBmcm9tIFwiLi9CaXRtYXBEYXNoYm9hcmRcIjtcbmltcG9ydCB7IERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2UgfSBmcm9tIFwiLi9EYXNoYm9hcmRSZW5kZXJpbmdQcmVmZXJlbmNlXCI7XG5pbXBvcnQgeyBEYXNoYm9hcmRXaXRoQml0bWFwQ29weSB9IGZyb20gXCIuL0Rhc2hib2FyZFdpdGhCaXRtYXBDb3B5XCI7XG5pbXBvcnQgeyBEZWZhdWx0RGFzaGJvYXJkcyB9IGZyb20gXCIuL0RlZmF1bHREYXNoYm9hcmRGYWN0b3J5XCI7XG5pbXBvcnQgeyBJRHluYW1pY0Rhc2hib2FyZFNlZ21lbnQgfSBmcm9tIFwiLi9EeW5hbWljRGFzaGJvYXJkU2VnbWVudFwiO1xuaW1wb3J0IHsgSUR5bmFtaWNEYXNoYm9hcmRGYWN0b3J5IH0gZnJvbSBcIi4vSUR5bmFtaWNEYXNoYm9hcmRGYWN0b3J5XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0Rhc2hib2FyZENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZGFzaGJvYXJkLiBGdWxsIGRhc2hib2FyZCBuYW1lIHdpbGwgdGFrZSB0aGUgZm9ybSBvZjpcbiAgICogYHtAbGluayBNb25pdG9yaW5nRHluYW1pY0Rhc2hib2FyZHNQcm9wcy5kYXNoYm9hcmROYW1lUHJlZml4fS17QGxpbmsgbmFtZX1gXG4gICAqXG4gICAqIE5PVEU6IFRoZSBkYXNoYm9hcmQgbmFtZXMgaW4ge0BsaW5rIERlZmF1bHREYXNoYm9hcmRGYWN0b3J5LkRlZmF1bHREYXNoYm9hcmRzfVxuICAgKiBhcmUgcmVzZXJ2ZWQgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIGRhc2hib2FyZCBuYW1lcy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRGFzaGJvYXJkIHJlbmRlcmluZyBwcmVmZXJlbmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2UuSU5URVJBQ1RJVkVfT05MWVxuICAgKi9cbiAgcmVhZG9ubHkgcmVuZGVyaW5nUHJlZmVyZW5jZT86IERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2U7XG5cbiAgLyoqXG4gICAqIFJhbmdlIG9mIHRoZSBkYXNoYm9hcmRcbiAgICogQGRlZmF1bHQgLSA4IGhvdXJzXG4gICAqL1xuICByZWFkb25seSByYW5nZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBQZXJpb2Qgb3ZlcnJpZGUgZm9yIHRoZSBkYXNoYm9hcmQuXG4gICAqIEBkZWZhdWx0IC0gcmVzcGVjdCBpbmRpdmlkdWFsIGdyYXBocyAoUGVyaW9kT3ZlcnJpZGUuSU5IRVJJVClcbiAgICovXG4gIHJlYWRvbmx5IHBlcmlvZE92ZXJyaWRlPzogUGVyaW9kT3ZlcnJpZGU7XG5cbiAgLyoqXG4gICAqIERhc2hib2FyZCB2YXJpYWJsZXMgdG8gaW5jbHVkZSBpbiB0aGUgZGFzaGJvYXJkcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB2YXJpYWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IElWYXJpYWJsZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vbml0b3JpbmdEeW5hbWljRGFzaGJvYXJkc1Byb3BzIHtcbiAgLyoqXG4gICAqIFByZWZpeCBhZGRlZCB0byBlYWNoIGRhc2hib2FyZCdzIG5hbWUuXG4gICAqIFRoaXMgYWxsb3dzIHRvIGhhdmUgYWxsIGRhc2hib2FyZHMgc29ydGVkIGNsb3NlIHRvIGVhY2ggb3RoZXIgYW5kIGFsc28gc2VwYXJhdGUgbXVsdGlwbGUgbW9uaXRvcmluZyBmYWNhZGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGFzaGJvYXJkTmFtZVByZWZpeDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGRhc2hib2FyZCB0eXBlcyB0byBnZW5lcmF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZENvbmZpZ3M6IER5bmFtaWNEYXNoYm9hcmRDb25maWd1cmF0aW9uW107XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljRGFzaGJvYXJkRmFjdG9yeVxuICBleHRlbmRzIENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElEeW5hbWljRGFzaGJvYXJkRmFjdG9yeVxue1xuICByZWFkb25seSBkYXNoYm9hcmRzOiBSZWNvcmQ8c3RyaW5nLCBEYXNoYm9hcmQ+ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBNb25pdG9yaW5nRHluYW1pY0Rhc2hib2FyZHNQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHByb3BzLmRhc2hib2FyZENvbmZpZ3MuZm9yRWFjaCgoZGFzaGJvYXJkQ29uZmlnKSA9PiB7XG4gICAgICBpZiAodGhpcy5kYXNoYm9hcmRzW2Rhc2hib2FyZENvbmZpZy5uYW1lXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYER1cGxpY2F0ZSBkYXNoYm9hcmQgbmFtZSBmb3VuZDogJHtkYXNoYm9hcmRDb25maWcubmFtZX1gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIE9iamVjdC52YWx1ZXM8c3RyaW5nPihEZWZhdWx0RGFzaGJvYXJkcykuaW5jbHVkZXMoZGFzaGJvYXJkQ29uZmlnLm5hbWUpXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAke2Rhc2hib2FyZENvbmZpZy5uYW1lfSBpcyBhIHJlc2VydmVkIG5hbWUgYW5kIGNhbm5vdCBiZSB1c2VkYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVuZGVyaW5nUHJlZmVyZW5jZSA9XG4gICAgICAgIGRhc2hib2FyZENvbmZpZy5yZW5kZXJpbmdQcmVmZXJlbmNlID8/XG4gICAgICAgIERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2UuSU5URVJBQ1RJVkVfT05MWTtcbiAgICAgIGNvbnN0IHN0YXJ0OiBzdHJpbmcgPVxuICAgICAgICBcIi1cIiArXG4gICAgICAgIChkYXNoYm9hcmRDb25maWcucmFuZ2U/LnRvSXNvU3RyaW5nKCkgPz9cbiAgICAgICAgICBEdXJhdGlvbi5ob3Vycyg4KS50b0lzb1N0cmluZygpKTtcblxuICAgICAgY29uc3QgZGFzaGJvYXJkID0gdGhpcy5jcmVhdGVEYXNoYm9hcmQoXG4gICAgICAgIHJlbmRlcmluZ1ByZWZlcmVuY2UsXG4gICAgICAgIGRhc2hib2FyZENvbmZpZy5uYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgZGFzaGJvYXJkTmFtZTogYCR7cHJvcHMuZGFzaGJvYXJkTmFtZVByZWZpeH0tJHtkYXNoYm9hcmRDb25maWcubmFtZX1gLFxuICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgIHBlcmlvZE92ZXJyaWRlOlxuICAgICAgICAgICAgZGFzaGJvYXJkQ29uZmlnLnBlcmlvZE92ZXJyaWRlID8/IFBlcmlvZE92ZXJyaWRlLklOSEVSSVQsXG4gICAgICAgICAgdmFyaWFibGVzOiBkYXNoYm9hcmRDb25maWcudmFyaWFibGVzLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgdGhpcy5kYXNoYm9hcmRzW2Rhc2hib2FyZENvbmZpZy5uYW1lXSA9IGRhc2hib2FyZDtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVEYXNoYm9hcmQoXG4gICAgcmVuZGVyaW5nUHJlZmVyZW5jZTogRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZSxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBEYXNoYm9hcmRQcm9wcyxcbiAgKSB7XG4gICAgc3dpdGNoIChyZW5kZXJpbmdQcmVmZXJlbmNlKSB7XG4gICAgICBjYXNlIERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2UuSU5URVJBQ1RJVkVfT05MWTpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXNoYm9hcmQodGhpcywgaWQsIHByb3BzKTtcbiAgICAgIGNhc2UgRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZS5CSVRNQVBfT05MWTpcbiAgICAgICAgcmV0dXJuIG5ldyBCaXRtYXBEYXNoYm9hcmQodGhpcywgaWQsIHByb3BzKTtcbiAgICAgIGNhc2UgRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZS5JTlRFUkFDVElWRV9BTkRfQklUTUFQOlxuICAgICAgICByZXR1cm4gbmV3IERhc2hib2FyZFdpdGhCaXRtYXBDb3B5KHRoaXMsIGlkLCBwcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY1NlZ21lbnQoc2VnbWVudDogSUR5bmFtaWNEYXNoYm9hcmRTZWdtZW50KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCB0eXBlIGluIHRoaXMuZGFzaGJvYXJkcykge1xuICAgICAgY29uc3QgZGFzaGJvYXJkID0gdGhpcy5kYXNoYm9hcmRzW3R5cGVdO1xuICAgICAgZGFzaGJvYXJkLmFkZFdpZGdldHMoLi4uc2VnbWVudC53aWRnZXRzRm9yRGFzaGJvYXJkKHR5cGUpKTtcbiAgICB9XG4gIH1cblxuICBnZXREYXNoYm9hcmQodHlwZTogc3RyaW5nKTogRGFzaGJvYXJkIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXNoYm9hcmRzW3R5cGVdO1xuICB9XG59XG4iXX0=