private boolean isStabilized()

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");

        }
    }