in aws-route53recoveryreadiness-recoverygroup/src/main/java/software/amazon/route53recoveryreadiness/recoverygroup/CreateHandler.java [27:71]
protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final ProxyClient<Route53RecoveryReadinessClient> proxyClient,
final Logger logger) {
this.logger = logger;
// Make sure the user isn't trying to assign values to readOnly properties
if (request.getDesiredResourceState().getRecoveryGroupArn() != null) {
throw new CfnInvalidRequestException(request.getDesiredResourceState().toString());
}
return ProgressEvent.progress(request.getDesiredResourceState(), callbackContext)
// Check to see if RecoveryGroup already exists
.then(progress -> {
final ProgressEvent<ResourceModel, CallbackContext> progressEvent = proxy.initiate("AWS-Route53RecoveryReadiness-RecoveryGroup::Create::PreExistenceCheck", proxyClient, progress.getResourceModel(), progress.getCallbackContext())
.translateToServiceRequest(Translator::translateToReadRequest)
.makeServiceCall(this::getRecoveryGroup)
.progress(0);
// Set callback delay to 0 so that CloudFormation will execute the next step immediately.
progressEvent.setCallbackDelaySeconds(0);
return progress;
}
)
// Then make sure the cells exist
.then(progress -> {
final ProgressEvent<ResourceModel, CallbackContext> progressEvent = proxy.initiate("AWS-Route53RecoveryReadiness-RecoveryGroup::Create::CheckForCellExistence", proxyClient, progress.getResourceModel(), progress.getCallbackContext())
.translateToServiceRequest(Translator::translateToReadRequest)
.makeServiceCall((awsRequest, client) -> validateCells(request.getDesiredResourceState(), proxyClient))
.progress(0);
progressEvent.setCallbackDelaySeconds(0);
return progressEvent;
})
.then(progress -> {
final ProgressEvent<ResourceModel, CallbackContext> progressEvent = proxy.initiate("AWS-Route53RecoveryReadiness-RecoveryGroup::Create", proxyClient, progress.getResourceModel(), progress.getCallbackContext())
.translateToServiceRequest(Translator::translateToCreateRequest)
.makeServiceCall(this::createRecoveryGroup)
.progress();
progressEvent.setCallbackDelaySeconds(0);
return progressEvent;
})
.then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
}