aws-sdk 0.10.0 → 0.11.0
raw patch · 26 files changed
+859/−172 lines, 26 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- AWS.CloudWatch: runCloudWatch' :: Monad m => Manager -> Credential -> CloudWatch m a -> m a
- AWS.ELB: runELB' :: Monad m => Manager -> Credential -> ELB m a -> m a
- AWS.RDS: runRDS' :: Monad m => Manager -> Credential -> RDS m a -> m a
+ AWS.CloudWatch: deleteAlarms :: (MonadBaseControl IO m, MonadResource m) => [Text] -> CloudWatch m ()
+ AWS.CloudWatch: describeAlarmHistory :: (MonadBaseControl IO m, MonadResource m) => Maybe Text -> Maybe UTCTime -> Maybe HistoryType -> Maybe Int -> Maybe Text -> Maybe UTCTime -> CloudWatch m ([AlarmHistory], Maybe Text)
+ AWS.CloudWatch: describeAlarms :: (MonadBaseControl IO m, MonadResource m) => Maybe Text -> AlarmNameSpec -> Maybe Int -> Maybe Text -> Maybe StateValue -> CloudWatch m ([MetricAlarm], Maybe Text)
+ AWS.CloudWatch: describeAlarmsForMetric :: (MonadBaseControl IO m, MonadResource m) => [Dimension] -> Text -> Text -> Int -> Statistic -> Maybe Text -> CloudWatch m [MetricAlarm]
+ AWS.CloudWatch: disableAlarmActions :: (MonadBaseControl IO m, MonadResource m) => [Text] -> CloudWatch m ()
+ AWS.CloudWatch: enableAlarmActions :: (MonadBaseControl IO m, MonadResource m) => [Text] -> CloudWatch m ()
+ AWS.CloudWatch: putMetricAlarm :: (MonadBaseControl IO m, MonadResource m) => PutMetricAlarmRequest -> CloudWatch m ()
+ AWS.CloudWatch: putMetricData :: (MonadBaseControl IO m, MonadResource m) => [MetricDatum] -> Text -> CloudWatch m ()
+ AWS.CloudWatch: runCloudWatchwithManager :: Monad m => Manager -> Credential -> CloudWatch m a -> m a
+ AWS.CloudWatch: setAlarmState :: (MonadBaseControl IO m, MonadResource m) => Text -> Text -> Text -> StateValue -> CloudWatch m ()
+ AWS.CloudWatch.Types: AlarmHistory :: UTCTime -> HistoryType -> Text -> Text -> Text -> AlarmHistory
+ AWS.CloudWatch.Types: AlarmSpecNamePrefix :: Text -> AlarmNameSpec
+ AWS.CloudWatch.Types: AlarmSpecNames :: [Text] -> AlarmNameSpec
+ AWS.CloudWatch.Types: AlarmSpecNothing :: AlarmNameSpec
+ AWS.CloudWatch.Types: GreaterThanOrEqualToThreshold :: ComparisonOperator
+ AWS.CloudWatch.Types: GreaterThanThreshold :: ComparisonOperator
+ AWS.CloudWatch.Types: HistoryTypeAction :: HistoryType
+ AWS.CloudWatch.Types: HistoryTypeConfigurationUpdate :: HistoryType
+ AWS.CloudWatch.Types: HistoryTypeStateUpdate :: HistoryType
+ AWS.CloudWatch.Types: LessThanOrEqualToThreshold :: ComparisonOperator
+ AWS.CloudWatch.Types: LessThanThreshold :: ComparisonOperator
+ AWS.CloudWatch.Types: MetricAlarm :: Maybe Text -> UTCTime -> [Text] -> Maybe Text -> Text -> UTCTime -> Text -> StateValue -> Int -> [Text] -> Bool -> Text -> Double -> Int -> Statistic -> [Text] -> Maybe Text -> Maybe Text -> [Dimension] -> ComparisonOperator -> Text -> MetricAlarm
+ AWS.CloudWatch.Types: MetricDatum :: [Dimension] -> Text -> Maybe UTCTime -> Maybe Text -> MetricDatumValue -> MetricDatum
+ AWS.CloudWatch.Types: MetricDatumStatisticValues :: StatisticSet -> MetricDatumValue
+ AWS.CloudWatch.Types: MetricDatumValue :: Double -> MetricDatumValue
+ AWS.CloudWatch.Types: PutMetricAlarmRequest :: Maybe Bool -> [Text] -> Maybe Text -> Text -> ComparisonOperator -> [Dimension] -> Int -> [Text] -> Text -> Text -> [Text] -> Int -> Statistic -> Double -> Maybe Text -> PutMetricAlarmRequest
+ AWS.CloudWatch.Types: StateValueAlarm :: StateValue
+ AWS.CloudWatch.Types: StateValueInsufficientData :: StateValue
+ AWS.CloudWatch.Types: StateValueOk :: StateValue
+ AWS.CloudWatch.Types: StatisticSet :: Double -> Double -> Double -> Double -> StatisticSet
+ AWS.CloudWatch.Types: alarmHistoryAlarmName :: AlarmHistory -> Text
+ AWS.CloudWatch.Types: alarmHistoryHistoryData :: AlarmHistory -> Text
+ AWS.CloudWatch.Types: alarmHistoryHistoryItemType :: AlarmHistory -> HistoryType
+ AWS.CloudWatch.Types: alarmHistoryHistorySummary :: AlarmHistory -> Text
+ AWS.CloudWatch.Types: alarmHistoryTimestamp :: AlarmHistory -> UTCTime
+ AWS.CloudWatch.Types: data AlarmHistory
+ AWS.CloudWatch.Types: data AlarmNameSpec
+ AWS.CloudWatch.Types: data ComparisonOperator
+ AWS.CloudWatch.Types: data HistoryType
+ AWS.CloudWatch.Types: data MetricAlarm
+ AWS.CloudWatch.Types: data MetricDatum
+ AWS.CloudWatch.Types: data MetricDatumValue
+ AWS.CloudWatch.Types: data PutMetricAlarmRequest
+ AWS.CloudWatch.Types: data StateValue
+ AWS.CloudWatch.Types: data StatisticSet
+ AWS.CloudWatch.Types: instance Eq AlarmHistory
+ AWS.CloudWatch.Types: instance Eq AlarmNameSpec
+ AWS.CloudWatch.Types: instance Eq ComparisonOperator
+ AWS.CloudWatch.Types: instance Eq HistoryType
+ AWS.CloudWatch.Types: instance Eq MetricAlarm
+ AWS.CloudWatch.Types: instance Eq MetricDatum
+ AWS.CloudWatch.Types: instance Eq MetricDatumValue
+ AWS.CloudWatch.Types: instance Eq PutMetricAlarmRequest
+ AWS.CloudWatch.Types: instance Eq StateValue
+ AWS.CloudWatch.Types: instance Eq StatisticSet
+ AWS.CloudWatch.Types: instance FromText ComparisonOperator
+ AWS.CloudWatch.Types: instance FromText HistoryType
+ AWS.CloudWatch.Types: instance FromText StateValue
+ AWS.CloudWatch.Types: instance FromText Statistic
+ AWS.CloudWatch.Types: instance Read ComparisonOperator
+ AWS.CloudWatch.Types: instance Read HistoryType
+ AWS.CloudWatch.Types: instance Read StateValue
+ AWS.CloudWatch.Types: instance Read Statistic
+ AWS.CloudWatch.Types: instance Show AlarmHistory
+ AWS.CloudWatch.Types: instance Show AlarmNameSpec
+ AWS.CloudWatch.Types: instance Show ComparisonOperator
+ AWS.CloudWatch.Types: instance Show HistoryType
+ AWS.CloudWatch.Types: instance Show MetricAlarm
+ AWS.CloudWatch.Types: instance Show MetricDatum
+ AWS.CloudWatch.Types: instance Show MetricDatumValue
+ AWS.CloudWatch.Types: instance Show PutMetricAlarmRequest
+ AWS.CloudWatch.Types: instance Show StateValue
+ AWS.CloudWatch.Types: instance Show StatisticSet
+ AWS.CloudWatch.Types: metricAlarmActionsEnabled :: MetricAlarm -> Bool
+ AWS.CloudWatch.Types: metricAlarmAlarmActions :: MetricAlarm -> [Text]
+ AWS.CloudWatch.Types: metricAlarmAlarmArn :: MetricAlarm -> Text
+ AWS.CloudWatch.Types: metricAlarmAlarmDescription :: MetricAlarm -> Maybe Text
+ AWS.CloudWatch.Types: metricAlarmAlarmName :: MetricAlarm -> Text
+ AWS.CloudWatch.Types: metricAlarmComparisonOperator :: MetricAlarm -> ComparisonOperator
+ AWS.CloudWatch.Types: metricAlarmConfigurationUpdatedTimestamp :: MetricAlarm -> UTCTime
+ AWS.CloudWatch.Types: metricAlarmDimensions :: MetricAlarm -> [Dimension]
+ AWS.CloudWatch.Types: metricAlarmEvaluationPeriods :: MetricAlarm -> Int
+ AWS.CloudWatch.Types: metricAlarmInsufficientDataActions :: MetricAlarm -> [Text]
+ AWS.CloudWatch.Types: metricAlarmMetricName :: MetricAlarm -> Text
+ AWS.CloudWatch.Types: metricAlarmNamespace :: MetricAlarm -> Text
+ AWS.CloudWatch.Types: metricAlarmOKActions :: MetricAlarm -> [Text]
+ AWS.CloudWatch.Types: metricAlarmPeriod :: MetricAlarm -> Int
+ AWS.CloudWatch.Types: metricAlarmStateReason :: MetricAlarm -> Maybe Text
+ AWS.CloudWatch.Types: metricAlarmStateReasonData :: MetricAlarm -> Maybe Text
+ AWS.CloudWatch.Types: metricAlarmStateUpdatedTimestamp :: MetricAlarm -> UTCTime
+ AWS.CloudWatch.Types: metricAlarmStateValue :: MetricAlarm -> StateValue
+ AWS.CloudWatch.Types: metricAlarmStatistic :: MetricAlarm -> Statistic
+ AWS.CloudWatch.Types: metricAlarmThreshold :: MetricAlarm -> Double
+ AWS.CloudWatch.Types: metricAlarmUnit :: MetricAlarm -> Maybe Text
+ AWS.CloudWatch.Types: metricDatumDimensions :: MetricDatum -> [Dimension]
+ AWS.CloudWatch.Types: metricDatumMetricName :: MetricDatum -> Text
+ AWS.CloudWatch.Types: metricDatumTimestamp :: MetricDatum -> Maybe UTCTime
+ AWS.CloudWatch.Types: metricDatumUnit :: MetricDatum -> Maybe Text
+ AWS.CloudWatch.Types: metricDatumValue :: MetricDatum -> MetricDatumValue
+ AWS.CloudWatch.Types: putMetricAlarmActionsEnabled :: PutMetricAlarmRequest -> Maybe Bool
+ AWS.CloudWatch.Types: putMetricAlarmAlarmActions :: PutMetricAlarmRequest -> [Text]
+ AWS.CloudWatch.Types: putMetricAlarmAlarmDescription :: PutMetricAlarmRequest -> Maybe Text
+ AWS.CloudWatch.Types: putMetricAlarmAlarmName :: PutMetricAlarmRequest -> Text
+ AWS.CloudWatch.Types: putMetricAlarmComparisonOperator :: PutMetricAlarmRequest -> ComparisonOperator
+ AWS.CloudWatch.Types: putMetricAlarmDimensions :: PutMetricAlarmRequest -> [Dimension]
+ AWS.CloudWatch.Types: putMetricAlarmEvaluationPeriods :: PutMetricAlarmRequest -> Int
+ AWS.CloudWatch.Types: putMetricAlarmInsufficientDataActions :: PutMetricAlarmRequest -> [Text]
+ AWS.CloudWatch.Types: putMetricAlarmMetricName :: PutMetricAlarmRequest -> Text
+ AWS.CloudWatch.Types: putMetricAlarmNamespace :: PutMetricAlarmRequest -> Text
+ AWS.CloudWatch.Types: putMetricAlarmOKActions :: PutMetricAlarmRequest -> [Text]
+ AWS.CloudWatch.Types: putMetricAlarmPeriod :: PutMetricAlarmRequest -> Int
+ AWS.CloudWatch.Types: putMetricAlarmStatistic :: PutMetricAlarmRequest -> Statistic
+ AWS.CloudWatch.Types: putMetricAlarmThreshold :: PutMetricAlarmRequest -> Double
+ AWS.CloudWatch.Types: putMetricAlarmUnit :: PutMetricAlarmRequest -> Maybe Text
+ AWS.CloudWatch.Types: statisticSetMaximum :: StatisticSet -> Double
+ AWS.CloudWatch.Types: statisticSetMinimum :: StatisticSet -> Double
+ AWS.CloudWatch.Types: statisticSetSampleCount :: StatisticSet -> Double
+ AWS.CloudWatch.Types: statisticSetSum :: StatisticSet -> Double
+ AWS.EC2: apiVersion :: ByteString
+ AWS.EC2: runEC2withManager :: Monad m => Manager -> Credential -> AWS AWSContext m a -> m a
+ AWS.ELB: runELBwithManager :: Monad m => Manager -> Credential -> ELB m a -> m a
+ AWS.RDS: createDBInstance :: (MonadBaseControl IO m, MonadResource m) => CreateDBInstanceRequest -> RDS m DBInstance
+ AWS.RDS: createDBInstanceReadReplica :: (MonadBaseControl IO m, MonadResource m) => CreateReadReplicaRequest -> RDS m DBInstance
+ AWS.RDS: createDBParameterGroup :: (MonadBaseControl IO m, MonadResource m) => Text -> Text -> Text -> RDS m DBParameterGroup
+ AWS.RDS: createDBSecurityGroup :: (MonadBaseControl IO m, MonadResource m) => Text -> Text -> RDS m DBSecurityGroup
+ AWS.RDS: createDBSubnetGroup :: (MonadBaseControl IO m, MonadResource m) => Text -> [Text] -> Text -> RDS m DBSubnetGroup
+ AWS.RDS: deleteDBInstance :: (MonadBaseControl IO m, MonadResource m) => Text -> FinalSnapshot -> RDS m DBInstance
+ AWS.RDS: deleteDBParameterGroup :: (MonadBaseControl IO m, MonadResource m) => Text -> RDS m ()
+ AWS.RDS: deleteDBSecurityGroup :: (MonadBaseControl IO m, MonadResource m) => Text -> RDS m ()
+ AWS.RDS: deleteDBSubnetGroup :: (MonadBaseControl IO m, MonadResource m) => Text -> RDS m ()
+ AWS.RDS: runRDSwithManager :: Monad m => Manager -> Credential -> RDS m a -> m a
+ AWS.RDS.Types: BringYourOwnLicense :: LicenseModel
+ AWS.RDS.Types: CreateDBInstanceRequest :: Int -> Maybe Bool -> Maybe Text -> Maybe Int -> Maybe Text -> DBInstanceClass -> Text -> Maybe Text -> Maybe Text -> [Text] -> Maybe Text -> Engine -> Maybe Text -> Maybe Int -> Maybe LicenseModel -> Text -> Text -> Maybe Bool -> Maybe Text -> Maybe Int -> Maybe Text -> Maybe Text -> Maybe Bool -> [Text] -> CreateDBInstanceRequest
+ AWS.RDS.Types: CreateReadReplicaRequest :: Maybe Bool -> Maybe Text -> DBInstanceClass -> Text -> Maybe Int -> Maybe Text -> Maybe Int -> Maybe Bool -> Text -> CreateReadReplicaRequest
+ AWS.RDS.Types: DBm1large :: DBInstanceClass
+ AWS.RDS.Types: DBm1medium :: DBInstanceClass
+ AWS.RDS.Types: DBm1small :: DBInstanceClass
+ AWS.RDS.Types: DBm1xlarge :: DBInstanceClass
+ AWS.RDS.Types: DBm22xlarge :: DBInstanceClass
+ AWS.RDS.Types: DBm24xlarge :: DBInstanceClass
+ AWS.RDS.Types: DBm2xlarge :: DBInstanceClass
+ AWS.RDS.Types: DBt1micro :: DBInstanceClass
+ AWS.RDS.Types: EngineMySQL :: Engine
+ AWS.RDS.Types: EngineOracleEE :: Engine
+ AWS.RDS.Types: EngineOracleSE :: Engine
+ AWS.RDS.Types: EngineOracleSE1 :: Engine
+ AWS.RDS.Types: EngineSqlServerEE :: Engine
+ AWS.RDS.Types: EngineSqlServerEX :: Engine
+ AWS.RDS.Types: EngineSqlServerSE :: Engine
+ AWS.RDS.Types: EngineSqlServerWeb :: Engine
+ AWS.RDS.Types: FinalSnapshotIdentifier :: Text -> FinalSnapshot
+ AWS.RDS.Types: GeneralPublicLicense :: LicenseModel
+ AWS.RDS.Types: LicenseIncluded :: LicenseModel
+ AWS.RDS.Types: PMVDBInstanceIdentifier :: Text -> PendingModifiedValue
+ AWS.RDS.Types: SkipFinalSnapshot :: FinalSnapshot
+ AWS.RDS.Types: createDBInstanceAllocatedStorage :: CreateDBInstanceRequest -> Int
+ AWS.RDS.Types: createDBInstanceAutoMinorVersionUpgrade :: CreateDBInstanceRequest -> Maybe Bool
+ AWS.RDS.Types: createDBInstanceAvailabilityZone :: CreateDBInstanceRequest -> Maybe Text
+ AWS.RDS.Types: createDBInstanceBackupRetentionPeriod :: CreateDBInstanceRequest -> Maybe Int
+ AWS.RDS.Types: createDBInstanceCharacterSetName :: CreateDBInstanceRequest -> Maybe Text
+ AWS.RDS.Types: createDBInstanceDBInstanceClass :: CreateDBInstanceRequest -> DBInstanceClass
+ AWS.RDS.Types: createDBInstanceDBInstanceIdentifier :: CreateDBInstanceRequest -> Text
+ AWS.RDS.Types: createDBInstanceDBName :: CreateDBInstanceRequest -> Maybe Text
+ AWS.RDS.Types: createDBInstanceDBParameterGroupName :: CreateDBInstanceRequest -> Maybe Text
+ AWS.RDS.Types: createDBInstanceDBSecurityGroups :: CreateDBInstanceRequest -> [Text]
+ AWS.RDS.Types: createDBInstanceDBSubnetGroupName :: CreateDBInstanceRequest -> Maybe Text
+ AWS.RDS.Types: createDBInstanceEngine :: CreateDBInstanceRequest -> Engine
+ AWS.RDS.Types: createDBInstanceEngineVersion :: CreateDBInstanceRequest -> Maybe Text
+ AWS.RDS.Types: createDBInstanceIops :: CreateDBInstanceRequest -> Maybe Int
+ AWS.RDS.Types: createDBInstanceLicenseModel :: CreateDBInstanceRequest -> Maybe LicenseModel
+ AWS.RDS.Types: createDBInstanceMasterUserPassword :: CreateDBInstanceRequest -> Text
+ AWS.RDS.Types: createDBInstanceMasterUsername :: CreateDBInstanceRequest -> Text
+ AWS.RDS.Types: createDBInstanceMultiAZ :: CreateDBInstanceRequest -> Maybe Bool
+ AWS.RDS.Types: createDBInstanceOptionGroupName :: CreateDBInstanceRequest -> Maybe Text
+ AWS.RDS.Types: createDBInstancePort :: CreateDBInstanceRequest -> Maybe Int
+ AWS.RDS.Types: createDBInstancePreferredBackupWindow :: CreateDBInstanceRequest -> Maybe Text
+ AWS.RDS.Types: createDBInstancePreferredMaintenanceWindow :: CreateDBInstanceRequest -> Maybe Text
+ AWS.RDS.Types: createDBInstancePubliclyAccessible :: CreateDBInstanceRequest -> Maybe Bool
+ AWS.RDS.Types: createDBInstanceVpcSecurityGroupIds :: CreateDBInstanceRequest -> [Text]
+ AWS.RDS.Types: createReadReplicaAutoMinorVersionUpgrade :: CreateReadReplicaRequest -> Maybe Bool
+ AWS.RDS.Types: createReadReplicaAvailabilityZone :: CreateReadReplicaRequest -> Maybe Text
+ AWS.RDS.Types: createReadReplicaDBInstanceClass :: CreateReadReplicaRequest -> DBInstanceClass
+ AWS.RDS.Types: createReadReplicaDBInstanceIdentifier :: CreateReadReplicaRequest -> Text
+ AWS.RDS.Types: createReadReplicaIops :: CreateReadReplicaRequest -> Maybe Int
+ AWS.RDS.Types: createReadReplicaOptionGroupName :: CreateReadReplicaRequest -> Maybe Text
+ AWS.RDS.Types: createReadReplicaPort :: CreateReadReplicaRequest -> Maybe Int
+ AWS.RDS.Types: createReadReplicaPubliclyAccessible :: CreateReadReplicaRequest -> Maybe Bool
+ AWS.RDS.Types: createReadReplicaSourceDBInstanceIdentifier :: CreateReadReplicaRequest -> Text
+ AWS.RDS.Types: data CreateDBInstanceRequest
+ AWS.RDS.Types: data CreateReadReplicaRequest
+ AWS.RDS.Types: data DBInstanceClass
+ AWS.RDS.Types: data Engine
+ AWS.RDS.Types: data FinalSnapshot
+ AWS.RDS.Types: data LicenseModel
- AWS.CloudWatch: listMetrics :: (MonadBaseControl IO m, MonadResource m) => [DimensionFilter] -> Maybe Text -> Maybe Text -> Maybe Text -> CloudWatch m [Metric]
+ AWS.CloudWatch: listMetrics :: (MonadBaseControl IO m, MonadResource m) => [DimensionFilter] -> Maybe Text -> Maybe Text -> Maybe Text -> CloudWatch m ([Metric], Maybe Text)
- AWS.EC2.Types: NetworkAclEntry :: Int -> Int -> NetworkAclRuleAction -> Bool -> Text -> Maybe IcmpTypeCode -> Maybe PortRange -> NetworkAclEntry
+ AWS.EC2.Types: NetworkAclEntry :: Int -> Int -> NetworkAclRuleAction -> Bool -> AddrRange IPv4 -> Maybe IcmpTypeCode -> Maybe PortRange -> NetworkAclEntry
- AWS.EC2.Types: NetworkAclEntryRequest :: Text -> Int -> Int -> NetworkAclRuleAction -> Bool -> Text -> Maybe IcmpTypeCode -> Maybe PortRange -> NetworkAclEntryRequest
+ AWS.EC2.Types: NetworkAclEntryRequest :: Text -> Int -> Int -> NetworkAclRuleAction -> Bool -> AddrRange IPv4 -> Maybe IcmpTypeCode -> Maybe PortRange -> NetworkAclEntryRequest
- AWS.EC2.Types: networkAclEntryCidrBlock :: NetworkAclEntry -> Text
+ AWS.EC2.Types: networkAclEntryCidrBlock :: NetworkAclEntry -> AddrRange IPv4
- AWS.EC2.Types: networkAclEntryRequestCidrBlock :: NetworkAclEntryRequest -> Text
+ AWS.EC2.Types: networkAclEntryRequestCidrBlock :: NetworkAclEntryRequest -> AddrRange IPv4
- AWS.RDS.Types: DBInstance :: Maybe Int -> Int -> Maybe Text -> Bool -> [VpcSecurityGroupMembership] -> Text -> Text -> Text -> Maybe OptionGroupMembership -> Text -> Maybe UTCTime -> [Text] -> Text -> [PendingModifiedValue] -> Maybe Text -> Text -> Maybe DBSubnetGroup -> [DBParameterGroupStatus] -> Maybe Endpoint -> Text -> Maybe Text -> Bool -> [DBSecurityGroupMembership] -> Bool -> Maybe Text -> Maybe UTCTime -> Int -> Text -> Text -> DBInstance
+ AWS.RDS.Types: DBInstance :: Maybe Int -> Int -> Maybe Text -> Bool -> [VpcSecurityGroupMembership] -> Text -> Text -> Text -> Maybe OptionGroupMembership -> Maybe Text -> Maybe UTCTime -> [Text] -> Engine -> [PendingModifiedValue] -> Maybe Text -> LicenseModel -> Maybe DBSubnetGroup -> [DBParameterGroupStatus] -> Maybe Endpoint -> Text -> Maybe Text -> Bool -> [DBSecurityGroupMembership] -> Bool -> Maybe Text -> Maybe UTCTime -> Int -> DBInstanceClass -> Text -> DBInstance
- AWS.RDS.Types: EC2SecurityGroup :: EC2SecurityGroupStatus -> Maybe Text -> Text -> Maybe Text -> EC2SecurityGroup
+ AWS.RDS.Types: EC2SecurityGroup :: EC2SecurityGroupStatus -> Text -> Maybe Text -> Maybe Text -> EC2SecurityGroup
- AWS.RDS.Types: dbiAvailabilityZone :: DBInstance -> Text
+ AWS.RDS.Types: dbiAvailabilityZone :: DBInstance -> Maybe Text
- AWS.RDS.Types: dbiDBInstanceClass :: DBInstance -> Text
+ AWS.RDS.Types: dbiDBInstanceClass :: DBInstance -> DBInstanceClass
- AWS.RDS.Types: dbiEngine :: DBInstance -> Text
+ AWS.RDS.Types: dbiEngine :: DBInstance -> Engine
- AWS.RDS.Types: dbiLicenseModel :: DBInstance -> Text
+ AWS.RDS.Types: dbiLicenseModel :: DBInstance -> LicenseModel
Files
- AWS/Class.hs +4/−4
- AWS/CloudWatch.hs +6/−3
- AWS/CloudWatch/Alarm.hs +195/−0
- AWS/CloudWatch/Internal.hs +20/−1
- AWS/CloudWatch/Metric.hs +47/−15
- AWS/CloudWatch/Types.hs +111/−1
- AWS/EC2.hs +4/−1
- AWS/EC2/Acl.hs +1/−1
- AWS/EC2/Internal.hs +4/−3
- AWS/EC2/Query.hs +1/−28
- AWS/EC2/Types/Acl.hs +2/−2
- AWS/ELB.hs +3/−3
- AWS/ELB/Internal.hs +1/−0
- AWS/Lib/Parser.hs +5/−1
- AWS/Lib/Query.hs +42/−27
- AWS/RDS.hs +3/−3
- AWS/RDS/DBInstance.hs +105/−6
- AWS/RDS/DBParameterGroup.hs +29/−3
- AWS/RDS/DBSecurityGroup.hs +28/−4
- AWS/RDS/DBSubnetGroup.hs +28/−1
- AWS/RDS/Internal.hs +30/−12
- AWS/RDS/Types/DBInstance.hs +126/−5
- AWS/RDS/Types/DBSecurityGroup.hs +1/−1
- Tests/Main.hs +0/−43
- aws-sdk.cabal +14/−4
- tests/Main.hs +49/−0
AWS/Class.hs view
@@ -9,7 +9,7 @@ module AWS.Class ( AWS , runAWS- , runAWS'+ , runAWSwithManager , AWSException(..) , AWSContext(..) , getLastRequestId@@ -105,15 +105,15 @@ -> m a runAWS ctx cred app = do mgr <- liftIO $ HTTP.newManager HTTP.def- runAWS' mgr ctx cred app+ runAWSwithManager mgr ctx cred app -runAWS' :: Monad m+runAWSwithManager :: Monad m => HTTP.Manager -> (HTTP.Manager -> c) -> Credential -> AWS c m a -> m a-runAWS' mgr ctx cred app =+runAWSwithManager mgr ctx cred app = R.runReaderT (S.evalStateT (runAWST app) $ ctx mgr) cred
AWS/CloudWatch.hs view
@@ -4,11 +4,12 @@ ( -- * CloudWatch Environment CloudWatch , runCloudWatch- , runCloudWatch'+ , runCloudWatchwithManager , setRegion , apiVersion -- * Metric , module AWS.CloudWatch.Metric+ , module AWS.CloudWatch.Alarm ) where import Data.Text (Text)@@ -24,6 +25,7 @@ import AWS import AWS.CloudWatch.Internal import AWS.CloudWatch.Metric+import AWS.CloudWatch.Alarm initialCloudWatchContext :: HTTP.Manager -> AWSContext initialCloudWatchContext mgr = AWSContext@@ -35,9 +37,10 @@ runCloudWatch :: MonadIO m => Credential -> CloudWatch m a -> m a runCloudWatch = runAWS initialCloudWatchContext -runCloudWatch' :: Monad m+runCloudWatchwithManager :: Monad m => HTTP.Manager -> Credential -> CloudWatch m a -> m a-runCloudWatch' mgr = runAWS' mgr initialCloudWatchContext+runCloudWatchwithManager mgr =+ runAWSwithManager mgr initialCloudWatchContext setRegion :: (MonadBaseControl IO m, MonadResource m)
+ AWS/CloudWatch/Alarm.hs view
@@ -0,0 +1,195 @@+{-# LANGUAGE FlexibleContexts, RecordWildCards #-}+module AWS.CloudWatch.Alarm+ ( describeAlarms+ , describeAlarmsForMetric+ , putMetricAlarm+ , deleteAlarms+ , describeAlarmHistory+ , enableAlarmActions+ , disableAlarmActions+ , setAlarmState+ ) where++import Control.Applicative+import Data.Conduit+import Data.Text (Text)+import Data.Time (UTCTime)+import Data.XML.Types (Event)++import AWS.CloudWatch.Internal+import AWS.CloudWatch.Types+import AWS.Lib.Parser (getT, getT_, members, text)+import AWS.Lib.Query+import AWS.Util (toText, boolToText, timeToText)++describeAlarms+ :: (MonadBaseControl IO m, MonadResource m)+ => Maybe Text -- ^ The action name prefix.+ -> AlarmNameSpec -- ^ The alarm name prefix or a list of alarm names to retrieve information for.+ -> Maybe Int -- ^ The maximum number of alarm descriptions to retrieve.+ -> Maybe Text -- ^ The token returned by a previous call to indicate that there is more data available.+ -> Maybe StateValue -- ^ The state value to be used in matching alarms.+ -> CloudWatch m ([MetricAlarm], Maybe Text) -- ^ A list of information for the specified alarms and NextToken.+describeAlarms prefix spec maxRecords nextToken state =+ cloudWatchQuery "DescribeAlarms" params $+ (,) <$> members "MetricAlarms" sinkMetricAlarm <*> getT "NextToken"+ where+ params =+ [ "ActionPrefix" |=? prefix+ , specParam spec+ , "MaxRecords" |=? toText <$> maxRecords+ , "NextToken" |=? nextToken+ , "StateValue" |=? stringifyStateValue <$> state+ ]+ specParam AlarmSpecNothing = nothingParam+ specParam (AlarmSpecNamePrefix p) = "AlarmNamePrefix" |= p+ specParam (AlarmSpecNames ns) = "AlarmNames.member" |.#= ns++stringifyStateValue :: StateValue -> Text+stringifyStateValue StateValueOk = "OK"+stringifyStateValue StateValueAlarm = "ALARM"+stringifyStateValue StateValueInsufficientData = "INSUFFICIENT_DATA"++sinkMetricAlarm :: MonadThrow m => GLSink Event m MetricAlarm+sinkMetricAlarm =+ MetricAlarm+ <$> getT "AlarmDescription"+ <*> getT "StateUpdatedTimestamp"+ <*> members "InsufficientDataActions" text+ <*> getT "StateReasonData"+ <*> getT "AlarmArn"+ <*> getT "AlarmConfigurationUpdatedTimestamp"+ <*> getT "AlarmName"+ <*> getT "StateValue"+ <*> getT "Period"+ <*> members "OKActions" text+ <*> getT "ActionsEnabled"+ <*> getT "Namespace"+ <*> getT "Threshold"+ <*> getT "EvaluationPeriods"+ <*> getT "Statistic"+ <*> members "AlarmActions" text+ <*> getT "Unit"+ <*> getT "StateReason"+ <*> members "Dimensions" sinkDimension+ <*> getT "ComparisonOperator"+ <*> getT "MetricName"++describeAlarmsForMetric+ :: (MonadBaseControl IO m, MonadResource m)+ => [Dimension] -- ^ The list of dimensions associated with the metric.+ -> Text -- ^ The name of the metric.+ -> Text -- ^ The namespace of the metric.+ -> Int -- ^ The period in seconds over which the statistic is applied.+ -> Statistic -- ^ The statistic for the metric.+ -> Maybe Text -- ^ The unit for the metric.+ -> CloudWatch m [MetricAlarm]+describeAlarmsForMetric dims name ns period stat unit =+ cloudWatchQuery "DescribeAlarmsForMetric" params $ members "MetricAlarms" sinkMetricAlarm+ where+ params =+ [ "Dimensions.member" |.#. map fromDimension dims+ , "MetricName" |= name+ , "Namespace" |= ns+ , "Period" |= toText period+ , "Statistic" |= stringifyStatistic stat+ , "Unit" |=? unit+ ]++putMetricAlarm+ :: (MonadBaseControl IO m, MonadResource m)+ => PutMetricAlarmRequest+ -> CloudWatch m ()+putMetricAlarm PutMetricAlarmRequest{..} =+ cloudWatchQuery "PutMetricAlarm" params $ getT_ "PutMetricAlarmResult"+ where+ params =+ [ "ActionsEnabled" |=? boolToText <$> putMetricAlarmActionsEnabled+ , "AlarmActions.member" |.#= putMetricAlarmAlarmActions+ , "AlarmDescription" |=? putMetricAlarmAlarmDescription+ , "AlarmName" |= putMetricAlarmAlarmName+ , "ComparisonOperator" |= toText putMetricAlarmComparisonOperator+ , "Dimensions.member" |.#. map fromDimension putMetricAlarmDimensions+ , "EvaluationPeriods" |= toText putMetricAlarmEvaluationPeriods+ , "InsufficientDataActions.member" |.#= putMetricAlarmInsufficientDataActions+ , "MetricName" |= putMetricAlarmMetricName+ , "Namespace" |= putMetricAlarmNamespace+ , "OKActions.member" |.#= putMetricAlarmOKActions+ , "Period" |= toText putMetricAlarmPeriod+ , "Statistic" |= stringifyStatistic putMetricAlarmStatistic+ , "Threshold" |= toText putMetricAlarmThreshold+ , "Unit" |=? putMetricAlarmUnit+ ]++deleteAlarms+ :: (MonadBaseControl IO m, MonadResource m)+ => [Text] -- ^ A list of alarms to be deleted.+ -> CloudWatch m ()+deleteAlarms names = cloudWatchQuery "DeleteAlarms" ["AlarmNames.member" |.#= names] $ return ()++describeAlarmHistory+ :: (MonadBaseControl IO m, MonadResource m)+ => Maybe Text -- ^ The name of the alarm.+ -> Maybe UTCTime -- ^ The ending date to retrieve alarm history.+ -> Maybe HistoryType -- ^ The type of alarm histories to retrieve.+ -> Maybe Int -- ^ The maximum number of alarm history records to retrieve.+ -> Maybe Text -- ^ The token returned by a previous call to indicate that there is more data available.+ -> Maybe UTCTime -- ^ The starting date to retrieve alarm history.+ -> CloudWatch m ([AlarmHistory], Maybe Text)+describeAlarmHistory alarm endDate type_ maxRecords nextToken startDate =+ cloudWatchQuery "DescribeAlarmHistory" params $+ (,) <$> members "AlarmHistoryItems" sinkAlarmHistory <*> getT "NextToken"+ where+ params =+ [ "AlarmName" |=? alarm+ , "EndDate" |=? timeToText <$> endDate+ , "HistoryItemType" |=? stringifyHistoryType <$> type_+ , "MaxRecords" |=? toText <$> maxRecords+ , "NextToken" |=? nextToken+ , "StartDate" |=? timeToText <$> startDate+ ]++stringifyHistoryType :: HistoryType -> Text+stringifyHistoryType HistoryTypeConfigurationUpdate = "ConfigurationUpdate"+stringifyHistoryType HistoryTypeStateUpdate = "StateUpdate"+stringifyHistoryType HistoryTypeAction = "Action"++sinkAlarmHistory :: MonadThrow m => GLSink Event m AlarmHistory+sinkAlarmHistory =+ AlarmHistory+ <$> getT "Timestamp"+ <*> getT "HistoryItemType"+ <*> getT "AlarmName"+ <*> getT "HistoryData"+ <*> getT "HistorySummary"++enableAlarmActions+ :: (MonadBaseControl IO m, MonadResource m)+ => [Text] -- ^ The names of the alarms to enable actions for.+ -> CloudWatch m ()+enableAlarmActions alarms =+ cloudWatchQuery "EnableAlarmActions" ["AlarmNames.member" |.#= alarms] $ return ()++disableAlarmActions+ :: (MonadBaseControl IO m, MonadResource m)+ => [Text] -- ^ The names of the alarms to enable actions for.+ -> CloudWatch m ()+disableAlarmActions alarms =+ cloudWatchQuery "DisableAlarmActions" ["AlarmNames.member" |.#= alarms] $ return ()++setAlarmState+ :: (MonadBaseControl IO m, MonadResource m)+ => Text -- ^ The name for the alarm.+ -> Text -- ^ The reason that this alarm is set to this specific state (in human-readable text format) + -> Text -- ^ The reason that this alarm is set to this specific state (in machine-readable JSON format)+ -> StateValue -- ^ The value of the state.+ -> CloudWatch m ()+setAlarmState alarm reason dat state =+ cloudWatchQuery "SetAlarmState" params $ return ()+ where+ params =+ [ "AlarmName" |= alarm+ , "StateReason" |= reason+ , "StateReasonData" |= dat+ , "StateValue" |= stringifyStateValue state+ ]
AWS/CloudWatch/Internal.hs view
@@ -1,8 +1,9 @@-{-# LANGUAGE FlexibleContexts, RankNTypes #-}+{-# LANGUAGE FlexibleContexts, RankNTypes, RecordWildCards #-} module AWS.CloudWatch.Internal where +import Control.Applicative import Data.ByteString (ByteString) import Data.Text (Text) import Data.Conduit@@ -12,7 +13,9 @@ import AWS.Class import AWS.Lib.Query import AWS.Lib.Parser+import AWS.CloudWatch.Types +-- | Ver.2010-08-01 apiVersion :: ByteString apiVersion = "2010-08-01" @@ -31,3 +34,19 @@ -> GLSink Event m a -> GLSink Event m [a] elements name f = element (name <> "s") $ listConsumer name f++sinkDimension :: MonadThrow m => GLSink Event m Dimension+sinkDimension = Dimension <$> getT "Name" <*> getT "Value"++fromDimension :: Dimension -> [QueryParam]+fromDimension Dimension{..} =+ [ "Name" |= dimensionName+ , "Value" |= dimensionValue+ ]++stringifyStatistic :: Statistic -> Text+stringifyStatistic StatisticAverage = "Average"+stringifyStatistic StatisticSum = "Sum"+stringifyStatistic StatisticSampleCount = "SampleCount"+stringifyStatistic StatisticMaximum = "Maximum"+stringifyStatistic StatisticMinimum = "Minimum"
AWS/CloudWatch/Metric.hs view
@@ -1,13 +1,15 @@-{-# LANGUAGE FlexibleContexts, RankNTypes #-}+{-# LANGUAGE FlexibleContexts, RankNTypes, RecordWildCards #-} module AWS.CloudWatch.Metric ( listMetrics , getMetricStatistics+ , putMetricData ) where import Data.Text (Text) import Data.Time (UTCTime) import Data.Conduit+import Data.XML.Types (Event) import Control.Applicative import AWS.Util@@ -31,15 +33,9 @@ -> Maybe Text -- ^ MetricName -> Maybe Text -- ^ Namespace -> Maybe Text -- ^ NextToken- -> CloudWatch m [Metric]+ -> CloudWatch m ([Metric], Maybe Text) listMetrics ds mn ns nt = cloudWatchQuery "ListMetrics" params $- members "Metrics" $ Metric- <$> members "Dimensions" (Dimension- <$> getT "Name"- <*> getT "Value"- )- <*> getT "MetricName"- <*> getT "Namespace"+ (,) <$> members "Metrics" sinkMetric <*> getT "NextToken" where params = [ dimensionFiltersParam ds@@ -48,6 +44,13 @@ , "NextToken" |=? nt ] +sinkMetric :: MonadThrow m => GLSink Event m Metric+sinkMetric =+ Metric+ <$> members "Dimensions" sinkDimension+ <*> getT "MetricName"+ <*> getT "Namespace"+ getMetricStatistics :: (MonadBaseControl IO m, MonadResource m) => [DimensionFilter]@@ -79,11 +82,40 @@ , "MetricName" |= mn , "Namespace" |= ns , "Period" |= toText pe- , "Statistics" |.+ "member" |.#= map s sts+ , "Statistics" |.+ "member" |.#= map stringifyStatistic sts , "Unit" |=? unit ]- s StatisticAverage = "Average"- s StatisticSum = "Sum"- s StatisticSampleCount = "SampleCount"- s StatisticMaximum = "Maximum"- s StatisticMinimum = "Minimum"++putMetricData+ :: (MonadBaseControl IO m, MonadResource m)+ => [MetricDatum] -- ^ A list of data describing the metric.+ -> Text -- ^ The namespace for the metric data.+ -> CloudWatch m ()+putMetricData dats ns =+ cloudWatchQuery "PutMetricData" params $ return ()+ where+ params =+ [ "MetricData.member" |.#. map fromMetricDatum dats+ , "Namespace" |= ns+ ]++fromMetricDatum :: MetricDatum -> [QueryParam]+fromMetricDatum MetricDatum{..} =+ [ "Dimensions.member" |.#. map fromDimension metricDatumDimensions+ , "MetricName" |= metricDatumMetricName+ , metricDatumValueParam metricDatumValue+ , "Timestamp" |=? timeToText <$> metricDatumTimestamp+ , "Unit" |=? metricDatumUnit+ ]++metricDatumValueParam :: MetricDatumValue -> QueryParam+metricDatumValueParam (MetricDatumValue v) = "Value" |= toText v+metricDatumValueParam (MetricDatumStatisticValues s) = "StatisticValues" |. fromStatisticSet s++fromStatisticSet :: StatisticSet -> [QueryParam]+fromStatisticSet StatisticSet{..} =+ [ "Maximum" |= toText statisticSetMaximum+ , "Minimum" |= toText statisticSetMinimum+ , "SampleCount" |= toText statisticSetSampleCount+ , "Sum" |= toText statisticSetSum+ ]
AWS/CloudWatch/Types.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE TemplateHaskell #-} module AWS.CloudWatch.Types where @@ -35,7 +36,8 @@ | StatisticSampleCount | StatisticMaximum | StatisticMinimum- deriving (Show, Eq)+ deriving (Show, Eq, Read)+deriveFromText "Statistic" ["Average", "Sum", "SampleCount", "Maximum", "Minimum"] allStatistics :: [Statistic] allStatistics =@@ -45,3 +47,111 @@ , StatisticMaximum , StatisticMinimum ]++data AlarmNameSpec+ = AlarmSpecNothing+ | AlarmSpecNamePrefix Text+ | AlarmSpecNames [Text]+ deriving (Show, Eq)++data StateValue+ = StateValueOk+ | StateValueAlarm+ | StateValueInsufficientData+ deriving (Show, Eq, Read)+deriveFromText "StateValue" ["OK", "ALARM", "INSUFFICIENT_DATA"]++data ComparisonOperator+ = GreaterThanOrEqualToThreshold+ | GreaterThanThreshold+ | LessThanThreshold+ | LessThanOrEqualToThreshold+ deriving (Show, Eq, Read)+deriveFromText "ComparisonOperator"+ [ "GreaterThanOrEqualToThreshold"+ , "GreaterThanThreshold"+ , "LessThanThreshold"+ , "LessThanOrEqualToThreshold"+ ]++data MetricAlarm = MetricAlarm+ { metricAlarmAlarmDescription :: Maybe Text+ , metricAlarmStateUpdatedTimestamp :: UTCTime+ , metricAlarmInsufficientDataActions :: [Text]+ , metricAlarmStateReasonData :: Maybe Text+ , metricAlarmAlarmArn :: Text+ , metricAlarmConfigurationUpdatedTimestamp :: UTCTime+ , metricAlarmAlarmName :: Text+ , metricAlarmStateValue :: StateValue+ , metricAlarmPeriod :: Int+ , metricAlarmOKActions :: [Text]+ , metricAlarmActionsEnabled :: Bool+ , metricAlarmNamespace :: Text+ , metricAlarmThreshold :: Double+ , metricAlarmEvaluationPeriods :: Int+ , metricAlarmStatistic :: Statistic+ , metricAlarmAlarmActions :: [Text]+ , metricAlarmUnit :: Maybe Text+ , metricAlarmStateReason :: Maybe Text+ , metricAlarmDimensions :: [Dimension]+ , metricAlarmComparisonOperator :: ComparisonOperator+ , metricAlarmMetricName :: Text+ }+ deriving (Show, Eq)++data PutMetricAlarmRequest = PutMetricAlarmRequest+ { putMetricAlarmActionsEnabled :: Maybe Bool+ , putMetricAlarmAlarmActions :: [Text]+ , putMetricAlarmAlarmDescription :: Maybe Text+ , putMetricAlarmAlarmName :: Text+ , putMetricAlarmComparisonOperator :: ComparisonOperator+ , putMetricAlarmDimensions :: [Dimension]+ , putMetricAlarmEvaluationPeriods :: Int+ , putMetricAlarmInsufficientDataActions :: [Text]+ , putMetricAlarmMetricName :: Text+ , putMetricAlarmNamespace :: Text+ , putMetricAlarmOKActions :: [Text]+ , putMetricAlarmPeriod :: Int+ , putMetricAlarmStatistic :: Statistic+ , putMetricAlarmThreshold :: Double+ , putMetricAlarmUnit :: Maybe Text+ }+ deriving (Show, Eq)++data AlarmHistory = AlarmHistory+ { alarmHistoryTimestamp :: UTCTime+ , alarmHistoryHistoryItemType :: HistoryType+ , alarmHistoryAlarmName :: Text+ , alarmHistoryHistoryData :: Text+ , alarmHistoryHistorySummary :: Text+ }+ deriving (Show, Eq)++data HistoryType+ = HistoryTypeConfigurationUpdate+ | HistoryTypeStateUpdate+ | HistoryTypeAction+ deriving (Show, Eq, Read)+deriveFromText "HistoryType" ["ConfigurationUpdate", "StateUpdate", "Action"]++data MetricDatum = MetricDatum+ { metricDatumDimensions :: [Dimension]+ , metricDatumMetricName :: Text+ , metricDatumTimestamp :: Maybe UTCTime+ , metricDatumUnit :: Maybe Text+ , metricDatumValue :: MetricDatumValue+ }+ deriving (Show, Eq)++data MetricDatumValue+ = MetricDatumValue Double+ | MetricDatumStatisticValues StatisticSet+ deriving (Show, Eq)++data StatisticSet = StatisticSet+ { statisticSetMaximum :: Double+ , statisticSetMinimum :: Double+ , statisticSetSampleCount :: Double+ , statisticSetSum :: Double+ }+ deriving (Show, Eq)
AWS/EC2.hs view
@@ -5,8 +5,10 @@ ( -- * EC2 Environment EC2 , runEC2+ , runEC2withManager , setRegion , setEndpoint+ , apiVersion -- * Instances , module AWS.EC2.Instance -- * Images@@ -27,6 +29,7 @@ -- * Placements , module AWS.EC2.Region , module AWS.EC2.AvailabilityZone+ , module AWS.EC2.PlacementGroup -- * Tags , module AWS.EC2.Tag -- * VPC@@ -35,7 +38,6 @@ , module AWS.EC2.Acl , module AWS.EC2.RouteTable , module AWS.EC2.Route- , module AWS.EC2.PlacementGroup -- * Tasks , module AWS.EC2.ConversionTask ) where@@ -50,6 +52,7 @@ import AWS.EC2.Internal import AWS.EC2.Types import qualified AWS.EC2.Util as Util+import AWS.EC2.Query (apiVersion) import AWS.EC2.Image import AWS.EC2.Region
AWS/EC2/Acl.hs view
@@ -111,7 +111,7 @@ , "RuleAction" |= ruleToText (networkAclEntryRequestRuleAction req) , "CidrBlock" |=- networkAclEntryRequestCidrBlock req+ toText (networkAclEntryRequestCidrBlock req) , "Egress" |= boolToText (networkAclEntryRequestEgress req) , "Icmp" |.? icmpParams <$> networkAclEntryRequestIcmp req
AWS/EC2/Internal.hs view
@@ -6,7 +6,7 @@ , EC2 , initialEC2Context , runEC2- , runEC2'+ , runEC2withManager , itemConduit , itemsSet , resourceTagSink@@ -45,9 +45,10 @@ runEC2 :: MonadIO m => Credential -> AWS AWSContext m a -> m a runEC2 = runAWS initialEC2Context -runEC2' :: Monad m+runEC2withManager :: Monad m => HTTP.Manager -> Credential -> AWS AWSContext m a -> m a-runEC2' mgr = runAWS' mgr initialEC2Context+runEC2withManager mgr =+ runAWSwithManager mgr initialEC2Context itemConduit :: MonadThrow m => Text
AWS/EC2/Query.hs view
@@ -4,9 +4,6 @@ ( ec2Query , ec2QuerySource , ec2QuerySource'-#ifdef DEBUG- , ec2QueryDebug-#endif , ec2Delete , module AWS.Lib.Query , apiVersion@@ -20,25 +17,18 @@ import qualified Data.Conduit.List as CL import qualified Text.XML.Stream.Parse as XmlP import Control.Monad.Trans.Class (lift)-import Control.Monad.IO.Class (MonadIO) import qualified Control.Monad.State as State import qualified Control.Monad.Reader as Reader import Control.Exception.Lifted as E import Data.Text (Text) import Control.Applicative-import Data.Conduit.Internal as CI import AWS.Class import AWS.EC2.Internal import AWS.Lib.Parser hiding (sinkError) import AWS.Lib.Query -#ifdef DEBUG-import Debug.Trace-import Control.Monad.IO.Class (liftIO)-import qualified Data.Conduit.Binary as CB-#endif-+-- | Ver.2012-12-01 apiVersion :: ByteString apiVersion = "2012-12-01" @@ -77,14 +67,6 @@ ec2QuerySource action params cond = do ec2QuerySource' action params Nothing cond -($=+) :: MonadIO m- => ResumableSource m a- -> Conduit a m b- -> m (ResumableSource m b)-a $=+ b = do- (sa, fa) <- unwrapResumable a- return $ CI.ResumableSource (sa $= b) fa- ec2QuerySource' :: (MonadResource m, MonadBaseControl IO m) => ByteString@@ -106,15 +88,6 @@ nextToken :: MonadThrow m => Conduit Event m o nextToken = getT "nextToken" >>= maybe (return ()) (E.throw . NextToken)--#ifdef DEBUG-ec2QueryDebug- :: (MonadResource m, MonadBaseControl IO m)- => ByteString- -> [QueryParam]- -> EC2 m a-ec2QueryDebug = debugQuery apiVersion-#endif ec2Delete :: (MonadResource m, MonadBaseControl IO m)
AWS/EC2/Types/Acl.hs view
@@ -41,7 +41,7 @@ , networkAclEntryProtocol :: Int , networkAclEntryRuleAction :: NetworkAclRuleAction , networkAclEntryEgress :: Bool- , networkAclEntryCidrBlock :: Text+ , networkAclEntryCidrBlock :: AddrRange IPv4 , networkAclEntryIcmpTypeCode :: Maybe IcmpTypeCode , networkAclEntryPortRange :: Maybe PortRange }@@ -54,7 +54,7 @@ -- ^ Protocol Number <http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml> , networkAclEntryRequestRuleAction :: NetworkAclRuleAction , networkAclEntryRequestEgress :: Bool- , networkAclEntryRequestCidrBlock :: Text+ , networkAclEntryRequestCidrBlock :: AddrRange IPv4 , networkAclEntryRequestIcmp :: Maybe IcmpTypeCode , networkAclEntryRequestPortRange :: Maybe PortRange }
AWS/ELB.hs view
@@ -4,7 +4,7 @@ ( -- * ELB Environment ELB , runELB- , runELB'+ , runELBwithManager , setRegion , apiVersion -- * LoadBalancer@@ -35,9 +35,9 @@ runELB :: MonadIO m => Credential -> ELB m a -> m a runELB = runAWS initialELBContext -runELB' :: Monad m+runELBwithManager :: Monad m => HTTP.Manager -> Credential -> ELB m a -> m a-runELB' mgr = runAWS' mgr initialELBContext+runELBwithManager mgr = runAWSwithManager mgr initialELBContext setRegion :: (MonadBaseControl IO m, MonadResource m)
AWS/ELB/Internal.hs view
@@ -10,6 +10,7 @@ import AWS.Class import AWS.Lib.Query +-- | Ver.2012-06-01 apiVersion :: ByteString apiVersion = "2012-06-01"
AWS/Lib/Parser.hs view
@@ -120,8 +120,12 @@ sinkResponse action sink = do sinkEventBeginDocument element (action <> "Response") $ (,)- <$> element (action <> "Result") sink -- XXX: parse Marker+ <$> sinkResult <*> sinkResponseMetadata+ where+ sinkResult =+ elementM (action <> "Result") sink -- XXX: parse Marker. This marker may not occur (e.g., PutMetricAlarm).+ >>= maybe sink return sinkResponseMetadata :: MonadThrow m
AWS/Lib/Query.hs view
@@ -12,11 +12,9 @@ , (|=), (|.) , (|=?), (|.?) , (|.#=), (|.#.)+ , ($=+) , requestQuery , commonQuery-#ifdef DEBUG- , debugQuery-#endif , textToBS ) where @@ -31,6 +29,7 @@ import Data.Monoid import Data.XML.Types (Event(..)) import Data.Conduit+import qualified Data.Conduit.Internal as CI import qualified Network.HTTP.Conduit as HTTP import qualified Text.XML.Stream.Parse as XmlP import Data.Time (UTCTime, formatTime, getCurrentTime)@@ -53,7 +52,7 @@ import AWS.EC2.Types (Filter) #ifdef DEBUG-import qualified Data.Conduit.Binary as CB+import qualified System.IO as IO #endif data QueryParam@@ -206,6 +205,14 @@ clientError status rsrc errSink = rsrc $$+- XmlP.parseBytes XmlP.def =$ errSink status +($=+) :: MonadIO m+ => ResumableSource m a+ -> Conduit a m b+ -> m (ResumableSource m b)+a $=+ b = do+ (sa, fa) <- unwrapResumable a+ return $ CI.ResumableSource (sa $= b) fa+ requestQuery :: (MonadResource m, MonadBaseControl IO m) => Credential@@ -221,16 +228,46 @@ time <- liftIO getCurrentTime let url = mkUrl ep cred time action params ver request <- liftIO $ HTTP.parseUrl (BSC.unpack url)- let req = request { HTTP.checkStatus = checkStatus' }+ let req = request+ { HTTP.checkStatus = checkStatus'+ , HTTP.responseTimeout = Just 30000000+ } response <- HTTP.http req mgr let body = HTTP.responseBody response let st = H.statusCode $ HTTP.responseStatus response if st < 400+#ifdef DEBUG+ then body $=+ conduitLog "aws-sdk.log" url+ else do+ body' <- body $=+ conduitLog "aws-sdk-error.log" url+ clientError st body' $ errSink action+ fail "not reached"+#else then return body else do clientError st body $ errSink action fail "not reached"+#endif +#ifdef DEBUG+conduitLog :: MonadResource m => FilePath -> ByteString -> GInfConduit ByteString m ByteString+conduitLog path url = bracketP (E.try $ IO.openBinaryFile path IO.AppendMode) release go+ where+ release :: Either SomeException IO.Handle -> IO ()+ release (Left _) = return ()+ release (Right h) = do+ liftIO $ BSC.hPutStrLn h ""+ IO.hClose h++ go :: MonadResource m => Either SomeException IO.Handle -> GInfConduit ByteString m ByteString+ go (Left _) = awaitForever yield+ go (Right h) = do+ liftIO $ do+ time <- getCurrentTime+ BSC.hPutStrLn h $ "[" <> awsTimeFormat time <> "] " <> url+ awaitForever $ \bs -> liftIO (BS.hPut h bs) >> yield bs+#endif+ commonQuery :: (MonadBaseControl IO m, MonadResource m) => ByteString -- ^ apiVersion@@ -246,25 +283,3 @@ XmlP.parseBytes XmlP.def =$ sinkResponse (bsToText action) sink State.put ctx { lastRequestId = Just rid } return res--#ifdef DEBUG-debugQuery- :: (MonadBaseControl IO m, MonadResource m)- => ByteString -- ^ apiVersion- -> ByteString -- ^ Action- -> [QueryParam]- -> AWS AWSContext m a-debugQuery ver action params = do- ctx <- State.get- cred <- Reader.ask- let mgr = manager ctx- let ep = endpoint ctx- time <- liftIO getCurrentTime- let url = mkUrl ep cred time action params ver- liftIO $ print url- request <- liftIO $ HTTP.parseUrl (BSC.unpack url)- let req = request { HTTP.checkStatus = checkStatus' }- response <- lift $ HTTP.http req mgr- lift $ HTTP.responseBody response $$+- CB.sinkFile "debug.txt"- fail "debug"-#endif
AWS/RDS.hs view
@@ -4,7 +4,7 @@ ( -- * RDS Environment RDS , runRDS- , runRDS'+ , runRDSwithManager , setRegion -- * DBInstance , module AWS.RDS.DBInstance@@ -49,9 +49,9 @@ runRDS :: MonadIO m => Credential -> RDS m a -> m a runRDS = runAWS initialRDSContext -runRDS' :: Monad m+runRDSwithManager :: Monad m => HTTP.Manager -> Credential -> RDS m a -> m a-runRDS' mgr = runAWS' mgr initialRDSContext+runRDSwithManager mgr = runAWSwithManager mgr initialRDSContext setRegion :: (MonadBaseControl IO m, MonadResource m)
AWS/RDS/DBInstance.hs view
@@ -1,7 +1,10 @@-{-# LANGUAGE FlexibleContexts, RankNTypes #-}+{-# LANGUAGE FlexibleContexts, RankNTypes, RecordWildCards #-} module AWS.RDS.DBInstance ( describeDBInstances+ , createDBInstance+ , deleteDBInstance+ , createDBInstanceReadReplica ) where import Data.Text (Text)@@ -24,7 +27,8 @@ -> Maybe Text -- ^ Marker -> RDS m [DBInstance] describeDBInstances dbid maxRecords marker =- rdsQuery "DescribeDBInstances" params sinkDBInstances+ rdsQuery "DescribeDBInstances" params $+ elements "DBInstance" sinkDBInstance where params = [ "DBInstanceIdentifier" |=? dbid@@ -32,11 +36,10 @@ , "Marker" |=? marker ] -sinkDBInstances+sinkDBInstance :: MonadThrow m- => GLSink Event m [DBInstance]-sinkDBInstances = elements "DBInstance" $- DBInstance+ => GLSink Event m DBInstance+sinkDBInstance = DBInstance <$> getT "Iops" <*> getT "BackupRetentionPeriod" <*> getT "DBInstanceStatus"@@ -97,9 +100,105 @@ , f PMVMultiAZ "MultiAZ" , f PMVAllocatedStorage "AllocatedStorage" , f PMVEngineVersion "EngineVersion"+ , f PMVDBInstanceIdentifier "DBInstanceIdentifier" , f PMVDBInstanceClass "DBInstanceClass" , f PMVBackupRetentionPeriod "BackupRetentionPeriod" , f PMVPort "Port" ] where f c name = fmap c <$> getT name++createDBInstance+ :: (MonadBaseControl IO m, MonadResource m)+ => CreateDBInstanceRequest -- ^ data type of CreateDBInstance+ -> RDS m DBInstance+createDBInstance CreateDBInstanceRequest{..} =+ rdsQuery "CreateDBInstance" params $+ element "DBInstance" sinkDBInstance+ where+ params =+ [ "AllocatedStorage" |=+ toText createDBInstanceAllocatedStorage+ , "AutoMinorVersionUpgrade" |=?+ boolToText <$> createDBInstanceAutoMinorVersionUpgrade+ , "AvailabilityZone" |=?+ createDBInstanceAvailabilityZone+ , "BackupRetentionPeriod" |=?+ toText <$> createDBInstanceBackupRetentionPeriod+ , "CharacterSetName" |=?+ createDBInstanceCharacterSetName+ , "DBInstanceClass" |=+ toText createDBInstanceDBInstanceClass+ , "DBInstanceIdentifier" |=+ createDBInstanceDBInstanceIdentifier+ , "DBName" |=? createDBInstanceDBName+ , "DBParameterGroupName" |=?+ createDBInstanceDBParameterGroupName+ , "DBSecurityGroups.member" |.#=+ createDBInstanceDBSecurityGroups+ , "DBSubnetGroupName" |=?+ createDBInstanceDBSubnetGroupName+ , "Engine" |= toText createDBInstanceEngine+ , "EngineVersion" |=? createDBInstanceEngineVersion+ , "Iops" |=? toText <$> createDBInstanceIops+ , "LicenseModel" |=?+ toText <$> createDBInstanceLicenseModel+ , "MasterUserPassword" |= createDBInstanceMasterUserPassword+ , "MasterUsername" |= createDBInstanceMasterUsername+ , "MultiAZ" |=? boolToText <$> createDBInstanceMultiAZ+ , "OptionGroupName" |=? createDBInstanceOptionGroupName+ , "Port" |=? toText <$> createDBInstancePort+ , "PreferredBackupWindow" |=?+ createDBInstancePreferredBackupWindow+ , "PreferredMaintenanceWindow" |=?+ createDBInstancePreferredMaintenanceWindow+ , "PubliclyAccessible" |=?+ boolToText <$> createDBInstancePubliclyAccessible+ , "VpcSecurityGroupIds" |.#=+ createDBInstanceVpcSecurityGroupIds+ ]++deleteDBInstance+ :: (MonadBaseControl IO m, MonadResource m)+ => Text -- ^ DBInstanceIdentifier+ -> FinalSnapshot -- ^ FinalSnapshot+ -> RDS m DBInstance+deleteDBInstance dbiid final =+ rdsQuery "DeleteDBInstance" params $+ element "DBInstance" sinkDBInstance+ where+ params =+ [ "DBInstanceIdentifier" |= dbiid+ ] ++ finalSnapshotParams final+ finalSnapshotParams SkipFinalSnapshot =+ [ "SkipFinalSnapshot" |= boolToText True ]+ finalSnapshotParams (FinalSnapshotIdentifier sid) =+ [ "SkipFinalSnapshot" |= boolToText False+ , "FinalSnapshotIdentifier" |= sid+ ]++createDBInstanceReadReplica+ :: (MonadBaseControl IO m, MonadResource m)+ => CreateReadReplicaRequest+ -> RDS m DBInstance+createDBInstanceReadReplica CreateReadReplicaRequest{..} =+ rdsQuery "CreateDBInstanceReadReplica" params $+ element "DBInstance" sinkDBInstance+ where+ params =+ [ "AutoMinorVersionUpgrade" |=?+ boolToText <$> createReadReplicaAutoMinorVersionUpgrade+ , "AvailabilityZone" |=?+ createReadReplicaAvailabilityZone+ , "DBInstanceClass" |=+ toText createReadReplicaDBInstanceClass+ , "DBInstanceIdentifier" |=+ createReadReplicaDBInstanceIdentifier+ , "Iops" |=? toText <$> createReadReplicaIops+ , "OptionGroupName" |=? createReadReplicaOptionGroupName+ , "Port" |=? toText <$> createReadReplicaPort+ , "PubliclyAccessible" |=?+ boolToText <$> createReadReplicaPubliclyAccessible+ , "SourceDBInstanceIdentifier" |=+ createReadReplicaSourceDBInstanceIdentifier+ ]
AWS/RDS/DBParameterGroup.hs view
@@ -2,6 +2,8 @@ module AWS.RDS.DBParameterGroup ( describeDBParameterGroups+ , createDBParameterGroup+ , deleteDBParameterGroup ) where import Control.Applicative ((<$>), (<*>))@@ -9,9 +11,9 @@ 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.Lib.Parser (getT, element)+import AWS.Lib.Query ((|=), (|=?))+import AWS.RDS.Internal (RDS, rdsQuery, rdsQueryOnlyMetadata, elements) import AWS.RDS.Types hiding (Event) import AWS.Util (toText) @@ -38,3 +40,27 @@ <$> getT "DBParameterGroupFamily" <*> getT "Description" <*> getT "DBParameterGroupName"++createDBParameterGroup+ :: (MonadBaseControl IO m, MonadResource m)+ => Text -- ^ DBParameterGroupFamily+ -> Text -- ^ DBParameterGroupName+ -> Text -- ^ Description+ -> RDS m DBParameterGroup+createDBParameterGroup family name desc =+ rdsQuery "CreateDBParameterGroup" params $+ element "DBParameterGroup" dbParameterGroupSink+ where+ params =+ [ "DBParameterGroupFamily" |= family+ , "DBParameterGroupName" |= name+ , "Description" |= desc+ ]++deleteDBParameterGroup+ :: (MonadBaseControl IO m, MonadResource m)+ => Text -- ^ DBParameterGroupName+ -> RDS m ()+deleteDBParameterGroup name =+ rdsQueryOnlyMetadata "DeleteDBParameterGroup"+ ["DBParameterGroupName" |= name]
AWS/RDS/DBSecurityGroup.hs view
@@ -2,6 +2,8 @@ module AWS.RDS.DBSecurityGroup ( describeDBSecurityGroups+ , createDBSecurityGroup+ , deleteDBSecurityGroup ) where import Control.Applicative ((<$>), (<*>))@@ -9,9 +11,9 @@ 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.Lib.Parser (getT, element)+import AWS.Lib.Query ((|=), (|=?))+import AWS.RDS.Internal (RDS, rdsQuery, rdsQueryOnlyMetadata, elements) import AWS.RDS.Types hiding (Event) import AWS.Util (toText) @@ -38,8 +40,8 @@ <$> elements "EC2SecurityGroup" ( EC2SecurityGroup <$> getT "Status"- <*> getT "EC2SecurityGroupOwnerId" <*> getT "EC2SecurityGroupName"+ <*> getT "EC2SecurityGroupOwnerId" <*> getT "EC2SecurityGroupId" ) <*> getT "DBSecurityGroupDescription"@@ -51,3 +53,25 @@ <*> getT "VpcId" <*> getT "OwnerId" <*> getT "DBSecurityGroupName"++createDBSecurityGroup+ :: (MonadBaseControl IO m, MonadResource m)+ => Text -- ^ DBSecurityGroupName+ -> Text -- ^ DBSecurityGroupDescription+ -> RDS m DBSecurityGroup+createDBSecurityGroup name desc =+ rdsQuery "CreateDBSecurityGroup" params $+ element "DBSecurityGroup" dbSecurityGroupSink+ where+ params =+ [ "DBSecurityGroupName" |= name+ , "DBSecurityGroupDescription" |= desc+ ]++deleteDBSecurityGroup+ :: (MonadBaseControl IO m, MonadResource m)+ => Text -- ^ DBSecurityGroupName+ -> RDS m ()+deleteDBSecurityGroup name =+ rdsQueryOnlyMetadata "DeleteDBSecurityGroup"+ ["DBSecurityGroupName" |= name]
AWS/RDS/DBSubnetGroup.hs view
@@ -2,13 +2,16 @@ module AWS.RDS.DBSubnetGroup ( describeDBSubnetGroups+ , createDBSubnetGroup+ , deleteDBSubnetGroup ) where import Control.Applicative ((<$>)) import Data.Conduit import Data.Text (Text) -import AWS.Lib.Query ((|=?))+import AWS.Lib.Parser (element)+import AWS.Lib.Query ((|=), (|=?), (|.#=)) import AWS.RDS.Internal import AWS.RDS.Types (DBSubnetGroup) import AWS.Util (toText)@@ -28,3 +31,27 @@ , "Marker" |=? marker , "MaxRecords" |=? toText <$> maxRecords ]++createDBSubnetGroup+ :: (MonadBaseControl IO m, MonadResource m)+ => Text -- ^ DBSubnetGroupName+ -> [Text] -- ^ SubnetIds+ -> Text -- ^ DBSubnetGroupDescription+ -> RDS m DBSubnetGroup+createDBSubnetGroup name ids desc =+ rdsQuery "CreateDBSubnetGroup" params $+ element "DBSubnetGroup" dbSubnetGroupSink+ where+ params =+ [ "DBSubnetGroupName" |= name+ , "SubnetIds.member" |.#= ids+ , "DBSubnetGroupDescription" |= desc+ ]++deleteDBSubnetGroup+ :: (MonadBaseControl IO m, MonadResource m)+ => Text -- ^ DBSubnetGroupName+ -> RDS m ()+deleteDBSubnetGroup name =+ rdsQueryOnlyMetadata "DeleteDBSubnetGroup"+ ["DBSubnetGroupName" |= name]
AWS/RDS/Internal.hs view
@@ -4,27 +4,31 @@ ( apiVersion , RDS , rdsQuery+ , rdsQueryOnlyMetadata , elements , elements'-#ifdef DEBUG- , rdsQueryDebug-#endif , dbSubnetGroupSink ) where import Control.Applicative ((<$>), (<*>))+import qualified Control.Monad.Reader as Reader+import qualified Control.Monad.State as State+import Control.Monad.Trans.Class (lift) import Data.ByteString (ByteString) import Data.Text (Text) import Data.Conduit import Data.Monoid ((<>)) import Data.XML.Types (Event(..)) import Data.Maybe (fromMaybe)+import qualified Text.XML.Stream.Parse as XmlP import AWS.Class import AWS.Lib.Query import AWS.Lib.Parser import AWS.RDS.Types (DBSubnetGroup(..), Subnet(..), AvailabilityZone(..))+import AWS.Util +-- | Ver.2013-01-10 apiVersion :: ByteString apiVersion = "2013-01-10" @@ -38,6 +42,29 @@ -> RDS m a rdsQuery = commonQuery apiVersion +rdsQueryOnlyMetadata+ :: (MonadBaseControl IO m, MonadResource m)+ => ByteString+ -> [QueryParam]+ -> RDS m ()+rdsQueryOnlyMetadata action params = do+ ctx <- State.get+ cred <- Reader.ask+ rs <- lift $ requestQuery cred ctx action params apiVersion sinkError+ rid <- lift $ rs $$+-+ XmlP.parseBytes XmlP.def =$+ sinkResponseOnlyMetadata (bsToText action)+ State.put ctx { lastRequestId = Just rid }+ return ()++sinkResponseOnlyMetadata+ :: MonadThrow m+ => Text+ -> GLSink Event m RequestId+sinkResponseOnlyMetadata action = do+ sinkEventBeginDocument+ element (action <> "Response") $ sinkResponseMetadata+ elements :: MonadThrow m => Text -> GLSink Event m a@@ -51,15 +78,6 @@ -> GLSink Event m [a] elements' setName itemName inner = fromMaybe [] <$> elementM setName (listConsumer itemName inner)--#ifdef DEBUG-rdsQueryDebug- :: (MonadResource m, MonadBaseControl IO m)- => ByteString- -> [QueryParam]- -> RDS m a-rdsQueryDebug = debugQuery apiVersion-#endif dbSubnetGroupSink :: MonadThrow m
AWS/RDS/Types/DBInstance.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE TemplateHaskell #-}+ module AWS.RDS.Types.DBInstance ( DBInstance(..) , VpcSecurityGroupMembership(..)@@ -6,9 +8,15 @@ , Endpoint(..) , OptionGroupMembership(..) , PendingModifiedValue(..)+ , CreateDBInstanceRequest(..)+ , DBInstanceClass(..)+ , Engine(..)+ , LicenseModel(..)+ , FinalSnapshot(..)+ , CreateReadReplicaRequest(..) ) where -import AWS.Lib.FromText (Text, UTCTime)+import AWS.Lib.FromText (Text, UTCTime, deriveFromText) import AWS.RDS.Types.DBSubnetGroup (DBSubnetGroup) data DBInstance = DBInstance@@ -21,13 +29,13 @@ , dbiPreferredBackupWindow :: Text , dbiPreferredMaintenanceWindow :: Text , dbiOptionGroupMembership :: Maybe OptionGroupMembership- , dbiAvailabilityZone :: Text+ , dbiAvailabilityZone :: Maybe Text , dbiLatestRestorableTime :: Maybe UTCTime , dbiReadReplicaDBInstanceIdentifiers :: [Text]- , dbiEngine :: Text+ , dbiEngine :: Engine , dbiPendingModifiedValues :: [PendingModifiedValue] , dbiCharacterSetName :: Maybe Text- , dbiLicenseModel :: Text+ , dbiLicenseModel :: LicenseModel , dbiSubnetGroup :: Maybe DBSubnetGroup , dbiDBParameterGroups :: [DBParameterGroupStatus] , dbiEndpoint :: Maybe Endpoint@@ -39,7 +47,7 @@ , dbiDBName :: Maybe Text , dbiInstanceCreateTime :: Maybe UTCTime , dbiAllocatedStorage :: Int -- ^ storage size in gigabytes- , dbiDBInstanceClass :: Text+ , dbiDBInstanceClass :: DBInstanceClass , dbiMasterUsername :: Text } deriving (Show, Eq)@@ -83,4 +91,117 @@ | 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"+ ]
AWS/RDS/Types/DBSecurityGroup.hs view
@@ -22,8 +22,8 @@ data EC2SecurityGroup = EC2SecurityGroup { ec2SecurityGroupStatus :: EC2SecurityGroupStatus- , ec2SecurityGroupOwnerId :: Maybe Text , ec2SecurityGroupName :: Text+ , ec2SecurityGroupOwnerId :: Maybe Text , ec2SecurityGroupId :: Maybe Text } deriving (Show, Eq)
− Tests/Main.hs
@@ -1,43 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE NoMonomorphismRestriction #-}-{-# OPTIONS_GHC -fno-warn-orphans #-}--module Main where--import AWSTests.EC2Tests-import AWSTests.RDSTests-import AWSTests.ELBTests--main :: IO ()-main = do- -- EC2 Tests- runInstanceTests- runVpcTests- runAddressTests- runSnapshotTests- runImageTests- runSubnetsTests- runVolumeTests- runSecurityGroupTests- runRouteTests- runRouteTableTests- runRegionTests- runInstanceTests- runAvailabilityZoneTests- runTagTests- runKeyPairTests- runNetworkInterfaceTests- runNetworkInterfaceAttributeTests- runPlacementGroupTests- runConversionTaskTests-- -- RDS Tests- runDBInstanceTests- runDBParameterGroupTests- runDBSecurityGroupTests- runDBSnapshotTests- runDBSubnetGroupTests- runEventTests-- -- ELB Tests- runLoadBalancerTests
aws-sdk.cabal view
@@ -1,5 +1,5 @@ name: aws-sdk-version: 0.10.0+version: 0.11.0 synopsis: AWS SDK for Haskell description: AWS (Amazon Web Services) sdk for Haskell. .@@ -22,9 +22,12 @@ build-type: Simple cabal-version: >=1.8 +flag debug+ description: enable debug logging+ default: False+ library exposed-modules: AWS- , AWS.Types , AWS.EC2 , AWS.EC2.Types , AWS.EC2.Util@@ -36,7 +39,9 @@ , AWS.ELB.Types , AWS.CloudWatch , AWS.CloudWatch.Types- other-modules: AWS.Util , AWS.Credential+ other-modules: AWS.Util+ , AWS.Credential+ , AWS.Types , AWS.Class , AWS.EC2.Internal , AWS.EC2.Address@@ -99,8 +104,12 @@ , AWS.ELB.LoadBalancer , AWS.CloudWatch.Internal , AWS.CloudWatch.Metric+ , AWS.CloudWatch.Alarm ghc-options: -Wall -fno-warn-unused-do-bind+ if flag(debug)+ cpp-options: -DDEBUG+ extensions: OverloadedStrings build-depends: base >= 4 && < 5 , containers@@ -132,7 +141,7 @@ test-suite test type: exitcode-stdio-1.0 main-is: Main.hs- hs-source-dirs: Tests+ hs-source-dirs: tests ghc-options: -Wall -threaded -fno-warn-unused-do-bind@@ -151,6 +160,7 @@ , lifted-base , iproute , tls+ , time source-repository head type: git
+ tests/Main.hs view
@@ -0,0 +1,49 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++module Main where++import AWSTests.EC2Tests+import AWSTests.RDSTests+import AWSTests.ELBTests+import AWSTests.CloudWatchTests++main :: IO ()+main = do+ -- EC2 Tests+ runInstanceTests+ runVpcTests+ runAddressTests+ runSnapshotTests+ runImageTests+ runSubnetsTests+ runVolumeTests+ runSecurityGroupTests+ runRouteTests+ runRouteTableTests+ runRegionTests+ runInstanceTests+ runAvailabilityZoneTests+ runTagTests+ runKeyPairTests+ runNetworkInterfaceTests+ runNetworkInterfaceAttributeTests+ runPlacementGroupTests+ runConversionTaskTests+ runAclTests++ -- RDS Tests+ runDBInstanceTests+ runDBParameterGroupTests+ runDBSecurityGroupTests+ runDBSnapshotTests+ runDBSubnetGroupTests+ runEventTests++ -- ELB Tests+ runLoadBalancerTests++ -- CloudWatch Tests+ runAlarmTests+ runMetricTests