in aws-rds-optiongroup/src/main/java/software/amazon/rds/optiongroup/CreateHandler.java [29:75]
protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final ProxyClient<RdsClient> proxyClient,
final Logger logger
) {
return ProgressEvent.progress(request.getDesiredResourceState(), callbackContext)
.then(progress -> {
final ResourceModel model = request.getDesiredResourceState();
if (StringUtils.isNullOrEmpty(model.getOptionGroupName())) {
model.setOptionGroupName(IdentifierUtils.generateResourceIdentifier(
Optional.ofNullable(request.getStackId()).orElse(STACK_NAME),
Optional.ofNullable(request.getLogicalResourceIdentifier()).orElse(RESOURCE_IDENTIFIER),
request.getClientRequestToken(),
RESOURCE_ID_MAX_LENGTH
).toLowerCase());
}
return ProgressEvent.progress(model, progress.getCallbackContext());
})
.then(progress -> proxy.initiate("rds::create-option-group", proxyClient, progress.getResourceModel(), progress.getCallbackContext())
.translateToServiceRequest(model -> Translator.createOptionGroupRequest(
model,
mergeMaps(
request.getSystemTags(),
request.getDesiredResourceTags()
)
))
.backoffDelay(config.getBackoff())
.makeServiceCall((createRequest, proxyInvocation) -> proxyInvocation.injectCredentialsAndInvokeV2(
createRequest,
proxyInvocation.client()::createOptionGroup
))
.handleError((createRequest, exception, client, resourceModel, ctx) -> Commons.handleException(
ProgressEvent.progress(resourceModel, ctx),
exception,
DEFAULT_OPTION_GROUP_ERROR_RULE_SET
))
.progress())
.then(progress -> {
if (CollectionUtils.isNullOrEmpty(progress.getResourceModel().getOptionConfigurations())) {
return progress;
}
return updateOptionGroup(proxy, proxyClient, progress);
})
.then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
}