private boolean isStabilized()

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;
    }