protected ProgressEvent handleRequest()

in aws-cloudformation-stackset/src/main/java/software/amazon/cloudformation/stackset/CreateHandler.java [19:44]


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

        this.logger = logger;
        final ResourceModel model = request.getDesiredResourceState();
        final StackInstancesPlaceHolder placeHolder = new StackInstancesPlaceHolder();
        analyzeTemplate(proxyClient, request, placeHolder, Action.CREATE);

        return proxy.initiate("AWS-CloudFormation-StackSet::Create", proxyClient, model, callbackContext)
                .translateToServiceRequest(resourceModel -> createStackSetRequest(resourceModel, request.getClientRequestToken(), request.getDesiredResourceTags()))
                .makeServiceCall((modelRequest, proxyInvocation) -> {
                    logger.log(String.format("%s [%s] CreateStackSet request: [%s]",
                            ResourceModel.TYPE_NAME, model.getStackSetId(), modelRequest));
                    final CreateStackSetResponse response = proxyClient.injectCredentialsAndInvokeV2(modelRequest, proxyClient.client()::createStackSet);
                    model.setStackSetId(response.stackSetId());
                    logger.log(String.format("%s [%s] StackSet creation succeeded", ResourceModel.TYPE_NAME, model.getStackSetId()));
                    return response;
                })
                .progress()
                .then(progress -> createStackInstances(proxy, proxyClient, progress, placeHolder.getCreateStackInstances(), logger))
                .then(progress -> ProgressEvent.defaultSuccessHandler(model));
    }