override fun handleRequest()

in aws-globalaccelerator-accelerator/src/main/kotlin/software/amazon/globalaccelerator/accelerator/UpdateHandler.kt [22:46]


    override fun handleRequest(proxy: AmazonWebServicesClientProxy,
                               request: ResourceHandlerRequest<ResourceModel>,
                               callbackContext: CallbackContext?,
                               logger: Logger): ProgressEvent<ResourceModel, CallbackContext?> {
        logger.debug("Update Accelerator Request: $request")
        val agaClient = client
        val inferredCallbackContext = callbackContext
                ?: CallbackContext(stabilizationRetriesRemaining = HandlerCommons.NUMBER_OF_STATE_POLL_RETRIES, pendingStabilization = false)
        val model = request.desiredResourceState
        val previousModel = request.previousResourceState
        getAccelerator(model.acceleratorArn, proxy, agaClient, logger)
                ?: return ProgressEvent.defaultFailureHandler(Exception("Failed to find accelerator. arn: [${model.acceleratorArn}]"), HandlerErrorCode.NotFound)
        if (byoipIPsUpdated(model, previousModel)) {
            logger.error("Failed attempt to update BYOIP IPs.")
            return ProgressEvent.defaultFailureHandler(
                    // Global Accelerator APIs don't support updates of IPs so customer will need to create accelerator with updated IPs.
                    Exception("Updates for BYOIP IP addresses is not a supported operation. Delete existing accelerator and create new accelerator with updated IPs."),
                    HandlerErrorCode.InvalidRequest)
        }
        return if (inferredCallbackContext.pendingStabilization) {
            waitForSynchronizedStep(inferredCallbackContext, model, proxy, agaClient, logger)
        } else {
            validateAndUpdateAccelerator(model, previousModel, proxy, agaClient, logger)
        }
    }