protected ProgressEvent handleRequest()

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));
        }
    }