{-# LANGUAGE TypeFamilies
           , MultiParamTypeClasses
           , FlexibleInstances
           , OverloadedStrings
           , RecordWildCards
           , TemplateHaskell
           #-}

module Aws.Ec2.Commands.CreateSecurityGroup where

import Aws.Ec2.TH

data CreateSecurityGroup = CreateSecurityGroup
               { csec_name :: Text
               , csec_description :: Text
               , csec_vpcId :: Maybe Text
               } deriving (Show)

instance SignQuery CreateSecurityGroup where
    type ServiceConfiguration CreateSecurityGroup = EC2Configuration
    signQuery CreateSecurityGroup{..} = ec2SignQuery $
                                           [ ("GroupName", qArg csec_name)
                                           , ("GroupDescription", qArg csec_description)
                                           , ("Action", qArg "CreateSecurityGroup")
                                           , defVersion
                                           ] +++ optionalA "VpcId" csec_vpcId

ec2ValueTransaction ''CreateSecurityGroup "CreateSecurityGroupResponse"