protected ProgressEvent handleRequest()

in aws-route53recoveryreadiness-resourceset/src/main/java/software/amazon/route53recoveryreadiness/resourceset/UpdateHandler.java [28:76]


    protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
        final AmazonWebServicesClientProxy proxy,
        final ResourceHandlerRequest<ResourceModel> request,
        final CallbackContext callbackContext,
        final ProxyClient<Route53RecoveryReadinessClient> proxyClient,
        final Logger logger) {

        this.logger = logger;

        final ResourceModel model = request.getDesiredResourceState();
        final ResourceModel previousModel = request.getPreviousResourceState();

        // Make sure the user isn't trying to assign values to readOnly properties

        if (previousModel != null) {
            //Name needed to find Recovery Group to update, but is not itself update-able
            if(!Objects.equals(previousModel.getResourceSetName(), model.getResourceSetName())) {
                throw new CfnNotUpdatableException(ResourceModel.TYPE_NAME, request.getDesiredResourceState().getResourceSetName());
            }
            if (model.getResourceSetArn() != null) {
                if(!previousModel.getResourceSetArn().equals(model.getResourceSetArn())) {
                    throw new CfnNotUpdatableException(ResourceModel.TYPE_NAME, request.getDesiredResourceState().getResourceSetName());
                }
            }
        }

        GetResourceSetRequest getRequest = GetResourceSetRequest.builder().resourceSetName(model.getResourceSetName()).build();
        preExistenceCheck(getRequest, proxyClient);

        List<String> readinessScopes = new ArrayList<>();
        for(Resource resource : model.getResources()) {
            List<String> resourceScopes = resource.getReadinessScopes();
            if (resourceScopes != null && resourceScopes.size() != 0) {
                readinessScopes.addAll(resource.getReadinessScopes());
            }
        }

        //validate readiness scope existence
        validateScopes(readinessScopes, proxyClient);

        return ProgressEvent.progress(request.getDesiredResourceState(), callbackContext)
            .then(progress ->
                proxy.initiate("AWS-Route53RecoveryReadiness-ResourceSet::Update", proxyClient, progress.getResourceModel(), progress.getCallbackContext())
                    .translateToServiceRequest(Translator::translateToUpdateRequest)
                    .makeServiceCall(this::updateResourceSet)
                    .progress())

            .then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));
    }