protected ProgressEvent handleRequest()

in aws-rds-dbcluster/src/main/java/software/amazon/rds/dbcluster/CreateHandler.java [28:75]


    protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
            final AmazonWebServicesClientProxy proxy,
            final ResourceHandlerRequest<ResourceModel> request,
            final CallbackContext callbackContext,
            final ProxyClient<RdsClient> proxyClient,
            final Logger logger
    ) {
        ResourceModel model = request.getDesiredResourceState();
        if (StringUtils.isNullOrEmpty(model.getDBClusterIdentifier())) {
            model.setDBClusterIdentifier(
                    IdentifierUtils.generateResourceIdentifier(
                            Optional.ofNullable(request.getStackId()).orElse(STACK_NAME),
                            Optional.ofNullable(request.getLogicalResourceIdentifier()).orElse(RESOURCE_IDENTIFIER),
                            request.getClientRequestToken(),
                            RESOURCE_ID_MAX_LENGTH
                    ).toLowerCase()
            );
        }

        final Map<String, String> tags = Tagging.mergeTags(
                request.getSystemTags(),
                request.getDesiredResourceTags()
        );
        model.setTags(Translator.translateTagsFromRequest(tags));

        return ProgressEvent.progress(model, callbackContext)
                .then(progress -> {
                    if (isRestoreToPointInTime(model)) {
                        return restoreDbClusterToPointInTime(proxy, proxyClient, progress);
                    } else if (isRestoreFromSnapshot(model)) {
                        return restoreDbClusterFromSnapshot(proxy, proxyClient, progress);
                    }
                    return createDbCluster(proxy, proxyClient, progress);
                })
                .then(progress -> {
                    if (shouldUpdateAfterCreate(progress.getResourceModel())) {
                        return Commons.execOnce(
                                progress,
                                () -> modifyDBCluster(proxy, proxyClient, progress),
                                CallbackContext::isModified,
                                CallbackContext::setModified
                        );
                    }
                    return progress;
                })
                .then(progress -> addAssociatedRoles(proxy, proxyClient, progress, progress.getResourceModel().getAssociatedRoles()))
                .then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
    }