in aws-kendra-index/src/main/java/software/amazon/kendra/index/UpdateHandler.java [69:99]
protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final ProxyClient<KendraClient> proxyClient,
final Logger logger) {
this.logger = logger;
final ResourceModel model = request.getDesiredResourceState();
verifyNonUpdatableFields(model, request.getPreviousResourceState());
return ProgressEvent.progress(model, callbackContext)
// First validate the resource actually exists per the contract requirements
// https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-test-contract.html
.then(progress ->
proxy.initiate("AWS-Kendra-Index::ValidateResourceExists", proxyClient, model, callbackContext)
.translateToServiceRequest(resourceModel -> Translator.translateToReadRequest(model))
.makeServiceCall(this::validateResourceExists)
.progress())
.then(progress ->
proxy.initiate("AWS-Kendra-Index::Update", proxyClient, model, callbackContext)
.translateToServiceRequest(resourceModel -> translateToUpdateRequest(model, request.getPreviousResourceState()))
.backoffDelay(delay)
.makeServiceCall(this::updateIndex)
.stabilize(this::stabilize)
.progress())
.then(progress -> updateTags(proxyClient, progress, request))
.then(progress -> new ReadHandler(indexArnBuilder).handleRequest(proxy, request, callbackContext, proxyClient, logger));
}