public ProgressEvent handleRequest()

in deliverystream/src/main/java/com/amazonaws/kinesisfirehose/deliverystream/CreateHandler.java [32:70]


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

        final ResourceModel model = request.getDesiredResourceState();
        val firehoseAPIWrapper = FirehoseAPIWrapper.builder().firehoseClient(firehoseClient)
            .clientProxy(proxy)
            .build();
        logger.log(String.format("Create Handler called with deliveryStreamName %s", model.getDeliveryStreamName()));
        final CallbackContext currentContext = callbackContext == null
                ? CallbackContext.builder()
                .stabilizationRetriesRemaining(NUMBER_OF_STATUS_POLL_RETRIES)
                .build()
                : callbackContext;

        if (callbackContext == null && HandlerUtils.doesDeliveryStreamExistWithName(model.getDeliveryStreamName(),
            firehoseAPIWrapper)) {
            final Exception e = ResourceInUseException.builder()
                    .message("Firehose already exists with the name: " + model.getDeliveryStreamName())
                    .build();
            return ProgressEvent.defaultFailureHandler(e, ExceptionMapper.mapToHandlerErrorCode(e, HandlerType.CREATE));
        }

        if (StringUtils.isNullOrEmpty(model.getDeliveryStreamName())) {
            model.setDeliveryStreamName(
                    generateName(request)
            );
        }

        if (request.getDesiredResourceTags() != null && !request.getDesiredResourceTags().isEmpty()) {
            val modelTags = new ArrayList<Tag>();
            request.getDesiredResourceTags().forEach((key, val) -> modelTags.add(new Tag(key, val)));
            model.setTags(modelTags);
        }
        // This Lambda will continually be re-invoked with the current state of the instance, finally succeeding when state stabilizes.
        return createDeliveryStreamAndUpdateProgress(firehoseAPIWrapper, model, currentContext, logger);
    }