cdk-monitoring-constructs
Version:
[](https://badge.fury.io/js/cdk-monitoring-constructs) [](https://m
60 lines • 11.2 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,
});
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.7.1" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY0Rhc2hib2FyZEZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEeW5hbWljRGFzaGJvYXJkRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUF1QztBQUN2QywrREFJb0M7QUFDcEMsMkNBQXVDO0FBRXZDLHVEQUFvRDtBQUNwRCxpRkFBOEU7QUFDOUUsdUVBQW9FO0FBQ3BFLHVFQUE4RDtBQStDOUQsTUFBYSx1QkFDWCxTQUFRLHNCQUFTO0lBS2pCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQXVDO1FBRXZDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFQVixlQUFVLEdBQThCLEVBQUUsQ0FBQztRQVNsRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDakQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekMsTUFBTSxJQUFJLEtBQUssQ0FDYixtQ0FBbUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUMxRCxDQUFDO2FBQ0g7WUFFRCxJQUNFLE1BQU0sQ0FBQyxNQUFNLENBQVMsMkNBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUN2RTtnQkFDQSxNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsZUFBZSxDQUFDLElBQUksd0NBQXdDLENBQ2hFLENBQUM7YUFDSDtZQUVELE1BQU0sbUJBQW1CLEdBQ3ZCLGVBQWUsQ0FBQyxtQkFBbUI7Z0JBQ25DLDJEQUE0QixDQUFDLGdCQUFnQixDQUFDO1lBQ2hELE1BQU0sS0FBSyxHQUNULEdBQUc7Z0JBQ0gsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtvQkFDbkMsc0JBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUVyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUNwQyxtQkFBbUIsRUFDbkIsZUFBZSxDQUFDLElBQUksRUFDcEI7Z0JBQ0UsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JFLEtBQUs7Z0JBQ0wsY0FBYyxFQUNaLGVBQWUsQ0FBQyxjQUFjLElBQUksK0JBQWMsQ0FBQyxPQUFPO2FBQzNELENBQ0YsQ0FBQztZQUVGLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxlQUFlLENBQ3ZCLG1CQUFpRCxFQUNqRCxFQUFVLEVBQ1YsS0FBcUI7UUFFckIsUUFBUSxtQkFBbUIsRUFBRTtZQUMzQixLQUFLLDJEQUE0QixDQUFDLGdCQUFnQjtnQkFDaEQsT0FBTyxJQUFJLDBCQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4QyxLQUFLLDJEQUE0QixDQUFDLFdBQVc7Z0JBQzNDLE9BQU8sSUFBSSxpQ0FBZSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDOUMsS0FBSywyREFBNEIsQ0FBQyxzQkFBc0I7Z0JBQ3RELE9BQU8sSUFBSSxpREFBdUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQWlDO1FBQ2pELEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUN2QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7QUEzRUgsMERBNEVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIERhc2hib2FyZCxcbiAgRGFzaGJvYXJkUHJvcHMsXG4gIFBlcmlvZE92ZXJyaWRlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCB7IEJpdG1hcERhc2hib2FyZCB9IGZyb20gXCIuL0JpdG1hcERhc2hib2FyZFwiO1xuaW1wb3J0IHsgRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZSB9IGZyb20gXCIuL0Rhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2VcIjtcbmltcG9ydCB7IERhc2hib2FyZFdpdGhCaXRtYXBDb3B5IH0gZnJvbSBcIi4vRGFzaGJvYXJkV2l0aEJpdG1hcENvcHlcIjtcbmltcG9ydCB7IERlZmF1bHREYXNoYm9hcmRzIH0gZnJvbSBcIi4vRGVmYXVsdERhc2hib2FyZEZhY3RvcnlcIjtcbmltcG9ydCB7IElEeW5hbWljRGFzaGJvYXJkU2VnbWVudCB9IGZyb20gXCIuL0R5bmFtaWNEYXNoYm9hcmRTZWdtZW50XCI7XG5pbXBvcnQgeyBJRHluYW1pY0Rhc2hib2FyZEZhY3RvcnkgfSBmcm9tIFwiLi9JRHluYW1pY0Rhc2hib2FyZEZhY3RvcnlcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRGFzaGJvYXJkQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBkYXNoYm9hcmQuIEZ1bGwgZGFzaGJvYXJkIG5hbWUgd2lsbCB0YWtlIHRoZSBmb3JtIG9mOlxuICAgKiBge0BsaW5rIE1vbml0b3JpbmdEeW5hbWljRGFzaGJvYXJkc1Byb3BzLmRhc2hib2FyZE5hbWVQcmVmaXh9LXtAbGluayBuYW1lfWBcbiAgICpcbiAgICogTk9URTogVGhlIGRhc2hib2FyZCBuYW1lcyBpbiB7QGxpbmsgRGVmYXVsdERhc2hib2FyZEZhY3RvcnkuRGVmYXVsdERhc2hib2FyZHN9XG4gICAqIGFyZSByZXNlcnZlZCBhbmQgY2Fubm90IGJlIHVzZWQgYXMgZGFzaGJvYXJkIG5hbWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEYXNoYm9hcmQgcmVuZGVyaW5nIHByZWZlcmVuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZS5JTlRFUkFDVElWRV9PTkxZXG4gICAqL1xuICByZWFkb25seSByZW5kZXJpbmdQcmVmZXJlbmNlPzogRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZTtcblxuICAvKipcbiAgICogUmFuZ2Ugb2YgdGhlIGRhc2hib2FyZFxuICAgKiBAZGVmYXVsdCAtIDggaG91cnNcbiAgICovXG4gIHJlYWRvbmx5IHJhbmdlPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFBlcmlvZCBvdmVycmlkZSBmb3IgdGhlIGRhc2hib2FyZC5cbiAgICogQGRlZmF1bHQgLSByZXNwZWN0IGluZGl2aWR1YWwgZ3JhcGhzIChQZXJpb2RPdmVycmlkZS5JTkhFUklUKVxuICAgKi9cbiAgcmVhZG9ubHkgcGVyaW9kT3ZlcnJpZGU/OiBQZXJpb2RPdmVycmlkZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yaW5nRHluYW1pY0Rhc2hib2FyZHNQcm9wcyB7XG4gIC8qKlxuICAgKiBQcmVmaXggYWRkZWQgdG8gZWFjaCBkYXNoYm9hcmQncyBuYW1lLlxuICAgKiBUaGlzIGFsbG93cyB0byBoYXZlIGFsbCBkYXNoYm9hcmRzIHNvcnRlZCBjbG9zZSB0byBlYWNoIG90aGVyIGFuZCBhbHNvIHNlcGFyYXRlIG11bHRpcGxlIG1vbml0b3JpbmcgZmFjYWRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZE5hbWVQcmVmaXg6IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBkYXNoYm9hcmQgdHlwZXMgdG8gZ2VuZXJhdGUuXG4gICAqL1xuICByZWFkb25seSBkYXNoYm9hcmRDb25maWdzOiBEeW5hbWljRGFzaGJvYXJkQ29uZmlndXJhdGlvbltdO1xufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY0Rhc2hib2FyZEZhY3RvcnlcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJRHluYW1pY0Rhc2hib2FyZEZhY3RvcnlcbntcbiAgcmVhZG9ubHkgZGFzaGJvYXJkczogUmVjb3JkPHN0cmluZywgRGFzaGJvYXJkPiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogTW9uaXRvcmluZ0R5bmFtaWNEYXNoYm9hcmRzUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBwcm9wcy5kYXNoYm9hcmRDb25maWdzLmZvckVhY2goKGRhc2hib2FyZENvbmZpZykgPT4ge1xuICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkc1tkYXNoYm9hcmRDb25maWcubmFtZV0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBEdXBsaWNhdGUgZGFzaGJvYXJkIG5hbWUgZm91bmQ6ICR7ZGFzaGJvYXJkQ29uZmlnLm5hbWV9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBPYmplY3QudmFsdWVzPHN0cmluZz4oRGVmYXVsdERhc2hib2FyZHMpLmluY2x1ZGVzKGRhc2hib2FyZENvbmZpZy5uYW1lKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtkYXNoYm9hcmRDb25maWcubmFtZX0gaXMgYSByZXNlcnZlZCBuYW1lIGFuZCBjYW5ub3QgYmUgdXNlZGAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlbmRlcmluZ1ByZWZlcmVuY2UgPVxuICAgICAgICBkYXNoYm9hcmRDb25maWcucmVuZGVyaW5nUHJlZmVyZW5jZSA/P1xuICAgICAgICBEYXNoYm9hcmRSZW5kZXJpbmdQcmVmZXJlbmNlLklOVEVSQUNUSVZFX09OTFk7XG4gICAgICBjb25zdCBzdGFydDogc3RyaW5nID1cbiAgICAgICAgXCItXCIgK1xuICAgICAgICAoZGFzaGJvYXJkQ29uZmlnLnJhbmdlPy50b0lzb1N0cmluZygpID8/XG4gICAgICAgICAgRHVyYXRpb24uaG91cnMoOCkudG9Jc29TdHJpbmcoKSk7XG5cbiAgICAgIGNvbnN0IGRhc2hib2FyZCA9IHRoaXMuY3JlYXRlRGFzaGJvYXJkKFxuICAgICAgICByZW5kZXJpbmdQcmVmZXJlbmNlLFxuICAgICAgICBkYXNoYm9hcmRDb25maWcubmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIGRhc2hib2FyZE5hbWU6IGAke3Byb3BzLmRhc2hib2FyZE5hbWVQcmVmaXh9LSR7ZGFzaGJvYXJkQ29uZmlnLm5hbWV9YCxcbiAgICAgICAgICBzdGFydCxcbiAgICAgICAgICBwZXJpb2RPdmVycmlkZTpcbiAgICAgICAgICAgIGRhc2hib2FyZENvbmZpZy5wZXJpb2RPdmVycmlkZSA/PyBQZXJpb2RPdmVycmlkZS5JTkhFUklULFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgdGhpcy5kYXNoYm9hcmRzW2Rhc2hib2FyZENvbmZpZy5uYW1lXSA9IGRhc2hib2FyZDtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVEYXNoYm9hcmQoXG4gICAgcmVuZGVyaW5nUHJlZmVyZW5jZTogRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZSxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBEYXNoYm9hcmRQcm9wcyxcbiAgKSB7XG4gICAgc3dpdGNoIChyZW5kZXJpbmdQcmVmZXJlbmNlKSB7XG4gICAgICBjYXNlIERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2UuSU5URVJBQ1RJVkVfT05MWTpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXNoYm9hcmQodGhpcywgaWQsIHByb3BzKTtcbiAgICAgIGNhc2UgRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZS5CSVRNQVBfT05MWTpcbiAgICAgICAgcmV0dXJuIG5ldyBCaXRtYXBEYXNoYm9hcmQodGhpcywgaWQsIHByb3BzKTtcbiAgICAgIGNhc2UgRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZS5JTlRFUkFDVElWRV9BTkRfQklUTUFQOlxuICAgICAgICByZXR1cm4gbmV3IERhc2hib2FyZFdpdGhCaXRtYXBDb3B5KHRoaXMsIGlkLCBwcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY1NlZ21lbnQoc2VnbWVudDogSUR5bmFtaWNEYXNoYm9hcmRTZWdtZW50KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCB0eXBlIGluIHRoaXMuZGFzaGJvYXJkcykge1xuICAgICAgY29uc3QgZGFzaGJvYXJkID0gdGhpcy5kYXNoYm9hcmRzW3R5cGVdO1xuICAgICAgZGFzaGJvYXJkLmFkZFdpZGdldHMoLi4uc2VnbWVudC53aWRnZXRzRm9yRGFzaGJvYXJkKHR5cGUpKTtcbiAgICB9XG4gIH1cblxuICBnZXREYXNoYm9hcmQodHlwZTogc3RyaW5nKTogRGFzaGJvYXJkIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXNoYm9hcmRzW3R5cGVdO1xuICB9XG59XG4iXX0=