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