packages feed

aws-sdk 0.9.0.0 → 0.9.1.0

raw patch · 9 files changed

+146/−11 lines, 9 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ AWS.EC2: createPlacementGroup :: (MonadResource m, MonadBaseControl IO m) => Text -> PlacementGroupStrategy -> EC2 m Bool
+ AWS.EC2: deletePlacementGroup :: (MonadResource m, MonadBaseControl IO m) => Text -> EC2 m Bool
+ AWS.EC2: describePlacementGroups :: (MonadResource m, MonadBaseControl IO m) => [Text] -> [Filter] -> EC2 m (ResumableSource m PlacementGroup)
+ AWS.EC2: monitorInstances :: (MonadResource m, MonadBaseControl IO m) => [Text] -> EC2 m (ResumableSource m MonitorInstancesResponse)
+ AWS.EC2: unmonitorInstances :: (MonadResource m, MonadBaseControl IO m) => [Text] -> EC2 m (ResumableSource m MonitorInstancesResponse)
+ AWS.EC2.Types: MonitorInstancesResponse :: Text -> InstanceMonitoringState -> MonitorInstancesResponse
+ AWS.EC2.Types: MonitoringDisabling :: InstanceMonitoringState
+ AWS.EC2.Types: PlacementGroup :: Text -> PlacementGroupStrategy -> PlacementGroupState -> PlacementGroup
+ AWS.EC2.Types: PlacementGroupStateAvailable :: PlacementGroupState
+ AWS.EC2.Types: PlacementGroupStateDeleted :: PlacementGroupState
+ AWS.EC2.Types: PlacementGroupStateDeleting :: PlacementGroupState
+ AWS.EC2.Types: PlacementGroupStatePending :: PlacementGroupState
+ AWS.EC2.Types: PlacementGroupStrategyCluster :: PlacementGroupStrategy
+ AWS.EC2.Types: data MonitorInstancesResponse
+ AWS.EC2.Types: data PlacementGroup
+ AWS.EC2.Types: data PlacementGroupState
+ AWS.EC2.Types: data PlacementGroupStrategy
+ AWS.EC2.Types: instance Eq MonitorInstancesResponse
+ AWS.EC2.Types: instance Eq PlacementGroup
+ AWS.EC2.Types: instance Eq PlacementGroupState
+ AWS.EC2.Types: instance Eq PlacementGroupStrategy
+ AWS.EC2.Types: instance FromText PlacementGroupState
+ AWS.EC2.Types: instance FromText PlacementGroupStrategy
+ AWS.EC2.Types: instance Read MonitorInstancesResponse
+ AWS.EC2.Types: instance Read PlacementGroup
+ AWS.EC2.Types: instance Read PlacementGroupState
+ AWS.EC2.Types: instance Read PlacementGroupStrategy
+ AWS.EC2.Types: instance Show MonitorInstancesResponse
+ AWS.EC2.Types: instance Show PlacementGroup
+ AWS.EC2.Types: instance Show PlacementGroupState
+ AWS.EC2.Types: instance Show PlacementGroupStrategy
+ AWS.EC2.Types: instanceNetworkInterfaceAssociationPublicDnsName :: InstanceNetworkInterfaceAssociation -> Maybe Text
+ AWS.EC2.Types: monitorInstancesResponseInstanceId :: MonitorInstancesResponse -> Text
+ AWS.EC2.Types: monitorInstancesResponseInstanceMonitoringState :: MonitorInstancesResponse -> InstanceMonitoringState
+ AWS.EC2.Types: placementGroupGroupName :: PlacementGroup -> Text
+ AWS.EC2.Types: placementGroupState :: PlacementGroup -> PlacementGroupState
+ AWS.EC2.Types: placementGroupStrategy :: PlacementGroup -> PlacementGroupStrategy
- AWS.EC2.Types: InstanceNetworkInterfaceAssociation :: Text -> Text -> InstanceNetworkInterfaceAssociation
+ AWS.EC2.Types: InstanceNetworkInterfaceAssociation :: IPv4 -> Maybe Text -> Text -> InstanceNetworkInterfaceAssociation
- AWS.EC2.Types: NetworkInterface :: Text -> Text -> Text -> Text -> Text -> Text -> Maybe Text -> Text -> NetworkInterfaceStatus -> Text -> IPv4 -> Maybe Text -> Bool -> [Group] -> Maybe NetworkInterfaceAttachment -> Maybe NetworkInterfaceAssociation -> [ResourceTag] -> [NetworkInterfacePrivateIpAddress] -> NetworkInterface
+ AWS.EC2.Types: NetworkInterface :: Text -> Text -> Text -> Text -> Maybe Text -> Text -> Maybe Text -> Text -> NetworkInterfaceStatus -> Text -> IPv4 -> Maybe Text -> Bool -> [Group] -> Maybe NetworkInterfaceAttachment -> Maybe NetworkInterfaceAssociation -> [ResourceTag] -> [NetworkInterfacePrivateIpAddress] -> NetworkInterface
- AWS.EC2.Types: Snapshot :: Text -> Text -> SnapshotStatus -> UTCTime -> Text -> Text -> Int -> Text -> Maybe Text -> [ResourceTag] -> Snapshot
+ AWS.EC2.Types: Snapshot :: Text -> Maybe Text -> SnapshotStatus -> UTCTime -> Maybe Text -> Text -> Int -> Maybe Text -> Maybe Text -> [ResourceTag] -> Snapshot
- AWS.EC2.Types: instanceNetworkInterfaceAssociationPublicIp :: InstanceNetworkInterfaceAssociation -> Text
+ AWS.EC2.Types: instanceNetworkInterfaceAssociationPublicIp :: InstanceNetworkInterfaceAssociation -> IPv4
- AWS.EC2.Types: networkInterfaceDescription :: NetworkInterface -> Text
+ AWS.EC2.Types: networkInterfaceDescription :: NetworkInterface -> Maybe Text
- AWS.EC2.Types: snapshotDescription :: Snapshot -> Text
+ AWS.EC2.Types: snapshotDescription :: Snapshot -> Maybe Text
- AWS.EC2.Types: snapshotProgress :: Snapshot -> Text
+ AWS.EC2.Types: snapshotProgress :: Snapshot -> Maybe Text
- AWS.EC2.Types: snapshotVolumeId :: Snapshot -> Text
+ AWS.EC2.Types: snapshotVolumeId :: Snapshot -> Maybe Text

Files

AWS/EC2.hs view
@@ -35,6 +35,7 @@     , module AWS.EC2.Acl     , module AWS.EC2.RouteTable     , module AWS.EC2.Route+    , module AWS.EC2.PlacementGroup     ) where  import Data.Conduit@@ -65,6 +66,7 @@ import AWS.EC2.RouteTable import AWS.EC2.NetworkInterface import AWS.EC2.NetworkInterfaceAttribute+import AWS.EC2.PlacementGroup  -- | set endpoint to EC2 context by giving the EC2 region. setRegion
AWS/EC2/Instance.hs view
@@ -14,6 +14,8 @@     , describeInstanceAttribute     , resetInstanceAttribute     , modifyInstanceAttribute+    , monitorInstances+    , unmonitorInstances     ) where  import Data.Text (Text)@@ -40,6 +42,7 @@     -> [Filter] -- ^ Filters     -> EC2 m (ResumableSource m Reservation) describeInstances instances filters = do+--    ec2QueryDebug "DescribeInstances" params     ec2QuerySource "DescribeInstances" params $         itemConduit "reservationSet" reservationSink   where@@ -180,6 +183,7 @@ instanceNetworkInterfaceAssociationSink = elementM "association" $     InstanceNetworkInterfaceAssociation     <$> getT "publicIp"+    <*> getT "publicDnsName"     <*> getT "ipOwnerId"  ------------------------------------------------------------@@ -547,3 +551,33 @@     "GroupId" |.#= a miap (ModifyInstanceAttributeRequestEbsOptimized a) =     "EbsOptimized" |= toText a++------------------------------------------------------------+-- MonitorInstances+------------------------------------------------------------+monitorInstances+    :: (MonadResource m, MonadBaseControl IO m)+    => [Text] -- ^ InstanceIds+    -> EC2 m (ResumableSource m MonitorInstancesResponse)+monitorInstances iids =+    ec2QuerySource "MonitorInstances" ["InstanceId" |.#= iids]+        monitorInstancesResponseSink++monitorInstancesResponseSink+    :: (MonadResource m, MonadBaseControl IO m)+    => Conduit Event m MonitorInstancesResponse+monitorInstancesResponseSink = itemConduit "instancesSet" $+    MonitorInstancesResponse+    <$> getT "instanceId"+    <*> element "monitoring" (getT "state")++------------------------------------------------------------+-- UnmonitorInstances+------------------------------------------------------------+unmonitorInstances+    :: (MonadResource m, MonadBaseControl IO m)+    => [Text] -- ^ InstanceIds+    -> EC2 m (ResumableSource m MonitorInstancesResponse)+unmonitorInstances iids =+    ec2QuerySource "UnmonitorInstances" ["InstanceId" |.#= iids]+        monitorInstancesResponseSink
+ AWS/EC2/PlacementGroup.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE FlexibleContexts #-}+module AWS.EC2.PlacementGroup+    ( describePlacementGroups+    , createPlacementGroup+    , deletePlacementGroup+    ) where++import Control.Applicative ((<$>), (<*>))+import Data.Conduit+import Data.Text (Text)+import Data.XML.Types (Event)++import AWS.EC2.Internal (EC2, itemConduit)+import AWS.EC2.Query (ec2Query, ec2QuerySource)+import AWS.EC2.Types (Filter, PlacementGroup(..), PlacementGroupStrategy(..))+import AWS.Lib.Parser (getT)+import AWS.Lib.Query ((|=), (|.#=), filtersParam)++describePlacementGroups+    :: (MonadResource m, MonadBaseControl IO m)+    => [Text] -- ^ Placement group names.+    -> [Filter] -- ^ Filters+    -> EC2 m (ResumableSource m PlacementGroup)+describePlacementGroups groupNames filters =+    ec2QuerySource "DescribePlacementGroups" params $+        itemConduit "placementGroupSet" placementGroupSink+  where+    params =+        [ "GroupName" |.#= groupNames+        , filtersParam filters+        ]++placementGroupSink :: MonadThrow m => GLSink Event m PlacementGroup+placementGroupSink =+    PlacementGroup+    <$> getT "groupName"+    <*> getT "strategy"+    <*> getT "state"++createPlacementGroup+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ A name for the placement group.+    -> PlacementGroupStrategy -- ^ The placement group strategy.+    -> EC2 m Bool+createPlacementGroup groupName strategy =+    ec2Query "CreatePlacementGroup" params $ getT "return"+  where+    params =+        [ "GroupName" |= groupName+        , "Strategy" |= stringifyStrategy strategy+        ]++stringifyStrategy :: PlacementGroupStrategy -> Text+stringifyStrategy PlacementGroupStrategyCluster = "cluster"++deletePlacementGroup+    :: (MonadResource m, MonadBaseControl IO m)+    => Text -- ^ The name of the placement group.+    -> EC2 m Bool+deletePlacementGroup groupName =+    ec2Query "DeletePlacementGroup" ["GroupName" |= groupName] $ getT "return"
AWS/EC2/Types.hs view
@@ -63,6 +63,7 @@     , IpPermission(..)     , KeyPair(..)     , ModifyInstanceAttributeRequest(..)+    , MonitorInstancesResponse(..)     , LaunchPermission(..)     , LaunchPermissionItem(..)     , NetworkAcl(..)@@ -78,6 +79,9 @@     , NetworkInterfaceStatus(..)     , PasswordData(..)     , Placement(..)+    , PlacementGroup(..)+    , PlacementGroupState(..)+    , PlacementGroupStrategy(..)     , Platform(..)     , PortRange(..)     , ProductCode(..)@@ -422,10 +426,29 @@     }   deriving (Show, Read, Eq) +data PlacementGroup = PlacementGroup+    { placementGroupGroupName :: Text+    , placementGroupStrategy :: PlacementGroupStrategy+    , placementGroupState :: PlacementGroupState+    }+  deriving (Show, Read, Eq)++data PlacementGroupState+    = PlacementGroupStatePending+    | PlacementGroupStateAvailable+    | PlacementGroupStateDeleting+    | PlacementGroupStateDeleted+  deriving (Show, Read, Eq)++data PlacementGroupStrategy+    = PlacementGroupStrategyCluster+  deriving (Show, Read, Eq)+ data InstanceMonitoringState     = MonitoringDisabled     | MonitoringEnabled     | MonitoringPending+    | MonitoringDisabling   deriving (Show, Read, Eq)  data Architecture = I386 | X86_64 deriving (Show, Read, Eq)@@ -482,7 +505,9 @@  data InstanceNetworkInterfaceAssociation     = InstanceNetworkInterfaceAssociation-    { instanceNetworkInterfaceAssociationPublicIp :: Text+    { instanceNetworkInterfaceAssociationPublicIp :: IPv4+    , instanceNetworkInterfaceAssociationPublicDnsName+        :: Maybe Text     , instanceNetworkInterfaceAssociationIpOwnerId :: Text     }   deriving (Show, Read, Eq)@@ -578,15 +603,22 @@     }   deriving (Show, Read, Eq) +data MonitorInstancesResponse = MonitorInstancesResponse+    { monitorInstancesResponseInstanceId :: Text+    , monitorInstancesResponseInstanceMonitoringState+        :: InstanceMonitoringState+    }+  deriving (Show, Read, Eq)+ data Snapshot = Snapshot     { snapshotId :: Text-    , snapshotVolumeId :: Text+    , snapshotVolumeId :: Maybe Text     , snapshotStatus :: SnapshotStatus     , snapshotStartTime :: UTCTime-    , snapshotProgress :: Text+    , snapshotProgress :: Maybe Text     , snapshotOwnerId :: Text     , snapshotVolumeSize :: Int-    , snapshotDescription :: Text+    , snapshotDescription :: Maybe Text     , snapshotOwnerAlias :: Maybe Text     , snapshotTagSet :: [ResourceTag]     }@@ -1235,7 +1267,7 @@     , networkInterfaceSubnetId :: Text     , networkInterfaceVpcId :: Text     , networkInterfaceAvailabilityZone :: Text-    , networkInterfaceDescription :: Text+    , networkInterfaceDescription :: Maybe Text     , networkInterfaceOwnerId :: Text     , networkInterfaceRequesterId :: Maybe Text     , networkInterfaceRequesterManaged :: Text@@ -1337,7 +1369,7 @@ deriveFromText "InstanceStatusTypeStatus"     ["ok", "impaired", "insufficient-data", "not-applicable"] deriveFromText "InstanceMonitoringState"-    ["disabled", "enabled", "pending"]+    ["disabled", "enabled", "pending", "disabling"] deriveFromText "Architecture" ["i386", "x86_64"] deriveFromText "SnapshotStatus" ["pending", "completed", "error"] deriveFromText "VolumeState"@@ -1377,3 +1409,5 @@ deriveFromText "InternetGatewayAttachmentState"     ["attaching", "attached", "detaching", "detached", "available"] deriveFromText "NetworkInterfaceStatus" ["available", "in-use", "pending"]+deriveFromText "PlacementGroupState" ["pending", "available", "deleting", "deleted"]+deriveFromText "PlacementGroupStrategy" ["cluster"]
AWS/Lib/FromText.hs view
@@ -39,7 +39,7 @@   where     fromText = return . join . fromTextMay     fromMaybeText _name Nothing  = return Nothing-    fromMaybeText _name (Just t) = fromText t >>= return . Just+    fromMaybeText _name (Just t) = return $ fromTextMay t     fromTextMay = Just . fromTextMay  instance FromText Int@@ -50,7 +50,9 @@  instance FromText Text   where-    fromTextMay = Just+    fromTextMay t+        | t == ""   = Nothing+        | otherwise = Just t  instance FromText Bool   where
AWS/Lib/Parser.hs view
@@ -27,7 +27,7 @@ import qualified Data.Conduit.List as CL import qualified Text.XML.Stream.Parse as XML import Control.Applicative-import Data.Monoid+import Data.Monoid ((<>)) import Control.Monad.Trans.Class (lift)  import AWS.Class
AWS/Lib/Query.hs view
@@ -98,7 +98,7 @@ filtersParam :: [Filter] -> QueryParam filtersParam filters = "Filter" |.#. transpose [keyParams, valParams]   where-    keyParams = map (("Key" |=) . fst) filters+    keyParams = map (("Name" |=) . fst) filters     valParams = map (("Value" |.#=) . snd) filters  maybeParam :: Maybe QueryParam -> QueryParam
Tests/Main.hs view
@@ -27,6 +27,7 @@     runKeyPairTests     runNetworkInterfaceTests     runNetworkInterfaceAttributeTests+    runPlacementGroupTests      -- RDS Tests     runDBInstanceTests
aws-sdk.cabal view
@@ -1,5 +1,5 @@ name:                aws-sdk-version:             0.9.0.0+version:             0.9.1.0 synopsis:            AWS SDK for Haskell description: AWS (Amazon Web Services) sdk for Haskell.              .@@ -53,6 +53,7 @@                    , AWS.EC2.NetworkInterfaceAttribute                    , AWS.EC2.Tag                    , AWS.EC2.Params+                   , AWS.EC2.PlacementGroup                    , AWS.Lib.FromText                    , AWS.Lib.Parser                    , AWS.Lib.Query