{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} -- | Attaches an Amazon EBS volume to a running instance and exposes it to the -- instance with the specified device name. module Stratosphere.Resources.VolumeAttachment where import Control.Lens import Data.Aeson import Data.Aeson.Types import Data.Text import GHC.Generics import Stratosphere.Values -- | Full data type definition for VolumeAttachment. See 'volumeAttachment' -- for a more convenient constructor. data VolumeAttachment = VolumeAttachment { _volumeAttachmentDevice :: Val Text , _volumeAttachmentInstanceId :: Val Text , _volumeAttachmentVolumeId :: Val Text } deriving (Show, Generic) instance ToJSON VolumeAttachment where toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 17, omitNothingFields = True } instance FromJSON VolumeAttachment where parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 17, omitNothingFields = True } -- | Constructor for 'VolumeAttachment' containing required fields as -- arguments. volumeAttachment :: Val Text -- ^ 'vaDevice' -> Val Text -- ^ 'vaInstanceId' -> Val Text -- ^ 'vaVolumeId' -> VolumeAttachment volumeAttachment devicearg instanceIdarg volumeIdarg = VolumeAttachment { _volumeAttachmentDevice = devicearg , _volumeAttachmentInstanceId = instanceIdarg , _volumeAttachmentVolumeId = volumeIdarg } -- | How the device is exposed to the instance (e.g., /dev/sdh, or xvdh). vaDevice :: Lens' VolumeAttachment (Val Text) vaDevice = lens _volumeAttachmentDevice (\s a -> s { _volumeAttachmentDevice = a }) -- | The ID of the instance to which the volume attaches. This value can be a -- reference to an AWS::EC2::Instance resource, or it can be the physical ID -- of an existing EC2 instance. vaInstanceId :: Lens' VolumeAttachment (Val Text) vaInstanceId = lens _volumeAttachmentInstanceId (\s a -> s { _volumeAttachmentInstanceId = a }) -- | The ID of the Amazon EBS volume. The volume and instance must be within -- the same Availability Zone. This value can be a reference to an -- AWS::EC2::Volume resource, or it can be the volume ID of an existing Amazon -- EBS volume. vaVolumeId :: Lens' VolumeAttachment (Val Text) vaVolumeId = lens _volumeAttachmentVolumeId (\s a -> s { _volumeAttachmentVolumeId = a })