in aws-route53recoverycontrol-safetyrule/src/main/java/software/amazon/route53recoverycontrol/safetyrule/UpdateHandler.java [109:160]
private boolean isStabilized(
UpdateSafetyRuleRequest updateRequest,
UpdateSafetyRuleResponse updateResponse,
ProxyClient<Route53RecoveryControlConfigClient> proxyClient,
ResourceModel model,
CallbackContext context
) {
boolean isAsserted = updateResponse.assertionRule() != null;
ResourceModel updatedModel = Translator.translateFromUpdateResponse(updateResponse);
model.setSafetyRuleArn(updatedModel.getSafetyRuleArn());
model.setStatus(updatedModel.getStatus());
model.setStatus(updatedModel.getStatus());
model.setControlPanelArn(updatedModel.getControlPanelArn());
model.setName(updatedModel.getName());
model.setRuleConfig(updatedModel.getRuleConfig());
if (isAsserted) {
model.setAssertionRule(updatedModel.getAssertionRule());
} else {
model.setGatingRule(updatedModel.getGatingRule());
}
DescribeSafetyRuleResponse response;
// want to bubble up exceptions
response = getSafetyRule(DescribeSafetyRuleRequest.builder().safetyRuleArn(model.getSafetyRuleArn()).build(),
proxyClient);
String status = isAsserted ? response.assertionRule().statusAsString() :
response.gatingRule().statusAsString();
Integer requestWaitTime = isAsserted ? response.assertionRule().waitPeriodMs() :
response.gatingRule().waitPeriodMs();
Integer modelWaitTime = isAsserted ? model.getAssertionRule().getWaitPeriodMs() :
model.getGatingRule().getWaitPeriodMs();
if (status.equals("DEPLOYED")) {
if (requestWaitTime.equals(modelWaitTime)) {
logger.log(String.format("%s has stabilized.", ResourceModel.TYPE_NAME));
return true;
}
} else {
logger.log(String.format("%s has not yet stabilized.", ResourceModel.TYPE_NAME));
return false;
}
return false;
}