protected ProgressEvent handleRequest()

in aws-rds-dbcluster/src/main/java/software/amazon/rds/dbcluster/UpdateHandler.java [31:71]


    protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
            final AmazonWebServicesClientProxy proxy,
            final ResourceHandlerRequest<ResourceModel> request,
            final CallbackContext callbackContext,
            final ProxyClient<RdsClient> proxyClient,
            final Logger logger
    ) {
        final Collection<Tag> previousTags = Translator.translateTagsFromRequest(
                Tagging.mergeTags(
                        request.getPreviousSystemTags(),
                        request.getPreviousResourceTags()
                )
        );
        final Collection<Tag> desiredTags = Translator.translateTagsFromRequest(
                Tagging.mergeTags(
                        request.getSystemTags(),
                        request.getDesiredResourceTags()
                )
        );

        if (!ImmutabilityHelper.isChangeMutable(request.getPreviousResourceState(), request.getDesiredResourceState())) {
            return ProgressEvent.failed(
                    request.getDesiredResourceState(),
                    callbackContext,
                    HandlerErrorCode.NotUpdatable,
                    "Resource is immutable"
            );
        }

        return ProgressEvent.progress(setDefaults(request.getDesiredResourceState()), callbackContext)
                .then(progress -> Commons.execOnce(
                        progress,
                        () -> modifyDBCluster(proxy, proxyClient, progress, cloudwatchLogsExportConfiguration(request)),
                        CallbackContext::isModified,
                        CallbackContext::setModified)
                )
                .then(progress -> removeAssociatedRoles(proxy, proxyClient, progress, setDefaults(request.getPreviousResourceState()).getAssociatedRoles()))
                .then(progress -> addAssociatedRoles(proxy, proxyClient, progress, progress.getResourceModel().getAssociatedRoles()))
                .then(progress -> tagResource(proxy, proxyClient, progress, previousTags, desiredTags))
                .then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
    }