{-# LANGUAGE TemplateHaskell #-} module AWS.RDS.Types.DBInstance ( DBInstance(..) , VpcSecurityGroupMembership(..) , DBParameterGroupStatus(..) , DBSecurityGroupMembership(..) , Endpoint(..) , OptionGroupMembership(..) , PendingModifiedValue(..) , CreateDBInstanceRequest(..) , DBInstanceClass(..) , Engine(..) , LicenseModel(..) , FinalSnapshot(..) , CreateReadReplicaRequest(..) ) where import AWS.Lib.FromText (Text, UTCTime, deriveFromText) import AWS.RDS.Types.DBSubnetGroup (DBSubnetGroup) data DBInstance = DBInstance { dbiIops :: Maybe Int , dbiBackupRetentionPeriod :: Int , dbiDBInstanceStatus :: Maybe Text , dbiMultiAZ :: Bool , dbiVpcSecurityGroups :: [VpcSecurityGroupMembership] , dbiDBInstanceIdentifier :: Text , dbiPreferredBackupWindow :: Text , dbiPreferredMaintenanceWindow :: Text , dbiOptionGroupMembership :: Maybe OptionGroupMembership , dbiAvailabilityZone :: Maybe Text , dbiLatestRestorableTime :: Maybe UTCTime , dbiReadReplicaDBInstanceIdentifiers :: [Text] , dbiEngine :: Engine , dbiPendingModifiedValues :: [PendingModifiedValue] , dbiCharacterSetName :: Maybe Text , dbiLicenseModel :: LicenseModel , dbiSubnetGroup :: Maybe DBSubnetGroup , dbiDBParameterGroups :: [DBParameterGroupStatus] , dbiEndpoint :: Maybe Endpoint , dbiEngineVersion :: Text , dbiReadReplicaSourceDBInstanceIdentifier :: Maybe Text , dbiPubliclyAccessible :: Bool , dbiSecurityGroups :: [DBSecurityGroupMembership] , dbiAutoMinorVersionUpgrade :: Bool , dbiDBName :: Maybe Text , dbiInstanceCreateTime :: Maybe UTCTime , dbiAllocatedStorage :: Int -- ^ storage size in gigabytes , dbiDBInstanceClass :: DBInstanceClass , dbiMasterUsername :: Text } deriving (Show, Eq) data VpcSecurityGroupMembership = VpcSecurityGroupMembership { vpcSecurityGroupMembershipStatus :: Text , vpcSecurityGroupMembershipVpcSecurityGroupId :: Text } deriving (Show, Eq) data DBParameterGroupStatus = DBParameterGroupStatus { dbpgsParameterApplyStatus :: Text , dbpgsDBParameterGroupName :: Text } deriving (Show, Eq) data DBSecurityGroupMembership = DBSecurityGroupMembership { dbsgmStatus :: Text , dbsgmDBSecurityGroupName :: Text } deriving (Show, Eq) data Endpoint = Endpoint { epPort :: Int , epAddress :: Text } deriving (Show, Eq) data OptionGroupMembership = OptionGroupMembership { ogmOptionGroupName :: Text , ogmStatus :: Text } deriving (Show, Eq) data PendingModifiedValue = PMVAllocatedStorage Int | PMVBackupRetentionPeriod Int | PMVDBInstanceClass Text | PMVEngineVersion Text | PMVIops Int | PMVMasterUserPassword Text | PMVMultiAZ Bool | PMVPort Int | PMVDBInstanceIdentifier Text deriving (Show, Eq) data CreateDBInstanceRequest = CreateDBInstanceRequest { createDBInstanceAllocatedStorage :: Int , createDBInstanceAutoMinorVersionUpgrade :: Maybe Bool , createDBInstanceAvailabilityZone :: Maybe Text , createDBInstanceBackupRetentionPeriod :: Maybe Int , createDBInstanceCharacterSetName :: Maybe Text , createDBInstanceDBInstanceClass :: DBInstanceClass , createDBInstanceDBInstanceIdentifier :: Text , createDBInstanceDBName :: Maybe Text , createDBInstanceDBParameterGroupName :: Maybe Text , createDBInstanceDBSecurityGroups :: [Text] , createDBInstanceDBSubnetGroupName :: Maybe Text , createDBInstanceEngine :: Engine , createDBInstanceEngineVersion :: Maybe Text , createDBInstanceIops :: Maybe Int , createDBInstanceLicenseModel :: Maybe LicenseModel , createDBInstanceMasterUserPassword :: Text , createDBInstanceMasterUsername :: Text , createDBInstanceMultiAZ :: Maybe Bool , createDBInstanceOptionGroupName :: Maybe Text , createDBInstancePort :: Maybe Int , createDBInstancePreferredBackupWindow :: Maybe Text , createDBInstancePreferredMaintenanceWindow :: Maybe Text , createDBInstancePubliclyAccessible :: Maybe Bool , createDBInstanceVpcSecurityGroupIds :: [Text] } deriving (Show, Eq) data DBInstanceClass = DBt1micro | DBm1small | DBm1medium | DBm1large | DBm1xlarge | DBm2xlarge | DBm22xlarge | DBm24xlarge deriving (Read, Eq) instance Show DBInstanceClass where show DBt1micro = "db.t1.micro" show DBm1small = "db.m1.small" show DBm1medium = "db.m1.medium" show DBm1large = "db.m1.large" show DBm1xlarge = "db.m1.xlarge" show DBm2xlarge = "db.m2.xlarge" show DBm22xlarge = "db.m2.2xlarge" show DBm24xlarge = "db.m2.4xlarge" data Engine = EngineMySQL | EngineOracleSE1 | EngineOracleSE | EngineOracleEE | EngineSqlServerEE | EngineSqlServerSE | EngineSqlServerEX | EngineSqlServerWeb deriving (Read, Eq) instance Show Engine where show EngineMySQL = "MySQL" show EngineOracleSE1 = "oracle-se1" show EngineOracleSE = "oracle-se" show EngineOracleEE = "oracle-ee" show EngineSqlServerEE = "sqlserver-ee" show EngineSqlServerSE = "sqlserver-se" show EngineSqlServerEX = "sqlserver-ex" show EngineSqlServerWeb = "sqlserver-web" data LicenseModel = LicenseIncluded | BringYourOwnLicense | GeneralPublicLicense deriving (Read, Eq) instance Show LicenseModel where show LicenseIncluded = "license-included" show BringYourOwnLicense = "bring-your-own-license" show GeneralPublicLicense = "general-public-license" data FinalSnapshot = FinalSnapshotIdentifier Text | SkipFinalSnapshot data CreateReadReplicaRequest = CreateReadReplicaRequest { createReadReplicaAutoMinorVersionUpgrade :: Maybe Bool , createReadReplicaAvailabilityZone :: Maybe Text , createReadReplicaDBInstanceClass :: DBInstanceClass , createReadReplicaDBInstanceIdentifier :: Text , createReadReplicaIops :: Maybe Int , createReadReplicaOptionGroupName :: Maybe Text , createReadReplicaPort :: Maybe Int , createReadReplicaPubliclyAccessible :: Maybe Bool , createReadReplicaSourceDBInstanceIdentifier :: Text } deriving (Show, Eq) deriveFromText "DBInstanceClass" [ "db.t1.micro", "db.m1.small", "db.m1.medium" , "db.m1.large", "db.m1.xlarge", "db.m2.xlarge" , "db.m2.2xlarge", "db.m2.4xlarge" ] deriveFromText "Engine" [ "mysql", "oracle-se1", "oracle-se" , "oracle-ee", "sqlserver-ee", "sqlserver-se" , "sqlserver-ex", "sqlserver-web" ] deriveFromText "LicenseModel" [ "license-included", "bring-your-own-license", "general-public-license" ]