public ProgressEvent handleRequest()

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