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