aws-sdk 0.9.3.0 → 0.9.4
raw patch · 21 files changed
+677/−174 lines, 21 filesdep +tlsdep ~template-haskell
Dependencies added: tls
Dependency ranges changed: template-haskell
Files
- AWS/EC2/Internal.hs +2/−1
- AWS/EC2/NetworkInterfaceAttribute.hs +1/−1
- AWS/EC2/Types/Image.hs +1/−1
- AWS/ELB/LoadBalancer.hs +176/−10
- AWS/ELB/Types.hs +56/−2
- AWS/Lib/Parser.hs +3/−1
- AWS/RDS.hs +9/−0
- AWS/RDS/DBInstance.hs +1/−17
- AWS/RDS/DBParameterGroup.hs +40/−0
- AWS/RDS/DBSecurityGroup.hs +53/−0
- AWS/RDS/DBSubnetGroup.hs +30/−0
- AWS/RDS/Internal.hs +35/−3
- AWS/RDS/Types.hs +19/−136
- AWS/RDS/Types/DBInstance.hs +86/−0
- AWS/RDS/Types/DBParameterGroup.hs +12/−0
- AWS/RDS/Types/DBSecurityGroup.hs +54/−0
- AWS/RDS/Types/DBSnapshot.hs +24/−0
- AWS/RDS/Types/DBSubnetGroup.hs +29/−0
- AWS/RDS/Types/Event.hs +26/−0
- Tests/Main.hs +3/−0
- aws-sdk.cabal +17/−2
AWS/EC2/Internal.hs view
@@ -25,6 +25,7 @@ import qualified Data.Conduit.List as CL import Data.XML.Types (Event) import Data.Text (Text)+import Data.Maybe (fromMaybe) import AWS.Class import AWS.Credential@@ -48,7 +49,7 @@ -> GLSink Event m o -> GLConduit Event m o itemConduit tag inner =- maybe (()) id <$> elementM tag (listConduit "item" inner)+ fromMaybe (()) <$> elementM tag (listConduit "item" inner) itemsSet :: MonadThrow m => Text
AWS/EC2/NetworkInterfaceAttribute.hs view
@@ -24,7 +24,7 @@ describeNetworkInterfaceDescription :: (MonadBaseControl IO m, MonadResource m) => Text -- ^ The ID of the network interface.- -> EC2 m Text+ -> EC2 m (Maybe Text) describeNetworkInterfaceDescription = describeNetworkInterfaceAttribute "description" $ element "description" $ getT "value"
AWS/EC2/Types/Image.hs view
@@ -67,7 +67,7 @@ data EbsBlockDevice = EbsBlockDevice { ebsSnapshotId :: Maybe Text- , ebsVolumeSize :: Int+ , ebsVolumeSize :: Maybe Int , ebsDeleteOnTermination :: Bool , ebsVolumeType :: VolumeType }
AWS/ELB/LoadBalancer.hs view
@@ -12,6 +12,14 @@ , setLoadBalancerListenerSSLCertificate , createLoadBalancerListeners , deleteLoadBalancerListeners+ , describeLoadBalancerPolicies+ , describeLoadBalancerPolicyTypes+ , createLoadBalancerPolicy+ , deleteLoadBalancerPolicy+ , describeInstanceHealth+ , configureHealthCheck+ , enableAvailabilityZonesForLoadBalancer+ , disableAvailabilityZonesForLoadBalancer ) where import Data.Text (Text)@@ -48,14 +56,7 @@ <$> members "SecurityGroups" text <*> getT "CreatedTime" <*> getT "LoadBalancerName"- <*> element "HealthCheck"- (HealthCheck- <$> getT "Interval"- <*> getT "Target"- <*> getT "HealthyThreshold"- <*> getT "Timeout"- <*> getT "UnhealthyThreshold"- )+ <*> element "HealthCheck" sinkHealthCheck <*> getT "VPCId" <*> members "ListenerDescriptions" (ListenerDescription@@ -80,8 +81,8 @@ <*> members "OtherPolicies" text <*> members "LBCookieStickinessPolicies" (LBCookieStickinessPolicy- <$> getT "CookieExpirationPeriod"- <*> getT "PolicyName"+ <$> getT "PolicyName"+ <*> getT "CookieExpirationPeriod" ) ) <*> members "AvailabilityZones" text@@ -104,6 +105,15 @@ sinkInstance :: MonadThrow m => GLSink Event m Instance sinkInstance = Instance <$> getT "InstanceId" +sinkHealthCheck :: MonadThrow m => GLSink Event m HealthCheck+sinkHealthCheck =+ HealthCheck+ <$> getT "Interval"+ <*> getT "Target"+ <*> getT "HealthyThreshold"+ <*> getT "Timeout"+ <*> getT "UnhealthyThreshold"+ createLoadBalancer :: (MonadBaseControl IO m, MonadResource m) => Text -- ^ LoadBalancerName@@ -258,4 +268,160 @@ params = [ "LoadBalancerName" |= lb , "LoadBalancerPorts.member" |.#= map toText ports+ ]++describeLoadBalancerPolicies+ :: (MonadBaseControl IO m, MonadResource m)+ => Maybe Text -- ^ The mnemonic name associated with the LoadBalancer.+ -> [Text] -- ^ The names of LoadBalancer policies you've created or Elastic Load Balancing sample policy names.+ -> ELB m [PolicyDescription]+describeLoadBalancerPolicies mlb policies =+ elbQuery "DescribeLoadBalancerPolicies" params $ members "PolicyDescriptions" sinkPolicyDescription+ where+ params =+ [ "LoadBalancerName" |=? mlb+ , "PolicyNames.member" |.#= policies+ ]++sinkPolicyDescription :: MonadThrow m => GLSink Event m PolicyDescription+sinkPolicyDescription =+ PolicyDescription+ <$> getT "PolicyName"+ <*> getT "PolicyTypeName"+ <*> members "PolicyAttributeDescriptions" sinkPolicyAttribute++sinkPolicyAttribute :: MonadThrow m => GLSink Event m PolicyAttribute+sinkPolicyAttribute =+ PolicyAttribute+ <$> getT "AttributeName"+ <*> getT "AttributeValue"++describeLoadBalancerPolicyTypes+ :: (MonadBaseControl IO m, MonadResource m)+ => [Text] -- ^ Specifies the name of the policy types.+ -> ELB m [PolicyType]+describeLoadBalancerPolicyTypes typeNames =+ elbQuery "DescribeLoadBalancerPolicyTypes" params $ members "PolicyTypeDescriptions" sinkPolicyType+ where+ params = ["PolicyTypeNames.member" |.#= typeNames]++sinkPolicyType :: MonadThrow m => GLSink Event m PolicyType+sinkPolicyType =+ PolicyType+ <$> members "PolicyAttributeTypeDescriptions" sinkPolicyAttributeType+ <*> getT "PolicyTypeName"+ <*> getT "Description"++sinkPolicyAttributeType :: MonadThrow m => GLSink Event m PolicyAttributeType+sinkPolicyAttributeType =+ PolicyAttributeType+ <$> getT "AttributeName"+ <*> getT "AttributeType"+ <*> getT "DefaultValue"+ <*> getT "Cardinality"+ <*> getT "Description"++createLoadBalancerPolicy+ :: (MonadBaseControl IO m, MonadResource m)+ => Text -- ^ The name associated with the LoadBalancer for which the policy is being created.+ -> [PolicyAttribute] -- ^ A list of attributes associated with the policy being created.+ -> Text -- ^ The name of the LoadBalancer policy being created.+ -> Text -- ^ The name of the base policy type being used to create this policy.+ -> ELB m ()+createLoadBalancerPolicy lb attrs name typeName =+ elbQuery "CreateLoadBalancerPolicy" params $ getT_ "CreateLoadBalancerPolicyResult"+ where+ params =+ [ "LoadBalancerName" |= lb+ , "PolicyAttributes.member" |.#. map toAttributeParams attrs+ , "PolicyName" |= name+ , "PolicyTypeName" |= typeName+ ]++toAttributeParams :: PolicyAttribute -> [QueryParam]+toAttributeParams PolicyAttribute{..} =+ [ "AttributeName" |= policyAttributeName+ , "AttributeValue" |= policyAttributeValue+ ]++deleteLoadBalancerPolicy+ :: (MonadBaseControl IO m, MonadResource m)+ => Text -- ^ The mnemonic name associated with the LoadBalancer.+ -> Text -- ^ The mnemonic name for the policy being deleted.+ -> ELB m ()+deleteLoadBalancerPolicy lb policyName =+ elbQuery "DeleteLoadBalancerPolicy" params $ getT_ "DeleteLoadBalancerPolicyResult"+ where+ params =+ [ "LoadBalancerName" |= lb+ , "PolicyName" |= policyName+ ]++describeInstanceHealth+ :: (MonadBaseControl IO m, MonadResource m)+ => [Text] -- ^ A list of instance IDs whose states are being queried.+ -> Text -- ^ The name associated with the LoadBalancer.+ -> ELB m [InstanceState]+describeInstanceHealth insts lb =+ elbQuery "DescribeInstanceHealth" params $ members "InstanceStates" sinkInstanceState+ where+ params =+ [ "Instances.member" |.#. map toInstanceParam insts+ , "LoadBalancerName" |= lb+ ]++sinkInstanceState :: MonadThrow m => GLSink Event m InstanceState+sinkInstanceState =+ InstanceState+ <$> getT "Description"+ <*> getT "InstanceId"+ <*> getT "State"+ <*> getT "ReasonCode"++configureHealthCheck+ :: (MonadBaseControl IO m, MonadResource m)+ => HealthCheck -- ^ A structure containing the configuration information for the new healthcheck.+ -> Text -- ^ The mnemonic name associated with the LoadBalancer.+ -> ELB m HealthCheck+configureHealthCheck hc lb =+ elbQuery "ConfigureHealthCheck" params $ element "HealthCheck" sinkHealthCheck+ where+ params =+ [ "HealthCheck" |. toHealthCheckParams hc+ , "LoadBalancerName" |= lb+ ]++toHealthCheckParams :: HealthCheck -> [QueryParam]+toHealthCheckParams HealthCheck{..} =+ [ "HealthyThreshold" |= toText healthCheckHealthyThreshold+ , "Interval" |= toText healthCheckInterval+ , "Target" |= healthCheckTarget+ , "Timeout" |= toText healthCheckTimeout+ , "UnhealthyThreshold" |= toText healthCheckUnhealthyThreshold+ ]++enableAvailabilityZonesForLoadBalancer+ :: (MonadBaseControl IO m, MonadResource m)+ => [Text] -- ^ A list of new Availability Zones for the LoadBalancer.+ -> Text -- ^ The name associated with the LoadBalancer.+ -> ELB m [Text] -- ^ An updated list of Availability Zones for the LoadBalancer.+enableAvailabilityZonesForLoadBalancer zones lb =+ elbQuery "EnableAvailabilityZonesForLoadBalancer" params $ members "AvailabilityZones" text+ where+ params =+ [ "AvailabilityZones.member" |.#= zones+ , "LoadBalancerName" |= lb+ ]++disableAvailabilityZonesForLoadBalancer+ :: (MonadBaseControl IO m, MonadResource m)+ => [Text] -- ^ A list of Availability Zones to be removed from the LoadBalancer.+ -> Text -- ^ The name associated with the LoadBalancer.+ -> ELB m [Text] -- ^ A list of updated Availability Zones for the LoadBalancer.+disableAvailabilityZonesForLoadBalancer zones lb =+ elbQuery "DisableAvailabilityZonesForLoadBalancer" params $ members "AvailabilityZones" text+ where+ params =+ [ "AvailabilityZones.member" |.#= zones+ , "LoadBalancerName" |= lb ]
AWS/ELB/Types.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE TemplateHaskell #-} module AWS.ELB.Types where @@ -73,8 +74,8 @@ deriving (Show, Eq) data LBCookieStickinessPolicy = LBCookieStickinessPolicy- { lbCookieStickinessPolicyCookieExpirationPeriod :: Integer- , lbCookieStickinessPolicyPolicyName :: Text+ { lbCookieStickinessPolicyPolicyName :: Text+ , lbCookieStickinessPolicyCookieExpirationPeriod :: Integer } deriving (Show, Eq) @@ -83,3 +84,56 @@ , sourceSecurityGroupGroupName :: Text } deriving (Show, Eq)++data PolicyDescription = PolicyDescription+ { policyName :: Text+ , policyTypeName :: Text+ , policyAttributes :: [PolicyAttribute]+ }+ deriving (Show, Eq)++data PolicyAttribute = PolicyAttribute+ { policyAttributeName :: Text+ , policyAttributeValue :: Text+ }+ deriving (Show, Eq)++data PolicyType = PolicyType+ { policyTypeAttributeTypes :: [PolicyAttributeType]+ , policyTypeTypeName :: Text+ , policyTypeDescription :: Text+ }+ deriving (Show, Eq)++data PolicyAttributeType = PolicyAttributeType+ { policyAttributeTypeAttributeName :: Text+ , policyAttributeTypeAttributeType :: Text+ , policyAttributeTypeDefaultValue :: Maybe Text+ , policyAttributeTypeCardinality :: PolicyAttributeCardinality+ , policyAttributeTypeDescription :: Maybe Text+ }+ deriving (Show, Eq)++data PolicyAttributeCardinality+ = PolicyAttributeCardinalityOne+ | PolicyAttributeCardinalityZeroOrOne+ | PolicyAttributeCardinalityZeroOrMore+ | PolicyAttributeCardinalityOneOrMore+ deriving (Show, Eq, Read)++deriveFromText "PolicyAttributeCardinality" ["ONE", "ZERO_OR_ONE", "ZERO_OR_MORE", "ONE_OR_MORE"]++data InstanceState = InstanceState+ { instanceStateDescription :: Text+ , instanceStateInstanceId :: Text+ , instanceStateState :: InstanceStateState+ , instanceStateReasonCode :: Maybe Text+ }+ deriving (Show, Eq)++data InstanceStateState+ = InstanceStateInService+ | InstanceStateOutOfService+ deriving (Show, Eq, Read)++deriveFromText "InstanceStateState" ["InService", "OutOfService"]
AWS/Lib/Parser.hs view
@@ -28,6 +28,7 @@ import Control.Applicative import Data.Monoid ((<>)) import Control.Monad.Trans.Class (lift)+import Data.Maybe (fromMaybe) import AWS.Class import AWS.Lib.FromText@@ -151,4 +152,5 @@ => Text -> GLSink Event m a -> GLSink Event m [a]-members name f = element name $ listConsumer "member" f+members name f = + fromMaybe [] <$> elementM name (listConsumer "member" f)
AWS/RDS.hs view
@@ -7,8 +7,14 @@ , setRegion -- * DBInstance , module AWS.RDS.DBInstance+ -- * DBParameterGroup+ , module AWS.RDS.DBParameterGroup+ -- * DBSecurityGroup+ , module AWS.RDS.DBSecurityGroup -- * DBSnapshot , module AWS.RDS.DBSnapshot+ -- * DBSubnetGroup+ , module AWS.RDS.DBSubnetGroup -- * Event , module AWS.RDS.Event ) where@@ -26,7 +32,10 @@ import AWS import AWS.RDS.Internal import AWS.RDS.DBInstance+import AWS.RDS.DBParameterGroup+import AWS.RDS.DBSecurityGroup import AWS.RDS.DBSnapshot+import AWS.RDS.DBSubnetGroup import AWS.RDS.Event initialRDSContext :: HTTP.Manager -> AWSContext
AWS/RDS/DBInstance.hs view
@@ -61,23 +61,7 @@ <*> sinkPendingModifiedValues <*> getT "CharacterSetName" <*> getT "LicenseModel"- <*> elementM "DBSubnetGroup"- (DBSubnetGroup- <$> getT "VpcId"- <*> getT "SubnetGroupStatus"- <*> getT "DBSubnetGroupDescription"- <*> getT "DBSubnetGroupName"- <*> elements "Subnet"- (Subnet- <$> getT "SubnetStatus"- <*> getT "SubnetIdentifier"- <*> element "SubnetAvailabilityZone"- (AvailabilityZone- <$> getT "Name"- <*> getT "ProvisionedIopsCapable"- )- )- )+ <*> elementM "DBSubnetGroup" dbSubnetGroupSink <*> elements "DBParameterGroup" (DBParameterGroupStatus <$> getT "ParameterApplyStatus"
+ AWS/RDS/DBParameterGroup.hs view
@@ -0,0 +1,40 @@+{-# LANGUAGE FlexibleContexts #-}++module AWS.RDS.DBParameterGroup+ ( describeDBParameterGroups+ ) where++import Control.Applicative ((<$>), (<*>))+import Data.Conduit (GLSink, MonadBaseControl, MonadResource, MonadThrow)+import Data.Text (Text)+import Data.XML.Types (Event)++import AWS.Lib.Parser (getT)+import AWS.Lib.Query ((|=?))+import AWS.RDS.Internal (RDS, rdsQuery, elements)+import AWS.RDS.Types hiding (Event)+import AWS.Util (toText)++describeDBParameterGroups+ :: (MonadBaseControl IO m, MonadResource m)+ => Maybe Text -- ^ DBParameterGroupName+ -> Maybe Text -- ^ Marker+ -> Maybe Int -- ^ MaxRecords+ -> RDS m [DBParameterGroup]+describeDBParameterGroups name marker maxRecords =+ rdsQuery "DescribeDBParameterGroups" params $+ elements "DBParameterGroup" dbParameterGroupSink+ where+ params =+ [ "DBParameterGroupName" |=? name+ , "Marker" |=? marker+ , "MaxRecords" |=? toText <$> maxRecords+ ]++dbParameterGroupSink+ :: MonadThrow m+ => GLSink Event m DBParameterGroup+dbParameterGroupSink = DBParameterGroup+ <$> getT "DBParameterGroupFamily"+ <*> getT "Description"+ <*> getT "DBParameterGroupName"
+ AWS/RDS/DBSecurityGroup.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE FlexibleContexts #-}++module AWS.RDS.DBSecurityGroup+ ( describeDBSecurityGroups+ ) where++import Control.Applicative ((<$>), (<*>))+import Data.Conduit (GLSink, MonadBaseControl, MonadResource, MonadThrow)+import Data.Text (Text)+import Data.XML.Types (Event)++import AWS.Lib.Parser (getT)+import AWS.Lib.Query ((|=?))+import AWS.RDS.Internal (RDS, rdsQuery, elements)+import AWS.RDS.Types hiding (Event)+import AWS.Util (toText)++describeDBSecurityGroups+ :: (MonadBaseControl IO m, MonadResource m)+ => Maybe Text -- ^ DBSecurityGroupName+ -> Maybe Text -- ^ Marker+ -> Maybe Int -- ^ MaxRecords+ -> RDS m [DBSecurityGroup]+describeDBSecurityGroups name marker maxRecords =+ rdsQuery "DescribeDBSecurityGroups" params $+ elements "DBSecurityGroup" dbSecurityGroupSink+ where+ params =+ [ "DBSecurityGroupName" |=? name+ , "Marker" |=? marker+ , "MaxRecords" |=? toText <$> maxRecords+ ]++dbSecurityGroupSink+ :: MonadThrow m+ => GLSink Event m DBSecurityGroup+dbSecurityGroupSink = DBSecurityGroup+ <$> elements "EC2SecurityGroup" (+ EC2SecurityGroup+ <$> getT "Status"+ <*> getT "EC2SecurityGroupOwnerId"+ <*> getT "EC2SecurityGroupName"+ <*> getT "EC2SecurityGroupId"+ )+ <*> getT "DBSecurityGroupDescription"+ <*> elements "IPRange" (+ IPRange+ <$> getT "CIDRIP"+ <*> getT "Status"+ )+ <*> getT "VpcId"+ <*> getT "OwnerId"+ <*> getT "DBSecurityGroupName"
+ AWS/RDS/DBSubnetGroup.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE FlexibleContexts #-}++module AWS.RDS.DBSubnetGroup+ ( describeDBSubnetGroups+ ) where++import Control.Applicative ((<$>))+import Data.Conduit+import Data.Text (Text)++import AWS.Lib.Query ((|=?))+import AWS.RDS.Internal+import AWS.RDS.Types (DBSubnetGroup)+import AWS.Util (toText)++describeDBSubnetGroups+ :: (MonadBaseControl IO m, MonadResource m)+ => Maybe Text -- ^ DBSubnetGroupName+ -> Maybe Text -- ^ Marker+ -> Maybe Int -- ^ MaxRecords+ -> RDS m [DBSubnetGroup]+describeDBSubnetGroups name marker maxRecords =+ rdsQuery "DescribeDBSubnetGroups" params $+ elements "DBSubnetGroup" dbSubnetGroupSink+ where+ params =+ [ "DBSubnetGroupName" |=? name+ , "Marker" |=? marker+ , "MaxRecords" |=? toText <$> maxRecords+ ]
AWS/RDS/Internal.hs view
@@ -1,17 +1,29 @@ {-# LANGUAGE FlexibleContexts, RankNTypes, CPP #-} module AWS.RDS.Internal- where+ ( apiVersion+ , RDS+ , rdsQuery+ , elements+ , elements'+#ifdef DEBUG+ , rdsQueryDebug+#endif+ , dbSubnetGroupSink+ ) where +import Control.Applicative ((<$>), (<*>)) import Data.ByteString (ByteString) import Data.Text (Text) import Data.Conduit import Data.Monoid ((<>)) import Data.XML.Types (Event(..))+import Data.Maybe (fromMaybe) import AWS.Class import AWS.Lib.Query import AWS.Lib.Parser+import AWS.RDS.Types (DBSubnetGroup(..), Subnet(..), AvailabilityZone(..)) apiVersion :: ByteString apiVersion = "2013-01-10"@@ -32,12 +44,13 @@ -> GLSink Event m [a] elements name = elements' (name <> "s") name -elements' :: MonadThrow m+elements' :: forall m a . MonadThrow m => Text -> Text -> GLSink Event m a -> GLSink Event m [a]-elements' setName itemName = element setName . listConsumer itemName+elements' setName itemName inner =+ fromMaybe [] <$> elementM setName (listConsumer itemName inner) #ifdef DEBUG rdsQueryDebug@@ -47,3 +60,22 @@ -> RDS m a rdsQueryDebug = debugQuery apiVersion #endif++dbSubnetGroupSink+ :: MonadThrow m+ => GLSink Event m DBSubnetGroup+dbSubnetGroupSink = DBSubnetGroup+ <$> getT "VpcId"+ <*> getT "SubnetGroupStatus"+ <*> getT "DBSubnetGroupDescription"+ <*> getT "DBSubnetGroupName"+ <*> elements "Subnet" (+ Subnet+ <$> getT "SubnetStatus"+ <*> getT "SubnetIdentifier"+ <*> element "SubnetAvailabilityZone" (+ AvailabilityZone+ <$> getT "Name"+ <*> getT "ProvisionedIopsCapable"+ )+ )
AWS/RDS/Types.hs view
@@ -1,138 +1,21 @@-{-# LANGUAGE TemplateHaskell #-} module AWS.RDS.Types- where--import AWS.Lib.FromText--data DBInstance = DBInstance- { dbiIops :: Maybe Int- , dbiBackupRetentionPeriod :: Int- , dbiDBInstanceStatus :: Text- , dbiMultiAZ :: Bool- , dbiVpcSecurityGroups :: [VpcSecurityGroupMembership]- , dbiDBInstanceIdentifier :: Text- , dbiPreferredBackupWindow :: Text- , dbiPreferredMaintenanceWindow :: Text- , dbiOptionGroupMembership :: Maybe OptionGroupMembership- , dbiAvailabilityZone :: Text- , dbiLatestRestorableTime :: Maybe UTCTime- , dbiReadReplicaDBInstanceIdentifiers :: [Text]- , dbiEngine :: Text- , dbiPendingModifiedValues :: [PendingModifiedValue]- , dbiCharacterSetName :: Maybe Text- , dbiLicenseModel :: Text- , 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 :: Text- , 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 DBSubnetGroup = DBSubnetGroup- { dbsngVpcId :: Text- , dbsngSubnetGroupStatus :: Text- , dbsngDBSubnetGroupDescription :: Text- , dbsngDBSubnetGroupName :: Text- , dbsngSubnets :: [Subnet]- }- deriving (Show, Eq)--data Subnet = Subnet- { subnetStatus :: Text- , subnetIdentifier :: Text- , subnetAvailabilityZone :: AvailabilityZone- }- deriving (Show, Eq)--data AvailabilityZone = AvailabilityZone- { azName :: Text- , azProvisionedIopsCapable :: Bool- }- 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- deriving (Show, Eq)--data DBSnapshot = DBSnapshot- { dbsPort :: Int- , dbsIops :: Maybe Int- , dbsEngine :: Text- , dbsStatus :: Text- , dbsSnapshotType :: Text- , dbsLicenseModel :: Text- , dbsDBInstanceIdentifier :: Text- , dbsEngineVersion :: Text- , dbsDBSnapshotIdentifier :: Text- , dbsSnapshotCreateTime :: Maybe UTCTime- , dbsVpcId :: Maybe Text- , dbsAvailabilityZone :: Text- , dbsInstanceCreateTime :: UTCTime- , dbsAllocatedStorage :: Int- , dbsMasterUsername :: Text- }- deriving (Show, Eq)--data Event = Event- { eventMessage :: Text- , eventSourceType :: SourceType- , eventEventCategories :: [Text]- , eventDate :: UTCTime- , eventSourceIdentifier :: Text- }- deriving (Show, Eq)--data SourceType- = SourceTypeDBInstance- | SourceTypeDBParameterGroup- | SourceTypeDBSecurityGroup- | SourceTypeDBSnapshot- deriving (Show, Read, Eq)+ ( -- * DBInstance+ module AWS.RDS.Types.DBInstance+ -- * DBParameterGroup+ , module AWS.RDS.Types.DBParameterGroup+ -- * DBSecurityGroup+ , module AWS.RDS.Types.DBSecurityGroup+ -- * DBSnapshot+ , module AWS.RDS.Types.DBSnapshot+ -- * DBSubnetGroup+ , module AWS.RDS.Types.DBSubnetGroup+ -- * Event+ , module AWS.RDS.Types.Event+ ) where -deriveFromText "SourceType" ["db-instance", "db-parameter-group", "db-security-group", "db-snapshot"]+import AWS.RDS.Types.DBInstance+import AWS.RDS.Types.DBParameterGroup+import AWS.RDS.Types.DBSecurityGroup+import AWS.RDS.Types.DBSnapshot+import AWS.RDS.Types.DBSubnetGroup+import AWS.RDS.Types.Event
+ AWS/RDS/Types/DBInstance.hs view
@@ -0,0 +1,86 @@+module AWS.RDS.Types.DBInstance+ ( DBInstance(..)+ , VpcSecurityGroupMembership(..)+ , DBParameterGroupStatus(..)+ , DBSecurityGroupMembership(..)+ , Endpoint(..)+ , OptionGroupMembership(..)+ , PendingModifiedValue(..)+ ) where++import AWS.Lib.FromText (Text, UTCTime)+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 :: Text+ , dbiLatestRestorableTime :: Maybe UTCTime+ , dbiReadReplicaDBInstanceIdentifiers :: [Text]+ , dbiEngine :: Text+ , dbiPendingModifiedValues :: [PendingModifiedValue]+ , dbiCharacterSetName :: Maybe Text+ , dbiLicenseModel :: Text+ , 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 :: Text+ , 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+ deriving (Show, Eq)
+ AWS/RDS/Types/DBParameterGroup.hs view
@@ -0,0 +1,12 @@+module AWS.RDS.Types.DBParameterGroup+ ( DBParameterGroup(..)+ ) where++import AWS.Lib.FromText (Text)++data DBParameterGroup = DBParameterGroup+ { dbpgDBParameterGroupFamily :: Text+ , dbpgDescription :: Text+ , dbpgDBParameterGroupName :: Text+ }+ deriving (Show, Eq)
+ AWS/RDS/Types/DBSecurityGroup.hs view
@@ -0,0 +1,54 @@+{-# LANGUAGE TemplateHaskell #-}++module AWS.RDS.Types.DBSecurityGroup+ ( DBSecurityGroup(..)+ , EC2SecurityGroup(..)+ , EC2SecurityGroupStatus(..)+ , IPRange(..)+ , IPRangeStatus(..)+ ) where++import AWS.Lib.FromText (deriveFromText, AddrRange, IPv4, Text)++data DBSecurityGroup = DBSecurityGroup+ { dbsgEC2SecurityGroups :: [EC2SecurityGroup]+ , dbsgDBSecurityGroupDescription :: Text+ , dbsgIPRanges :: [IPRange]+ , dbsgVpcId :: Maybe Text+ , dbsgOwnerId :: Text+ , dbsgDBSecurityGroupName :: Text+ }+ deriving (Show, Eq)++data EC2SecurityGroup = EC2SecurityGroup+ { ec2SecurityGroupStatus :: EC2SecurityGroupStatus+ , ec2SecurityGroupOwnerId :: Maybe Text+ , ec2SecurityGroupName :: Text+ , ec2SecurityGroupId :: Maybe Text+ }+ deriving (Show, Eq)++data EC2SecurityGroupStatus+ = EC2SecurityGroupStatusAuthorizing+ | EC2SecurityGroupStatusAuthorized+ | EC2SecurityGroupStatusRevoking+ | EC2SecurityGroupStatusRevoked+ deriving (Show, Read, Eq)++data IPRange = IPRange+ { ipRangeCidrIp :: AddrRange IPv4+ , ipRangeStatus :: IPRangeStatus+ }+ deriving (Show, Eq)++data IPRangeStatus+ = IPRangeStatusAuthorizing+ | IPRangeStatusAuthorized+ | IPRangeStatusRevoking+ | IPRangeStatusRevoked+ deriving (Show, Read, Eq)++deriveFromText "EC2SecurityGroupStatus"+ ["authorizing", "authorized", "revoking", "revoked"]+deriveFromText "IPRangeStatus"+ ["authorizing", "authorized", "revoking", "revoked"]
+ AWS/RDS/Types/DBSnapshot.hs view
@@ -0,0 +1,24 @@+module AWS.RDS.Types.DBSnapshot+ ( DBSnapshot(..)+ ) where++import AWS.Lib.FromText (Text, UTCTime)++data DBSnapshot = DBSnapshot+ { dbsPort :: Int+ , dbsIops :: Maybe Int+ , dbsEngine :: Text+ , dbsStatus :: Text+ , dbsSnapshotType :: Text+ , dbsLicenseModel :: Text+ , dbsDBInstanceIdentifier :: Text+ , dbsEngineVersion :: Text+ , dbsDBSnapshotIdentifier :: Text+ , dbsSnapshotCreateTime :: Maybe UTCTime+ , dbsVpcId :: Maybe Text+ , dbsAvailabilityZone :: Text+ , dbsInstanceCreateTime :: UTCTime+ , dbsAllocatedStorage :: Int+ , dbsMasterUsername :: Text+ }+ deriving (Show, Eq)
+ AWS/RDS/Types/DBSubnetGroup.hs view
@@ -0,0 +1,29 @@+module AWS.RDS.Types.DBSubnetGroup+ ( DBSubnetGroup(..)+ , Subnet(..)+ , AvailabilityZone(..)+ ) where++import AWS.Lib.FromText (Text)++data DBSubnetGroup = DBSubnetGroup+ { dbsngVpcId :: Text+ , dbsngSubnetGroupStatus :: Text+ , dbsngDBSubnetGroupDescription :: Text+ , dbsngDBSubnetGroupName :: Text+ , dbsngSubnets :: [Subnet]+ }+ deriving (Show, Eq)++data Subnet = Subnet+ { subnetStatus :: Text+ , subnetIdentifier :: Text+ , subnetAvailabilityZone :: AvailabilityZone+ }+ deriving (Show, Eq)++data AvailabilityZone = AvailabilityZone+ { azName :: Text+ , azProvisionedIopsCapable :: Bool+ }+ deriving (Show, Eq)
+ AWS/RDS/Types/Event.hs view
@@ -0,0 +1,26 @@+{-# LANGUAGE TemplateHaskell #-}++module AWS.RDS.Types.Event+ ( Event(..)+ , SourceType(..)+ ) where++import AWS.Lib.FromText (deriveFromText, Text, UTCTime)++data Event = Event+ { eventMessage :: Text+ , eventSourceType :: SourceType+ , eventEventCategories :: [Text]+ , eventDate :: UTCTime+ , eventSourceIdentifier :: Text+ }+ deriving (Show, Eq)++data SourceType+ = SourceTypeDBInstance+ | SourceTypeDBParameterGroup+ | SourceTypeDBSecurityGroup+ | SourceTypeDBSnapshot+ deriving (Show, Read, Eq)++deriveFromText "SourceType" ["db-instance", "db-parameter-group", "db-security-group", "db-snapshot"]
Tests/Main.hs view
@@ -33,7 +33,10 @@ -- RDS Tests runDBInstanceTests+ runDBParameterGroupTests+ runDBSecurityGroupTests runDBSnapshotTests+ runDBSubnetGroupTests runEventTests -- ELB Tests
aws-sdk.cabal view
@@ -1,5 +1,5 @@ name: aws-sdk-version: 0.9.3.0+version: 0.9.4 synopsis: AWS SDK for Haskell description: AWS (Amazon Web Services) sdk for Haskell. .@@ -10,6 +10,11 @@ license: BSD3 license-file: LICENSE author: Yusuke Nomura <yunomu@gmail.com>+ , Seizan Shimazaki <seizans@gmail.com>+ , Daisuke Matsumoto <dai@daimatz.net>+ , amkkun <amkkun@gmail.com>+ , eagletmt <eagletmt@gmail.com>+ , HATATANI Shinta <gamaguchi@gmail.com> maintainer: Yusuke Nomura <yunomu@gmail.com> homepage: http://worksap-ate.github.com/aws-sdk copyright: AWS SDK for Haskell Developers@@ -79,8 +84,17 @@ , AWS.Lib.Query , AWS.RDS.Internal , AWS.RDS.DBInstance+ , AWS.RDS.DBParameterGroup+ , AWS.RDS.DBSecurityGroup , AWS.RDS.DBSnapshot+ , AWS.RDS.DBSubnetGroup , AWS.RDS.Event+ , AWS.RDS.Types.DBInstance+ , AWS.RDS.Types.DBParameterGroup+ , AWS.RDS.Types.DBSecurityGroup+ , AWS.RDS.Types.DBSnapshot+ , AWS.RDS.Types.DBSubnetGroup+ , AWS.RDS.Types.Event , AWS.ELB.Internal , AWS.ELB.LoadBalancer , AWS.CloudWatch.Internal@@ -111,7 +125,7 @@ , lifted-base , transformers-base , strptime- , template-haskell+ , template-haskell == 2.7.0.0 , parallel , iproute >= 1.2.9 @@ -136,6 +150,7 @@ , HUnit , lifted-base , iproute+ , tls source-repository head type: git