protected ProgressEvent handleRequest()

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