module AWS.EC2.Tag
( describeTags
, createTags
, deleteTags
) where
import Data.Text (Text)
import Data.Conduit
import Control.Applicative
import AWS.EC2.Internal
import AWS.EC2.Types
import AWS.EC2.Query
import AWS.Lib.Parser
describeTags
:: (MonadResource m, MonadBaseControl IO m)
=> [Filter]
-> EC2 m (ResumableSource m Tag)
describeTags filters =
ec2QuerySource "DescribeTags" params $ itemConduit "tagSet" $
Tag
<$> getT "resourceId"
<*> getT "resourceType"
<*> getT "key"
<*> getT "value"
where
params = [filtersParam filters]
createTags
:: (MonadResource m, MonadBaseControl IO m)
=> [Text]
-> [(Text, Text)]
-> EC2 m Bool
createTags rids kvs =
ec2Query "CreateTags" params $ getT "return"
where
params =
[ "ResourceId" |.#= rids
, "Tag" |.#. map tagParams kvs
]
tagParams (k, v) =
[ "Key" |= k
, "Value" |= v
]
deleteTags
:: (MonadResource m, MonadBaseControl IO m)
=> [Text]
-> [ResourceTag]
-> EC2 m Bool
deleteTags rids tags =
ec2Query "DeleteTags" params $ getT "return"
where
params =
[ "ResourceId" |.#= rids
, "Tag" |.#. map tagParams tags
]
tagParams tag =
[ "Key" |= resourceTagKey tag
, "Value" |=? resourceTagValue tag
]