private ProgressEvent deleteDbCluster()

in aws-rds-dbcluster/src/main/java/software/amazon/rds/dbcluster/DeleteHandler.java [74:112]


    private ProgressEvent<ResourceModel, CallbackContext> deleteDbCluster(
            final AmazonWebServicesClientProxy proxy,
            final ResourceHandlerRequest<ResourceModel> request,
            final ProxyClient<RdsClient> proxyClient,
            final ProgressEvent<ResourceModel, CallbackContext> progress
    ) {
        final ResourceModel resourceModel = request.getDesiredResourceState();

        String snapshotIdentifier = null;
        if (BooleanUtils.isNotFalse(request.getSnapshotRequested())) {
            snapshotIdentifier = resourceModel.getSnapshotIdentifier();
            if (StringUtils.isNullOrEmpty(snapshotIdentifier)) {
                snapshotIdentifier = IdentifierUtils.generateResourceIdentifier(
                        Optional.ofNullable(request.getStackId()).orElse(STACK_NAME),
                        SNAPSHOT_PREFIX + Optional.ofNullable(request.getLogicalResourceIdentifier()).orElse(RESOURCE_IDENTIFIER),
                        request.getClientRequestToken(),
                        SNAPSHOT_MAX_LENGTH
                );
            }
        }
        final String finalSnapshotIdentifier = snapshotIdentifier;

        progress.getCallbackContext().setDeleting(true);

        return proxy.initiate("rds::delete-dbcluster", proxyClient, progress.getResourceModel(), progress.getCallbackContext())
                .translateToServiceRequest(model -> Translator.deleteDbClusterRequest(model, finalSnapshotIdentifier))
                .backoffDelay(config.getBackoff())
                .makeServiceCall((deleteRequest, proxyInvocation) -> proxyInvocation.injectCredentialsAndInvokeV2(
                        deleteRequest,
                        proxyInvocation.client()::deleteDBCluster
                ))
                .stabilize((deleteRequest, deleteResponse, proxyInvocation, model, context) -> isDBClusterDeleted(proxyInvocation, model))
                .handleError((deleteRequest, exception, client, model, context) -> Commons.handleException(
                        ProgressEvent.progress(model, context),
                        exception,
                        DEFAULT_DB_CLUSTER_ERROR_RULE_SET
                ))
                .done((deleteRequest, deleteResponse, proxyInvocation, model, context) -> ProgressEvent.defaultSuccessHandler(null));
    }