Skip to content

Commit 4cf514a

Browse files
authored
Add missing fields for suppressor alarm (#774)
* Add missing fields for suppressor alarm * Add test for suppresor alarm * Fix format error
1 parent 3566f42 commit 4cf514a

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

lambda-events/src/event/cloudwatch_alarms/mod.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ where
7575
#[serde(default, bound = "")]
7676
pub reason_data: Option<R>,
7777
pub timestamp: DateTime<Utc>,
78+
pub actions_suppressed_by: Option<String>,
79+
pub actions_suppressed_reason: Option<String>,
7880
}
7981

8082
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
@@ -299,4 +301,21 @@ mod test {
299301
let reparsed: CloudWatchCompositeAlarm = serde_json::from_slice(output.as_bytes()).unwrap();
300302
assert_eq!(parsed, reparsed);
301303
}
304+
305+
#[test]
306+
#[cfg(feature = "cloudwatch_alarms")]
307+
fn example_cloudwatch_alarm_composite_with_suppressor_alarm() {
308+
let data = include_bytes!("../../fixtures/example-cloudwatch-alarm-composite-with-suppressor-alarm.json");
309+
let parsed: CloudWatchCompositeAlarm = serde_json::from_slice(data).unwrap();
310+
let state = parsed.alarm_data.state.clone().unwrap();
311+
assert_eq!("WaitPeriod", state.actions_suppressed_by.unwrap());
312+
assert_eq!(
313+
"Actions suppressed by WaitPeriod",
314+
state.actions_suppressed_reason.unwrap()
315+
);
316+
317+
let output: String = serde_json::to_string(&parsed).unwrap();
318+
let reparsed: CloudWatchCompositeAlarm = serde_json::from_slice(output.as_bytes()).unwrap();
319+
assert_eq!(parsed, reparsed);
320+
}
302321
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{
2+
"version": "0",
3+
"id": "d3dfc86d-384d-24c8-0345-9f7986db0b80",
4+
"detail-type": "CloudWatch Alarm State Change",
5+
"source": "aws.cloudwatch",
6+
"account": "123456789012",
7+
"time": "2022-07-22T15:57:45Z",
8+
"region": "us-east-1",
9+
"resources": [
10+
"arn:aws:cloudwatch:us-east-1:123456789012:alarm:ServiceAggregatedAlarm"
11+
],
12+
"alarmData": {
13+
"alarmName": "ServiceAggregatedAlarm",
14+
"state": {
15+
"actionsSuppressedBy": "WaitPeriod",
16+
"actionsSuppressedReason": "Actions suppressed by WaitPeriod",
17+
"value": "ALARM",
18+
"reason": "arn:aws:cloudwatch:us-east-1:123456789012:alarm:SuppressionDemo.EventBridge.FirstChild transitioned to ALARM at Friday 22 July, 2022 15:57:45 UTC",
19+
"reasonData": "{\"triggeringAlarms\":[{\"arn\":\"arn:aws:cloudwatch:us-east-1:123456789012:alarm:ServerCpuTooHigh\",\"state\":{\"value\":\"ALARM\",\"timestamp\":\"2022-07-22T15:57:45.394+0000\"}}]}",
20+
"timestamp": "2022-07-22T15:57:45.394+0000"
21+
},
22+
"previousState": {
23+
"value": "OK",
24+
"reason": "arn:aws:cloudwatch:us-east-1:123456789012:alarm:SuppressionDemo.EventBridge.Main was created and its alarm rule evaluates to OK",
25+
"reasonData": "{\"triggeringAlarms\":[{\"arn\":\"arn:aws:cloudwatch:us-east-1:123456789012:alarm:TotalNetworkTrafficTooHigh\",\"state\":{\"value\":\"OK\",\"timestamp\":\"2022-07-14T16:28:57.770+0000\"}},{\"arn\":\"arn:aws:cloudwatch:us-east-1:123456789012:alarm:ServerCpuTooHigh\",\"state\":{\"value\":\"OK\",\"timestamp\":\"2022-07-14T16:28:54.191+0000\"}}]}",
26+
"timestamp": "2022-07-22T15:56:14.552+0000"
27+
},
28+
"configuration": {
29+
"alarmRule": "ALARM(ServerCpuTooHigh) OR ALARM(TotalNetworkTrafficTooHigh)",
30+
"actionsSuppressor": "ServiceMaintenanceAlarm",
31+
"actionsSuppressorWaitPeriod": 120,
32+
"actionsSuppressorExtensionPeriod": 180
33+
}
34+
}
35+
}

0 commit comments

Comments
 (0)