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