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