in aws-synthetics-canary/src/main/java/com/amazon/synthetics/canary/DeleteHandler.java [16:45]
protected ProgressEvent<ResourceModel, CallbackContext> handleRequest() {
if (context.isCanaryDeleteStarted()) {
return confirmCanaryDeleted();
}
Canary canary = getCanaryOrThrow();
if (canary.status().state() == CanaryState.CREATING) {
String message = "Canary is in state CREATING and cannot be deleted.";
log(message);
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.message(message)
.errorCode(HandlerErrorCode.ResourceConflict)
.status(OperationStatus.FAILED)
.build();
} else if (canary.status().state() == CanaryState.STARTING) {
String message = "Canary is in state STARTING. It must finish starting before it can be stopped and deleted.";
return waitingForCanaryStateTransition(message, MAX_RETRY_TIMES, "STARTING");
} else if (canary.status().state() == CanaryState.UPDATING) {
String message = "Canary is in state UPDATING. It must finish updating before it can be deleted.";
return waitingForCanaryStateTransition(message, MAX_RETRY_TIMES, "UPDATING");
} else if (canary.status().state() == CanaryState.STOPPING) {
String message = "Canary is in state STOPPING. It must finish stopping before it can be deleted.";
return waitingForCanaryStateTransition(message, MAX_RETRY_TIMES, "STOPPING");
} else if (canary.status().state() == CanaryState.RUNNING) {
return handleCanaryInStateRunning(canary);
} else {
return deleteCanary(canary);
}
}