in replicakey/src/main/java/software/amazon/kms/replicakey/UpdateHandler.java [37:65]
protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final ProxyClient<KmsClient> proxyClient,
final Logger logger) {
final ResourceModel model = setDefaults(request.getDesiredResourceState());
final ResourceModel previousModel = setDefaults(request.getPreviousResourceState());
final Map<String, String> tags = request.getDesiredResourceTags();
return ProgressEvent.progress(model, callbackContext)
// Describe the key (without updating the model) to verify that it has not been deleted
.then(progress -> keyHandlerHelper
.describeKey(proxy, proxyClient, model, callbackContext, false))
// Key status does not affect any of these other updates, so there is no need to wait
.then(progress -> keyHandlerHelper
.enableKeyIfNecessary(proxy, proxyClient, previousModel, model, callbackContext,
false))
.then(progress -> keyHandlerHelper
.disableKeyIfNecessary(proxy, proxyClient, previousModel, model, callbackContext))
.then(progress -> keyHandlerHelper
.updateKeyDescription(proxy, proxyClient, previousModel, model, callbackContext))
.then(progress -> keyHandlerHelper
.updateKeyPolicy(proxy, proxyClient, previousModel, model, callbackContext))
.then(progress -> keyHandlerHelper
.updateKeyTags(proxy, proxyClient, model, tags, callbackContext))
.then(eventualConsistencyHandlerHelper::waitForChangesToPropagate)
.then(progress -> ProgressEvent.defaultSuccessHandler(unsetWriteOnly(model)));
}