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

module Aws.Ec2.Commands.ModifyInstanceAttribute where

import Aws.Ec2.TH

data InstanceAttribute = DisableApiTermination Bool
                  deriving (Show)

data ModifyInstanceAttribute = ModifyInstanceAttribute
               { mia_InstanceId :: Text
               , mia_attribute :: InstanceAttribute
               } deriving (Show)

instance SignQuery ModifyInstanceAttribute where
    type ServiceConfiguration ModifyInstanceAttribute = EC2Configuration
    signQuery ModifyInstanceAttribute{..} = ec2SignQuery $
                                           [ ("InstanceId", qArg mia_InstanceId)
                                           , ("Action", qArg "ModifyInstanceAttribute")
                                           , defVersion
                                           ] +++ case mia_attribute of
                                                   DisableApiTermination dat -> [("DisableApiTermination.Value", qShow dat)]

ec2ValueTransaction ''ModifyInstanceAttribute "return"