text: # Copyright (c) 2012-2019, Mark Peek <mark@peek.org>
  # All rights reserved.
  #
  # See LICENSE file for full license.
  #
  # *** Do not modify - this file is autogenerated ***
  # Resource specification version: 10.2.0
  
  
  from . import AWSObject
  from . import AWSProperty
  from .validators import boolean
  from .validators import integer
  
  
  class EBSStorageInfo(AWSProperty):
      props = {
          'VolumeSize': (integer, False),
      }
  
  
  class StorageInfo(AWSProperty):
      props = {
          'EBSStorageInfo': (EBSStorageInfo, False),
      }
  
  
  class BrokerNodeGroupInfo(AWSProperty):
      props = {
          'BrokerAZDistribution': (basestring, False),
          'ClientSubnets': ([basestring], True),
          'InstanceType': (basestring, True),
          'SecurityGroups': ([basestring], False),
          'StorageInfo': (StorageInfo, False),
      }
  
  
  class Tls(AWSProperty):
      props = {
          'CertificateAuthorityArnList': ([basestring], False),
      }
  
  
  class ClientAuthentication(AWSProperty):
      props = {
          'Tls': (Tls, False),
      }
  
  
  class ConfigurationInfo(AWSProperty):
      props = {
          'Arn': (basestring, True),
          'Revision': (integer, True),
      }
  
  
  class EncryptionAtRest(AWSProperty):
      props = {
          'DataVolumeKMSKeyId': (basestring, True),
      }
  
  
  class EncryptionInTransit(AWSProperty):
      props = {
          'ClientBroker': (basestring, False),
          'InCluster': (boolean, False),
      }
  
  
  class EncryptionInfo(AWSProperty):
      props = {
          'EncryptionAtRest': (EncryptionAtRest, False),
          'EncryptionInTransit': (EncryptionInTransit, False),
      }
  
  
  class JmxExporter(AWSProperty):
      props = {
          'EnabledInBroker': (boolean, True),
      }
  
  
  class NodeExporter(AWSProperty):
      props = {
          'EnabledInBroker': (boolean, True),
      }
  
  
  class Prometheus(AWSProperty):
      props = {
          'JmxExporter': (JmxExporter, False),
          'NodeExporter': (NodeExporter, False),
      }
  
  
  class OpenMonitoring(AWSProperty):
      props = {
          'Prometheus': (Prometheus, True),
      }
  
  
  class Firehose(AWSProperty):
      props = {
          'DeliveryStream': (basestring, True),
          "Enabled": (boolean, True),
      }
  
  
  class CloudWatchLogs(AWSProperty):
      props = {
          'Enabled': (boolean, True),
          'LogGroup': (basestring, False),
      }
  
  
  class S3(AWSProperty):
      props = {
          'Bucket': (basestring, False),
          'Enabled': (boolean, True),
          'Prefix': (basestring, False),
      }
  
  
  class BrokerLogs(AWSProperty):
      props = {
          'CloudWatchLogs': (CloudWatchLogs, False),
          'Firehose': (Firehose, False),
          'S3': (S3, False),
      }
  
  
  class LoggingInfo(AWSProperty):
      props = {
          'BrokerLogs': (BrokerLogs, True),
      }
  
  
  class Cluster(AWSObject):
      resource_type = "AWS::MSK::Cluster"
  
      props = {
          'BrokerNodeGroupInfo': (BrokerNodeGroupInfo, True),
          'ClientAuthentication': (ClientAuthentication, False),
          'ClusterName': (basestring, True),
          'ConfigurationInfo': (ConfigurationInfo, False),
          'EncryptionInfo': (EncryptionInfo, False),
          'EnhancedMonitoring': (basestring, False),
          'KafkaVersion': (basestring, True),
          'LoggingInfo': (LoggingInfo, False),
          'NumberOfBrokerNodes': (integer, True),
          'OpenMonitoring': (OpenMonitoring, False),
          'Tags': (dict, False),
      }
  