in aws-route53recoverycontrol-safetyrule/src/main/java/software/amazon/route53recoverycontrol/safetyrule/CreateHandler.java [29:79]
protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final ProxyClient<Route53RecoveryControlConfigClient> proxyClient,
final Logger logger) {
this.logger = logger;
ResourceModel currentModel = request.getDesiredResourceState();
boolean isAssertion = isAssertion(currentModel);
String controlPanelArn = currentModel.getControlPanelArn();
List<String> routingControls = isAssertion ? currentModel.getAssertionRule().getAssertedControls() : currentModel.getGatingRule().getGatingControls();
// Control Panel existence check
DescribeControlPanelRequest controlPanelRequest = DescribeControlPanelRequest.builder().controlPanelArn(controlPanelArn).build();
describeControlPanel(controlPanelRequest, proxyClient);
//Routing Controls existence check
if (routingControls.size() > 0) {
for (String routingControl : routingControls) {
DescribeRoutingControlRequest routingControlRequest = DescribeRoutingControlRequest.builder().routingControlArn(routingControl).build();
getRoutingControl(routingControlRequest, proxyClient);
}
}
// Target Controls existence check
if (!isAssertion) {
List<String> targetControls = currentModel.getGatingRule().getTargetControls();
if (targetControls.size() > 0) {
for (String targetControl : targetControls) {
DescribeRoutingControlRequest routingControlRequest = DescribeRoutingControlRequest.builder().routingControlArn(targetControl).build();
getRoutingControl(routingControlRequest, proxyClient);
}
}
}
return ProgressEvent.progress(request.getDesiredResourceState(), callbackContext)
.then(progress ->
proxy.initiate("AWS-Route53RecoveryControl-SafetyRule::Create", proxyClient, progress.getResourceModel(), progress.getCallbackContext())
.translateToServiceRequest(Translator::translateToCreateRequest)
.makeServiceCall(this::createSafetyRule)
.stabilize(this::isStabilized)
.progress()
)
.then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
}