in cloudwatch-controller/src/main/java/com/amazonwebservices/blogs/containers/kubernetes/K8sMetricAlarmReconciler.java [120:167]
private void modifyCloudWatchAlarm (String name, String namespace) {
try {
boolean isAdded = false;
boolean isUpdated = false;
boolean isDeleted = false;
K8sMetricAlarmCustomObject cloudWatchAlarm = null;
String objKey = name.concat(namespace);
if (addedObjects.containsKey(objKey)) {
isAdded = true;
cloudWatchAlarm = addedObjects.get(objKey);
addedObjects.remove(objKey);
}
else if (updatedObjects.containsKey(objKey)) {
isUpdated = true;
cloudWatchAlarm = updatedObjects.get(objKey);
updatedObjects.remove(objKey);
}
else if (deletedObjects.containsKey(objKey)) {
isDeleted = true;
cloudWatchAlarm = deletedObjects.get(objKey);
deletedObjects.remove(objKey);
}
JsonObject scaleUpAlarmConfigObject = parseCloudWatchAlarmConfig (cloudWatchAlarm.getSpec().getScaleUpAlarmConfig());
JsonObject scaleDownAlarmConfigObject = parseCloudWatchAlarmConfig (cloudWatchAlarm.getSpec().getScaleDownAlarmConfig());
if (scaleUpAlarmConfigObject != null) logger.info(String.format("Scale up alarm configuration:\n %s", scaleUpAlarmConfigObject.encodePrettily()));
if (scaleDownAlarmConfigObject != null) logger.info(String.format("Scale down alarm configuration:\n %s", scaleDownAlarmConfigObject.encodePrettily()));
if (isAdded) {
createCloudWatchAlarm (scaleUpAlarmConfigObject);
createCloudWatchAlarm (scaleDownAlarmConfigObject);
}
else if (isUpdated) {
deleteCloudWatchAlarm (scaleUpAlarmConfigObject);
deleteCloudWatchAlarm (scaleDownAlarmConfigObject);
createCloudWatchAlarm (scaleUpAlarmConfigObject);
createCloudWatchAlarm (scaleDownAlarmConfigObject);
}
else if (isDeleted) {
deleteCloudWatchAlarm (scaleUpAlarmConfigObject);
deleteCloudWatchAlarm (scaleDownAlarmConfigObject);
}
} catch (Exception e) {
logger.error(String.format("Exception occured when updating CloudWatchAlarm '%s.%s'; %s", name, namespace, e.getMessage()), e);
}
}