# Copyright (c) 2012-2024, Mark Peek <mark@peek.org>
# All rights reserved.
#
# See LICENSE file for full license.
#
# *** Do not modify - this file is autogenerated ***
from . import AWSObject, AWSProperty, PropsDictType, Tags
from .validators import boolean, integer
from .validators.cassandra import (
validate_billingmode_mode,
validate_clusteringkeycolumn_orderby,
)
[docs]class ReplicationSpecification(AWSProperty):
"""
`ReplicationSpecification <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cassandra-keyspace-replicationspecification.html>`__
"""
props: PropsDictType = {
"RegionList": ([str], False),
"ReplicationStrategy": (str, False),
}
[docs]class Keyspace(AWSObject):
"""
`Keyspace <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-keyspace.html>`__
"""
resource_type = "AWS::Cassandra::Keyspace"
props: PropsDictType = {
"KeyspaceName": (str, False),
"ReplicationSpecification": (ReplicationSpecification, False),
"Tags": (Tags, False),
}
[docs]class TargetTrackingScalingPolicyConfiguration(AWSProperty):
"""
`TargetTrackingScalingPolicyConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cassandra-table-targettrackingscalingpolicyconfiguration.html>`__
"""
props: PropsDictType = {
"DisableScaleIn": (boolean, False),
"ScaleInCooldown": (integer, False),
"ScaleOutCooldown": (integer, False),
"TargetValue": (integer, True),
}
[docs]class ScalingPolicy(AWSProperty):
"""
`ScalingPolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cassandra-table-scalingpolicy.html>`__
"""
props: PropsDictType = {
"TargetTrackingScalingPolicyConfiguration": (
TargetTrackingScalingPolicyConfiguration,
False,
),
}
[docs]class AutoScalingSetting(AWSProperty):
"""
`AutoScalingSetting <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cassandra-table-autoscalingsetting.html>`__
"""
props: PropsDictType = {
"AutoScalingDisabled": (boolean, False),
"MaximumUnits": (integer, False),
"MinimumUnits": (integer, False),
"ScalingPolicy": (ScalingPolicy, False),
}
[docs]class AutoScalingSpecification(AWSProperty):
"""
`AutoScalingSpecification <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cassandra-table-autoscalingspecification.html>`__
"""
props: PropsDictType = {
"ReadCapacityAutoScaling": (AutoScalingSetting, False),
"WriteCapacityAutoScaling": (AutoScalingSetting, False),
}
[docs]class ProvisionedThroughput(AWSProperty):
"""
`ProvisionedThroughput <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cassandra-table-provisionedthroughput.html>`__
"""
props: PropsDictType = {
"ReadCapacityUnits": (integer, True),
"WriteCapacityUnits": (integer, True),
}
[docs]class BillingMode(AWSProperty):
"""
`BillingMode <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cassandra-table-billingmode.html>`__
"""
props: PropsDictType = {
"Mode": (validate_billingmode_mode, True),
"ProvisionedThroughput": (ProvisionedThroughput, False),
}
[docs]class Column(AWSProperty):
"""
`Column <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cassandra-table-column.html>`__
"""
props: PropsDictType = {
"ColumnName": (str, True),
"ColumnType": (str, True),
}
[docs]class ClusteringKeyColumn(AWSProperty):
"""
`ClusteringKeyColumn <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cassandra-table-clusteringkeycolumn.html>`__
"""
props: PropsDictType = {
"Column": (Column, True),
"OrderBy": (validate_clusteringkeycolumn_orderby, False),
}
[docs]class EncryptionSpecification(AWSProperty):
"""
`EncryptionSpecification <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cassandra-table-encryptionspecification.html>`__
"""
props: PropsDictType = {
"EncryptionType": (str, True),
"KmsKeyIdentifier": (str, False),
}
[docs]class ReplicaSpecification(AWSProperty):
"""
`ReplicaSpecification <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cassandra-table-replicaspecification.html>`__
"""
props: PropsDictType = {
"ReadCapacityAutoScaling": (AutoScalingSetting, False),
"ReadCapacityUnits": (integer, False),
"Region": (str, True),
}
[docs]class Table(AWSObject):
"""
`Table <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html>`__
"""
resource_type = "AWS::Cassandra::Table"
props: PropsDictType = {
"AutoScalingSpecifications": (AutoScalingSpecification, False),
"BillingMode": (BillingMode, False),
"ClientSideTimestampsEnabled": (boolean, False),
"ClusteringKeyColumns": ([ClusteringKeyColumn], False),
"DefaultTimeToLive": (integer, False),
"EncryptionSpecification": (EncryptionSpecification, False),
"KeyspaceName": (str, True),
"PartitionKeyColumns": ([Column], True),
"PointInTimeRecoveryEnabled": (boolean, False),
"RegularColumns": ([Column], False),
"ReplicaSpecifications": ([ReplicaSpecification], False),
"TableName": (str, False),
"Tags": (Tags, False),
}