in aws-route53recoverycontrol-safetyrule/src/main/java/software/amazon/route53recoverycontrol/safetyrule/CreateHandler.java [174:218]
private boolean isStabilized(
CreateSafetyRuleRequest createRequest,
CreateSafetyRuleResponse createResponse,
ProxyClient<Route53RecoveryControlConfigClient> proxyClient,
ResourceModel model,
CallbackContext context
) {
{
boolean isAssertion = model.getAssertionRule() != null;
String safetyRuleArn = isAssertion ? createResponse.assertionRule().safetyRuleArn() :
createResponse.gatingRule().safetyRuleArn();
if (safetyRuleArn == null) return false;
ResourceModel createModel = Translator.translateFromCreateResponse(createResponse);
model.setName(createModel.getName());
model.setSafetyRuleArn(createModel.getSafetyRuleArn());
model.setControlPanelArn(createModel.getControlPanelArn());
model.setStatus(createModel.getStatus());
model.setRuleConfig(createModel.getRuleConfig());
if (isAssertion) {
model.setAssertionRule(createModel.getAssertionRule());
} else {
model.setGatingRule(createModel.getGatingRule());
}
DescribeSafetyRuleResponse describeResponse;
try{
describeResponse = getSafetyRule(DescribeSafetyRuleRequest.builder().safetyRuleArn(model.getSafetyRuleArn()).build(), proxyClient);
logger.log(String.format("Describe Response %s", describeResponse));
} catch (CfnNotFoundException e) {
logger.log(String.format("%s has not yet stabilized.", ResourceModel.TYPE_NAME));
return false;
}
String status = isAssertion ? describeResponse.assertionRule().statusAsString() : describeResponse.gatingRule().statusAsString();
return status.equals("DEPLOYED") || status.equals("PENDING");
}
}