in aws-rds-eventsubscription/src/main/java/software/amazon/rds/eventsubscription/UpdateHandler.java [19:55]
protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final ProxyClient<RdsClient> proxyClient,
final Logger logger
) {
final ResourceModel desiredModel = request.getDesiredResourceState();
final ResourceModel previousModel = request.getPreviousResourceState();
final Set<String> desiredSourceIds = Optional.ofNullable(desiredModel.getSourceIds()).orElse(Collections.emptySet());
final Set<String> previousSourceIds = Optional.ofNullable(previousModel.getSourceIds()).orElse(Collections.emptySet());
final Map<String, String> previousTags = Tagging.mergeTags(
request.getPreviousSystemTags(),
request.getPreviousResourceTags()
);
final Map<String, String> desiredTags = Tagging.mergeTags(
request.getSystemTags(),
request.getDesiredResourceTags()
);
return proxy.initiate("rds::update-event-subscription", proxyClient, desiredModel, callbackContext)
.translateToServiceRequest(Translator::modifyEventSubscriptionRequest)
.makeServiceCall((modifyEventSubscriptionRequest, proxyInvocation) -> proxyInvocation.injectCredentialsAndInvokeV2(modifyEventSubscriptionRequest, proxyInvocation.client()::modifyEventSubscription))
.stabilize((modifyEventSubscriptionRequest, modifyEventSubscriptionResponse, proxyInvocation, resourceModel, context) ->
isStabilized(resourceModel, proxyInvocation))
.handleError((modifyRequest, exception, client, resourceModel, ctx) -> Commons.handleException(
ProgressEvent.progress(resourceModel, ctx),
exception,
DEFAULT_EVENT_SUBSCRIPTION_ERROR_RULE_SET))
.progress()
.then(progress -> addSourceIds(proxy, proxyClient, desiredSourceIds, previousSourceIds, progress))
.then(progress -> removeSourceIds(proxy, proxyClient, desiredSourceIds, previousSourceIds, progress))
.then(progress -> waitForEventSubscription(proxy, proxyClient, progress))
.then(progress -> tagResource(proxy, proxyClient, progress, previousTags, desiredTags))
.then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
}