packages feed

aws-sdk 0.4.3.0 → 0.5.0.0

raw patch · 20 files changed

+756/−56 lines, 20 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ AWS.EC2: associateRouteTable :: (MonadResource m, MonadBaseControl IO m) => Text -> Text -> EC2 m Text
+ AWS.EC2: createNetworkAcl :: (MonadResource m, MonadBaseControl IO m) => Text -> EC2 m NetworkAcl
+ AWS.EC2: createNetworkAclEntry :: (MonadResource m, MonadBaseControl IO m) => NetworkAclEntryRequest -> EC2 m Bool
+ AWS.EC2: createRouteTable :: (MonadResource m, MonadBaseControl IO m) => Text -> EC2 m RouteTable
+ AWS.EC2: createSubnet :: (MonadResource m, MonadBaseControl IO m) => CreateSubnetRequest -> EC2 m Subnet
+ AWS.EC2: deleteNetworkAcl :: (MonadResource m, MonadBaseControl IO m) => Text -> EC2 m Bool
+ AWS.EC2: deleteNetworkAclEntry :: (MonadResource m, MonadBaseControl IO m) => Text -> Int -> Bool -> EC2 m Bool
+ AWS.EC2: deleteRouteTable :: (MonadResource m, MonadBaseControl IO m) => Text -> EC2 m Bool
+ AWS.EC2: deleteSubnet :: (MonadResource m, MonadBaseControl IO m) => Text -> EC2 m Bool
+ AWS.EC2: describeNetworkAcls :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (ResumableSource m NetworkAcl)
+ AWS.EC2: describeRouteTables :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (ResumableSource m RouteTable)
+ AWS.EC2: describeSubnets :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (ResumableSource m Subnet)
+ AWS.EC2: describeVolumeAttribute :: (MonadResource m, MonadBaseControl IO m) => Text -> VolumeAttributeRequest -> EC2 m (Text, VolumeAttribute)
+ AWS.EC2: describeVolumeStatus :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> Maybe Text -> EC2 m (ResumableSource m VolumeStatus)
+ AWS.EC2: disassociateRouteTable :: (MonadResource m, MonadBaseControl IO m) => Text -> EC2 m Bool
+ AWS.EC2: enableVolumeIO :: (MonadResource m, MonadBaseControl IO m) => Text -> EC2 m Bool
+ AWS.EC2: modifyVolumeAttribute :: (MonadResource m, MonadBaseControl IO m) => Text -> Bool -> EC2 m Bool
+ AWS.EC2: replaceNetworkAclAssociation :: (MonadResource m, MonadBaseControl IO m) => Text -> Text -> EC2 m Text
+ AWS.EC2: replaceNetworkAclEntry :: (MonadResource m, MonadBaseControl IO m) => NetworkAclEntryRequest -> EC2 m Bool
+ AWS.EC2: replaceRouteTableAssociation :: (MonadResource m, MonadBaseControl IO m) => Text -> Text -> EC2 m Text
+ AWS.EC2.Types: CreateSubnetRequest :: Text -> Text -> Maybe Text -> CreateSubnetRequest
+ AWS.EC2.Types: IcmpTypeCode :: Int -> Int -> IcmpTypeCode
+ AWS.EC2.Types: NetworkAcl :: Text -> Text -> Bool -> [NetworkAclEntry] -> [NetworkAclAssociation] -> [ResourceTag] -> NetworkAcl
+ AWS.EC2.Types: NetworkAclAssociation :: Text -> Text -> Text -> NetworkAclAssociation
+ AWS.EC2.Types: NetworkAclEntry :: Int -> Int -> NetworkAclRuleAction -> Bool -> Text -> Maybe IcmpTypeCode -> Maybe PortRange -> NetworkAclEntry
+ AWS.EC2.Types: NetworkAclEntryRequest :: Text -> Int -> Int -> NetworkAclRuleAction -> Bool -> Text -> Maybe IcmpTypeCode -> Maybe PortRange -> NetworkAclEntryRequest
+ AWS.EC2.Types: NetworkAclRuleActionAllow :: NetworkAclRuleAction
+ AWS.EC2.Types: NetworkAclRuleActionDeny :: NetworkAclRuleAction
+ AWS.EC2.Types: PortRange :: Int -> Int -> PortRange
+ AWS.EC2.Types: Route :: Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> RouteState -> Maybe RouteOrigin -> Route
+ AWS.EC2.Types: RouteOriginCreateRoute :: RouteOrigin
+ AWS.EC2.Types: RouteOriginCreateRouteTable :: RouteOrigin
+ AWS.EC2.Types: RouteOriginTableEnableVgwRoutePropagation :: RouteOrigin
+ AWS.EC2.Types: RouteStateActive :: RouteState
+ AWS.EC2.Types: RouteStateBlackhole :: RouteState
+ AWS.EC2.Types: RouteTable :: Text -> Text -> [Route] -> [RouteTableAssociation] -> Maybe PropagatingVgw -> [ResourceTag] -> RouteTable
+ AWS.EC2.Types: RouteTableAssociation :: Text -> Text -> Maybe Text -> Maybe Bool -> RouteTableAssociation
+ AWS.EC2.Types: Subnet :: Text -> SubnetState -> Text -> Text -> Int -> Text -> [ResourceTag] -> Subnet
+ AWS.EC2.Types: SubnetAvailable :: SubnetState
+ AWS.EC2.Types: SubnetPending :: SubnetState
+ AWS.EC2.Types: VAAutoEnableIO :: Bool -> VolumeAttribute
+ AWS.EC2.Types: VAProductCodes :: [ProductCode] -> VolumeAttribute
+ AWS.EC2.Types: VARAutoEnableIO :: VolumeAttributeRequest
+ AWS.EC2.Types: VARProductCodes :: VolumeAttributeRequest
+ AWS.EC2.Types: VSIImpaired :: VolumeStatusInfoStatus
+ AWS.EC2.Types: VSIInsufficientData :: VolumeStatusInfoStatus
+ AWS.EC2.Types: VSIOK :: VolumeStatusInfoStatus
+ AWS.EC2.Types: VolumeStatus :: Text -> Text -> VolumeStatusInfo -> [VolumeStatusEvent] -> [VolumeStatusAction] -> VolumeStatus
+ AWS.EC2.Types: VolumeStatusAction :: Text -> Text -> Text -> Text -> VolumeStatusAction
+ AWS.EC2.Types: VolumeStatusDetail :: Text -> Text -> VolumeStatusDetail
+ AWS.EC2.Types: VolumeStatusEvent :: Text -> Text -> Text -> Maybe UTCTime -> Maybe UTCTime -> VolumeStatusEvent
+ AWS.EC2.Types: VolumeStatusInfo :: VolumeStatusInfoStatus -> [VolumeStatusDetail] -> VolumeStatusInfo
+ AWS.EC2.Types: csrAvailabilityZone :: CreateSubnetRequest -> Maybe Text
+ AWS.EC2.Types: csrCidrBlock :: CreateSubnetRequest -> Text
+ AWS.EC2.Types: csrVpcId :: CreateSubnetRequest -> Text
+ AWS.EC2.Types: data CreateSubnetRequest
+ AWS.EC2.Types: data IcmpTypeCode
+ AWS.EC2.Types: data NetworkAcl
+ AWS.EC2.Types: data NetworkAclAssociation
+ AWS.EC2.Types: data NetworkAclEntry
+ AWS.EC2.Types: data NetworkAclEntryRequest
+ AWS.EC2.Types: data NetworkAclRuleAction
+ AWS.EC2.Types: data PortRange
+ AWS.EC2.Types: data Route
+ AWS.EC2.Types: data RouteOrigin
+ AWS.EC2.Types: data RouteState
+ AWS.EC2.Types: data RouteTable
+ AWS.EC2.Types: data RouteTableAssociation
+ AWS.EC2.Types: data Subnet
+ AWS.EC2.Types: data SubnetState
+ AWS.EC2.Types: data VolumeAttribute
+ AWS.EC2.Types: data VolumeAttributeRequest
+ AWS.EC2.Types: data VolumeState
+ AWS.EC2.Types: data VolumeStatusAction
+ AWS.EC2.Types: data VolumeStatusDetail
+ AWS.EC2.Types: data VolumeStatusEvent
+ AWS.EC2.Types: data VolumeStatusInfo
+ AWS.EC2.Types: data VolumeStatusInfoStatus
+ AWS.EC2.Types: icmpTypeCodeCode :: IcmpTypeCode -> Int
+ AWS.EC2.Types: icmpTypeCodeType :: IcmpTypeCode -> Int
+ AWS.EC2.Types: instance Eq CreateSubnetRequest
+ AWS.EC2.Types: instance Eq IcmpTypeCode
+ AWS.EC2.Types: instance Eq NetworkAcl
+ AWS.EC2.Types: instance Eq NetworkAclAssociation
+ AWS.EC2.Types: instance Eq NetworkAclEntry
+ AWS.EC2.Types: instance Eq NetworkAclEntryRequest
+ AWS.EC2.Types: instance Eq NetworkAclRuleAction
+ AWS.EC2.Types: instance Eq PortRange
+ AWS.EC2.Types: instance Eq Route
+ AWS.EC2.Types: instance Eq RouteOrigin
+ AWS.EC2.Types: instance Eq RouteState
+ AWS.EC2.Types: instance Eq RouteTable
+ AWS.EC2.Types: instance Eq RouteTableAssociation
+ AWS.EC2.Types: instance Eq Subnet
+ AWS.EC2.Types: instance Eq SubnetState
+ AWS.EC2.Types: instance Eq VolumeAttribute
+ AWS.EC2.Types: instance Eq VolumeAttributeRequest
+ AWS.EC2.Types: instance Eq VolumeState
+ AWS.EC2.Types: instance Eq VolumeStatusAction
+ AWS.EC2.Types: instance Eq VolumeStatusDetail
+ AWS.EC2.Types: instance Eq VolumeStatusEvent
+ AWS.EC2.Types: instance Eq VolumeStatusInfo
+ AWS.EC2.Types: instance Eq VolumeStatusInfoStatus
+ AWS.EC2.Types: instance Show CreateSubnetRequest
+ AWS.EC2.Types: instance Show IcmpTypeCode
+ AWS.EC2.Types: instance Show NetworkAcl
+ AWS.EC2.Types: instance Show NetworkAclAssociation
+ AWS.EC2.Types: instance Show NetworkAclEntry
+ AWS.EC2.Types: instance Show NetworkAclEntryRequest
+ AWS.EC2.Types: instance Show NetworkAclRuleAction
+ AWS.EC2.Types: instance Show PortRange
+ AWS.EC2.Types: instance Show Route
+ AWS.EC2.Types: instance Show RouteOrigin
+ AWS.EC2.Types: instance Show RouteState
+ AWS.EC2.Types: instance Show RouteTable
+ AWS.EC2.Types: instance Show RouteTableAssociation
+ AWS.EC2.Types: instance Show Subnet
+ AWS.EC2.Types: instance Show SubnetState
+ AWS.EC2.Types: instance Show VolumeAttribute
+ AWS.EC2.Types: instance Show VolumeAttributeRequest
+ AWS.EC2.Types: instance Show VolumeState
+ AWS.EC2.Types: instance Show VolumeStatusAction
+ AWS.EC2.Types: instance Show VolumeStatusDetail
+ AWS.EC2.Types: instance Show VolumeStatusEvent
+ AWS.EC2.Types: instance Show VolumeStatusInfo
+ AWS.EC2.Types: instance Show VolumeStatusInfoStatus
+ AWS.EC2.Types: networkAclAssociationId :: NetworkAclAssociation -> Text
+ AWS.EC2.Types: networkAclAssociationNetworkAclId :: NetworkAclAssociation -> Text
+ AWS.EC2.Types: networkAclAssociationSet :: NetworkAcl -> [NetworkAclAssociation]
+ AWS.EC2.Types: networkAclAssociationSubnetId :: NetworkAclAssociation -> Text
+ AWS.EC2.Types: networkAclDefault :: NetworkAcl -> Bool
+ AWS.EC2.Types: networkAclEntryCidrBlock :: NetworkAclEntry -> Text
+ AWS.EC2.Types: networkAclEntryEgress :: NetworkAclEntry -> Bool
+ AWS.EC2.Types: networkAclEntryIcmpTypeCode :: NetworkAclEntry -> Maybe IcmpTypeCode
+ AWS.EC2.Types: networkAclEntryPortRange :: NetworkAclEntry -> Maybe PortRange
+ AWS.EC2.Types: networkAclEntryProtocol :: NetworkAclEntry -> Int
+ AWS.EC2.Types: networkAclEntryRequestCidrBlock :: NetworkAclEntryRequest -> Text
+ AWS.EC2.Types: networkAclEntryRequestEgress :: NetworkAclEntryRequest -> Bool
+ AWS.EC2.Types: networkAclEntryRequestIcmp :: NetworkAclEntryRequest -> Maybe IcmpTypeCode
+ AWS.EC2.Types: networkAclEntryRequestNetworkAclId :: NetworkAclEntryRequest -> Text
+ AWS.EC2.Types: networkAclEntryRequestPortRange :: NetworkAclEntryRequest -> Maybe PortRange
+ AWS.EC2.Types: networkAclEntryRequestProtocol :: NetworkAclEntryRequest -> Int
+ AWS.EC2.Types: networkAclEntryRequestRuleAction :: NetworkAclEntryRequest -> NetworkAclRuleAction
+ AWS.EC2.Types: networkAclEntryRequestRuleNumber :: NetworkAclEntryRequest -> Int
+ AWS.EC2.Types: networkAclEntryRuleAction :: NetworkAclEntry -> NetworkAclRuleAction
+ AWS.EC2.Types: networkAclEntryRuleNumber :: NetworkAclEntry -> Int
+ AWS.EC2.Types: networkAclEntrySet :: NetworkAcl -> [NetworkAclEntry]
+ AWS.EC2.Types: networkAclId :: NetworkAcl -> Text
+ AWS.EC2.Types: networkAclTagSet :: NetworkAcl -> [ResourceTag]
+ AWS.EC2.Types: networkAclVpcId :: NetworkAcl -> Text
+ AWS.EC2.Types: portRangeFrom :: PortRange -> Int
+ AWS.EC2.Types: portRangeTo :: PortRange -> Int
+ AWS.EC2.Types: rDestinationCidrBlock :: Route -> Text
+ AWS.EC2.Types: rGatewayId :: Route -> Maybe Text
+ AWS.EC2.Types: rInstanceId :: Route -> Maybe Text
+ AWS.EC2.Types: rInstanceOwnerId :: Route -> Maybe Text
+ AWS.EC2.Types: rNetworkInterfaceId :: Route -> Maybe Text
+ AWS.EC2.Types: rOrigin :: Route -> Maybe RouteOrigin
+ AWS.EC2.Types: rState :: Route -> RouteState
+ AWS.EC2.Types: rtAssociationSet :: RouteTable -> [RouteTableAssociation]
+ AWS.EC2.Types: rtPropagatingVgw :: RouteTable -> Maybe PropagatingVgw
+ AWS.EC2.Types: rtRouteSet :: RouteTable -> [Route]
+ AWS.EC2.Types: rtRouteTableId :: RouteTable -> Text
+ AWS.EC2.Types: rtTagSet :: RouteTable -> [ResourceTag]
+ AWS.EC2.Types: rtVpcId :: RouteTable -> Text
+ AWS.EC2.Types: rtaMain :: RouteTableAssociation -> Maybe Bool
+ AWS.EC2.Types: rtaRouteTableAssociationId :: RouteTableAssociation -> Text
+ AWS.EC2.Types: rtaRouteTableId :: RouteTableAssociation -> Text
+ AWS.EC2.Types: rtaSubnetId :: RouteTableAssociation -> Maybe Text
+ AWS.EC2.Types: snAvailableIpAddressCount :: Subnet -> Int
+ AWS.EC2.Types: snCAvailabilityZone :: Subnet -> Text
+ AWS.EC2.Types: snCidrBlock :: Subnet -> Text
+ AWS.EC2.Types: snState :: Subnet -> SubnetState
+ AWS.EC2.Types: snSubnetId :: Subnet -> Text
+ AWS.EC2.Types: snTagSet :: Subnet -> [ResourceTag]
+ AWS.EC2.Types: snVpicId :: Subnet -> Text
+ AWS.EC2.Types: vsaCode :: VolumeStatusAction -> Text
+ AWS.EC2.Types: vsaDescription :: VolumeStatusAction -> Text
+ AWS.EC2.Types: vsaEventId :: VolumeStatusAction -> Text
+ AWS.EC2.Types: vsaEventType :: VolumeStatusAction -> Text
+ AWS.EC2.Types: vsdName :: VolumeStatusDetail -> Text
+ AWS.EC2.Types: vsdStatus :: VolumeStatusDetail -> Text
+ AWS.EC2.Types: vseDescription :: VolumeStatusEvent -> Text
+ AWS.EC2.Types: vseEventId :: VolumeStatusEvent -> Text
+ AWS.EC2.Types: vseEventType :: VolumeStatusEvent -> Text
+ AWS.EC2.Types: vseNotAfter :: VolumeStatusEvent -> Maybe UTCTime
+ AWS.EC2.Types: vseNotBefore :: VolumeStatusEvent -> Maybe UTCTime
+ AWS.EC2.Types: vsiDetails :: VolumeStatusInfo -> [VolumeStatusDetail]
+ AWS.EC2.Types: vsiStatus :: VolumeStatusInfo -> VolumeStatusInfoStatus
+ AWS.EC2.Types: vstActionSet :: VolumeStatus -> [VolumeStatusAction]
+ AWS.EC2.Types: vstAvailabilityZone :: VolumeStatus -> Text
+ AWS.EC2.Types: vstEventSet :: VolumeStatus -> [VolumeStatusEvent]
+ AWS.EC2.Types: vstVolumeId :: VolumeStatus -> Text
+ AWS.EC2.Types: vstVolumeStatus :: VolumeStatus -> VolumeStatusInfo
- AWS.EC2: describeAddresses :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Text] -> [Filter] -> EC2 m (Source m Address)
+ AWS.EC2: describeAddresses :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Text] -> [Filter] -> EC2 m (ResumableSource m Address)
- AWS.EC2: describeAvailabilityZones :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (Source m AvailabilityZone)
+ AWS.EC2: describeAvailabilityZones :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (ResumableSource m AvailabilityZone)
- AWS.EC2: describeImages :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Text] -> [Text] -> [Filter] -> EC2 m (Source m Image)
+ AWS.EC2: describeImages :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Text] -> [Text] -> [Filter] -> EC2 m (ResumableSource m Image)
- AWS.EC2: describeInstanceStatus :: (MonadResource m, MonadBaseControl IO m) => [Text] -> Bool -> [Filter] -> Maybe Text -> EC2 m (Source m InstanceStatus)
+ AWS.EC2: describeInstanceStatus :: (MonadResource m, MonadBaseControl IO m) => [Text] -> Bool -> [Filter] -> Maybe Text -> EC2 m (ResumableSource m InstanceStatus)
- AWS.EC2: describeInstances :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (Source m Reservation)
+ AWS.EC2: describeInstances :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (ResumableSource m Reservation)
- AWS.EC2: describeKeyPairs :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (Source m KeyPair)
+ AWS.EC2: describeKeyPairs :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (ResumableSource m KeyPair)
- AWS.EC2: describeRegions :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (Source m Region)
+ AWS.EC2: describeRegions :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (ResumableSource m Region)
- AWS.EC2: describeSecurityGroups :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Text] -> [Filter] -> EC2 m (Source m SecurityGroup)
+ AWS.EC2: describeSecurityGroups :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Text] -> [Filter] -> EC2 m (ResumableSource m SecurityGroup)
- AWS.EC2: describeSnapshots :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Text] -> [Text] -> [Filter] -> EC2 m (Source m Snapshot)
+ AWS.EC2: describeSnapshots :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Text] -> [Text] -> [Filter] -> EC2 m (ResumableSource m Snapshot)
- AWS.EC2: describeTags :: (MonadResource m, MonadBaseControl IO m) => [Filter] -> EC2 m (Source m Tag)
+ AWS.EC2: describeTags :: (MonadResource m, MonadBaseControl IO m) => [Filter] -> EC2 m (ResumableSource m Tag)
- AWS.EC2: describeVolumes :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (Source m Volume)
+ AWS.EC2: describeVolumes :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (ResumableSource m Volume)
- AWS.EC2: describeVpnConnections :: (MonadBaseControl IO m, MonadResource m) => [Text] -> [Filter] -> EC2 m (Source m VpnConnection)
+ AWS.EC2: describeVpnConnections :: (MonadBaseControl IO m, MonadResource m) => [Text] -> [Filter] -> EC2 m (ResumableSource m VpnConnection)
- AWS.EC2: startInstances :: (MonadResource m, MonadBaseControl IO m) => [Text] -> EC2 m (Source m InstanceStateChange)
+ AWS.EC2: startInstances :: (MonadResource m, MonadBaseControl IO m) => [Text] -> EC2 m (ResumableSource m InstanceStateChange)
- AWS.EC2: stopInstances :: (MonadResource m, MonadBaseControl IO m) => [Text] -> Bool -> EC2 m (Source m InstanceStateChange)
+ AWS.EC2: stopInstances :: (MonadResource m, MonadBaseControl IO m) => [Text] -> Bool -> EC2 m (ResumableSource m InstanceStateChange)
- AWS.EC2: terminateInstances :: (MonadResource m, MonadBaseControl IO m) => [Text] -> EC2 m (Source m InstanceStateChange)
+ AWS.EC2: terminateInstances :: (MonadResource m, MonadBaseControl IO m) => [Text] -> EC2 m (ResumableSource m InstanceStateChange)
- AWS.EC2.Types: VolAvailable :: VolumeStatus
+ AWS.EC2.Types: VolAvailable :: VolumeState
- AWS.EC2.Types: VolCreating :: VolumeStatus
+ AWS.EC2.Types: VolCreating :: VolumeState
- AWS.EC2.Types: VolDeleted :: VolumeStatus
+ AWS.EC2.Types: VolDeleted :: VolumeState
- AWS.EC2.Types: VolDeleting :: VolumeStatus
+ AWS.EC2.Types: VolDeleting :: VolumeState
- AWS.EC2.Types: VolError :: VolumeStatus
+ AWS.EC2.Types: VolError :: VolumeState
- AWS.EC2.Types: VolInUse :: VolumeStatus
+ AWS.EC2.Types: VolInUse :: VolumeState
- AWS.EC2.Types: Volume :: Text -> Int -> Maybe Text -> Text -> VolumeStatus -> UTCTime -> [Attachment] -> [ResourceTag] -> VolumeType -> Volume
+ AWS.EC2.Types: Volume :: Text -> Int -> Maybe Text -> Text -> VolumeState -> UTCTime -> [Attachment] -> [ResourceTag] -> VolumeType -> Volume
- AWS.EC2.Types: volStatus :: Volume -> VolumeStatus
+ AWS.EC2.Types: volStatus :: Volume -> VolumeState
- AWS.EC2.Util: asList :: Monad m => EC2 m (Source m a) -> EC2 m [a]
+ AWS.EC2.Util: asList :: Monad m => EC2 m (ResumableSource m a) -> EC2 m [a]
- AWS.EC2.Util: each :: Monad m => EC2 m (Source m a) -> (a -> m b) -> EC2 m ()
+ AWS.EC2.Util: each :: Monad m => (a -> m b) -> EC2 m (ResumableSource m a) -> EC2 m ()
- AWS.EC2.Util: head :: Monad m => EC2 m (Source m a) -> EC2 m (Maybe a)
+ AWS.EC2.Util: head :: Monad m => EC2 m (ResumableSource m a) -> EC2 m (Maybe a)

Files

AWS/EC2.hs view
@@ -27,6 +27,9 @@     , module AWS.EC2.Tag       -- * VPC     , module AWS.EC2.VPC+    , module AWS.EC2.Subnets+    , module AWS.EC2.Acl+    , module AWS.EC2.RouteTable     ) where  import Data.Conduit@@ -51,6 +54,9 @@ import AWS.EC2.KeyPair import AWS.EC2.SecurityGroup import AWS.EC2.VPC+import AWS.EC2.Subnets+import AWS.EC2.Acl+import AWS.EC2.RouteTable  -- | set endpoint to EC2 context. setRegion
+ AWS/EC2/Acl.hs view
@@ -0,0 +1,165 @@+{-# LANGUAGE FlexibleContexts, RankNTypes #-}++module AWS.EC2.Acl+    ( describeNetworkAcls+    , createNetworkAcl+    , deleteNetworkAcl+    , replaceNetworkAclAssociation+    , createNetworkAclEntry+    , deleteNetworkAclEntry+    , replaceNetworkAclEntry+    ) where++import Data.Text (Text)+import Data.XML.Types (Event)+import Data.Conduit+import Control.Monad.Trans.Control (MonadBaseControl)+import Control.Applicative++import AWS.EC2.Internal+import AWS.EC2.Types+import AWS.EC2.Query+import AWS.Lib.Parser+import AWS.Util++describeNetworkAcls+    :: (MonadResource m, MonadBaseControl IO m)+    => [Text] -- ^ NetworkAclId+    -> [Filter] -- ^ Filters+    -> EC2 m (ResumableSource m NetworkAcl)+describeNetworkAcls nids filters = do+    ec2QuerySource "DescribeNetworkAcls" params $+        itemConduit "networkAclSet" networkAclSink+  where+    params =+        [ ArrayParams "NetworkAclId" nids+        , FilterParams filters+        ]++networkAclSink :: MonadThrow m+    => GLSink Event m NetworkAcl+networkAclSink = NetworkAcl+    <$> getT "networkAclId"+    <*> getT "vpcId"+    <*> getF "default" textToBool+    <*> itemsSet "entrySet" (NetworkAclEntry+        <$> getF "ruleNumber" textToInt+        <*> getF "protocol" textToInt+        <*> getF "ruleAction" networkAclRuleAction+        <*> getF "egress" textToBool+        <*> getT "cidrBlock"+        <*> elementM "icmpTypeCode" (IcmpTypeCode+            <$> getF "code" textToInt+            <*> getF "type" textToInt+            )+        <*> elementM "portRange" (PortRange+            <$> getF "from" textToInt+            <*> getF "to" textToInt))+    <*> itemsSet "associationSet" (NetworkAclAssociation+        <$> getT "networkAclAssociationId"+        <*> getT "networkAclId"+        <*> getT "subnetId"+        )+    <*> resourceTagSink++createNetworkAcl+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ VpcId+    -> EC2 m NetworkAcl+createNetworkAcl vpcid =+    ec2Query "CreateNetworkAcl" params $+        element "networkAcl" networkAclSink+  where+    params = [ValueParam "VpcId" vpcid]++deleteNetworkAcl+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ NetworkAclId+    -> EC2 m Bool+deleteNetworkAcl aclid =+    ec2Query "DeleteNetworkAcl" params returnBool+  where+    params = [ValueParam "NetworkAclId" aclid]++replaceNetworkAclAssociation+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ AssociationId+    -> Text -- ^ NetworkAclId+    -> EC2 m Text+replaceNetworkAclAssociation assoc aclid =+    ec2Query "ReplaceNetworkAclAssociation" params $+        getT "newAssociationId"+  where+    params =+        [ ValueParam "AssociationId" assoc+        , ValueParam "NetworkAclId" aclid+        ]++createNetworkAclEntry+    :: (MonadResource m, MonadBaseControl IO m)+    => NetworkAclEntryRequest+    -> EC2 m Bool+createNetworkAclEntry req =+    ec2Query "CreateNetworkAclEntry" params returnBool+  where+    params = reqToParams req++reqToParams :: NetworkAclEntryRequest -> [QueryParam]+reqToParams req =+        [ ValueParam "NetworkAclId" $+            networkAclEntryRequestNetworkAclId req+        , ValueParam "RuleNumber" $+            toText $ networkAclEntryRequestRuleNumber req+        , ValueParam "Protocol" $+            toText $ networkAclEntryRequestProtocol req+        , ValueParam "RuleAction" $+            ruleToText $ networkAclEntryRequestRuleAction req+        , ValueParam "CidrBlock" $+            networkAclEntryRequestCidrBlock req+        , ValueParam "Egress" $+            boolToText $ networkAclEntryRequestEgress req+        ] ++ maybeParams+        [ ("Icmp.Code",+            toText+            <$> icmpTypeCodeCode+            <$> networkAclEntryRequestIcmp req)+        , ("Icmp.Type",+            toText+            <$> icmpTypeCodeType+            <$> networkAclEntryRequestIcmp req)+        , ("PortRange.From",+            toText+            <$> portRangeFrom+            <$> networkAclEntryRequestPortRange req)+        , ("PortRange.To",+            toText+            <$> portRangeTo+            <$> networkAclEntryRequestPortRange req)+        ]+  where+    ruleToText NetworkAclRuleActionAllow = "allow"+    ruleToText NetworkAclRuleActionDeny = "deny"++deleteNetworkAclEntry+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ NetworkAclId+    -> Int -- ^ RuleNumber+    -> Bool -- ^ Egress+    -> EC2 m Bool+deleteNetworkAclEntry aclid rule egress =+    ec2Query "DeleteNetworkAclEntry" params returnBool+  where+    params =+        [ ValueParam "NetworkAclId" aclid+        , ValueParam "RuleNumber" $ toText rule+        , ValueParam "Egress" $ boolToText egress+        ]++replaceNetworkAclEntry+    :: (MonadResource m, MonadBaseControl IO m)+    => NetworkAclEntryRequest+    -> EC2 m Bool+replaceNetworkAclEntry req =+    ec2Query "ReplaceNetworkAclEntry" params returnBool+  where+    params = reqToParams req
AWS/EC2/Address.hs view
@@ -31,7 +31,7 @@     => [Text] -- ^ PublicIps     -> [Text] -- ^ AllocationIds     -> [Filter] -- ^ Filters-    -> EC2 m (Source m Address)+    -> EC2 m (ResumableSource m Address) describeAddresses pubIps alloIds filters =     ec2QuerySource "DescribeAddresses" params addressSet where     params =
AWS/EC2/AvailabilityZone.hs view
@@ -20,7 +20,7 @@     :: (MonadResource m, MonadBaseControl IO m)     => [Text] -- ^ ZoneNames     -> [Filter] -- ^ Filters-    -> EC2 m (Source m AvailabilityZone)+    -> EC2 m (ResumableSource m AvailabilityZone) describeAvailabilityZones zones filters =     ec2QuerySource "DescribeAvailabilityZones" params availabilityZoneInfo   where
AWS/EC2/Image.hs view
@@ -27,7 +27,7 @@     -> [Text] -- ^ Owners (User Ids)     -> [Text] -- ^ ExecutedBy (User Ids)     -> [Filter] -- ^ Filers-    -> EC2 m (Source m Image)+    -> EC2 m (ResumableSource m Image) describeImages imageIds owners execby filters =     ec2QuerySource "DescribeImages" params $ itemConduit "imagesSet" imageItem --    ec2QueryDebug "DescribeImages" params
AWS/EC2/Instance.hs view
@@ -38,7 +38,7 @@     :: (MonadResource m, MonadBaseControl IO m)     => [Text] -- ^ InstanceIds     -> [Filter] -- ^ Filters-    -> EC2 m (Source m Reservation)+    -> EC2 m (ResumableSource m Reservation) describeInstances instances filters = do     ec2QuerySource "DescribeInstances" params $         itemConduit "reservationSet" reservationSink@@ -181,7 +181,7 @@     -> Bool  -- ^ is all instance? 'False': running instance only.     -> [Filter] -- ^ Filters     -> Maybe Text -- ^ next token-    -> EC2 m (Source m InstanceStatus)+    -> EC2 m (ResumableSource m InstanceStatus) describeInstanceStatus instanceIds isAll filters token =     ec2QuerySource' "DescribeInstanceStatus" params token instanceStatusSet   where@@ -227,7 +227,7 @@ startInstances     :: (MonadResource m, MonadBaseControl IO m)     => [Text] -- ^ InstanceIds-    -> EC2 m (Source m InstanceStateChange)+    -> EC2 m (ResumableSource m InstanceStateChange) startInstances instanceIds =     ec2QuerySource "StartInstances" params instanceStateChangeSet   where@@ -249,7 +249,7 @@     :: (MonadResource m, MonadBaseControl IO m)     => [Text] -- ^ InstanceIds     -> Bool -- ^ Force-    -> EC2 m (Source m InstanceStateChange)+    -> EC2 m (ResumableSource m InstanceStateChange) stopInstances instanceIds force =     ec2QuerySource "StopInstances" params instanceStateChangeSet   where@@ -275,7 +275,7 @@ terminateInstances     :: (MonadResource m, MonadBaseControl IO m)     => [Text] -- ^ InstanceIds-    -> EC2 m (Source m InstanceStateChange)+    -> EC2 m (ResumableSource m InstanceStateChange) terminateInstances instanceIds =     ec2QuerySource "TerminateInstances" params         instanceStateChangeSet
AWS/EC2/Internal.hs view
@@ -185,7 +185,7 @@     | t == "error"     = SSError     | otherwise        = err "snapshot status" t -volumeStatus :: Text -> VolumeStatus+volumeStatus :: Text -> VolumeState volumeStatus t     | t == "creating"  = VolCreating     | t == "available" = VolAvailable@@ -241,3 +241,35 @@ instanceLifecycle (Just t)     | t == "spot"   = LifecycleSpot     | otherwise     = err "lifecycle" t++subnetState :: Text -> SubnetState+subnetState t+    | t == "pending"   = SubnetPending+    | t == "available" = SubnetAvailable+    | otherwise        = err "subnet state" t++volumeStatusInfoStatus :: Text -> VolumeStatusInfoStatus+volumeStatusInfoStatus t+    | t == "ok"                = VSIOK+    | t == "impaired"          = VSIImpaired+    | t == "insufficient-data" = VSIInsufficientData+    | otherwise                = err "VolumeStatusInfo Status" t++networkAclRuleAction :: Text -> NetworkAclRuleAction+networkAclRuleAction t+    | t == "allow" = NetworkAclRuleActionAllow+    | t == "deny"  = NetworkAclRuleActionDeny+    | otherwise    = err "network acl rule action" t++routeState :: Text -> RouteState+routeState t+    | t == "active"    = RouteStateActive+    | t == "blackhole" = RouteStateBlackhole+    | otherwise        = err "Route State" t++routeOrigin :: Text -> RouteOrigin+routeOrigin t+    | t == "CreateRouteTable"          = RouteOriginCreateRouteTable+    | t == "CreateRoute"               = RouteOriginCreateRoute+    | t == "EnableVgwRoutePropagation" = RouteOriginTableEnableVgwRoutePropagation+    | otherwise                        = err "Route Origin" t
AWS/EC2/KeyPair.hs view
@@ -24,7 +24,7 @@     :: (MonadResource m, MonadBaseControl IO m)     => [Text] -- ^ PublicIps     -> [Filter] -- ^ Filters-    -> EC2 m (Source m KeyPair)+    -> EC2 m (ResumableSource m KeyPair) describeKeyPairs names filters =     ec2QuerySource "DescribeKeyPairs" params         $ itemConduit "keySet" keyPairSink
AWS/EC2/Query.hs view
@@ -19,11 +19,13 @@ import Control.Monad.Trans.Control (MonadBaseControl) 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@@ -62,48 +64,47 @@     -> EC2 m o ec2Query action params sink = do     src <- ec2QuerySource action params $ sink >>= yield-    lift (src $$ CL.head) >>= maybe (fail "parse error") return+    lift (src $$+- CL.head) >>= maybe (fail "parse error") return  ec2QuerySource     :: (MonadResource m, MonadBaseControl IO m)     => ByteString     -> [QueryParam]     -> Conduit Event m o-    -> EC2 m (Source m o)+    -> EC2 m (ResumableSource m o) 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     -> [QueryParam]     -> Maybe Text     -> Conduit Event m o-    -> EC2 m (Source m o)+    -> EC2 m (ResumableSource m o) ec2QuerySource' action params token cond = do     cred <- Reader.ask     ctx <- State.get     (src1, rid) <- lift $ do         response <- requestQuery cred ctx action params' ec2Version sinkError-        (res, _) <- unwrapResumable response---        res $$ CB.sinkFile "debug.txt" >>= fail "debug"-        res $= XmlP.parseBytes XmlP.def $$+ sinkRequestId+        res <- response $=+ XmlP.parseBytes XmlP.def+        res $$++ sinkRequestId     State.put ctx{lastRequestId = Just rid}-    lift $ do-        (src2, _) <- unwrapResumable src1-        return $ src2 $= (cond >> nextToken)+    lift $ src1 $=+ (cond >> nextToken)   where     params' = maybe params         (\t -> ValueParam "NextToken" t:params) token -    nextToken-        :: (MonadResource m, MonadBaseControl IO m)-        => Conduit Event m o-    nextToken = do-        mt <- getMT "nextToken"-        case mt of-            Nothing -> return ()-            Just t  -> E.throw $ NextToken t+nextToken :: MonadThrow m => Conduit Event m o+nextToken = getMT "nextToken" >>= maybe (return ()) (E.throw . NextToken)  #ifdef DEBUG ec2QueryDebug
AWS/EC2/Region.hs view
@@ -20,7 +20,7 @@     :: (MonadResource m, MonadBaseControl IO m)     => [Text] -- ^ RegionNames     -> [Filter] -- ^ Filters-    -> EC2 m (Source m Region)+    -> EC2 m (ResumableSource m Region) describeRegions regions filters =     ec2QuerySource "DescribeRegions" params regionInfoConduit   where
+ AWS/EC2/RouteTable.hs view
@@ -0,0 +1,133 @@+{-# LANGUAGE FlexibleContexts, RankNTypes #-}++module AWS.EC2.RouteTable+    ( associateRouteTable+    , createRouteTable+    , deleteRouteTable+    , describeRouteTables+    , disassociateRouteTable+    , replaceRouteTableAssociation+    ) where++import Data.Text (Text)+import Data.XML.Types (Event)+import Data.Conduit+import Control.Monad.Trans.Control (MonadBaseControl)+import Control.Applicative++import AWS.EC2.Internal+import AWS.EC2.Types+import AWS.EC2.Query+import AWS.Lib.Parser+import AWS.Util++------------------------------------------------------------+-- describeRouteTables+------------------------------------------------------------+describeRouteTables+    :: (MonadResource m, MonadBaseControl IO m)+    => [Text] -- ^ RouteTableIds+    -> [Filter] -- ^ Filters+    -> EC2 m (ResumableSource m RouteTable)+describeRouteTables routeTables filters = do+    ec2QuerySource "DescribeRouteTables" params $+        itemConduit "routeTableSet" routeTableSink+  where+    params =+        [ ArrayParams "RouteTableId" routeTables+        , FilterParams filters+        ]++routeTableSink :: MonadThrow m+    => GLSink Event m RouteTable+routeTableSink = RouteTable+    <$> getT "routeTableId"+    <*> getT "vpcId"+    <*> routeSink+    <*> routeTableAssociationSink+    <*> getMT "propagatingVgwSet"+    <*> resourceTagSink++routeSink :: MonadThrow m+    => GLSink Event m [Route]+routeSink = itemsSet "routeSet" $ Route+    <$> getT "destinationCidrBlock"+    <*> getMT "gatewayId"+    <*> getMT "instanceId"+    <*> getMT "instanceOwnerId"+    <*> getMT "networkInterfaceId"+    <*> getF "state" routeState+    <*> getM "origin" (routeOrigin <$>)++routeTableAssociationSink :: MonadThrow m+    => GLSink Event m [RouteTableAssociation]+routeTableAssociationSink = itemsSet "associationSet" $ RouteTableAssociation+    <$> getT "routeTableAssociationId"+    <*> getT "routeTableId"+    <*> getMT "subnetId"+    <*> getM "main" (textToBool <$>)++------------------------------------------------------------+-- createRouteTable+------------------------------------------------------------+createRouteTable+    :: (MonadResource m, MonadBaseControl IO m)+    => Text+    -> EC2 m RouteTable+createRouteTable vid =+    ec2Query "CreateRouteTable" [ValueParam "VpcId" vid] $+        element "routeTable" routeTableSink++------------------------------------------------------------+-- deleteRouteTable+------------------------------------------------------------+deleteRouteTable+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ RouteTableId+    -> EC2 m Bool+deleteRouteTable rtid =+    ec2Query "DeleteRouteTable" [ValueParam "RouteTableId" rtid]+        $ getF "return" textToBool++------------------------------------------------------------+-- associateRouteTable+------------------------------------------------------------+associateRouteTable+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ RouteTableId+    -> Text -- ^ SubnetId+    -> EC2 m Text -- ^ associationId+associateRouteTable rtid sid =+    ec2Query "AssociateRouteTable" params+        $ getT "associationId"+  where+    params = [ ValueParam "RouteTableId" rtid+             , ValueParam "SubnetId" sid+             ]++------------------------------------------------------------+-- disassociateRouteTable+------------------------------------------------------------+disassociateRouteTable+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ AssociationId+    -> EC2 m Bool -- ^ return+disassociateRouteTable aid =+   ec2Query "DisassociateRouteTable" [ValueParam "AssociationId" aid]+        $ getF "return" textToBool++------------------------------------------------------------+-- replaceRouteTableAssociation+------------------------------------------------------------+replaceRouteTableAssociation+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ AssociationId+    -> Text -- ^ RouteTableId+    -> EC2 m Text -- ^ newAssociationId+replaceRouteTableAssociation aid rtid =+    ec2Query "ReplaceRouteTableAssociation" params+        $ getT "newAssociationId"+  where+    params = [ ValueParam "AssociationId" aid+             , ValueParam "RouteTableId" rtid+             ]
AWS/EC2/SecurityGroup.hs view
@@ -30,7 +30,7 @@     => [Text] -- ^ GroupNames     -> [Text] -- ^ GroupIds     -> [Filter] -- ^ Filters-    -> EC2 m (Source m SecurityGroup)+    -> EC2 m (ResumableSource m SecurityGroup) describeSecurityGroups names ids filters =     ec2QuerySource "DescribeSecurityGroups" params     $ itemConduit "securityGroupInfo" $
AWS/EC2/Snapshot.hs view
@@ -25,7 +25,7 @@     -> [Text] -- ^ Owners (UserId)     -> [Text] -- ^ RestorableBy (UserId)     -> [Filter] -- ^ Filters-    -> EC2 m (Source m Snapshot)+    -> EC2 m (ResumableSource m Snapshot) describeSnapshots ssids owners restby filters =     ec2QuerySource "DescribeSnapshots" params $         itemConduit "snapshotSet" snapshotSink
+ AWS/EC2/Subnets.hs view
@@ -0,0 +1,77 @@+{-# LANGUAGE FlexibleContexts, RankNTypes #-}++module AWS.EC2.Subnets+    ( describeSubnets+    , createSubnet+    , deleteSubnet+    ) where++import Data.Text (Text)+import Data.XML.Types (Event)+import Data.Conduit+import Control.Monad.Trans.Control (MonadBaseControl)+import Control.Applicative++import AWS.EC2.Internal+import AWS.EC2.Types+import AWS.EC2.Query+import AWS.Lib.Parser+import AWS.Util++------------------------------------------------------------+-- DescribeSubnets+------------------------------------------------------------+describeSubnets+    :: (MonadResource m, MonadBaseControl IO m)+    => [Text] -- ^ SubnetIds+    -> [Filter] -- ^ Filters+    -> EC2 m (ResumableSource m Subnet)+describeSubnets subnets filters = do+    ec2QuerySource "DescribeSubnets" params $+        itemConduit "subnetSet" subnetSink+  where+    params =+        [ ArrayParams "SubnetId" subnets+        , FilterParams filters+        ]++subnetSink :: MonadThrow m+    => GLSink Event m Subnet+subnetSink = Subnet+    <$> getT "subnetId"+    <*> getF "state" subnetState+    <*> getT "vpcId"+    <*> getT "cidrBlock"+    <*> getF "availableIpAddressCount" textToInt+    <*> getT "availabilityZone"+    <*> resourceTagSink++------------------------------------------------------------+-- CreateSubnet+------------------------------------------------------------+createSubnet+    :: (MonadResource m, MonadBaseControl IO m)+    => CreateSubnetRequest+    -> EC2 m Subnet+createSubnet param =+    ec2Query "CreateSubnet" param' $+          element "subnet" subnetSink+  where+    param' = createSubnetParam param++createSubnetParam :: CreateSubnetRequest -> [QueryParam]+createSubnetParam (CreateSubnetRequest vid cidr zone) =+    [ ValueParam "VpcId" vid+    , ValueParam "CidrBlock" cidr+    ] ++ maybe [] (\a -> [ValueParam "AvailabilityZone" a]) zone++------------------------------------------------------------+-- DeleteSubnet+------------------------------------------------------------+deleteSubnet+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ SubnetId+    -> EC2 m Bool+deleteSubnet sid =+    ec2Query "DeleteSubnet" [ValueParam "SubnetId" sid]+        $ getF "return" textToBool
AWS/EC2/Tag.hs view
@@ -21,7 +21,7 @@ describeTags     :: (MonadResource m, MonadBaseControl IO m)     => [Filter] -- ^ Filters-    -> EC2 m (Source m Tag)+    -> EC2 m (ResumableSource m Tag) describeTags filters =     ec2QuerySource "DescribeTags" params $ itemConduit "tagSet" $         Tag
AWS/EC2/Types.hs view
@@ -11,6 +11,7 @@     , BlockDeviceMapping(..)     , BlockDeviceMappingParam(..)     , ConsoleOutput(..)+    , CreateSubnetRequest(..)     , CreateVolumeRequest(..)     , DisassociateAddressRequest(..)     , EbsBlockDevice(..)@@ -19,6 +20,7 @@     , Group(..)     , Hypervisor(..)     , IamInstanceProfile(..)+    , IcmpTypeCode(..)     , Image(..)     , ImageState(..)     , ImageType(..)@@ -45,12 +47,18 @@     , IpRange(..)     , KeyPair(..)     , ModifyInstanceAttributeRequest(..)+    , NetworkAcl(..)+    , NetworkAclAssociation(..)+    , NetworkAclEntry(..)+    , NetworkAclEntryRequest(..)+    , NetworkAclRuleAction(..)     , NetworkInterfaceAssociation(..)     , NetworkInterfaceAttachment(..)     , NetworkInterfaceParam(..)     , PasswordData(..)     , Placement(..)     , Platform(..)+    , PortRange(..)     , ProductCode(..)     , ProductCodeType(..)     , Region(..)@@ -59,6 +67,11 @@     , ResetInstanceAttributeRequest(..)     , ResourceTag(..)     , RootDeviceType(..)+    , Route(..)+    , RouteTable(..)+    , RouteTableAssociation(..)+    , RouteState(..)+    , RouteOrigin(..)     , RunInstancesRequest(..)     , SecurityGroup(..)     , SecurityGroupRequest(..)@@ -66,12 +79,22 @@     , Snapshot(..)     , SnapshotStatus(..)     , StateReason(..)+    , Subnet(..)+    , SubnetState(..)     , Tag(..)     , UserIdGroupPair(..)     , VirtualizationType(..)     , Volume(..)+    , VolumeAttribute(..)+    , VolumeAttributeRequest(..)     , VolumeType(..)+    , VolumeState(..)     , VolumeStatus(..)+    , VolumeStatusAction(..)+    , VolumeStatusEvent(..)+    , VolumeStatusDetail(..)+    , VolumeStatusInfo(..)+    , VolumeStatusInfoStatus(..)     , VpnConnection(..)     , VpnConnectionOptionsRequest(..)     , VpnConnectionState(..)@@ -490,7 +513,7 @@     , volSize :: Int     , volSnapshotId :: Maybe Text     , volAvailabilityZone :: Text-    , volStatus :: VolumeStatus+    , volStatus :: VolumeState     , volCreateTime :: UTCTime     , volAttachmentSet :: [Attachment]     , volTagSet :: [ResourceTag]@@ -498,7 +521,7 @@     }   deriving (Show, Eq) -data VolumeStatus+data VolumeState     = VolCreating     | VolAvailable     | VolInUse@@ -763,3 +786,175 @@  data SecurityGroupRequest = GroupId Text | GroupName Text   deriving (Show, Eq)++data Subnet = Subnet+    { snSubnetId :: Text+    , snState :: SubnetState+    , snVpicId :: Text+    , snCidrBlock :: Text+    , snAvailableIpAddressCount :: Int+    , snCAvailabilityZone :: Text+    , snTagSet :: [ResourceTag]+    }+  deriving (Show, Eq)++data SubnetState = SubnetPending | SubnetAvailable+  deriving (Show, Eq)++data CreateSubnetRequest = CreateSubnetRequest+    { csrVpcId :: Text+    , csrCidrBlock :: Text+    , csrAvailabilityZone :: Maybe Text+    }+  deriving (Show, Eq)++data VolumeStatus = VolumeStatus+    { vstVolumeId :: Text+    , vstAvailabilityZone :: Text+    , vstVolumeStatus :: VolumeStatusInfo+    , vstEventSet :: [VolumeStatusEvent]+    , vstActionSet :: [VolumeStatusAction]+    }+  deriving (Show, Eq)++data VolumeStatusInfo = VolumeStatusInfo+    { vsiStatus :: VolumeStatusInfoStatus+    , vsiDetails :: [VolumeStatusDetail]+    }+  deriving (Show, Eq)++data VolumeStatusInfoStatus+    = VSIOK+    | VSIImpaired+    | VSIInsufficientData+  deriving (Show, Eq)++data VolumeStatusDetail = VolumeStatusDetail+    { vsdName :: Text+    , vsdStatus :: Text+    }+  deriving (Show, Eq)++data VolumeStatusEvent = VolumeStatusEvent+    { vseEventType :: Text+    , vseEventId :: Text+    , vseDescription :: Text+    , vseNotBefore :: Maybe UTCTime+    , vseNotAfter :: Maybe UTCTime+    }+  deriving (Show, Eq)++data VolumeStatusAction = VolumeStatusAction+    { vsaCode :: Text+    , vsaEventType :: Text+    , vsaEventId :: Text+    , vsaDescription :: Text+    }+  deriving (Show, Eq)++data VolumeAttribute+    = VAAutoEnableIO Bool+    | VAProductCodes [ProductCode]+  deriving (Show, Eq)++data VolumeAttributeRequest+    = VARAutoEnableIO+    | VARProductCodes+  deriving (Show, Eq)++data NetworkAcl = NetworkAcl+    { networkAclId :: Text+    , networkAclVpcId :: Text+    , networkAclDefault :: Bool+    , networkAclEntrySet :: [NetworkAclEntry]+    , networkAclAssociationSet :: [NetworkAclAssociation]+    , networkAclTagSet :: [ResourceTag]+    }+  deriving (Show, Eq)++data NetworkAclEntry = NetworkAclEntry+    { networkAclEntryRuleNumber :: Int+    , networkAclEntryProtocol :: Int+    , networkAclEntryRuleAction :: NetworkAclRuleAction+    , networkAclEntryEgress :: Bool+    , networkAclEntryCidrBlock :: Text+    , networkAclEntryIcmpTypeCode :: Maybe IcmpTypeCode+    , networkAclEntryPortRange :: Maybe PortRange+    }+  deriving (Show, Eq)++data NetworkAclRuleAction+    = NetworkAclRuleActionAllow+    | NetworkAclRuleActionDeny+  deriving (Show, Eq)++data IcmpTypeCode = IcmpTypeCode+    { icmpTypeCodeCode :: Int+    , icmpTypeCodeType :: Int+    }+  deriving (Show, Eq)++data PortRange = PortRange+    { portRangeFrom :: Int+    , portRangeTo :: Int+    }+  deriving (Show, Eq)++data NetworkAclAssociation = NetworkAclAssociation+    { networkAclAssociationId :: Text+    , networkAclAssociationNetworkAclId :: Text+    , networkAclAssociationSubnetId :: Text+    }+  deriving (Show, Eq)++data NetworkAclEntryRequest = NetworkAclEntryRequest+    { networkAclEntryRequestNetworkAclId :: Text+    , networkAclEntryRequestRuleNumber :: Int+    , networkAclEntryRequestProtocol :: Int -- ^ Protocol Number <http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml>+    , networkAclEntryRequestRuleAction :: NetworkAclRuleAction+    , networkAclEntryRequestEgress :: Bool+    , networkAclEntryRequestCidrBlock :: Text+    , networkAclEntryRequestIcmp :: Maybe IcmpTypeCode+    , networkAclEntryRequestPortRange :: Maybe PortRange+    }+  deriving (Show, Eq)++data RouteTable = RouteTable+    { rtRouteTableId :: Text+    , rtVpcId :: Text+    , rtRouteSet :: [Route]+    , rtAssociationSet :: [RouteTableAssociation]+    , rtPropagatingVgw :: Maybe PropagatingVgw+    , rtTagSet :: [ResourceTag]+    }+  deriving (Show, Eq)++data Route = Route+    { rDestinationCidrBlock :: Text+    , rGatewayId :: Maybe Text+    , rInstanceId :: Maybe Text+    , rInstanceOwnerId :: Maybe Text+    , rNetworkInterfaceId :: Maybe Text+    , rState :: RouteState+    , rOrigin :: Maybe RouteOrigin+    }+  deriving (Show, Eq)++data RouteState = RouteStateActive | RouteStateBlackhole+  deriving (Show, Eq)++data RouteOrigin+    = RouteOriginCreateRouteTable+    | RouteOriginCreateRoute+    | RouteOriginTableEnableVgwRoutePropagation+  deriving (Show, Eq)++data RouteTableAssociation = RouteTableAssociation+    { rtaRouteTableAssociationId :: Text+    , rtaRouteTableId :: Text+    , rtaSubnetId :: Maybe Text+    , rtaMain :: Maybe Bool+    }+  deriving (Show, Eq)++type PropagatingVgw = Text
AWS/EC2/Util.hs view
@@ -9,7 +9,7 @@  import Data.Conduit import qualified Data.Conduit.List as CL-import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Class (MonadTrans, lift) import Prelude hiding (head) import Safe import qualified Control.Concurrent as CC@@ -22,40 +22,35 @@  asList     :: Monad m-    => EC2 m (Source m a)+    => EC2 m (ResumableSource m a)     -> EC2 m [a] asList src = do     s <- src-    lift $ s $$ CL.consume+    lift $ s $$+- CL.consume  head     :: Monad m-    => EC2 m (Source m a)+    => EC2 m (ResumableSource m a)     -> EC2 m (Maybe a) head src = do     s <- src-    lift $ s $$ CL.head+    lift $ s $$+- CL.head  each     :: Monad m-    => EC2 m (Source m a)-    -> (a -> m b)+    => (a -> m b)+    -> EC2 m (ResumableSource m a)     -> EC2 m ()-each src f = do-    s <- src-    (rsrc, _) <- lift $ s $$+ CL.take 0-    lift $ each' rsrc f+each f res = res >>= lift . each' f  each'     :: Monad m-    => ResumableSource m a-    -> (a -> m b)+    => (a -> m b)+    -> ResumableSource m a     -> m ()-each' rsrc f = do+each' f rsrc = do     (s', ma) <- rsrc $$++ CL.head-    case ma of-        Nothing -> return ()-        Just a  -> f a >> each' s' f+    maybe (return ()) (\a -> f a >> each' f s') ma  -- | Wait for condition. --@@ -78,7 +73,7 @@ wait f g rid = do     mr <- headMay <$> g rid     case mr of-        Nothing -> fail $ "Resource not found: " ++ T.unpack rid+        Nothing -> fail $ "Resource not found: " ++ T.unpack rid          Just r  -> if f r             then return r             else do
AWS/EC2/VPC.hs view
@@ -23,7 +23,7 @@     :: (MonadBaseControl IO m, MonadResource m)     => [Text] -- ^ VpnConnectionIds     -> [Filter]-    -> EC2 m (Source m VpnConnection)+    -> EC2 m (ResumableSource m VpnConnection) describeVpnConnections ids filters =     ec2QuerySource "DescribeVpnConnections" params vpnConnectionConduit   where
AWS/EC2/Volume.hs view
@@ -1,10 +1,14 @@-{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleContexts, RankNTypes #-} module AWS.EC2.Volume     ( describeVolumes     , createVolume     , deleteVolume     , attachVolume     , detachVolume+    , describeVolumeStatus+    , enableVolumeIO+    , describeVolumeAttribute+    , modifyVolumeAttribute     ) where  import Data.Text (Text) @@ -23,7 +27,7 @@     :: (MonadResource m, MonadBaseControl IO m)     => [Text] -- ^ VolumeIds     -> [Filter] -- ^ Filters-    -> EC2 m (Source m Volume)+    -> EC2 m (ResumableSource m Volume) describeVolumes vids filters =     ec2QuerySource "DescribeVolumes" params $         itemConduit "volumeSet" volumeSink@@ -122,3 +126,93 @@             , ("Device", dev)             , ("Force", toText <$> force)             ]++describeVolumeStatus+    :: (MonadResource m, MonadBaseControl IO m)+    => [Text] -- ^ VolumeId+    -> [Filter] -- ^ Filters+    -> Maybe Text -- ^ next token+    -> EC2 m (ResumableSource m VolumeStatus)+describeVolumeStatus vids filters token =+    ec2QuerySource' "DescribeVolumeStatus" params token $+       itemConduit "volumeStatusSet" $ volumeStatusSink+  where+    params =+        [ ArrayParams "VolumeId" vids+        , FilterParams filters+        ]++volumeStatusSink :: MonadThrow m+    => GLSink Event m VolumeStatus+volumeStatusSink = VolumeStatus+    <$> getT "volumeId"+    <*> getT "availabilityZone"+    <*> element "volumeStatus" (VolumeStatusInfo+        <$> getF "status" volumeStatusInfoStatus+        <*> itemsSet "details" (VolumeStatusDetail+            <$> getT "name"+            <*> getT "status"+            )+        )+    <*> itemsSet "eventsSet" (VolumeStatusEvent+        <$> getT "eventType"+        <*> getT "eventId"+        <*> getT "description"+        <*> getM "notBefore" (textToTime <$>)+        <*> getM "notAfter" (textToTime <$>)+        )+    <*> itemsSet "actionsSet" (VolumeStatusAction+        <$> getT "code"+        <*> getT "eventType"+        <*> getT "eventId"+        <*> getT "description"+        )++modifyVolumeAttribute+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ VolumeId+    -> Bool -- ^ AutoEnableIO+    -> EC2 m Bool+modifyVolumeAttribute vid enable =+    ec2Query "ModifyVolumeAttribute" params returnBool+  where+    params =+        [ ValueParam "VolumeId" vid+        , ValueParam "AutoEnableIO.Value" $ boolToText enable+        ]++enableVolumeIO+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ VolumeId+    -> EC2 m Bool+enableVolumeIO vid =+    ec2Query "EnableVolumeIO" params returnBool+  where+    params = [ValueParam "VolumeId" vid]++-- | return (volumeId, Attribute)+describeVolumeAttribute+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ VolumeId+    -> VolumeAttributeRequest+    -> EC2 m (Text, VolumeAttribute)+describeVolumeAttribute vid attr =+    ec2Query "DescribeVolumeAttribute" params $ (,)+        <$> getT "volumeId"+        <*> volumeAttributeSink attr+  where+    params =+        [ ValueParam "VolumeId" vid+        , ValueParam "Attribute" $ s attr+        ]+    s VARAutoEnableIO = "autoEnableIO"+    s VARProductCodes = "productCodes"++volumeAttributeSink+    :: MonadThrow m+    => VolumeAttributeRequest+    -> GLSink Event m VolumeAttribute+volumeAttributeSink VARAutoEnableIO =+    VAAutoEnableIO <$> getF "autoEnableIO" textToBool+volumeAttributeSink VARProductCodes =+    VAProductCodes <$> productCodeSink
aws-sdk.cabal view
@@ -1,5 +1,5 @@ name:                aws-sdk-version:             0.4.3.0+version:             0.5.0.0 synopsis:            AWS SDK for Haskell description:         An AWS(Amazon Web Services) liblary for Haskell. license:             BSD3@@ -32,11 +32,14 @@                    , AWS.EC2.Instance                    , AWS.EC2.Volume                    , AWS.EC2.KeyPair+                   , AWS.EC2.RouteTable                    , AWS.EC2.Snapshot                    , AWS.EC2.SecurityGroup+                   , AWS.EC2.Subnets                    , AWS.EC2.Query                    , AWS.EC2.Region                    , AWS.EC2.VPC+                   , AWS.EC2.Acl                    , AWS.EC2.Tag                    , AWS.EC2.Params                    , AWS.Lib.Parser@@ -85,4 +88,3 @@ source-repository head     type:            git     location:        git://github.com/worksap-ate/aws-sdk.git-