public ProgressEvent handleRequest()

in aws-ssm-association/src/main/java/com/amazonaws/ssm/association/InitialUpdateHandler.java [64:112]


    public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
        final AmazonWebServicesClientProxy proxy,
        final ResourceHandlerRequest<ResourceModel> request,
        final CallbackContext callbackContext,
        final Logger logger) {

        final ResourceModel requestModel = request.getDesiredResourceState();

        final String associationId = requestModel.getAssociationId();

        if (StringUtils.isNullOrEmpty(associationId)) {
            return ProgressEvent.failed(request.getPreviousResourceState(),
                callbackContext,
                HandlerErrorCode.InvalidRequest,
                "AssociationId must be present to update the existing association.");
        }

        final UpdateAssociationRequest updateAssociationRequest =
            updateAssociationTranslator.resourceModelToRequest(requestModel);

        final AssociationDescription resultAssociationDescription;

        try {
            resultAssociationDescription =
                proxy.injectCredentialsAndInvokeV2(updateAssociationRequest, ssmClient::updateAssociation)
                    .associationDescription();

        } catch (Exception e) {
            final BaseHandlerException cfnException = exceptionTranslator
                .translateFromServiceException(e, updateAssociationRequest, requestModel);

            logger.log(cfnException.getCause().getMessage());

            throw cfnException;
        }

        final ResourceModel updatedModel =
            associationDescriptionTranslator.associationDescriptionToResourceModel(resultAssociationDescription);

        final Integer waitForSuccessTimeoutSeconds = requestModel.getWaitForSuccessTimeoutSeconds();

        if (waitForSuccessTimeoutSeconds == null) {
            // return success without waiting for association to complete
            return ProgressEvent.defaultSuccessHandler(updatedModel);
        } else {
            // indicates an Update request that needs to wait for association to complete
            return inProgressEventCreator.nextInProgressEvent(waitForSuccessTimeoutSeconds, updatedModel);
        }
    }