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