"""Raw representations of every data type in the AWS RDS service.

See Also:
    `AWS developer guide for RDS
    <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/index.html>`_

This file is automatically generated, and should not be directly edited.
"""

from ..core import Resource

__all__ = [
    "DBCluster",
    "DBClusterParameterGroup",
    "DBInstance",
    "DBParameterGroup",
    "DBSecurityGroup",
    "DBSecurityGroupIngress",
    "DBSubnetGroup",
    "EventSubscription",
    "OptionGroup",
]


class DBCluster(Resource):
    """A Db Cluster for RDS.

    See Also:
        `AWS Cloud Formation documentation for DBCluster
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html>`_
    """

    RESOURCE_TYPE = "AWS::RDS::DBCluster"

    RESOURCE_PROPERTIES = {
        "AvailabilityZones",
        "BacktrackWindow",
        "BackupRetentionPeriod",
        "DatabaseName",
        "DBClusterIdentifier",
        "DBClusterParameterGroupName",
        "DBSubnetGroupName",
        "EnableCloudwatchLogsExports",
        "EnableIAMDatabaseAuthentication",
        "Engine",
        "EngineMode",
        "EngineVersion",
        "KmsKeyId",
        "MasterUsername",
        "MasterUserPassword",
        "Port",
        "PreferredBackupWindow",
        "PreferredMaintenanceWindow",
        "ReplicationSourceIdentifier",
        "ScalingConfiguration",
        "SnapshotIdentifier",
        "StorageEncrypted",
        "Tags",
        "VpcSecurityGroupIds",
    }


class DBClusterParameterGroup(Resource):
    """A Db Cluster Parameter Group for RDS.

    See Also:
        `AWS Cloud Formation documentation for DBClusterParameterGroup
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html>`_
    """

    RESOURCE_TYPE = "AWS::RDS::DBClusterParameterGroup"

    RESOURCE_PROPERTIES = {
        "Description",
        "Family",
        "Parameters",
        "Tags",
    }


class DBInstance(Resource):
    """A Db Instance for RDS.

    See Also:
        `AWS Cloud Formation documentation for DBInstance
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html>`_
    """

    RESOURCE_TYPE = "AWS::RDS::DBInstance"

    RESOURCE_PROPERTIES = {
        "AllocatedStorage",
        "AllowMajorVersionUpgrade",
        "AutoMinorVersionUpgrade",
        "AvailabilityZone",
        "BackupRetentionPeriod",
        "CharacterSetName",
        "CopyTagsToSnapshot",
        "DBClusterIdentifier",
        "DBInstanceClass",
        "DBInstanceIdentifier",
        "DBName",
        "DBParameterGroupName",
        "DBSecurityGroups",
        "DBSnapshotIdentifier",
        "DBSubnetGroupName",
        "Domain",
        "DomainIAMRoleName",
        "EnableCloudwatchLogsExports",
        "EnableIAMDatabaseAuthentication",
        "EnablePerformanceInsights",
        "Engine",
        "EngineVersion",
        "Iops",
        "KmsKeyId",
        "LicenseModel",
        "MasterUsername",
        "MasterUserPassword",
        "MonitoringInterval",
        "MonitoringRoleArn",
        "MultiAZ",
        "OptionGroupName",
        "PerformanceInsightsKMSKeyId",
        "PerformanceInsightsRetentionPeriod",
        "Port",
        "PreferredBackupWindow",
        "PreferredMaintenanceWindow",
        "ProcessorFeatures",
        "PromotionTier",
        "PubliclyAccessible",
        "SourceDBInstanceIdentifier",
        "SourceRegion",
        "StorageEncrypted",
        "StorageType",
        "Tags",
        "Timezone",
        "VPCSecurityGroups",
    }


class DBParameterGroup(Resource):
    """A Db Parameter Group for RDS.

    See Also:
        `AWS Cloud Formation documentation for DBParameterGroup
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html>`_
    """

    RESOURCE_TYPE = "AWS::RDS::DBParameterGroup"

    RESOURCE_PROPERTIES = {
        "Description",
        "Family",
        "Parameters",
        "Tags",
    }


class DBSecurityGroup(Resource):
    """A Db Security Group for RDS.

    See Also:
        `AWS Cloud Formation documentation for DBSecurityGroup
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html>`_
    """

    RESOURCE_TYPE = "AWS::RDS::DBSecurityGroup"

    RESOURCE_PROPERTIES = {
        "DBSecurityGroupIngress",
        "EC2VpcId",
        "GroupDescription",
        "Tags",
    }


class DBSecurityGroupIngress(Resource):
    """A Db Security Group Ingress for RDS.

    See Also:
        `AWS Cloud Formation documentation for DBSecurityGroupIngress
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-security-group-ingress.html>`_
    """

    RESOURCE_TYPE = "AWS::RDS::DBSecurityGroupIngress"

    RESOURCE_PROPERTIES = {
        "CIDRIP",
        "DBSecurityGroupName",
        "EC2SecurityGroupId",
        "EC2SecurityGroupName",
        "EC2SecurityGroupOwnerId",
    }


class DBSubnetGroup(Resource):
    """A Db Subnet Group for RDS.

    See Also:
        `AWS Cloud Formation documentation for DBSubnetGroup
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnet-group.html>`_
    """

    RESOURCE_TYPE = "AWS::RDS::DBSubnetGroup"

    RESOURCE_PROPERTIES = {
        "DBSubnetGroupDescription",
        "DBSubnetGroupName",
        "SubnetIds",
        "Tags",
    }


class EventSubscription(Resource):
    """A Event Subscription for RDS.

    See Also:
        `AWS Cloud Formation documentation for EventSubscription
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html>`_
    """

    RESOURCE_TYPE = "AWS::RDS::EventSubscription"

    RESOURCE_PROPERTIES = {
        "Enabled",
        "EventCategories",
        "SnsTopicArn",
        "SourceIds",
        "SourceType",
    }


class OptionGroup(Resource):
    """A Option Group for RDS.

    See Also:
        `AWS Cloud Formation documentation for OptionGroup
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html>`_
    """

    RESOURCE_TYPE = "AWS::RDS::OptionGroup"

    RESOURCE_PROPERTIES = {
        "EngineName",
        "MajorEngineVersion",
        "OptionConfigurations",
        "OptionGroupDescription",
        "Tags",
    }
