private ProgressEvent createDeliveryStream()

in deliverystream/src/main/java/com/amazonaws/kinesisfirehose/deliverystream/CreateHandler.java [124:149]


    private ProgressEvent<ResourceModel, CallbackContext> createDeliveryStream(final FirehoseAPIWrapper firehoseAPIWrapper, final ResourceModel model) {
        val createDeliveryStreamRequest = CreateDeliveryStreamRequest.builder()
                .deliveryStreamName(model.getDeliveryStreamName())
                .deliveryStreamType(model.getDeliveryStreamType())
                .s3DestinationConfiguration(HandlerUtils.translateS3DestinationConfiguration(model.getS3DestinationConfiguration()))
                .extendedS3DestinationConfiguration(HandlerUtils.translateExtendedS3DestinationConfiguration(model.getExtendedS3DestinationConfiguration()))
                .redshiftDestinationConfiguration(HandlerUtils.translateRedshiftDestinationConfiguration(model.getRedshiftDestinationConfiguration()))
                .elasticsearchDestinationConfiguration(HandlerUtils.translateElasticsearchDestinationConfiguration(model.getElasticsearchDestinationConfiguration()))
                .kinesisStreamSourceConfiguration(HandlerUtils.translateKinesisStreamSourceConfiguration(model.getKinesisStreamSourceConfiguration()))
                .splunkDestinationConfiguration(HandlerUtils.translateSplunkDestinationConfiguration(model.getSplunkDestinationConfiguration()))
                .httpEndpointDestinationConfiguration(HandlerUtils.translateHttpEndpointDestinationConfiguration(model.getHttpEndpointDestinationConfiguration()))
                .deliveryStreamEncryptionConfigurationInput(HandlerUtils.translateDeliveryStreamEncryptionConfigurationInput(model.getDeliveryStreamEncryptionConfigurationInput()))
                .tags(HandlerUtils.translateCFNModelTagsToFirehoseSDKTags(model.getTags()))
                .build();

        //Firehose API returns an ARN on create, but does not accept ARN for any of its operations that
        // act on a DeliveryStream. This is why DeliveryStream name is the physical resource ID and not the ARN
        val response = firehoseAPIWrapper.createDeliveryStream(createDeliveryStreamRequest);
        model.setArn(response.deliveryStreamARN());
        return ProgressEvent.defaultInProgressHandler(CallbackContext.builder()
                .deliveryStreamStatus(getDeliveryStreamStatus(firehoseAPIWrapper, model.getDeliveryStreamName()))
                .stabilizationRetriesRemaining(NUMBER_OF_STATUS_POLL_RETRIES)
                .build(),
                (int) Duration.ofSeconds(CALLBACK_DELAY_IN_SECONDS).getSeconds(),
                model);
    }