in aws-synthetics-canary/src/main/java/com/amazon/synthetics/canary/CreateHandler.java [28:59]
protected ProgressEvent<ResourceModel, CallbackContext> handleRequest() {
if (!context.isCanaryCreateStarted()) {
// Creation has yet to begin
log("Creating canary.");
context.setCanaryCreateStarted(true);
return createCanary();
}
Canary canary = getCanaryOrThrow();
if (canary.status().state() == CanaryState.CREATING) {
return waitingForCanaryStateTransition(
"Creating canary",
"Canary is in state CREATING.",
MAX_RETRY_TIMES,
"CREATING");
} else if (canary.status().state() == CanaryState.ERROR) {
log(String.format("Canary is in state ERROR. %s", canary.status().stateReason()));
return ProgressEvent.failed(
model,
context,
HandlerErrorCode.GeneralServiceException,
canary.status().stateReason());
} else if (canary.status().state() == CanaryState.READY) {
return handleCanaryInStateReady(canary);
} else if (canary.status().state() == CanaryState.STARTING) {
return handleCanaryInStateStarting(canary);
} else {
return ProgressEvent.defaultSuccessHandler(ModelHelper.constructModel(canary, model));
}
}