@@ -86,36 +86,38 @@ class CleanupAlarmsAgent implements RunnableAgent, CustomScheduledAgent {
86
86
getAccounts(). each { NetflixAmazonCredentials credentials ->
87
87
credentials. regions. each { AmazonCredentials.AWSRegion region ->
88
88
log. info(" Looking for alarms to delete" )
89
-
90
- def cloudWatch = amazonClientProvider. getCloudWatch(credentials, region. name)
91
- Set<String > attachedAlarms = getAttachedAlarms(amazonClientProvider. getAutoScaling(credentials, region. name))
92
- def describeAlarmsRequest = new DescribeAlarmsRequest (). withStateValue(StateValue . INSUFFICIENT_DATA )
93
-
94
- while (true ) {
95
- def result = cloudWatch. describeAlarms(describeAlarmsRequest)
96
-
97
- List<MetricAlarm > alarmsToDelete = result. metricAlarms. findAll {
98
- it. stateUpdatedTimestamp. before(DateTime . now(). minusDays(daysToLeave). toDate()) &&
99
- ! attachedAlarms. contains(it. alarmName) &&
100
- ALARM_NAME_PATTERN . matcher(it. alarmName). matches()
101
- }
102
-
103
- if (alarmsToDelete) {
104
- // terminate up to 20 alarms at a time (avoids any AWS limits on # of concurrent deletes)
105
- alarmsToDelete. collate(20 ). each {
106
- log. info(" Deleting ${ it.size()} alarms in ${ credentials.name} /${ region.name} " +
107
- " (alarms: ${ it.alarmName.join(", ")} )" )
108
- cloudWatch. deleteAlarms(new DeleteAlarmsRequest (). withAlarmNames(it. alarmName))
109
- Thread . sleep(500 )
89
+ try {
90
+ def cloudWatch = amazonClientProvider. getCloudWatch(credentials, region. name)
91
+ Set<String > attachedAlarms = getAttachedAlarms(amazonClientProvider. getAutoScaling(credentials, region. name))
92
+ def describeAlarmsRequest = new DescribeAlarmsRequest (). withStateValue(StateValue . INSUFFICIENT_DATA )
93
+
94
+ while (true ) {
95
+ def result = cloudWatch. describeAlarms(describeAlarmsRequest)
96
+
97
+ List<MetricAlarm > alarmsToDelete = result. metricAlarms. findAll {
98
+ it. stateUpdatedTimestamp. before(DateTime . now(). minusDays(daysToLeave). toDate()) &&
99
+ ! attachedAlarms. contains(it. alarmName) &&
100
+ ALARM_NAME_PATTERN . matcher(it. alarmName). matches()
110
101
}
111
102
112
- }
103
+ if (alarmsToDelete) {
104
+ // terminate up to 20 alarms at a time (avoids any AWS limits on # of concurrent deletes)
105
+ alarmsToDelete. collate(20 ). each {
106
+ log. info(" Deleting ${ it.size()} alarms in ${ credentials.name} /${ region.name} " +
107
+ " (alarms: ${ it.alarmName.join(", ")} )" )
108
+ cloudWatch. deleteAlarms(new DeleteAlarmsRequest (). withAlarmNames(it. alarmName))
109
+ Thread . sleep(500 )
110
+ }
111
+ }
113
112
114
- if (result. nextToken) {
115
- describeAlarmsRequest. withNextToken(result. nextToken)
116
- } else {
117
- break
113
+ if (result. nextToken) {
114
+ describeAlarmsRequest. withNextToken(result. nextToken)
115
+ } else {
116
+ break
117
+ }
118
118
}
119
+ } catch (Exception e) {
120
+ log. error(" Error occurred while processing alarms for ${ credentials.name} /${ region.name} : ${ e.message} " , e)
119
121
}
120
122
}
121
123
}
0 commit comments