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 +1/−0
- AWS/ELB/LoadBalancer.hs +47/−4
- AWS/ELB/Types.hs +42/−41
- AWS/Lib/Parser.hs +1/−1
- Tests/Main.hs +4/−0
- aws-sdk.cabal +2/−2
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