Source: resources/kinesisfirehose.js

'use strict'

const WKResource = require('./../resource').WKResource
const ResourceAttribute = require('./../resourceattribute').ResourceAttribute
const ResourceAttributeArray = require('./../resourceattribute').ResourceAttributeArray
const tag = require('./../tag')
const types = require('./../types')

/** @module KinesisFirehose */

/** @memberof module:KinesisFirehose
*   @extends WKResource
* @property {String} DeliveryStreamName Required: No. A name for the delivery stream.Update requires: Replacement
* @property {AmazonKinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration} ElasticsearchDestinationConfiguration Required: Conditional. An Amazon ES destination for the delivery stream.Update requires: No interruption. If you change the delivery stream destination from an Amazon ES destination to an Amazon S3 or Amazon Redshift destination, update requires some interruptions.
* @property {AmazonKinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration} RedshiftDestinationConfiguration Required: Conditional. An Amazon Redshift destination for the delivery stream.Update requires: No interruption. If you change the delivery stream destination from an Amazon Redshift destination to an Amazon ES destination, update requires some interruptions.
* @property {AmazonKinesisFirehoseDeliveryStreamS3DestinationConfiguration} S3DestinationConfiguration Required: Conditional. An Amazon S3 destination for the delivery stream.Update requires: No interruption. If you change the delivery stream destination from an Amazon S3 destination to an Amazon ES destination, update requires some interruptions.
*/
class DeliveryStream extends WKResource {
  constructor (name, propertiesObject) {
    let resourceType = 'AWS::KinesisFirehose::DeliveryStream'
    let properties = {
      DeliveryStreamName: new ResourceAttribute('DeliveryStreamName', String, 'No', null),
      ElasticsearchDestinationConfiguration: new ResourceAttribute('ElasticsearchDestinationConfiguration', types.AmazonKinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration, 'Conditional', null),
      RedshiftDestinationConfiguration: new ResourceAttribute('RedshiftDestinationConfiguration', types.AmazonKinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration, 'Conditional', null),
      S3DestinationConfiguration: new ResourceAttribute('S3DestinationConfiguration', types.AmazonKinesisFirehoseDeliveryStreamS3DestinationConfiguration, 'Conditional', null)
    }
    super(name, resourceType, properties, propertiesObject)
  }
}

module.exports = {  DeliveryStream: DeliveryStream
}