private boolean isRDSStabilized()

in aws-ssm-resourcedatasync/src/main/java/software/amazon/ssm/resourcedatasync/CreateHandler.java [129:161]


    private boolean isRDSStabilized(final ResourceModel model, final AmazonWebServicesClientProxy proxy, final CallbackContext context, final Logger logger) {

        final String resourceDataSyncName = model.getSyncName();

        if (context.getStabilizationRetriesRemaining() == ZERO) {
            logger.log(String.format("Maximum stabilization retries reached for %s [%s]. Resource not stabilized", TYPE_NAME, resourceDataSyncName));
            throw new CfnNotStabilizedException(TYPE_NAME, resourceDataSyncName);
        }

        context.decrementStabilizationRetriesRemaining();

        final List<ResourceDataSyncItem> resourceDataSyncItems = HandlerHelper.describeResourceDataSyncItem(model, proxy);
        if (resourceDataSyncItems.size() == 1) {
            final LastResourceDataSyncStatus currentStatus = resourceDataSyncItems.get(0).lastStatus();

            logger.log(String.format("%s [%s] is in %s stage", TYPE_NAME, resourceDataSyncName, currentStatus));

            if (currentStatus == null &&
                    resourceDataSyncItems.get(0).syncType() != null &&
                    resourceDataSyncItems.get(0).syncType().equals(SYNC_TYPE_SYNC_FROM_SOURCE)) {
                // syncFromSource operation does not have currentStatus attribute
                return true;
            }
            if (currentStatus != null && (currentStatus.equals(LastResourceDataSyncStatus.SUCCESSFUL)
                    || currentStatus.equals(LastResourceDataSyncStatus.IN_PROGRESS))) {
                return true;
            }
            if (currentStatus != null && currentStatus.equals(LastResourceDataSyncStatus.FAILED)) {
                throw new CfnNotStabilizedException(TYPE_NAME, resourceDataSyncName);
            }
        }
        return false;
    }