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.7 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: "10.0.0" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY0Rhc2hib2FyZEZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEeW5hbWljRGFzaGJvYXJkRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUF1QztBQUN2QywrREFLb0M7QUFDcEMsMkNBQXVDO0FBRXZDLHVEQUFvRDtBQUNwRCxpRkFBOEU7QUFDOUUsdUVBQW9FO0FBQ3BFLHVFQUE4RDtBQXNEOUQsTUFBYSx1QkFDWCxTQUFRLHNCQUFTO0lBS2pCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQXVDO1FBRXZDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFQVixlQUFVLEdBQThCLEVBQUUsQ0FBQztRQVNsRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDakQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxNQUFNLElBQUksS0FBSyxDQUNiLG1DQUFtQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQzFELENBQUM7WUFDSixDQUFDO1lBRUQsSUFDRSxNQUFNLENBQUMsTUFBTSxDQUFTLDJDQUFpQixDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFDdkUsQ0FBQztnQkFDRCxNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsZUFBZSxDQUFDLElBQUksd0NBQXdDLENBQ2hFLENBQUM7WUFDSixDQUFDO1lBRUQsTUFBTSxtQkFBbUIsR0FDdkIsZUFBZSxDQUFDLG1CQUFtQjtnQkFDbkMsMkRBQTRCLENBQUMsZ0JBQWdCLENBQUM7WUFDaEQsTUFBTSxLQUFLLEdBQ1QsR0FBRztnQkFDSCxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO29CQUNuQyxzQkFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBRXJDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3BDLG1CQUFtQixFQUNuQixlQUFlLENBQUMsSUFBSSxFQUNwQjtnQkFDRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUMsbUJBQW1CLElBQUksZUFBZSxDQUFDLElBQUksRUFBRTtnQkFDckUsS0FBSztnQkFDTCxjQUFjLEVBQ1osZUFBZSxDQUFDLGNBQWMsSUFBSSwrQkFBYyxDQUFDLE9BQU87Z0JBQzFELFNBQVMsRUFBRSxlQUFlLENBQUMsU0FBUzthQUNyQyxDQUNGLENBQUM7WUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsZUFBZSxDQUN2QixtQkFBaUQsRUFDakQsRUFBVSxFQUNWLEtBQXFCO1FBRXJCLFFBQVEsbUJBQW1CLEVBQUUsQ0FBQztZQUM1QixLQUFLLDJEQUE0QixDQUFDLGdCQUFnQjtnQkFDaEQsT0FBTyxJQUFJLDBCQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4QyxLQUFLLDJEQUE0QixDQUFDLFdBQVc7Z0JBQzNDLE9BQU8sSUFBSSxpQ0FBZSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDOUMsS0FBSywyREFBNEIsQ0FBQyxzQkFBc0I7Z0JBQ3RELE9BQU8sSUFBSSxpREFBdUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBaUM7UUFDakQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUN2QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7QUE1RUgsMERBNkVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIERhc2hib2FyZCxcbiAgRGFzaGJvYXJkUHJvcHMsXG4gIFBlcmlvZE92ZXJyaWRlLFxuICBJVmFyaWFibGUsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgQml0bWFwRGFzaGJvYXJkIH0gZnJvbSBcIi4vQml0bWFwRGFzaGJvYXJkXCI7XG5pbXBvcnQgeyBEYXNoYm9hcmRSZW5kZXJpbmdQcmVmZXJlbmNlIH0gZnJvbSBcIi4vRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZVwiO1xuaW1wb3J0IHsgRGFzaGJvYXJkV2l0aEJpdG1hcENvcHkgfSBmcm9tIFwiLi9EYXNoYm9hcmRXaXRoQml0bWFwQ29weVwiO1xuaW1wb3J0IHsgRGVmYXVsdERhc2hib2FyZHMgfSBmcm9tIFwiLi9EZWZhdWx0RGFzaGJvYXJkRmFjdG9yeVwiO1xuaW1wb3J0IHsgSUR5bmFtaWNEYXNoYm9hcmRTZWdtZW50IH0gZnJvbSBcIi4vRHluYW1pY0Rhc2hib2FyZFNlZ21lbnRcIjtcbmltcG9ydCB7IElEeW5hbWljRGFzaGJvYXJkRmFjdG9yeSB9IGZyb20gXCIuL0lEeW5hbWljRGFzaGJvYXJkRmFjdG9yeVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNEYXNoYm9hcmRDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRhc2hib2FyZC4gRnVsbCBkYXNoYm9hcmQgbmFtZSB3aWxsIHRha2UgdGhlIGZvcm0gb2Y6XG4gICAqIGB7QGxpbmsgTW9uaXRvcmluZ0R5bmFtaWNEYXNoYm9hcmRzUHJvcHMuZGFzaGJvYXJkTmFtZVByZWZpeH0te0BsaW5rIG5hbWV9YFxuICAgKlxuICAgKiBOT1RFOiBUaGUgZGFzaGJvYXJkIG5hbWVzIGluIHtAbGluayBEZWZhdWx0RGFzaGJvYXJkRmFjdG9yeS5EZWZhdWx0RGFzaGJvYXJkc31cbiAgICogYXJlIHJlc2VydmVkIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBkYXNoYm9hcmQgbmFtZXMuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERhc2hib2FyZCByZW5kZXJpbmcgcHJlZmVyZW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEYXNoYm9hcmRSZW5kZXJpbmdQcmVmZXJlbmNlLklOVEVSQUNUSVZFX09OTFlcbiAgICovXG4gIHJlYWRvbmx5IHJlbmRlcmluZ1ByZWZlcmVuY2U/OiBEYXNoYm9hcmRSZW5kZXJpbmdQcmVmZXJlbmNlO1xuXG4gIC8qKlxuICAgKiBSYW5nZSBvZiB0aGUgZGFzaGJvYXJkXG4gICAqIEBkZWZhdWx0IC0gOCBob3Vyc1xuICAgKi9cbiAgcmVhZG9ubHkgcmFuZ2U/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogUGVyaW9kIG92ZXJyaWRlIGZvciB0aGUgZGFzaGJvYXJkLlxuICAgKiBAZGVmYXVsdCAtIHJlc3BlY3QgaW5kaXZpZHVhbCBncmFwaHMgKFBlcmlvZE92ZXJyaWRlLklOSEVSSVQpXG4gICAqL1xuICByZWFkb25seSBwZXJpb2RPdmVycmlkZT86IFBlcmlvZE92ZXJyaWRlO1xuXG4gIC8qKlxuICAgKiBEYXNoYm9hcmQgdmFyaWFibGVzIHRvIGluY2x1ZGUgaW4gdGhlIGRhc2hib2FyZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gdmFyaWFibGVzXG4gICAqL1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBJVmFyaWFibGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yaW5nRHluYW1pY0Rhc2hib2FyZHNQcm9wcyB7XG4gIC8qKlxuICAgKiBQcmVmaXggYWRkZWQgdG8gZWFjaCBkYXNoYm9hcmQncyBuYW1lLlxuICAgKiBUaGlzIGFsbG93cyB0byBoYXZlIGFsbCBkYXNoYm9hcmRzIHNvcnRlZCBjbG9zZSB0byBlYWNoIG90aGVyIGFuZCBhbHNvIHNlcGFyYXRlIG11bHRpcGxlIG1vbml0b3JpbmcgZmFjYWRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZE5hbWVQcmVmaXg6IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBkYXNoYm9hcmQgdHlwZXMgdG8gZ2VuZXJhdGUuXG4gICAqL1xuICByZWFkb25seSBkYXNoYm9hcmRDb25maWdzOiBEeW5hbWljRGFzaGJvYXJkQ29uZmlndXJhdGlvbltdO1xufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY0Rhc2hib2FyZEZhY3RvcnlcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJRHluYW1pY0Rhc2hib2FyZEZhY3RvcnlcbntcbiAgcmVhZG9ubHkgZGFzaGJvYXJkczogUmVjb3JkPHN0cmluZywgRGFzaGJvYXJkPiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogTW9uaXRvcmluZ0R5bmFtaWNEYXNoYm9hcmRzUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBwcm9wcy5kYXNoYm9hcmRDb25maWdzLmZvckVhY2goKGRhc2hib2FyZENvbmZpZykgPT4ge1xuICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkc1tkYXNoYm9hcmRDb25maWcubmFtZV0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBEdXBsaWNhdGUgZGFzaGJvYXJkIG5hbWUgZm91bmQ6ICR7ZGFzaGJvYXJkQ29uZmlnLm5hbWV9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBPYmplY3QudmFsdWVzPHN0cmluZz4oRGVmYXVsdERhc2hib2FyZHMpLmluY2x1ZGVzKGRhc2hib2FyZENvbmZpZy5uYW1lKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtkYXNoYm9hcmRDb25maWcubmFtZX0gaXMgYSByZXNlcnZlZCBuYW1lIGFuZCBjYW5ub3QgYmUgdXNlZGAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlbmRlcmluZ1ByZWZlcmVuY2UgPVxuICAgICAgICBkYXNoYm9hcmRDb25maWcucmVuZGVyaW5nUHJlZmVyZW5jZSA/P1xuICAgICAgICBEYXNoYm9hcmRSZW5kZXJpbmdQcmVmZXJlbmNlLklOVEVSQUNUSVZFX09OTFk7XG4gICAgICBjb25zdCBzdGFydDogc3RyaW5nID1cbiAgICAgICAgXCItXCIgK1xuICAgICAgICAoZGFzaGJvYXJkQ29uZmlnLnJhbmdlPy50b0lzb1N0cmluZygpID8/XG4gICAgICAgICAgRHVyYXRpb24uaG91cnMoOCkudG9Jc29TdHJpbmcoKSk7XG5cbiAgICAgIGNvbnN0IGRhc2hib2FyZCA9IHRoaXMuY3JlYXRlRGFzaGJvYXJkKFxuICAgICAgICByZW5kZXJpbmdQcmVmZXJlbmNlLFxuICAgICAgICBkYXNoYm9hcmRDb25maWcubmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIGRhc2hib2FyZE5hbWU6IGAke3Byb3BzLmRhc2hib2FyZE5hbWVQcmVmaXh9LSR7ZGFzaGJvYXJkQ29uZmlnLm5hbWV9YCxcbiAgICAgICAgICBzdGFydCxcbiAgICAgICAgICBwZXJpb2RPdmVycmlkZTpcbiAgICAgICAgICAgIGRhc2hib2FyZENvbmZpZy5wZXJpb2RPdmVycmlkZSA/PyBQZXJpb2RPdmVycmlkZS5JTkhFUklULFxuICAgICAgICAgIHZhcmlhYmxlczogZGFzaGJvYXJkQ29uZmlnLnZhcmlhYmxlcyxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZGFzaGJvYXJkc1tkYXNoYm9hcmRDb25maWcubmFtZV0gPSBkYXNoYm9hcmQ7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlRGFzaGJvYXJkKFxuICAgIHJlbmRlcmluZ1ByZWZlcmVuY2U6IERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2UsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogRGFzaGJvYXJkUHJvcHMsXG4gICkge1xuICAgIHN3aXRjaCAocmVuZGVyaW5nUHJlZmVyZW5jZSkge1xuICAgICAgY2FzZSBEYXNoYm9hcmRSZW5kZXJpbmdQcmVmZXJlbmNlLklOVEVSQUNUSVZFX09OTFk6XG4gICAgICAgIHJldHVybiBuZXcgRGFzaGJvYXJkKHRoaXMsIGlkLCBwcm9wcyk7XG4gICAgICBjYXNlIERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2UuQklUTUFQX09OTFk6XG4gICAgICAgIHJldHVybiBuZXcgQml0bWFwRGFzaGJvYXJkKHRoaXMsIGlkLCBwcm9wcyk7XG4gICAgICBjYXNlIERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2UuSU5URVJBQ1RJVkVfQU5EX0JJVE1BUDpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXNoYm9hcmRXaXRoQml0bWFwQ29weSh0aGlzLCBpZCwgcHJvcHMpO1xuICAgIH1cbiAgfVxuXG4gIGFkZER5bmFtaWNTZWdtZW50KHNlZ21lbnQ6IElEeW5hbWljRGFzaGJvYXJkU2VnbWVudCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgdHlwZSBpbiB0aGlzLmRhc2hib2FyZHMpIHtcbiAgICAgIGNvbnN0IGRhc2hib2FyZCA9IHRoaXMuZGFzaGJvYXJkc1t0eXBlXTtcbiAgICAgIGRhc2hib2FyZC5hZGRXaWRnZXRzKC4uLnNlZ21lbnQud2lkZ2V0c0ZvckRhc2hib2FyZCh0eXBlKSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGFzaGJvYXJkKHR5cGU6IHN0cmluZyk6IERhc2hib2FyZCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGFzaGJvYXJkc1t0eXBlXTtcbiAgfVxufVxuIl19