in aws-ssm-resourcedatasync/src/main/java/software/amazon/ssm/resourcedatasync/CreateHandler.java [44:90]
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final Logger logger) {
logger.log(String.format("Processing CreateHandler request %s", request));
final CallbackContext context = callbackContext == null ? CallbackContext.builder().build() : callbackContext;
final ResourceModel model = request.getDesiredResourceState();
if (!context.isCreateResourceDataSyncStarted()) {
final CreateResourceDataSyncRequest createResourceDataSyncRequest = Translator.createResourceDataSyncRequest(model);
createResourceDataSync(createResourceDataSyncRequest, proxy);
context.setCreateResourceDataSyncStarted(true);
context.setStabilizationRetriesRemaining(NUMBER_OF_RESOURCE_DATA_SYNC_CREATE_POLL_RETRIES);
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.callbackContext(context)
.status(OperationStatus.IN_PROGRESS)
.callbackDelaySeconds(INITIAL_CALLBACK_DELAY_SECONDS)
.resourceModel(model)
.build();
}
//Stabilization is the process of waiting for a resource to be in a particular (typically "success") state.
if (!context.isCreateResourceDataSyncStabilized()) {
context.setCreateResourceDataSyncStabilized(isRDSStabilized(model, proxy, context, logger));
if (!context.isCreateResourceDataSyncStabilized()) {
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.callbackContext(context)
.callbackDelaySeconds(CALLBACK_DELAY_SECONDS)
.status(OperationStatus.IN_PROGRESS)
.resourceModel(request.getDesiredResourceState())
.build();
}
}
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.resourceModel(model)
.status(OperationStatus.SUCCESS)
.build();
}