cdk-monitoring-constructs
Version:
[](https://badge.fury.io/js/cdk-monitoring-constructs) [](https://m
61 lines • 11.6 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: "9.15.2" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY0Rhc2hib2FyZEZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEeW5hbWljRGFzaGJvYXJkRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUF1QztBQUN2QywrREFLb0M7QUFDcEMsMkNBQXVDO0FBRXZDLHVEQUFvRDtBQUNwRCxpRkFBOEU7QUFDOUUsdUVBQW9FO0FBQ3BFLHVFQUE4RDtBQXNEOUQsTUFBYSx1QkFDWCxTQUFRLHNCQUFTO0lBS2pCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQXVDO1FBRXZDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFQVixlQUFVLEdBQThCLEVBQUUsQ0FBQztRQVNsRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDakQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekMsTUFBTSxJQUFJLEtBQUssQ0FDYixtQ0FBbUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUMxRCxDQUFDO2FBQ0g7WUFFRCxJQUNFLE1BQU0sQ0FBQyxNQUFNLENBQVMsMkNBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUN2RTtnQkFDQSxNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsZUFBZSxDQUFDLElBQUksd0NBQXdDLENBQ2hFLENBQUM7YUFDSDtZQUVELE1BQU0sbUJBQW1CLEdBQ3ZCLGVBQWUsQ0FBQyxtQkFBbUI7Z0JBQ25DLDJEQUE0QixDQUFDLGdCQUFnQixDQUFDO1lBQ2hELE1BQU0sS0FBSyxHQUNULEdBQUc7Z0JBQ0gsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtvQkFDbkMsc0JBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUVyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUNwQyxtQkFBbUIsRUFDbkIsZUFBZSxDQUFDLElBQUksRUFDcEI7Z0JBQ0UsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JFLEtBQUs7Z0JBQ0wsY0FBYyxFQUNaLGVBQWUsQ0FBQyxjQUFjLElBQUksK0JBQWMsQ0FBQyxPQUFPO2dCQUMxRCxTQUFTLEVBQUUsZUFBZSxDQUFDLFNBQVM7YUFDckMsQ0FDRixDQUFDO1lBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGVBQWUsQ0FDdkIsbUJBQWlELEVBQ2pELEVBQVUsRUFDVixLQUFxQjtRQUVyQixRQUFRLG1CQUFtQixFQUFFO1lBQzNCLEtBQUssMkRBQTRCLENBQUMsZ0JBQWdCO2dCQUNoRCxPQUFPLElBQUksMEJBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLEtBQUssMkRBQTRCLENBQUMsV0FBVztnQkFDM0MsT0FBTyxJQUFJLGlDQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QyxLQUFLLDJEQUE0QixDQUFDLHNCQUFzQjtnQkFDdEQsT0FBTyxJQUFJLGlEQUF1QixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBaUM7UUFDakQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFZO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDOztBQTVFSCwwREE2RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkLFxuICBEYXNoYm9hcmRQcm9wcyxcbiAgUGVyaW9kT3ZlcnJpZGUsXG4gIElWYXJpYWJsZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgeyBCaXRtYXBEYXNoYm9hcmQgfSBmcm9tIFwiLi9CaXRtYXBEYXNoYm9hcmRcIjtcbmltcG9ydCB7IERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2UgfSBmcm9tIFwiLi9EYXNoYm9hcmRSZW5kZXJpbmdQcmVmZXJlbmNlXCI7XG5pbXBvcnQgeyBEYXNoYm9hcmRXaXRoQml0bWFwQ29weSB9IGZyb20gXCIuL0Rhc2hib2FyZFdpdGhCaXRtYXBDb3B5XCI7XG5pbXBvcnQgeyBEZWZhdWx0RGFzaGJvYXJkcyB9IGZyb20gXCIuL0RlZmF1bHREYXNoYm9hcmRGYWN0b3J5XCI7XG5pbXBvcnQgeyBJRHluYW1pY0Rhc2hib2FyZFNlZ21lbnQgfSBmcm9tIFwiLi9EeW5hbWljRGFzaGJvYXJkU2VnbWVudFwiO1xuaW1wb3J0IHsgSUR5bmFtaWNEYXNoYm9hcmRGYWN0b3J5IH0gZnJvbSBcIi4vSUR5bmFtaWNEYXNoYm9hcmRGYWN0b3J5XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0Rhc2hib2FyZENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZGFzaGJvYXJkLiBGdWxsIGRhc2hib2FyZCBuYW1lIHdpbGwgdGFrZSB0aGUgZm9ybSBvZjpcbiAgICogYHtAbGluayBNb25pdG9yaW5nRHluYW1pY0Rhc2hib2FyZHNQcm9wcy5kYXNoYm9hcmROYW1lUHJlZml4fS17QGxpbmsgbmFtZX1gXG4gICAqXG4gICAqIE5PVEU6IFRoZSBkYXNoYm9hcmQgbmFtZXMgaW4ge0BsaW5rIERlZmF1bHREYXNoYm9hcmRGYWN0b3J5LkRlZmF1bHREYXNoYm9hcmRzfVxuICAgKiBhcmUgcmVzZXJ2ZWQgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIGRhc2hib2FyZCBuYW1lcy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRGFzaGJvYXJkIHJlbmRlcmluZyBwcmVmZXJlbmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2UuSU5URVJBQ1RJVkVfT05MWVxuICAgKi9cbiAgcmVhZG9ubHkgcmVuZGVyaW5nUHJlZmVyZW5jZT86IERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2U7XG5cbiAgLyoqXG4gICAqIFJhbmdlIG9mIHRoZSBkYXNoYm9hcmRcbiAgICogQGRlZmF1bHQgLSA4IGhvdXJzXG4gICAqL1xuICByZWFkb25seSByYW5nZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBQZXJpb2Qgb3ZlcnJpZGUgZm9yIHRoZSBkYXNoYm9hcmQuXG4gICAqIEBkZWZhdWx0IC0gcmVzcGVjdCBpbmRpdmlkdWFsIGdyYXBocyAoUGVyaW9kT3ZlcnJpZGUuSU5IRVJJVClcbiAgICovXG4gIHJlYWRvbmx5IHBlcmlvZE92ZXJyaWRlPzogUGVyaW9kT3ZlcnJpZGU7XG5cbiAgLyoqXG4gICAqIERhc2hib2FyZCB2YXJpYWJsZXMgdG8gaW5jbHVkZSBpbiB0aGUgZGFzaGJvYXJkcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB2YXJpYWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IElWYXJpYWJsZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vbml0b3JpbmdEeW5hbWljRGFzaGJvYXJkc1Byb3BzIHtcbiAgLyoqXG4gICAqIFByZWZpeCBhZGRlZCB0byBlYWNoIGRhc2hib2FyZCdzIG5hbWUuXG4gICAqIFRoaXMgYWxsb3dzIHRvIGhhdmUgYWxsIGRhc2hib2FyZHMgc29ydGVkIGNsb3NlIHRvIGVhY2ggb3RoZXIgYW5kIGFsc28gc2VwYXJhdGUgbXVsdGlwbGUgbW9uaXRvcmluZyBmYWNhZGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGFzaGJvYXJkTmFtZVByZWZpeDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGRhc2hib2FyZCB0eXBlcyB0byBnZW5lcmF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZENvbmZpZ3M6IER5bmFtaWNEYXNoYm9hcmRDb25maWd1cmF0aW9uW107XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljRGFzaGJvYXJkRmFjdG9yeVxuICBleHRlbmRzIENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElEeW5hbWljRGFzaGJvYXJkRmFjdG9yeVxue1xuICByZWFkb25seSBkYXNoYm9hcmRzOiBSZWNvcmQ8c3RyaW5nLCBEYXNoYm9hcmQ+ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBNb25pdG9yaW5nRHluYW1pY0Rhc2hib2FyZHNQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHByb3BzLmRhc2hib2FyZENvbmZpZ3MuZm9yRWFjaCgoZGFzaGJvYXJkQ29uZmlnKSA9PiB7XG4gICAgICBpZiAodGhpcy5kYXNoYm9hcmRzW2Rhc2hib2FyZENvbmZpZy5uYW1lXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYER1cGxpY2F0ZSBkYXNoYm9hcmQgbmFtZSBmb3VuZDogJHtkYXNoYm9hcmRDb25maWcubmFtZX1gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIE9iamVjdC52YWx1ZXM8c3RyaW5nPihEZWZhdWx0RGFzaGJvYXJkcykuaW5jbHVkZXMoZGFzaGJvYXJkQ29uZmlnLm5hbWUpXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAke2Rhc2hib2FyZENvbmZpZy5uYW1lfSBpcyBhIHJlc2VydmVkIG5hbWUgYW5kIGNhbm5vdCBiZSB1c2VkYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVuZGVyaW5nUHJlZmVyZW5jZSA9XG4gICAgICAgIGRhc2hib2FyZENvbmZpZy5yZW5kZXJpbmdQcmVmZXJlbmNlID8/XG4gICAgICAgIERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2UuSU5URVJBQ1RJVkVfT05MWTtcbiAgICAgIGNvbnN0IHN0YXJ0OiBzdHJpbmcgPVxuICAgICAgICBcIi1cIiArXG4gICAgICAgIChkYXNoYm9hcmRDb25maWcucmFuZ2U/LnRvSXNvU3RyaW5nKCkgPz9cbiAgICAgICAgICBEdXJhdGlvbi5ob3Vycyg4KS50b0lzb1N0cmluZygpKTtcblxuICAgICAgY29uc3QgZGFzaGJvYXJkID0gdGhpcy5jcmVhdGVEYXNoYm9hcmQoXG4gICAgICAgIHJlbmRlcmluZ1ByZWZlcmVuY2UsXG4gICAgICAgIGRhc2hib2FyZENvbmZpZy5uYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgZGFzaGJvYXJkTmFtZTogYCR7cHJvcHMuZGFzaGJvYXJkTmFtZVByZWZpeH0tJHtkYXNoYm9hcmRDb25maWcubmFtZX1gLFxuICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgIHBlcmlvZE92ZXJyaWRlOlxuICAgICAgICAgICAgZGFzaGJvYXJkQ29uZmlnLnBlcmlvZE92ZXJyaWRlID8/IFBlcmlvZE92ZXJyaWRlLklOSEVSSVQsXG4gICAgICAgICAgdmFyaWFibGVzOiBkYXNoYm9hcmRDb25maWcudmFyaWFibGVzLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgdGhpcy5kYXNoYm9hcmRzW2Rhc2hib2FyZENvbmZpZy5uYW1lXSA9IGRhc2hib2FyZDtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVEYXNoYm9hcmQoXG4gICAgcmVuZGVyaW5nUHJlZmVyZW5jZTogRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZSxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBEYXNoYm9hcmRQcm9wcyxcbiAgKSB7XG4gICAgc3dpdGNoIChyZW5kZXJpbmdQcmVmZXJlbmNlKSB7XG4gICAgICBjYXNlIERhc2hib2FyZFJlbmRlcmluZ1ByZWZlcmVuY2UuSU5URVJBQ1RJVkVfT05MWTpcbiAgICAgICAgcmV0dXJuIG5ldyBEYXNoYm9hcmQodGhpcywgaWQsIHByb3BzKTtcbiAgICAgIGNhc2UgRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZS5CSVRNQVBfT05MWTpcbiAgICAgICAgcmV0dXJuIG5ldyBCaXRtYXBEYXNoYm9hcmQodGhpcywgaWQsIHByb3BzKTtcbiAgICAgIGNhc2UgRGFzaGJvYXJkUmVuZGVyaW5nUHJlZmVyZW5jZS5JTlRFUkFDVElWRV9BTkRfQklUTUFQOlxuICAgICAgICByZXR1cm4gbmV3IERhc2hib2FyZFdpdGhCaXRtYXBDb3B5KHRoaXMsIGlkLCBwcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY1NlZ21lbnQoc2VnbWVudDogSUR5bmFtaWNEYXNoYm9hcmRTZWdtZW50KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCB0eXBlIGluIHRoaXMuZGFzaGJvYXJkcykge1xuICAgICAgY29uc3QgZGFzaGJvYXJkID0gdGhpcy5kYXNoYm9hcmRzW3R5cGVdO1xuICAgICAgZGFzaGJvYXJkLmFkZFdpZGdldHMoLi4uc2VnbWVudC53aWRnZXRzRm9yRGFzaGJvYXJkKHR5cGUpKTtcbiAgICB9XG4gIH1cblxuICBnZXREYXNoYm9hcmQodHlwZTogc3RyaW5nKTogRGFzaGJvYXJkIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXNoYm9hcmRzW3R5cGVdO1xuICB9XG59XG4iXX0=
;