cdk-monitoring-constructs
Version:
[](https://badge.fury.io/js/cdk-monitoring-constructs) [](https://m
61 lines • 11.7 kB
JavaScript
;
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