

from troposphere import Tags

from . import AWSObject
from .validators import boolean


class Channel(AWSObject):
    resource_type = "AWS::IVS::Channel"

    props = {
        "Authorized": (boolean, False),
        "LatencyMode": (str, False),
        "Name": (str, False),
        "Tags": (Tags, False),
        "Type": (str, False),
    }


class PlaybackKeyPair(AWSObject):
    resource_type = "AWS::IVS::PlaybackKeyPair"

    props = {
        "Name": (str, False),
        "PublicKeyMaterial": (str, True),
        "Tags": (Tags, False),
    }


class StreamKey(AWSObject):
    resource_type = "AWS::IVS::StreamKey"

    props = {
        "ChannelArn": (str, True),
        "Tags": (Tags, False),
    }



from troposphere import Tags

from . import AWSObject, AWSProperty
from .validators import boolean


class Channel(AWSObject):
    resource_type = "AWS::IVS::Channel"

    props = {
        "Authorized": (boolean, False),
        "LatencyMode": (str, False),
        "Name": (str, False),
        "RecordingConfigurationArn": (str, False),
        "Tags": (Tags, False),
        "Type": (str, False),
    }


class PlaybackKeyPair(AWSObject):
    resource_type = "AWS::IVS::PlaybackKeyPair"

    props = {
        "Name": (str, False),
        "PublicKeyMaterial": (str, True),
        "Tags": (Tags, False),
    }


class S3DestinationConfiguration(AWSProperty):
    props = {
        "BucketName": (str, True),
    }


class DestinationConfiguration(AWSProperty):
    props = {
        "S3": (S3DestinationConfiguration, True),
    }


class RecordingConfiguration(AWSObject):
    resource_type = "AWS::IVS::RecordingConfiguration"

    props = {
        "DestinationConfiguration": (DestinationConfiguration, True),
        "Name": (str, False),
        "Tags": (Tags, False),
    }


class StreamKey(AWSObject):
    resource_type = "AWS::IVS::StreamKey"

    props = {
        "ChannelArn": (str, True),
        "Tags": (Tags, False),
    }

Update IVS per 2021-04-15 changes
Update IVS per 2021-04-15 changes

  
  
  from troposphere import Tags
  
- from . import AWSObject
+ from . import AWSObject, AWSProperty
  from .validators import boolean
  
  
  class Channel(AWSObject):
      resource_type = "AWS::IVS::Channel"
  
      props = {
          "Authorized": (boolean, False),
          "LatencyMode": (str, False),
          "Name": (str, False),
+         "RecordingConfigurationArn": (str, False),
          "Tags": (Tags, False),
          "Type": (str, False),
      }
  
  
  class PlaybackKeyPair(AWSObject):
      resource_type = "AWS::IVS::PlaybackKeyPair"
  
      props = {
          "Name": (str, False),
          "PublicKeyMaterial": (str, True),
          "Tags": (Tags, False),
      }
  
  
+ class S3DestinationConfiguration(AWSProperty):
+     props = {
+         "BucketName": (str, True),
+     }
+ 
+ 
+ class DestinationConfiguration(AWSProperty):
+     props = {
+         "S3": (S3DestinationConfiguration, True),
+     }
+ 
+ 
+ class RecordingConfiguration(AWSObject):
+     resource_type = "AWS::IVS::RecordingConfiguration"
+ 
+     props = {
+         "DestinationConfiguration": (DestinationConfiguration, True),
+         "Name": (str, False),
+         "Tags": (Tags, False),
+     }
+ 
+ 
  class StreamKey(AWSObject):
      resource_type = "AWS::IVS::StreamKey"
  
      props = {
          "ChannelArn": (str, True),
          "Tags": (Tags, False),
      }
  
Update IVS per 2021-04-15 changes
## Code Before:


from troposphere import Tags

from . import AWSObject
from .validators import boolean


class Channel(AWSObject):
    resource_type = "AWS::IVS::Channel"

    props = {
        "Authorized": (boolean, False),
        "LatencyMode": (str, False),
        "Name": (str, False),
        "Tags": (Tags, False),
        "Type": (str, False),
    }


class PlaybackKeyPair(AWSObject):
    resource_type = "AWS::IVS::PlaybackKeyPair"

    props = {
        "Name": (str, False),
        "PublicKeyMaterial": (str, True),
        "Tags": (Tags, False),
    }


class StreamKey(AWSObject):
    resource_type = "AWS::IVS::StreamKey"

    props = {
        "ChannelArn": (str, True),
        "Tags": (Tags, False),
    }

## Instruction:
Update IVS per 2021-04-15 changes
## Code After:


from troposphere import Tags

from . import AWSObject, AWSProperty
from .validators import boolean


class Channel(AWSObject):
    resource_type = "AWS::IVS::Channel"

    props = {
        "Authorized": (boolean, False),
        "LatencyMode": (str, False),
        "Name": (str, False),
        "RecordingConfigurationArn": (str, False),
        "Tags": (Tags, False),
        "Type": (str, False),
    }


class PlaybackKeyPair(AWSObject):
    resource_type = "AWS::IVS::PlaybackKeyPair"

    props = {
        "Name": (str, False),
        "PublicKeyMaterial": (str, True),
        "Tags": (Tags, False),
    }


class S3DestinationConfiguration(AWSProperty):
    props = {
        "BucketName": (str, True),
    }


class DestinationConfiguration(AWSProperty):
    props = {
        "S3": (S3DestinationConfiguration, True),
    }


class RecordingConfiguration(AWSObject):
    resource_type = "AWS::IVS::RecordingConfiguration"

    props = {
        "DestinationConfiguration": (DestinationConfiguration, True),
        "Name": (str, False),
        "Tags": (Tags, False),
    }


class StreamKey(AWSObject):
    resource_type = "AWS::IVS::StreamKey"

    props = {
        "ChannelArn": (str, True),
        "Tags": (Tags, False),
    }
