packages feed

aws-ec2 0.2.2 → 0.3

raw patch · 49 files changed

+456/−44 lines, 49 filesdep +yamldep ~awsdep ~basenew-component:exe:run-instPVP ok

version bump matches the API change (PVP)

Dependencies added: yaml

Dependency ranges changed: aws, base

API changes (from Hackage documentation)

- Aws.Ec2.TH: ec2ValueTransaction :: Name -> String -> DecsQ
- Aws.Ec2.TH: ec2ValueTransactionDef :: Name -> Name -> String -> String -> DecsQ
- Aws.Elb.TH: elbValueTransaction :: Name -> String -> DecsQ
- Aws.Elb.TH: elbValueTransactionDef :: Name -> Name -> String -> String -> DecsQ
- Aws.Query.TH: queryValueTransaction :: Name -> String -> DecsQ
- Aws.Query.TH: queryValueTransactionDef :: Name -> Name -> String -> Name -> Name -> String -> String -> DecsQ
+ Aws.Ec2.Commands.RunInstances: run_associatePublicIpAddress :: RunInstances -> Bool
+ Aws.Ec2.Commands.StartInstances: StartInstances :: [Text] -> StartInstances
+ Aws.Ec2.Commands.StartInstances: data StartInstances
+ Aws.Ec2.Commands.StartInstances: instance ResponseConsumer StartInstances Value
+ Aws.Ec2.Commands.StartInstances: instance Show StartInstances
+ Aws.Ec2.Commands.StartInstances: instance SignQuery StartInstances
+ Aws.Ec2.Commands.StartInstances: instance Transaction StartInstances Value
+ Aws.Ec2.Commands.StartInstances: start_instanceIds :: StartInstances -> [Text]
+ Aws.Ec2.Commands.StopInstances: StopInstances :: [Text] -> StopInstances
+ Aws.Ec2.Commands.StopInstances: data StopInstances
+ Aws.Ec2.Commands.StopInstances: instance ResponseConsumer StopInstances Value
+ Aws.Ec2.Commands.StopInstances: instance Show StopInstances
+ Aws.Ec2.Commands.StopInstances: instance SignQuery StopInstances
+ Aws.Ec2.Commands.StopInstances: instance Transaction StopInstances Value
+ Aws.Ec2.Commands.StopInstances: stop_instanceIds :: StopInstances -> [Text]
+ Aws.Ec2.Commands.TerminateInstances: TerminateInstances :: [Text] -> TerminateInstances
+ Aws.Ec2.Commands.TerminateInstances: data TerminateInstances
+ Aws.Ec2.Commands.TerminateInstances: instance ResponseConsumer TerminateInstances Value
+ Aws.Ec2.Commands.TerminateInstances: instance Show TerminateInstances
+ Aws.Ec2.Commands.TerminateInstances: instance SignQuery TerminateInstances
+ Aws.Ec2.Commands.TerminateInstances: instance Transaction TerminateInstances Value
+ Aws.Ec2.Commands.TerminateInstances: term_instanceIds :: TerminateInstances -> [Text]
+ Aws.Elb.Commands.CreateAppCookieStickinessPolicy: CreateAppCookieStickinessPolicy :: Text -> Text -> Text -> CreateAppCookieStickinessPolicy
+ Aws.Elb.Commands.CreateAppCookieStickinessPolicy: cacsp_cookieName :: CreateAppCookieStickinessPolicy -> Text
+ Aws.Elb.Commands.CreateAppCookieStickinessPolicy: cacsp_loadBalancerName :: CreateAppCookieStickinessPolicy -> Text
+ Aws.Elb.Commands.CreateAppCookieStickinessPolicy: cacsp_policyName :: CreateAppCookieStickinessPolicy -> Text
+ Aws.Elb.Commands.CreateAppCookieStickinessPolicy: data CreateAppCookieStickinessPolicy
+ Aws.Elb.Commands.CreateAppCookieStickinessPolicy: instance ResponseConsumer CreateAppCookieStickinessPolicy Value
+ Aws.Elb.Commands.CreateAppCookieStickinessPolicy: instance Show CreateAppCookieStickinessPolicy
+ Aws.Elb.Commands.CreateAppCookieStickinessPolicy: instance SignQuery CreateAppCookieStickinessPolicy
+ Aws.Elb.Commands.CreateAppCookieStickinessPolicy: instance Transaction CreateAppCookieStickinessPolicy Value
- Aws.Ec2: class (SignQuery r, ResponseConsumer r a, Loggable (ResponseMetadata a)) => Transaction r a | r -> a, a -> r
+ Aws.Ec2: class (SignQuery r, ResponseConsumer r a, Loggable (ResponseMetadata a)) => Transaction r a | r -> a
- Aws.Ec2.Commands.RunInstances: RunInstances :: Text -> (Int, Int) -> Text -> [Text] -> [BlockDeviceMapping] -> Maybe Text -> Bool -> Bool -> Maybe InstanceInitiatedShutdownBehavior -> Bool -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> RunInstances
+ Aws.Ec2.Commands.RunInstances: RunInstances :: Text -> (Int, Int) -> Text -> [Text] -> [BlockDeviceMapping] -> Maybe Text -> Bool -> Bool -> Maybe InstanceInitiatedShutdownBehavior -> Bool -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Bool -> RunInstances
- Aws.Elb: class (SignQuery r, ResponseConsumer r a, Loggable (ResponseMetadata a)) => Transaction r a | r -> a, a -> r
+ Aws.Elb: class (SignQuery r, ResponseConsumer r a, Loggable (ResponseMetadata a)) => Transaction r a | r -> a

Files

aws-ec2.cabal view
@@ -1,5 +1,5 @@ name:                aws-ec2-version:             0.2.2+version:             0.3 synopsis:            AWS EC2/VPC, ELB and CloudWatch client library for Haskell license-file:        LICENSE license:             BSD3@@ -12,10 +12,12 @@ homepage:            https://github.com/zalora/aws-ec2 description:         AWS client library with focus on infrastructure services like EC2 (with VPC), ELB and CloudWatch, extension to <https://github.com/aristidb/aws>. +extra-source-files:  include/config.h+ source-repository this   type: git   location: https://github.com/zalora/aws-ec2.git-  tag: 0.2.2+  tag: 0.3  source-repository head   type: git@@ -66,6 +68,9 @@     , Aws.Ec2.Commands.ImportKeyPair     , Aws.Ec2.Commands.ModifyVpcAttribute     , Aws.Ec2.Commands.RunInstances+    , Aws.Ec2.Commands.StartInstances+    , Aws.Ec2.Commands.StopInstances+    , Aws.Ec2.Commands.TerminateInstances      , Aws.Elb     , Aws.Elb.Core@@ -79,6 +84,7 @@     , Aws.Elb.Commands.ModifyLoadBalancerAttributes     , Aws.Elb.Commands.RegisterInstancesWithLoadBalancer     , Aws.Elb.Commands.DeregisterInstancesFromLoadBalancer+    , Aws.Elb.Commands.CreateAppCookieStickinessPolicy     , Aws.Elb.Commands.CreateLBCookieStickinessPolicy     , Aws.Elb.Commands.SetLoadBalancerPoliciesOfListener     , Aws.Elb.Commands.ConfigureHealthCheck@@ -107,11 +113,12 @@     , http-conduit     , conduit-extra     , xml-conduit-    , aws >= 0.9.3+    , aws >= 0.9.4    hs-source-dirs:      src   default-language:    Haskell2010-  default-extensions:  OverloadedStrings, TemplateHaskell+  default-extensions:  OverloadedStrings, TemplateHaskell, CPP+  cpp-options:         --include=include/config.h  executable put-metric   main-is: put-metric.hs@@ -120,9 +127,30 @@     , bytestring     , text     , optparse-applicative-    , aws >= 0.9.3+    , aws >= 0.9.4     , aws-ec2    hs-source-dirs:      cmd   default-language:    Haskell2010   default-extensions:  OverloadedStrings+  ghc-options:         -static++executable run-inst+  main-is: run-inst.hs+  build-depends:+      base+    , bytestring+    , text+    , optparse-applicative+    , aws >= 0.9.4+    , aws-ec2+    , yaml+    , vector+    , containers+    , unordered-containers+    , aeson++  hs-source-dirs:      cmd+  default-language:    Haskell2010+  default-extensions:  OverloadedStrings+  ghc-options:         -static
+ cmd/run-inst.hs view
@@ -0,0 +1,153 @@+{-# LANGUAGE FlexibleContexts, TypeFamilies  #-}+{-# LANGUAGE OverlappingInstances  #-}+{-# LANGUAGE ScopedTypeVariables #-}++module Main where++import Control.Monad+import Options.Applicative++import qualified Data.ByteString.Char8 as B+import qualified Data.Text as T++import Aws+import Aws.Query hiding (optional)+import Aws (Configuration(..), LogLevel(..), defaultLog)+import Aws.Ec2+import qualified Data.Yaml as Y+import qualified Data.HashMap.Strict as M+import qualified Data.Vector as V+import Data.Aeson++configuration :: Bool -> IO Configuration+configuration useMetadata = do+    cr <- load+    case cr of+      Nothing -> error "could not locate aws credentials"+      Just cr' -> return Configuration { timeInfo = Timestamp+                                       , credentials = cr'+                                       , logger = defaultLog Warning+                                       }+  where+    load = if useMetadata then loadCredentialsFromInstanceMetadata+                          else loadCredentialsDefault++runInst :: String -> String -> String -> Maybe String -> Bool -> Bool -> IO ()+runInst region imageid instType subnetId publicIp useMetadata = do+    cfg <- configuration useMetadata+    val <- Aws.simpleAws cfg (QueryAPIConfiguration $ B.pack region) $+      RunInstances+        (T.pack imageid)+        (1,1)+        (T.pack instType)+        []+        []+        (T.pack <$> subnetId)+        False+        False+        (Just Stop)+        False+        Nothing+        Nothing+        Nothing+        Nothing+        Nothing+        Nothing+        Nothing+        publicIp+    B.putStr $ Y.encode val+    return ()++listInst :: String -> Bool -> IO ()+listInst region useMetadata = do+    cfg <- configuration useMetadata+    inst <- Aws.simpleAws cfg (QueryAPIConfiguration $ B.pack region) $ DescribeInstances []+    B.putStr $ Y.encode inst+    return ()++listImg :: String -> Bool -> IO ()+listImg region useMetadata = do+    cfg <- configuration useMetadata+    imageSet <- Aws.simpleAws cfg (QueryAPIConfiguration $ B.pack region) $ DescribeImages []+    B.putStr $ Y.encode imageSet+    return ()++listStatus :: String -> String -> Bool -> IO ()+listStatus region instanceid useMetadata = do+    cfg <- configuration useMetadata+    imageSet <- Aws.simpleAws cfg (QueryAPIConfiguration $ B.pack region) $ DescribeInstanceStatus [T.pack instanceid]+    B.putStr $ Y.encode imageSet+    return ()+++termInst :: String -> String -> Bool -> IO ()+termInst region instanceid useMetadata = do+    cfg <- configuration useMetadata+    imageSet <- Aws.simpleAws cfg (QueryAPIConfiguration $ B.pack region) $ TerminateInstances [T.pack instanceid]+    B.putStr $ Y.encode imageSet+    return ()++startInst :: String -> String -> Bool -> IO ()+startInst region instanceid useMetadata = do+    cfg <- configuration useMetadata+    imageSet <- Aws.simpleAws cfg (QueryAPIConfiguration $ B.pack region) $ StartInstances [T.pack instanceid]+    B.putStr $ Y.encode imageSet+    return ()++stopInst :: String -> String -> Bool -> IO ()+stopInst region instanceid useMetadata = do+    cfg <- configuration useMetadata+    imageSet <- Aws.simpleAws cfg (QueryAPIConfiguration $ B.pack region) $ StopInstances [T.pack instanceid]+    B.putStr $ Y.encode imageSet+    return ()++main = join $ customExecParser prefs opts+  where+    prefs = ParserPrefs { prefMultiSuffix = ""+                        , prefDisambiguate = True+                        , prefShowHelpOnError = True+                        , prefBacktrack = True+                        , prefColumns = 80+                        }++    opts = parser `info` header "AWS Ec2 client"++    parser = subparser (command "runInst" (argsRunInst runInst `info` progDesc "run instance")+                        <> command "lsInst" (argsListInst listInst `info` progDesc "list all instance")+                        <> command "lsImg" (argsListImg listImg `info` progDesc "list all image")+                        <> command "lsStatus" (argsListStatus listStatus `info` progDesc "list status")+                        <> command "term" (argsInst termInst `info` progDesc "terminate instance")+                        <> command "start" (argsInst startInst `info` progDesc "start instance")+                        <> command "stop" (argsInst stopInst `info` progDesc "stop instance")+                        )++    argsRunInst comm = comm <$> argument str (metavar "<region>")+                       <*> argument str (metavar "<imageid>")+                       <*> argument str (metavar "<insttype>")+                       <*> optional (strOption (short 'n' <>+                                                long "subnetid" <>+                                                help "Use subnetId"))+                       <*> switch (short 'p' <>+                                   long "public" <>+                                   help "Use public-ip with subnetId")+                       <*> switch (short 'm' <>+                                   long "metadata" <>+                                   help "Use instance metadata to get authentication info")+    argsListInst comm = comm <$> argument str (metavar "<region>")+                       <*> switch (short 'm' <>+                                   long "metadata" <>+                                   help "Use instance metadata to get authentication info")+    argsListImg comm = comm <$> argument str (metavar "<region>")+                       <*> switch (short 'm' <>+                                   long "metadata" <>+                                   help "Use instance metadata to get authentication info")+    argsListStatus comm = comm <$> argument str (metavar "<region>")+                          <*> argument str (metavar "<instanceId>")+                          <*> switch (short 'm' <>+                                      long "metadata" <>+                                      help "Use instance metadata to get authentication info")+    argsInst comm = comm <$> argument str (metavar "<region>")+                    <*> argument str (metavar "<instanceId>")+                    <*> switch (short 'm' <>+                                long "metadata" <>+                                help "Use instance metadata to get authentication info")
+ include/config.h view
@@ -0,0 +1,70 @@+#if __GLASGOW_HASKELL__ >= 780+#define USE_TH 1+#else+#undef USE_TH+#endif++#ifdef USE_TH+#define QUERYVALUETRANSACTION(Name,Response) queryValueTransaction ''Name Response+#define EC2VALUETRANSACTIONDEF(Name,NameStr,Tag,FilterKey) ec2ValueTransactionDef ''Name 'Name Tag FilterKey +#define EC2VALUETRANSACTION(Name,Response) ec2ValueTransaction ''Name Response+#define ELBVALUETRANSACTIONDEF(Name,NameStr,Tag,FilterKey) elbValueTransactionDef ''Name 'Name Tag FilterKey +#define ELBVALUETRANSACTION(Name,Response) elbValueTransaction ''Name Response++#else+#define QUERYVALUETRANSACTION(Name,Response) \+instance ResponseConsumer Name Value where { \+  type ResponseMetadata Value = QueryMetadata; \+  responseConsumer _v \+    = (queryResponseConsumer \+       $ (valueConsumer Response id)) }; \+instance Transaction Name Value++#define EC2VALUETRANSACTIONDEF(Name,NameStr,Tag,FilterKey) \+instance SignQuery Name where { \+  type ServiceConfiguration Name = QueryAPIConfiguration; \+  signQuery (Name arg_arQu) \+    = (ec2SignQuery \+       $ ([("Action", qArg NameStr), defVersion] \+          +++ (enumerate FilterKey arg_arQu qArg))) }; \+instance ResponseConsumer Name Value where { \+  type ResponseMetadata Value = QueryMetadata ; \+  responseConsumer _v \+    = (queryResponseConsumer \+       $ (valueConsumerOpt \+            (XMLValueOptions "item") Tag id)) } ;\+instance Transaction Name Value++#define EC2VALUETRANSACTION(Name,Response) \+instance ResponseConsumer Name Value where { \+  type ResponseMetadata Value = QueryMetadata ; \+  responseConsumer _v \+    = (queryResponseConsumer \+       $ (valueConsumer (Response) id)) } ; \+instance Transaction Name Value++#define ELBVALUETRANSACTIONDEF(Name,NameStr,Tag,FilterKey) \+instance SignQuery Name where { \+  type ServiceConfiguration Name = QueryAPIConfiguration ; \+  signQuery (Name arg_aHEZ) \+    = (elbSignQuery \+       $ ([("Action", qArg NameStr), defVersion] \+          +++ (enumerate FilterKey arg_aHEZ qArg))) }; \+instance ResponseConsumer Name Value where { \+  type ResponseMetadata Value = QueryMetadata ; \+  responseConsumer _ \+    = (queryResponseConsumer \+       $ (valueConsumerOpt \+            (XMLValueOptions "member") Tag id)) }; \+instance Transaction Name Value++#define ELBVALUETRANSACTION(Name,Response) \+instance ResponseConsumer Name Value where { \+  type ResponseMetadata Value = QueryMetadata ; \+  responseConsumer _v \+    = (queryResponseConsumer \+       $ (valueConsumerOpt \+            (XMLValueOptions "member") Response id)) }; \+instance Transaction Name Value++#endif
src/Aws/CloudWatch/Commands/PutMetricData.hs view
@@ -67,4 +67,4 @@                                                            , ("Namespace", qArg namespace)                                                            ] +++ enumerateMetrics xs -queryValueTransaction ''PutMetricData "PutMetricDataResponse"+QUERYVALUETRANSACTION(PutMetricData,"PutMetricDataResponse")
src/Aws/Ec2.hs view
@@ -20,6 +20,9 @@ , module Aws.Ec2.Commands.DescribeInstances , module Aws.Ec2.Commands.DescribeInstanceStatus , module Aws.Ec2.Commands.RunInstances+, module Aws.Ec2.Commands.StartInstances+, module Aws.Ec2.Commands.StopInstances+, module Aws.Ec2.Commands.TerminateInstances , module Aws.Ec2.Commands.GetConsoleOutput  , module Aws.Ec2.Commands.DescribeVpcs@@ -60,6 +63,9 @@ import Aws.Ec2.Commands.DescribeInstances import Aws.Ec2.Commands.DescribeInstanceStatus import Aws.Ec2.Commands.RunInstances+import Aws.Ec2.Commands.StartInstances+import Aws.Ec2.Commands.StopInstances+import Aws.Ec2.Commands.TerminateInstances import Aws.Ec2.Commands.GetConsoleOutput  import Aws.Ec2.Commands.DescribeVpcs
src/Aws/Ec2/Commands/AttachInternetGateway.hs view
@@ -25,4 +25,4 @@                                            , defVersion                                            ] -ec2ValueTransaction ''AttachInternetGateway "return"+EC2VALUETRANSACTION(AttachInternetGateway,"return")
src/Aws/Ec2/Commands/AttachVolume.hs view
@@ -27,4 +27,4 @@                                               , ("Device", qArg avol_device)                                               ] -ec2ValueTransaction ''AttachVolume "AttachVolumeResponse"+EC2VALUETRANSACTION(AttachVolume,"AttachVolumeResponse")
src/Aws/Ec2/Commands/AuthorizeSecurityGroupIngress.hs view
@@ -50,4 +50,4 @@                                            , defVersion                                            ] +++ enumeratePermissions asi_permissions -ec2ValueTransaction ''AuthorizeSecurityGroupIngress "AuthorizeSecurityGroupIngressResponse"+EC2VALUETRANSACTION(AuthorizeSecurityGroupIngress,"AuthorizeSecurityGroupIngressResponse")
src/Aws/Ec2/Commands/CreateInternetGateway.hs view
@@ -20,4 +20,4 @@                                            , defVersion                                            ] -ec2ValueTransaction ''CreateInternetGateway "internetGateway"+EC2VALUETRANSACTION(CreateInternetGateway,"internetGateway")
src/Aws/Ec2/Commands/CreateRoute.hs view
@@ -35,4 +35,4 @@                                                    NetworkInterfaceId t -> [("NetworkInterfaceId", qArg t)]                                                    VpcPeeringConnectionId t -> [("VpcPeeringConnectionId", qArg t)] -ec2ValueTransaction ''CreateRoute "return"+EC2VALUETRANSACTION(CreateRoute,"return")
src/Aws/Ec2/Commands/CreateSecurityGroup.hs view
@@ -25,4 +25,4 @@                                            , defVersion                                            ] +++ optionalA "VpcId" csec_vpcId -ec2ValueTransaction ''CreateSecurityGroup "CreateSecurityGroupResponse"+EC2VALUETRANSACTION(CreateSecurityGroup,"CreateSecurityGroupResponse")
src/Aws/Ec2/Commands/CreateSubnet.hs view
@@ -26,4 +26,4 @@                                               , ("CidrBlock", qArg csub_cidrBlock)                                               ] +++ (optionalA "AvailabilityZone" csub_availabilityZone) -ec2ValueTransaction ''CreateSubnet "subnet"+EC2VALUETRANSACTION(CreateSubnet,"subnet")
src/Aws/Ec2/Commands/CreateTags.hs view
@@ -33,4 +33,4 @@                                            ] +++ enumerate "ResourceId" ct_resources qArg                                              +++ enumerateTags ct_tags -ec2ValueTransaction ''CreateTags "return"+EC2VALUETRANSACTION(CreateTags,"return")
src/Aws/Ec2/Commands/CreateVolume.hs view
@@ -24,4 +24,4 @@                                                 , ("AvailabilityZone", qArg cvol_AvailabilityZone)                                                 ] ++ queryEbsBlockDevice cvol_ebs -ec2ValueTransaction ''CreateVolume "CreateVolumeResponse"+EC2VALUETRANSACTION(CreateVolume,"CreateVolumeResponse")
src/Aws/Ec2/Commands/CreateVpc.hs view
@@ -24,4 +24,4 @@                                            , defVersion                                            ] -ec2ValueTransaction ''CreateVpc "vpc"+EC2VALUETRANSACTION(CreateVpc,"vpc")
src/Aws/Ec2/Commands/DescribeAvailabilityZones.hs view
@@ -10,4 +10,4 @@ data DescribeAvailabilityZones = DescribeAvailabilityZones [Text]                        deriving (Show) -ec2ValueTransactionDef ''DescribeAvailabilityZones 'DescribeAvailabilityZones "availabilityZoneInfo" "ZoneName"+EC2VALUETRANSACTIONDEF(DescribeAvailabilityZones,"DescribeAvailabilityZones","availabilityZoneInfo","ZoneName")
src/Aws/Ec2/Commands/DescribeImages.hs view
@@ -20,4 +20,4 @@                                                         [] -> [("Owner.1", qArg "self")]                                                         _ -> enumerate "ImageId" di_imageIds qArg -ec2ValueTransaction ''DescribeImages "imagesSet"+EC2VALUETRANSACTION(DescribeImages,"imagesSet")
src/Aws/Ec2/Commands/DescribeInstanceStatus.hs view
@@ -13,4 +13,4 @@ data DescribeInstanceStatus = DescribeInstanceStatus { dis_instanceIds :: [Text] }                        deriving (Show) -ec2ValueTransactionDef ''DescribeInstanceStatus 'DescribeInstanceStatus "instanceStatusSet" "InstanceId"+EC2VALUETRANSACTIONDEF(DescribeInstanceStatus,"DescribeInstanceStatus","instanceStatusSet","InstanceId")
src/Aws/Ec2/Commands/DescribeInstances.hs view
@@ -20,5 +20,5 @@                                                 , defVersion                                                 ] +++ enumerate "InstanceId" di_instanceIds qArg -ec2ValueTransaction ''DescribeInstances "reservationSet"+EC2VALUETRANSACTION(DescribeInstances,"reservationSet") 
src/Aws/Ec2/Commands/DescribeKeyPairs.hs view
@@ -10,4 +10,4 @@ data DescribeKeyPairs = DescribeKeyPairs [Text]                        deriving (Show) -ec2ValueTransactionDef ''DescribeKeyPairs 'DescribeKeyPairs "keySet" "KeyName"+EC2VALUETRANSACTIONDEF(DescribeKeyPairs,"DescribeKeyPairs","keySet","KeyName")
src/Aws/Ec2/Commands/DescribeRegions.hs view
@@ -10,4 +10,4 @@ data DescribeRegions = DescribeRegions [Text]                        deriving (Show) -ec2ValueTransactionDef ''DescribeRegions 'DescribeRegions "regionInfo" "RegionName"+EC2VALUETRANSACTIONDEF(DescribeRegions,"DescribeRegions","regionInfo","RegionName")
src/Aws/Ec2/Commands/DescribeRouteTables.hs view
@@ -22,4 +22,4 @@                                            , ("Filter.1.Value.1", qArg drt_vpcId)                                            ] -ec2ValueTransaction ''DescribeRouteTables "routeTableSet"+EC2VALUETRANSACTION(DescribeRouteTables,"routeTableSet")
src/Aws/Ec2/Commands/DescribeSecurityGroups.hs view
@@ -27,4 +27,4 @@                                                         [] -> []                                                         _ -> ("Filter.1.Name", qArg "group-name"):(enumerate "Filter.1.Value" sg_names qArg) -ec2ValueTransaction ''DescribeSecurityGroups "securityGroupInfo"+EC2VALUETRANSACTION(DescribeSecurityGroups,"securityGroupInfo")
src/Aws/Ec2/Commands/DescribeSubnets.hs view
@@ -10,4 +10,4 @@ data DescribeSubnets = DescribeSubnets [Text]                        deriving (Show) -ec2ValueTransactionDef ''DescribeSubnets 'DescribeSubnets "subnetSet" "SubnetId"+EC2VALUETRANSACTIONDEF(DescribeSubnets,"DescribeSubnets","subnetSet","SubnetId")
src/Aws/Ec2/Commands/DescribeTags.hs view
@@ -10,4 +10,4 @@ data DescribeTags = DescribeTags [Text]                        deriving (Show) -ec2ValueTransactionDef ''DescribeTags 'DescribeTags "tagSet" "" -- search not implemented+EC2VALUETRANSACTIONDEF(DescribeTags,"DescribeTags","tagSet","") -- search not implemented
src/Aws/Ec2/Commands/DescribeVolumeStatus.hs view
@@ -10,4 +10,4 @@ data DescribeVolumeStatus = DescribeVolumeStatus [Text]                        deriving (Show) -ec2ValueTransactionDef ''DescribeVolumeStatus 'DescribeVolumeStatus "volumeStatusSet" "VolumeId"+EC2VALUETRANSACTIONDEF(DescribeVolumeStatus,"DescribeVolumeStatus","volumeStatusSet","VolumeId")
src/Aws/Ec2/Commands/DescribeVolumes.hs view
@@ -10,4 +10,4 @@ data DescribeVolumes = DescribeVolumes [Text]                        deriving (Show) -ec2ValueTransactionDef ''DescribeVolumes 'DescribeVolumes "volumeSet" "VolumeId"+EC2VALUETRANSACTIONDEF(DescribeVolumes,"DescribeVolumes","volumeSet","VolumeId")
src/Aws/Ec2/Commands/DescribeVpcs.hs view
@@ -10,4 +10,4 @@ data DescribeVpcs = DescribeVpcs { dvpc_vpcIds :: [Text] }                        deriving (Show) -ec2ValueTransactionDef ''DescribeVpcs 'DescribeVpcs "vpcSet" "VpcId"+EC2VALUETRANSACTIONDEF(DescribeVpcs,"DescribeVpcs","vpcSet","VpcId")
src/Aws/Ec2/Commands/GetConsoleOutput.hs view
@@ -29,4 +29,4 @@                                                   , ("InstanceId", qArg gco_instanceId)                                                   ] -ec2ValueTransaction ''GetConsoleOutput "GetConsoleOutputResponse"+EC2VALUETRANSACTION(GetConsoleOutput,"GetConsoleOutputResponse")
src/Aws/Ec2/Commands/ImportKeyPair.hs view
@@ -25,4 +25,4 @@                                            , ("PublicKeyMaterial", qArg ikp_publicKeyMaterial)                                            ] -ec2ValueTransaction ''ImportKeyPair "ImportKeyPairResponse"+EC2VALUETRANSACTION(ImportKeyPair,"ImportKeyPairResponse")
src/Aws/Ec2/Commands/ModifyVpcAttribute.hs view
@@ -28,4 +28,4 @@                                                    EnableDnsSupport es -> [("EnableDnsSupport.Value", qShow es)]                                                    EnableDnsHostnames eh -> [("EnableDnsHostnames.Value", qShow eh)] -ec2ValueTransaction ''ModifyVpcAttribute "return"+EC2VALUETRANSACTION(ModifyVpcAttribute,"return")
src/Aws/Ec2/Commands/RunInstances.hs view
@@ -38,6 +38,7 @@                   , run_clientToken :: Maybe Text                   , run_iamInstanceProfileARN :: Maybe Text                   , run_availabilityZone :: Maybe Text+                  , run_associatePublicIpAddress :: Bool                   -- , run_placement :: Maybe Placement                   -- also missing: NetworkInterface                   } deriving (Show)@@ -84,8 +85,8 @@                          Nothing -> enumerate "SecurityGroupId" run_securityGroupIds qArg                          Just subnetId -> [ ("NetworkInterface.0.DeviceIndex", qShow 0)                                           , ("NetworkInterface.0.SubnetId", qArg subnetId)-                                          , ("NetworkInterface.0.AssociatePublicIpAddress", qShow True)+                                          , ("NetworkInterface.0.AssociatePublicIpAddress", qShow run_associatePublicIpAddress)                                           ] +++ enumerate "NetworkInterface.0.SecurityGroupId" run_securityGroupIds qArg -ec2ValueTransaction ''RunInstances "RunInstancesResponse"+EC2VALUETRANSACTION(RunInstances,"RunInstancesResponse") 
+ src/Aws/Ec2/Commands/StartInstances.hs view
@@ -0,0 +1,37 @@+{-# LANGUAGE TypeFamilies+           , MultiParamTypeClasses+           , FlexibleInstances+           , OverloadedStrings+           , RecordWildCards+           , TemplateHaskell+           , LambdaCase+           #-}++module Aws.Ec2.Commands.StartInstances where++import Data.Text ()+import Data.ByteString.Char8 (pack)+import qualified Network.HTTP.Types as HTTP+import Data.Monoid+import Aws.Ec2.TH++-- http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-StartInstances.html+data StartInstances = StartInstances+                  { start_instanceIds :: [Text]+                  } deriving (Show)++instance SignQuery StartInstances where+    type ServiceConfiguration StartInstances = EC2Configuration+    signQuery StartInstances{..} = ec2SignQuery $+                                  main+                                  +++ enumerateInstances (zip [1..] start_instanceIds)+        where+          main :: HTTP.Query+          main = [ ("Action", qArg "StartInstances")+                 , defVersion+                 ]+          enumerateInstances :: [(Int,Text)] -> HTTP.Query+          enumerateInstances [] = []+          enumerateInstances ((i,x):xs) = [("InstanceId." <> pack (show i), qArg x)] +++ enumerateInstances xs++EC2VALUETRANSACTION(StartInstances,"StartInstancesResponse")
+ src/Aws/Ec2/Commands/StopInstances.hs view
@@ -0,0 +1,38 @@+{-# LANGUAGE TypeFamilies+           , MultiParamTypeClasses+           , FlexibleInstances+           , OverloadedStrings+           , RecordWildCards+           , TemplateHaskell+           , LambdaCase+           #-}++module Aws.Ec2.Commands.StopInstances where++import Data.Text ()+import Data.ByteString.Char8 (pack)+import qualified Network.HTTP.Types as HTTP+import Data.Monoid+import Aws.Ec2.TH++-- http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-StopInstances.html+data StopInstances = StopInstances+                  { stop_instanceIds :: [Text]+                  } deriving (Show)++instance SignQuery StopInstances where+    type ServiceConfiguration StopInstances = EC2Configuration+    signQuery StopInstances{..} = ec2SignQuery $+                                  main+                                  +++ enumerateInstances (zip [1..] stop_instanceIds)+        where+          main :: HTTP.Query+          main = [ ("Action", qArg "StopInstances")+                 , defVersion+                 ]+          enumerateInstances :: [(Int,Text)] -> HTTP.Query+          enumerateInstances [] = []+          enumerateInstances ((i,x):xs) = [("InstanceId." <> pack (show i), qArg x)] +++ enumerateInstances xs+++EC2VALUETRANSACTION(StopInstances,"StopInstancesResponse")
+ src/Aws/Ec2/Commands/TerminateInstances.hs view
@@ -0,0 +1,38 @@+{-# LANGUAGE TypeFamilies+           , MultiParamTypeClasses+           , FlexibleInstances+           , OverloadedStrings+           , RecordWildCards+           , TemplateHaskell+           , LambdaCase+           #-}++module Aws.Ec2.Commands.TerminateInstances where++import Data.Text ()+import Data.ByteString.Char8 (pack)+import qualified Network.HTTP.Types as HTTP+import Data.Monoid+import Aws.Ec2.TH++-- http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-TerminateInstances.html+data TerminateInstances = TerminateInstances+                  { term_instanceIds :: [Text]+                  } deriving (Show)++instance SignQuery TerminateInstances where+    type ServiceConfiguration TerminateInstances = EC2Configuration+    signQuery TerminateInstances{..} = ec2SignQuery $+                                  main+                                  +++ enumerateInstances (zip [1..] term_instanceIds)+        where+          main :: HTTP.Query+          main = [ ("Action", qArg "TerminateInstances")+                 , defVersion+                 ]+          enumerateInstances :: [(Int,Text)] -> HTTP.Query+          enumerateInstances [] = []+          enumerateInstances ((i,x):xs) = [("InstanceId." <> pack (show i), qArg x)] +++ enumerateInstances xs+++EC2VALUETRANSACTION(TerminateInstances,"TerminateInstancesResponse")
src/Aws/Ec2/TH.hs view
@@ -13,8 +13,10 @@ , Text , UTCTime , FromJSON+#ifdef USE_TH , ec2ValueTransactionDef , ec2ValueTransaction+#endif ) where  import Data.Text (Text)@@ -27,6 +29,8 @@ import Aws.Query import Aws.Query.TH +#ifdef USE_TH ec2ValueTransactionDef ty cons tag filterKey = queryValueTransactionDef ty cons tag 'ec2SignQuery 'defVersion "item" filterKey  ec2ValueTransaction = queryValueTransaction+#endif
src/Aws/Elb/Commands/ConfigureHealthCheck.hs view
@@ -46,4 +46,4 @@                                                     , ("HealthCheck.Timeout", qShow hc_timeout)                                                     ] -elbValueTransaction ''ConfigureHealthCheck "ConfigureHealthCheckResult"+ELBVALUETRANSACTION(ConfigureHealthCheck,"ConfigureHealthCheckResult")
+ src/Aws/Elb/Commands/CreateAppCookieStickinessPolicy.hs view
@@ -0,0 +1,29 @@+{-# LANGUAGE TypeFamilies+           , MultiParamTypeClasses+           , FlexibleInstances+           , OverloadedStrings+           , TemplateHaskell+           , RecordWildCards+           #-}++module Aws.Elb.Commands.CreateAppCookieStickinessPolicy where++import Aws.Elb.TH++data CreateAppCookieStickinessPolicy = CreateAppCookieStickinessPolicy+                        { cacsp_loadBalancerName :: Text+                        , cacsp_cookieName :: Text+                        , cacsp_policyName :: Text+                        } deriving (Show)++instance SignQuery CreateAppCookieStickinessPolicy where+    type ServiceConfiguration CreateAppCookieStickinessPolicy = QueryAPIConfiguration+    signQuery CreateAppCookieStickinessPolicy{..} = elbSignQuery $+                                                    [ ("Action", qArg "CreateAppCookieStickinessPolicy")+                                                    , defVersion+                                                    , ("LoadBalancerName", qArg cacsp_loadBalancerName)+                                                    , ("PolicyName", qArg cacsp_policyName)+                                                    , ("CookieName", qArg cacsp_cookieName)+                                                    ]++ELBVALUETRANSACTION(CreateAppCookieStickinessPolicy,"CreateAppCookieStickinessPolicyResult")
src/Aws/Elb/Commands/CreateLBCookieStickinessPolicy.hs view
@@ -25,4 +25,4 @@                                                     , ("PolicyName", qArg clbcsp_policyName)                                                     ] +++ optional "CookieExpirationPeriod" clbcsp_cookieExpirationPeriod qShow -elbValueTransaction ''CreateLBCookieStickinessPolicy "CreateLBCookieStickinessPolicyResult"+ELBVALUETRANSACTION(CreateLBCookieStickinessPolicy,"CreateLBCookieStickinessPolicyResult")
src/Aws/Elb/Commands/CreateLoadBalancer.hs view
@@ -56,4 +56,4 @@                                                             _ -> []  -elbValueTransaction ''CreateLoadBalancer "CreateLoadBalancerResult"+ELBVALUETRANSACTION(CreateLoadBalancer,"CreateLoadBalancerResult")
src/Aws/Elb/Commands/DeregisterInstancesFromLoadBalancer.hs view
@@ -25,4 +25,4 @@                                                     , ("LoadBalancerName", qArg dilb_name)                                                     ] +++ enumerateInstanceIds dilb_instanceIds -elbValueTransaction ''DeregisterInstancesFromLoadBalancer "DeregisterInstancesFromLoadBalancerResult"+ELBVALUETRANSACTION(DeregisterInstancesFromLoadBalancer,"DeregisterInstancesFromLoadBalancerResult")
src/Aws/Elb/Commands/DescribeInstanceHealth.hs view
@@ -19,4 +19,4 @@                                                            , ("LoadBalancerName", qArg lb)                                                            ] -elbValueTransaction ''DescribeInstanceHealth "DescribeInstanceHealthResult"+ELBVALUETRANSACTION(DescribeInstanceHealth,"DescribeInstanceHealthResult")
src/Aws/Elb/Commands/DescribeLoadBalancerPolicies.hs view
@@ -19,4 +19,4 @@                                                                  , ("LoadBalancerName", qArg lb)                                                                  ] -elbValueTransaction ''DescribeLoadBalancerPolicies "DescribeLoadBalancerPoliciesResult"+ELBVALUETRANSACTION(DescribeLoadBalancerPolicies,"DescribeLoadBalancerPoliciesResult")
src/Aws/Elb/Commands/DescribeLoadBalancers.hs view
@@ -12,4 +12,4 @@  data DescribeLoadBalancers = DescribeLoadBalancers [Text] -elbValueTransactionDef ''DescribeLoadBalancers 'DescribeLoadBalancers "LoadBalancerDescriptions" "LoadBalancerNames.member"+ELBVALUETRANSACTIONDEF(DescribeLoadBalancers,"DescribeLoadBalancers","LoadBalancerDescriptions","LoadBalancerNames.member")
src/Aws/Elb/Commands/ModifyLoadBalancerAttributes.hs view
@@ -53,4 +53,4 @@                                                     , ("LoadBalancerName", qArg mlba_name)                                                     ] +++ concatMap attributeQuery mlba_attributes -elbValueTransaction ''ModifyLoadBalancerAttributes "ModifyLoadBalancerAttributesResult"+ELBVALUETRANSACTION(ModifyLoadBalancerAttributes,"ModifyLoadBalancerAttributesResult")
src/Aws/Elb/Commands/RegisterInstancesWithLoadBalancer.hs view
@@ -25,4 +25,4 @@                                                     , ("LoadBalancerName", qArg rilb_name)                                                     ] +++ enumerateInstanceIds rilb_instanceIds -elbValueTransaction ''RegisterInstancesWithLoadBalancer "RegisterInstancesWithLoadBalancerResult"+ELBVALUETRANSACTION(RegisterInstancesWithLoadBalancer,"RegisterInstancesWithLoadBalancerResult")
src/Aws/Elb/Commands/SetLoadBalancerPoliciesOfListener.hs view
@@ -25,4 +25,4 @@                                                     , ("LoadBalancerPort", qShow spl_loadBalancerPort)                                                     ] +++ enumerate "PolicyNames.member" spl_policyNames qArg -elbValueTransaction ''SetLoadBalancerPoliciesOfListener "SetLoadBalancerPoliciesOfListenerResult"+ELBVALUETRANSACTION(SetLoadBalancerPoliciesOfListener,"SetLoadBalancerPoliciesOfListenerResult")
src/Aws/Elb/TH.hs view
@@ -11,8 +11,10 @@ , module Aws.Query , Text , FromJSON+#ifdef USE_TH , elbValueTransaction , elbValueTransactionDef+#endif ) where  import Language.Haskell.TH@@ -27,6 +29,7 @@ import Aws.Query.TH import Aws.Elb.Core +#ifdef USE_TH elbValueTransaction :: Name -> String -> DecsQ elbValueTransaction ty tag = [d|                   instance ResponseConsumer $(conT ty) Value where@@ -37,3 +40,4 @@                   |]  elbValueTransactionDef ty cons tag filterKey = queryValueTransactionDef ty cons tag 'elbSignQuery 'defVersion "member" filterKey+#endif
src/Aws/Query/TH.hs view
@@ -14,8 +14,10 @@ , Text , UTCTime , FromJSON+#ifdef USE_TH , queryValueTransactionDef , queryValueTransaction+#endif ) where  import Language.Haskell.TH@@ -29,6 +31,7 @@ import Aws.Core import Aws.Query +#ifdef USE_TH queryValueTransactionDef :: Name -> Name -> String -> Name -> Name -> String -> String -> DecsQ queryValueTransactionDef ty cons tag signF version item filterKey = do                 arg <- newName "arg"@@ -54,3 +57,4 @@                    instance Transaction $(conT ty) Value                   |]+#endif