aws-sdk-0.1.0.0: AWS/EC2/Utils.hs
module AWS.EC2.Utils where
import Control.Applicative
import qualified Data.Text as T
import AWS.EC2.Query (QueryParam(..))
import AWS.EC2.Types
import AWS.EC2.Params
import AWS.Util
blockDeviceMappingParams
:: [BlockDeviceMappingParam] -> QueryParam
blockDeviceMappingParams =
StructArrayParams "BlockDeviceMapping" . map kvs
where
kvs (BlockDeviceMappingParamEBS name dev src dot vtype) =
[ ("Ebs.DeviceName", name)
, ebsSource src
] ++ vtparam vtype ++ (uncurry f =<<
[ ("Ebs.NoDevice", boolToText <$> dev)
, ("Ebs.DeleteOnTermination", boolToText <$> dot)
])
kvs (BlockDeviceMappingParamInstanceStore name dev vname) =
[("Ebs.DeviceName", name)] ++ (uncurry f =<<
[ ("Ebs.NoDevice", boolToText <$> dev)
, ("Ebs.VirtualName", vname)
])
ebsSource (EbsSnapshotId sid) = ("Ebs.SnapshotId", sid)
ebsSource (EbsVolumeSize size) =
("Ebs.VolumeSize", T.pack $ show size)
f n = maybe [] (\a -> [(n, a)])
vtparam Nothing = []
vtparam (Just Standard) = [("Ebs.VolumeType", "standard")]
vtparam (Just (IO1 iops)) =
[ ("Ebs.VolumeType", "io1")
, ("Ebs.Iops", T.pack $ show iops)
]