Skip to content

Commit 8d4847a

Browse files
authored
feat(facade): add defaults to make facade creation easier (#145)
Making the creation of monitoring facade easier (require less props) by introducing defaults. --- _By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license_
1 parent abcc2ec commit 8d4847a

File tree

6 files changed

+153
-74
lines changed

6 files changed

+153
-74
lines changed

API.md

Lines changed: 55 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ Main entry point to create your monitoring.
691691
```typescript
692692
import { MonitoringFacade } from 'cdk-monitoring-constructs'
693693

694-
new MonitoringFacade(scope: Construct, id: string, props: MonitoringFacadeProps)
694+
new MonitoringFacade(scope: Construct, id: string, props?: MonitoringFacadeProps)
695695
```
696696

697697
| **Name** | **Type** | **Description** |
@@ -714,7 +714,7 @@ new MonitoringFacade(scope: Construct, id: string, props: MonitoringFacadeProps)
714714

715715
---
716716

717-
##### `props`<sup>Required</sup> <a name="props" id="cdk-monitoring-constructs.MonitoringFacade.Initializer.parameter.props"></a>
717+
##### `props`<sup>Optional</sup> <a name="props" id="cdk-monitoring-constructs.MonitoringFacade.Initializer.parameter.props"></a>
718718

719719
- *Type:* <a href="#cdk-monitoring-constructs.MonitoringFacadeProps">MonitoringFacadeProps</a>
720720

@@ -24223,83 +24223,74 @@ const monitoringDashboardsProps: MonitoringDashboardsProps = { ... }
2422324223

2422424224
| **Name** | **Type** | **Description** |
2422524225
| --- | --- | --- |
24226+
| <code><a href="#cdk-monitoring-constructs.MonitoringDashboardsProps.property.dashboardNamePrefix">dashboardNamePrefix</a></code> | <code>string</code> | Prefix added to each dashboard name. |
2422624227
| <code><a href="#cdk-monitoring-constructs.MonitoringDashboardsProps.property.createAlarmDashboard">createAlarmDashboard</a></code> | <code>boolean</code> | Flag indicating whether the alarm dashboard should be created. |
2422724228
| <code><a href="#cdk-monitoring-constructs.MonitoringDashboardsProps.property.createDashboard">createDashboard</a></code> | <code>boolean</code> | Flag indicating whether the default dashboard should be created. |
2422824229
| <code><a href="#cdk-monitoring-constructs.MonitoringDashboardsProps.property.createSummaryDashboard">createSummaryDashboard</a></code> | <code>boolean</code> | Flag indicating whether the summary dashboard should be created. |
24229-
| <code><a href="#cdk-monitoring-constructs.MonitoringDashboardsProps.property.dashboardNamePrefix">dashboardNamePrefix</a></code> | <code>string</code> | Prefix added to each dashboard name. |
24230-
| <code><a href="#cdk-monitoring-constructs.MonitoringDashboardsProps.property.renderingPreference">renderingPreference</a></code> | <code><a href="#cdk-monitoring-constructs.DashboardRenderingPreference">DashboardRenderingPreference</a></code> | Dashboard rendering preference. |
2423124230
| <code><a href="#cdk-monitoring-constructs.MonitoringDashboardsProps.property.detailDashboardPeriodOverride">detailDashboardPeriodOverride</a></code> | <code>aws-cdk-lib.aws_cloudwatch.PeriodOverride</code> | Period override for the detail dashboard (and other auxiliary dashboards). |
2423224231
| <code><a href="#cdk-monitoring-constructs.MonitoringDashboardsProps.property.detailDashboardRange">detailDashboardRange</a></code> | <code>aws-cdk-lib.Duration</code> | Range of the detail dashboard (and other auxiliary dashboards). |
24232+
| <code><a href="#cdk-monitoring-constructs.MonitoringDashboardsProps.property.renderingPreference">renderingPreference</a></code> | <code><a href="#cdk-monitoring-constructs.DashboardRenderingPreference">DashboardRenderingPreference</a></code> | Dashboard rendering preference. |
2423324233
| <code><a href="#cdk-monitoring-constructs.MonitoringDashboardsProps.property.summaryDashboardPeriodOverride">summaryDashboardPeriodOverride</a></code> | <code>aws-cdk-lib.aws_cloudwatch.PeriodOverride</code> | Period override for the summary dashboard. |
2423424234
| <code><a href="#cdk-monitoring-constructs.MonitoringDashboardsProps.property.summaryDashboardRange">summaryDashboardRange</a></code> | <code>aws-cdk-lib.Duration</code> | Range of the summary dashboard. |
2423524235

2423624236
---
2423724237

24238-
##### `createAlarmDashboard`<sup>Required</sup> <a name="createAlarmDashboard" id="cdk-monitoring-constructs.MonitoringDashboardsProps.property.createAlarmDashboard"></a>
24238+
##### `dashboardNamePrefix`<sup>Required</sup> <a name="dashboardNamePrefix" id="cdk-monitoring-constructs.MonitoringDashboardsProps.property.dashboardNamePrefix"></a>
2423924239

2424024240
```typescript
24241-
public readonly createAlarmDashboard: boolean;
24241+
public readonly dashboardNamePrefix: string;
2424224242
```
2424324243

24244-
- *Type:* boolean
24244+
- *Type:* string
2424524245

24246-
Flag indicating whether the alarm dashboard should be created.
24246+
Prefix added to each dashboard name.
2424724247

24248-
This is independent on other create dashboard flags.
24248+
This allows to have all dashboards sorted close to each other and also separate multiple monitoring facades.
2424924249

2425024250
---
2425124251

24252-
##### `createDashboard`<sup>Required</sup> <a name="createDashboard" id="cdk-monitoring-constructs.MonitoringDashboardsProps.property.createDashboard"></a>
24252+
##### `createAlarmDashboard`<sup>Optional</sup> <a name="createAlarmDashboard" id="cdk-monitoring-constructs.MonitoringDashboardsProps.property.createAlarmDashboard"></a>
2425324253

2425424254
```typescript
24255-
public readonly createDashboard: boolean;
24255+
public readonly createAlarmDashboard: boolean;
2425624256
```
2425724257

2425824258
- *Type:* boolean
24259+
- *Default:* false
2425924260

24260-
Flag indicating whether the default dashboard should be created.
24261+
Flag indicating whether the alarm dashboard should be created.
2426124262

2426224263
This is independent on other create dashboard flags.
2426324264

2426424265
---
2426524266

24266-
##### `createSummaryDashboard`<sup>Required</sup> <a name="createSummaryDashboard" id="cdk-monitoring-constructs.MonitoringDashboardsProps.property.createSummaryDashboard"></a>
24267+
##### `createDashboard`<sup>Optional</sup> <a name="createDashboard" id="cdk-monitoring-constructs.MonitoringDashboardsProps.property.createDashboard"></a>
2426724268

2426824269
```typescript
24269-
public readonly createSummaryDashboard: boolean;
24270+
public readonly createDashboard: boolean;
2427024271
```
2427124272

2427224273
- *Type:* boolean
24274+
- *Default:* true
2427324275

24274-
Flag indicating whether the summary dashboard should be created.
24276+
Flag indicating whether the default dashboard should be created.
2427524277

2427624278
This is independent on other create dashboard flags.
2427724279

2427824280
---
2427924281

24280-
##### `dashboardNamePrefix`<sup>Required</sup> <a name="dashboardNamePrefix" id="cdk-monitoring-constructs.MonitoringDashboardsProps.property.dashboardNamePrefix"></a>
24282+
##### `createSummaryDashboard`<sup>Optional</sup> <a name="createSummaryDashboard" id="cdk-monitoring-constructs.MonitoringDashboardsProps.property.createSummaryDashboard"></a>
2428124283

2428224284
```typescript
24283-
public readonly dashboardNamePrefix: string;
24285+
public readonly createSummaryDashboard: boolean;
2428424286
```
2428524287

24286-
- *Type:* string
24287-
24288-
Prefix added to each dashboard name.
24289-
24290-
This allows to have all dashboards sorted close to each other and also separate multiple monitoring facades.
24291-
24292-
---
24293-
24294-
##### `renderingPreference`<sup>Required</sup> <a name="renderingPreference" id="cdk-monitoring-constructs.MonitoringDashboardsProps.property.renderingPreference"></a>
24295-
24296-
```typescript
24297-
public readonly renderingPreference: DashboardRenderingPreference;
24298-
```
24288+
- *Type:* boolean
24289+
- *Default:* false
2429924290

24300-
- *Type:* <a href="#cdk-monitoring-constructs.DashboardRenderingPreference">DashboardRenderingPreference</a>
24291+
Flag indicating whether the summary dashboard should be created.
2430124292

24302-
Dashboard rendering preference.
24293+
This is independent on other create dashboard flags.
2430324294

2430424295
---
2430524296

@@ -24331,6 +24322,19 @@ Range of the detail dashboard (and other auxiliary dashboards).
2433124322

2433224323
---
2433324324

24325+
##### `renderingPreference`<sup>Optional</sup> <a name="renderingPreference" id="cdk-monitoring-constructs.MonitoringDashboardsProps.property.renderingPreference"></a>
24326+
24327+
```typescript
24328+
public readonly renderingPreference: DashboardRenderingPreference;
24329+
```
24330+
24331+
- *Type:* <a href="#cdk-monitoring-constructs.DashboardRenderingPreference">DashboardRenderingPreference</a>
24332+
- *Default:* DashboardRenderingPreference.INTERACTIVE_ONLY
24333+
24334+
Dashboard rendering preference.
24335+
24336+
---
24337+
2433424338
##### `summaryDashboardPeriodOverride`<sup>Optional</sup> <a name="summaryDashboardPeriodOverride" id="cdk-monitoring-constructs.MonitoringDashboardsProps.property.summaryDashboardPeriodOverride"></a>
2433524339

2433624340
```typescript
@@ -24371,39 +24375,48 @@ const monitoringFacadeProps: MonitoringFacadeProps = { ... }
2437124375

2437224376
| **Name** | **Type** | **Description** |
2437324377
| --- | --- | --- |
24374-
| <code><a href="#cdk-monitoring-constructs.MonitoringFacadeProps.property.alarmFactoryDefaults">alarmFactoryDefaults</a></code> | <code><a href="#cdk-monitoring-constructs.AlarmFactoryDefaults">AlarmFactoryDefaults</a></code> | *No description.* |
24375-
| <code><a href="#cdk-monitoring-constructs.MonitoringFacadeProps.property.metricFactoryDefaults">metricFactoryDefaults</a></code> | <code><a href="#cdk-monitoring-constructs.MetricFactoryDefaults">MetricFactoryDefaults</a></code> | *No description.* |
24376-
| <code><a href="#cdk-monitoring-constructs.MonitoringFacadeProps.property.dashboardFactory">dashboardFactory</a></code> | <code><a href="#cdk-monitoring-constructs.IDashboardFactory">IDashboardFactory</a></code> | *No description.* |
24378+
| <code><a href="#cdk-monitoring-constructs.MonitoringFacadeProps.property.alarmFactoryDefaults">alarmFactoryDefaults</a></code> | <code><a href="#cdk-monitoring-constructs.AlarmFactoryDefaults">AlarmFactoryDefaults</a></code> | Defaults for alarm factory. |
24379+
| <code><a href="#cdk-monitoring-constructs.MonitoringFacadeProps.property.dashboardFactory">dashboardFactory</a></code> | <code><a href="#cdk-monitoring-constructs.IDashboardFactory">IDashboardFactory</a></code> | Defaults for dashboard factory. |
24380+
| <code><a href="#cdk-monitoring-constructs.MonitoringFacadeProps.property.metricFactoryDefaults">metricFactoryDefaults</a></code> | <code><a href="#cdk-monitoring-constructs.MetricFactoryDefaults">MetricFactoryDefaults</a></code> | Defaults for metric factory. |
2437724381

2437824382
---
2437924383

24380-
##### `alarmFactoryDefaults`<sup>Required</sup> <a name="alarmFactoryDefaults" id="cdk-monitoring-constructs.MonitoringFacadeProps.property.alarmFactoryDefaults"></a>
24384+
##### `alarmFactoryDefaults`<sup>Optional</sup> <a name="alarmFactoryDefaults" id="cdk-monitoring-constructs.MonitoringFacadeProps.property.alarmFactoryDefaults"></a>
2438124385

2438224386
```typescript
2438324387
public readonly alarmFactoryDefaults: AlarmFactoryDefaults;
2438424388
```
2438524389

2438624390
- *Type:* <a href="#cdk-monitoring-constructs.AlarmFactoryDefaults">AlarmFactoryDefaults</a>
24391+
- *Default:* actions enabled, facade logical ID used as default alarm name prefix
24392+
24393+
Defaults for alarm factory.
2438724394

2438824395
---
2438924396

24390-
##### `metricFactoryDefaults`<sup>Required</sup> <a name="metricFactoryDefaults" id="cdk-monitoring-constructs.MonitoringFacadeProps.property.metricFactoryDefaults"></a>
24397+
##### `dashboardFactory`<sup>Optional</sup> <a name="dashboardFactory" id="cdk-monitoring-constructs.MonitoringFacadeProps.property.dashboardFactory"></a>
2439124398

2439224399
```typescript
24393-
public readonly metricFactoryDefaults: MetricFactoryDefaults;
24400+
public readonly dashboardFactory: IDashboardFactory;
2439424401
```
2439524402

24396-
- *Type:* <a href="#cdk-monitoring-constructs.MetricFactoryDefaults">MetricFactoryDefaults</a>
24403+
- *Type:* <a href="#cdk-monitoring-constructs.IDashboardFactory">IDashboardFactory</a>
24404+
- *Default:* `DefaultDashboardFactory`; facade logical ID used as default name
24405+
24406+
Defaults for dashboard factory.
2439724407

2439824408
---
2439924409

24400-
##### `dashboardFactory`<sup>Optional</sup> <a name="dashboardFactory" id="cdk-monitoring-constructs.MonitoringFacadeProps.property.dashboardFactory"></a>
24410+
##### `metricFactoryDefaults`<sup>Optional</sup> <a name="metricFactoryDefaults" id="cdk-monitoring-constructs.MonitoringFacadeProps.property.metricFactoryDefaults"></a>
2440124411

2440224412
```typescript
24403-
public readonly dashboardFactory: IDashboardFactory;
24413+
public readonly metricFactoryDefaults: MetricFactoryDefaults;
2440424414
```
2440524415

24406-
- *Type:* <a href="#cdk-monitoring-constructs.IDashboardFactory">IDashboardFactory</a>
24416+
- *Type:* <a href="#cdk-monitoring-constructs.MetricFactoryDefaults">MetricFactoryDefaults</a>
24417+
- *Default:* empty (no preferences)
24418+
24419+
Defaults for metric factory.
2440724420

2440824421
---
2440924422

lib/dashboard/DefaultDashboardFactory.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/dashboard/DefaultDashboardFactory.ts

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -58,22 +58,30 @@ export interface MonitoringDashboardsProps {
5858
/**
5959
* Flag indicating whether the default dashboard should be created.
6060
* This is independent on other create dashboard flags.
61+
*
62+
* @default true
6163
*/
62-
readonly createDashboard: boolean;
64+
readonly createDashboard?: boolean;
6365
/**
6466
* Flag indicating whether the summary dashboard should be created.
6567
* This is independent on other create dashboard flags.
68+
*
69+
* @default false
6670
*/
67-
readonly createSummaryDashboard: boolean;
71+
readonly createSummaryDashboard?: boolean;
6872
/**
6973
* Flag indicating whether the alarm dashboard should be created.
7074
* This is independent on other create dashboard flags.
75+
*
76+
* @default false
7177
*/
72-
readonly createAlarmDashboard: boolean;
78+
readonly createAlarmDashboard?: boolean;
7379
/**
7480
* Dashboard rendering preference.
81+
*
82+
* @default DashboardRenderingPreference.INTERACTIVE_ONLY
7583
*/
76-
readonly renderingPreference: DashboardRenderingPreference;
84+
readonly renderingPreference?: DashboardRenderingPreference;
7785
}
7886

7987
export class DefaultDashboardFactory
@@ -88,29 +96,28 @@ export class DefaultDashboardFactory
8896
constructor(scope: Construct, id: string, props: MonitoringDashboardsProps) {
8997
super(scope, id);
9098

99+
const renderingPreference =
100+
props.renderingPreference ??
101+
DashboardRenderingPreference.INTERACTIVE_ONLY;
91102
const detailStart: string =
92103
"-" + (props.detailDashboardRange ?? Duration.hours(8)).toIsoString();
93104
const summaryStart: string =
94105
"-" + (props.summaryDashboardRange ?? Duration.days(14)).toIsoString();
95106
let anyDashboardCreated = false;
96107

97-
if (props.createDashboard) {
108+
if (props.createDashboard ?? true) {
98109
anyDashboardCreated = true;
99-
this.dashboard = this.createDashboard(
100-
props.renderingPreference,
101-
"Dashboard",
102-
{
103-
dashboardName: props.dashboardNamePrefix,
104-
start: detailStart,
105-
periodOverride:
106-
props.detailDashboardPeriodOverride ?? PeriodOverride.INHERIT,
107-
}
108-
);
110+
this.dashboard = this.createDashboard(renderingPreference, "Dashboard", {
111+
dashboardName: props.dashboardNamePrefix,
112+
start: detailStart,
113+
periodOverride:
114+
props.detailDashboardPeriodOverride ?? PeriodOverride.INHERIT,
115+
});
109116
}
110-
if (props.createSummaryDashboard) {
117+
if (props.createSummaryDashboard ?? false) {
111118
anyDashboardCreated = true;
112119
this.summaryDashboard = this.createDashboard(
113-
props.renderingPreference,
120+
renderingPreference,
114121
"SummaryDashboard",
115122
{
116123
dashboardName: `${props.dashboardNamePrefix}-Summary`,
@@ -120,10 +127,10 @@ export class DefaultDashboardFactory
120127
}
121128
);
122129
}
123-
if (props.createAlarmDashboard) {
130+
if (props.createAlarmDashboard ?? false) {
124131
anyDashboardCreated = true;
125132
this.alarmDashboard = this.createDashboard(
126-
props.renderingPreference,
133+
renderingPreference,
127134
"AlarmDashboard",
128135
{
129136
dashboardName: `${props.dashboardNamePrefix}-Alarms`,

0 commit comments

Comments
 (0)