packages feed

aws-sdk 0.9.1.0 → 0.9.2.1

raw patch · 6 files changed

+97/−48 lines, 6 filesdep ~xml-conduitPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: xml-conduit

API changes (from Hackage documentation)

- AWS.ELB.Types: LoadBalancerDescription :: [Text] -> Text -> UTCTime -> HealthCheck -> Maybe Text -> [ListenerDescription] -> [Instance] -> Policies -> [Text] -> Text -> Text -> Text -> Maybe SourceSecurityGroup -> Text -> [BackendServerDescription] -> [Text] -> LoadBalancerDescription
- AWS.ELB.Types: acspCookieName :: AppCookieStickinessPolicy -> Text
- AWS.ELB.Types: acspPolicyName :: AppCookieStickinessPolicy -> Text
- AWS.ELB.Types: bsInstancePort :: BackendServerDescription -> Int
- AWS.ELB.Types: bsPolicyNames :: BackendServerDescription -> [Text]
- AWS.ELB.Types: data LoadBalancerDescription
- AWS.ELB.Types: hcHealthyThreshold :: HealthCheck -> Int
- AWS.ELB.Types: hcInterval :: HealthCheck -> Int
- AWS.ELB.Types: hcTarget :: HealthCheck -> Text
- AWS.ELB.Types: hcTimeout :: HealthCheck -> Int
- AWS.ELB.Types: hcUnhealthyThreshold :: HealthCheck -> Int
- AWS.ELB.Types: iInstanceId :: Instance -> Text
- AWS.ELB.Types: instance Eq LoadBalancerDescription
- AWS.ELB.Types: instance Show LoadBalancerDescription
- AWS.ELB.Types: lInstancePort :: Listener -> Int
- AWS.ELB.Types: lInstanceProtocol :: Listener -> Text
- AWS.ELB.Types: lLoadBalancerPort :: Listener -> Int
- AWS.ELB.Types: lProtocol :: Listener -> Text
- AWS.ELB.Types: lSSLCertificateId :: Listener -> Maybe Text
- AWS.ELB.Types: lbAvailabilityZones :: LoadBalancerDescription -> [Text]
- AWS.ELB.Types: lbBackendServerDescriptions :: LoadBalancerDescription -> [BackendServerDescription]
- AWS.ELB.Types: lbCanonicalHostedZoneName :: LoadBalancerDescription -> Text
- AWS.ELB.Types: lbCanonicalHostedZoneNameID :: LoadBalancerDescription -> Text
- AWS.ELB.Types: lbCreatedTime :: LoadBalancerDescription -> UTCTime
- AWS.ELB.Types: lbDNSName :: LoadBalancerDescription -> Text
- AWS.ELB.Types: lbHealthCheck :: LoadBalancerDescription -> HealthCheck
- AWS.ELB.Types: lbInstances :: LoadBalancerDescription -> [Instance]
- AWS.ELB.Types: lbListenerDescriptions :: LoadBalancerDescription -> [ListenerDescription]
- AWS.ELB.Types: lbLoadBalancerName :: LoadBalancerDescription -> Text
- AWS.ELB.Types: lbPolicies :: LoadBalancerDescription -> Policies
- AWS.ELB.Types: lbScheme :: LoadBalancerDescription -> Text
- AWS.ELB.Types: lbSecurityGroups :: LoadBalancerDescription -> [Text]
- AWS.ELB.Types: lbSourceSecurityGroup :: LoadBalancerDescription -> Maybe SourceSecurityGroup
- AWS.ELB.Types: lbSubnets :: LoadBalancerDescription -> [Text]
- AWS.ELB.Types: lbVPCId :: LoadBalancerDescription -> Maybe Text
- AWS.ELB.Types: lbcspCookieExpirationPeriod :: LBCookieStickinessPolicy -> Integer
- AWS.ELB.Types: lbcspPolicyName :: LBCookieStickinessPolicy -> Text
- AWS.ELB.Types: ldListener :: ListenerDescription -> Listener
- AWS.ELB.Types: ldPolicyNames :: ListenerDescription -> [Text]
- AWS.ELB.Types: pAppCookieStickinessPolicies :: Policies -> [AppCookieStickinessPolicy]
- AWS.ELB.Types: pLBCookieStickinessPolicies :: Policies -> [LBCookieStickinessPolicy]
- AWS.ELB.Types: pOtherPolicies :: Policies -> [Text]
- AWS.ELB.Types: ssgGroupName :: SourceSecurityGroup -> Text
- AWS.ELB.Types: ssgOwnerAlias :: SourceSecurityGroup -> Text
+ AWS.ELB: apiVersion :: ByteString
+ AWS.ELB: createLoadBalancer :: (MonadBaseControl IO m, MonadResource m) => Text -> [Listener] -> [Text] -> Maybe Text -> [Text] -> [AddrRange IPv4] -> ELB m Text
+ AWS.ELB: deleteLoadBalancer :: (MonadBaseControl IO m, MonadResource m) => Text -> ELB m ()
+ AWS.ELB.Types: LoadBalancer :: [Text] -> UTCTime -> Text -> HealthCheck -> Maybe Text -> [ListenerDescription] -> [Instance] -> Policies -> [Text] -> Maybe Text -> Maybe Text -> Text -> Maybe SourceSecurityGroup -> Text -> [BackendServerDescription] -> [Text] -> LoadBalancer
+ AWS.ELB.Types: appCookieStickinessPolicyCookieName :: AppCookieStickinessPolicy -> Text
+ AWS.ELB.Types: appCookieStickinessPolicyPolicyName :: AppCookieStickinessPolicy -> Text
+ AWS.ELB.Types: backendServerInstancePort :: BackendServerDescription -> Int
+ AWS.ELB.Types: backendServerPolicyNames :: BackendServerDescription -> [Text]
+ AWS.ELB.Types: data LoadBalancer
+ AWS.ELB.Types: healthCheckHealthyThreshold :: HealthCheck -> Int
+ AWS.ELB.Types: healthCheckInterval :: HealthCheck -> Int
+ AWS.ELB.Types: healthCheckTarget :: HealthCheck -> Text
+ AWS.ELB.Types: healthCheckTimeout :: HealthCheck -> Int
+ AWS.ELB.Types: healthCheckUnhealthyThreshold :: HealthCheck -> Int
+ AWS.ELB.Types: instance Eq LoadBalancer
+ AWS.ELB.Types: instance Show LoadBalancer
+ AWS.ELB.Types: instanceId :: Instance -> Text
+ AWS.ELB.Types: lbCookieStickinessPolicyCookieExpirationPeriod :: LBCookieStickinessPolicy -> Integer
+ AWS.ELB.Types: lbCookieStickinessPolicyPolicyName :: LBCookieStickinessPolicy -> Text
+ AWS.ELB.Types: listenerDescriptionListener :: ListenerDescription -> Listener
+ AWS.ELB.Types: listenerDescriptionPolicyNames :: ListenerDescription -> [Text]
+ AWS.ELB.Types: listenerInstancePort :: Listener -> Int
+ AWS.ELB.Types: listenerInstanceProtocol :: Listener -> Text
+ AWS.ELB.Types: listenerLoadBalancerPort :: Listener -> Int
+ AWS.ELB.Types: listenerProtocol :: Listener -> Text
+ AWS.ELB.Types: listenerSSLCertificateId :: Listener -> Maybe Text
+ AWS.ELB.Types: loadBalancerAvailabilityZones :: LoadBalancer -> [Text]
+ AWS.ELB.Types: loadBalancerBackendServerDescriptions :: LoadBalancer -> [BackendServerDescription]
+ AWS.ELB.Types: loadBalancerCanonicalHostedZoneName :: LoadBalancer -> Maybe Text
+ AWS.ELB.Types: loadBalancerCanonicalHostedZoneNameID :: LoadBalancer -> Maybe Text
+ AWS.ELB.Types: loadBalancerCreatedTime :: LoadBalancer -> UTCTime
+ AWS.ELB.Types: loadBalancerDNSName :: LoadBalancer -> Text
+ AWS.ELB.Types: loadBalancerHealthCheck :: LoadBalancer -> HealthCheck
+ AWS.ELB.Types: loadBalancerInstances :: LoadBalancer -> [Instance]
+ AWS.ELB.Types: loadBalancerListenerDescriptions :: LoadBalancer -> [ListenerDescription]
+ AWS.ELB.Types: loadBalancerLoadBalancerName :: LoadBalancer -> Text
+ AWS.ELB.Types: loadBalancerPolicies :: LoadBalancer -> Policies
+ AWS.ELB.Types: loadBalancerScheme :: LoadBalancer -> Text
+ AWS.ELB.Types: loadBalancerSecurityGroups :: LoadBalancer -> [Text]
+ AWS.ELB.Types: loadBalancerSourceSecurityGroup :: LoadBalancer -> Maybe SourceSecurityGroup
+ AWS.ELB.Types: loadBalancerSubnets :: LoadBalancer -> [Text]
+ AWS.ELB.Types: loadBalancerVPCId :: LoadBalancer -> Maybe Text
+ AWS.ELB.Types: policiesAppCookieStickinessPolicies :: Policies -> [AppCookieStickinessPolicy]
+ AWS.ELB.Types: policiesLBCookieStickinessPolicies :: Policies -> [LBCookieStickinessPolicy]
+ AWS.ELB.Types: policiesOtherPolicies :: Policies -> [Text]
+ AWS.ELB.Types: sourceSecurityGroupGroupName :: SourceSecurityGroup -> Text
+ AWS.ELB.Types: sourceSecurityGroupOwnerAlias :: SourceSecurityGroup -> Text
- AWS.ELB: describeLoadBalancers :: (MonadBaseControl IO m, MonadResource m) => [Text] -> Maybe Text -> ELB m [LoadBalancerDescription]
+ AWS.ELB: describeLoadBalancers :: (MonadBaseControl IO m, MonadResource m) => [Text] -> Maybe Text -> ELB m [LoadBalancer]

Files

AWS/ELB.hs view
@@ -5,6 +5,7 @@       ELB     , runELB     , setRegion+    , apiVersion       -- * LoadBalancer     , module AWS.ELB.LoadBalancer     ) where
AWS/ELB/LoadBalancer.hs view
@@ -2,9 +2,12 @@  module AWS.ELB.LoadBalancer     ( describeLoadBalancers+    , createLoadBalancer+    , deleteLoadBalancer     ) where  import Data.Text (Text)+import Data.IP (IPv4, AddrRange) import Data.Conduit import Control.Applicative import Data.XML.Types (Event(..))@@ -15,11 +18,13 @@ import AWS.ELB.Types import AWS.ELB.Internal +import AWS.Util (toText)+ describeLoadBalancers     :: (MonadBaseControl IO m, MonadResource m)     => [Text] -- ^ LoadBalancerNames     -> Maybe Text -- ^ Marker-    -> ELB m [LoadBalancerDescription]+    -> ELB m [LoadBalancer] describeLoadBalancers lbs marker =     elbQuery "DescribeLoadBalancers" params sinkLoadBalancers   where@@ -29,12 +34,12 @@         ]  sinkLoadBalancers :: MonadThrow m-    => GLSink Event m [LoadBalancerDescription]+    => GLSink Event m [LoadBalancer] sinkLoadBalancers = members "LoadBalancerDescriptions" $-    LoadBalancerDescription+    LoadBalancer     <$> members "SecurityGroups" text-    <*> getT "LoadBalancerName"     <*> getT "CreatedTime"+    <*> getT "LoadBalancerName"     <*> element "HealthCheck"         (HealthCheck         <$> getT "Interval"@@ -88,3 +93,41 @@         <*> members "PolicyNames" text         )     <*> members "Subnets" text++createLoadBalancer+    :: (MonadBaseControl IO m, MonadResource m)+    => Text -- ^ LoadBalancerName+    -> [Listener] -- ^ Listeners+    -> [Text] -- ^ AvailabilityZones+    -> Maybe Text -- ^ Scheme+    -> [Text] -- ^ SecurityGroups+    -> [AddrRange IPv4] -- ^ Subnets+    -> ELB m Text -- return DNSName+createLoadBalancer name listeners zones scheme groups subnets =+    elbQuery "CreateLoadBalancer" params $ getT "DNSName"+  where+    params =+        [ "LoadBalancerName" |= name+        , "Listeners.member" |.#. listeners'+        , "AvailabilityZones.member" |.#= zones+        , "Scheme" |=? scheme+        , "SecurityGroups.member" |.#= groups+        , "Subnets.member" |.#= map toText subnets+        ]+    listeners' = flip map listeners $+        \(Listener prot lbport iprot cert iport) ->+            [ "Protocol" |= prot+            , "LoadBalancerPort" |= toText lbport+            , "InstanceProtocol" |= iprot+            , "SSLCertificateId" |=? cert+            , "InstancePort" |= toText iport+            ]++deleteLoadBalancer+    :: (MonadBaseControl IO m, MonadResource m)+    => Text -- ^ LoadBalancerName+    -> ELB m ()+deleteLoadBalancer name = elbQuery "DeleteLoadBalancer" params $+    getT_ "DeleteLoadBalancerResult"+  where+    params = ["LoadBalancerName" |= name]
AWS/ELB/Types.hs view
@@ -4,82 +4,83 @@ import Data.Text (Text) import Data.Time (UTCTime) -data LoadBalancerDescription = LoadBalancerDescription-    { lbSecurityGroups :: [Text]-    , lbLoadBalancerName :: Text-    , lbCreatedTime :: UTCTime-    , lbHealthCheck :: HealthCheck-    , lbVPCId :: Maybe Text-    , lbListenerDescriptions :: [ListenerDescription]-    , lbInstances :: [Instance]-    , lbPolicies :: Policies-    , lbAvailabilityZones :: [Text]-    , lbCanonicalHostedZoneName :: Text-    , lbCanonicalHostedZoneNameID :: Text-    , lbScheme :: Text-    , lbSourceSecurityGroup :: Maybe SourceSecurityGroup-    , lbDNSName :: Text-    , lbBackendServerDescriptions :: [BackendServerDescription]-    , lbSubnets :: [Text]+data LoadBalancer = LoadBalancer+    { loadBalancerSecurityGroups :: [Text]+    , loadBalancerCreatedTime :: UTCTime+    , loadBalancerLoadBalancerName :: Text+    , loadBalancerHealthCheck :: HealthCheck+    , loadBalancerVPCId :: Maybe Text+    , loadBalancerListenerDescriptions :: [ListenerDescription]+    , loadBalancerInstances :: [Instance]+    , loadBalancerPolicies :: Policies+    , loadBalancerAvailabilityZones :: [Text]+    , loadBalancerCanonicalHostedZoneName :: Maybe Text+    , loadBalancerCanonicalHostedZoneNameID :: Maybe Text+    , loadBalancerScheme :: Text+    , loadBalancerSourceSecurityGroup :: Maybe SourceSecurityGroup+    , loadBalancerDNSName :: Text+    , loadBalancerBackendServerDescriptions+        :: [BackendServerDescription]+    , loadBalancerSubnets :: [Text]     }   deriving (Show, Eq)  data BackendServerDescription = BackendServerDescription-    { bsInstancePort :: Int-    , bsPolicyNames :: [Text]+    { backendServerInstancePort :: Int+    , backendServerPolicyNames :: [Text]     }   deriving (Show, Eq)  data HealthCheck = HealthCheck-    { hcInterval :: Int-    , hcTarget :: Text-    , hcHealthyThreshold :: Int-    , hcTimeout :: Int-    , hcUnhealthyThreshold :: Int+    { healthCheckInterval :: Int+    , healthCheckTarget :: Text+    , healthCheckHealthyThreshold :: Int+    , healthCheckTimeout :: Int+    , healthCheckUnhealthyThreshold :: Int     }   deriving (Show, Eq)  data Instance = Instance-    { iInstanceId :: Text+    { instanceId :: Text     }   deriving (Show, Eq)  data ListenerDescription = ListenerDescription-    { ldPolicyNames :: [Text]-    , ldListener :: Listener+    { listenerDescriptionPolicyNames :: [Text]+    , listenerDescriptionListener :: Listener     }   deriving (Show, Eq)  data Listener = Listener-    { lProtocol :: Text-    , lLoadBalancerPort :: Int-    , lInstanceProtocol :: Text-    , lSSLCertificateId :: Maybe Text-    , lInstancePort :: Int+    { listenerProtocol :: Text+    , listenerLoadBalancerPort :: Int+    , listenerInstanceProtocol :: Text+    , listenerSSLCertificateId :: Maybe Text+    , listenerInstancePort :: Int     }   deriving (Show, Eq)  data Policies = Policies-    { pAppCookieStickinessPolicies :: [AppCookieStickinessPolicy]-    , pOtherPolicies :: [Text]-    , pLBCookieStickinessPolicies :: [LBCookieStickinessPolicy]+    { policiesAppCookieStickinessPolicies :: [AppCookieStickinessPolicy]+    , policiesOtherPolicies :: [Text]+    , policiesLBCookieStickinessPolicies :: [LBCookieStickinessPolicy]     }   deriving (Show, Eq)  data AppCookieStickinessPolicy = AppCookieStickinessPolicy-    { acspCookieName :: Text-    , acspPolicyName :: Text+    { appCookieStickinessPolicyCookieName :: Text+    , appCookieStickinessPolicyPolicyName :: Text     }   deriving (Show, Eq)  data LBCookieStickinessPolicy = LBCookieStickinessPolicy-    { lbcspCookieExpirationPeriod :: Integer-    , lbcspPolicyName :: Text+    { lbCookieStickinessPolicyCookieExpirationPeriod :: Integer+    , lbCookieStickinessPolicyPolicyName :: Text     }   deriving (Show, Eq)  data SourceSecurityGroup = SourceSecurityGroup-    { ssgOwnerAlias :: Text-    , ssgGroupName :: Text+    { sourceSecurityGroupOwnerAlias :: Text+    , sourceSecurityGroupGroupName :: Text     }   deriving (Show, Eq)
AWS/Lib/Parser.hs view
@@ -93,7 +93,7 @@ getT_ :: forall m o u . MonadThrow m     => Text     -> Pipe Event Event o u m ()-getT_ name = () <$ (getT name :: Pipe Event Event o u m Text)+getT_ name = () <$ (getT name :: Pipe Event Event o u m (Maybe Text))  elementM :: forall o u m a . MonadThrow m     => Text
Tests/Main.hs view
@@ -6,6 +6,7 @@  import AWSTests.EC2Tests import AWSTests.RDSTests+import AWSTests.ELBTests  main :: IO () main = do@@ -32,3 +33,6 @@     -- RDS Tests     runDBInstanceTests     runDBSnapshotTests++    -- ELB Tests+    runLoadBalancerTests
aws-sdk.cabal view
@@ -1,5 +1,5 @@ name:                aws-sdk-version:             0.9.1.0+version:             0.9.2.1 synopsis:            AWS SDK for Haskell description: AWS (Amazon Web Services) sdk for Haskell.              .@@ -79,7 +79,7 @@                    , old-locale                    , http-conduit                    , data-default-                   , xml-conduit+                   , xml-conduit >= 1.0.3.3                    , xml-types                    , text                    , monad-control