-- | 'Volume' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'vAttachments' @::@ ['VolumeAttachment']
--
-- * 'vAvailabilityZone' @::@ 'Text'
--
-- * 'vCreateTime' @::@ 'UTCTime'
--
-- * 'vEncrypted' @::@ 'Bool'
--
-- * 'vIops' @::@ 'Maybe' 'Int'
--
-- * 'vKmsKeyId' @::@ 'Maybe' 'Text'
--
-- * 'vSize' @::@ 'Int'
--
-- * 'vSnapshotId' @::@ 'Text'
--
-- * 'vState' @::@ 'VolumeState'
--
-- * 'vTags' @::@ ['Tag']
--
-- * 'vVolumeId' @::@ 'Text'
--
-- * 'vVolumeType' @::@ 'VolumeType'
--
volume :: Text -- ^ 'vVolumeId'
       -> Int -- ^ 'vSize'
       -> Text -- ^ 'vSnapshotId'
       -> Text -- ^ 'vAvailabilityZone'
       -> VolumeState -- ^ 'vState'
       -> UTCTime -- ^ 'vCreateTime'
       -> VolumeType -- ^ 'vVolumeType'
       -> Bool -- ^ 'vEncrypted'
       -> Volume
volume p1 p2 p3 p4 p5 p6 p7 p8 = Volume
    { _vVolumeId         = p1
    , _vSize             = p2
    , _vSnapshotId       = p3
    , _vAvailabilityZone = p4
    , _vState            = p5
    , _vCreateTime       = withIso _Time (const id) p6
    , _vVolumeType       = p7
    , _vEncrypted        = p8
    , _vAttachments      = mempty
    , _vTags             = mempty
    , _vIops             = Nothing
    , _vKmsKeyId         = Nothing
    }
volume :: Text -- ^ 'vVolumeId'
       -> Int -- ^ 'vSize'
       -> Text -- ^ 'vSnapshotId'
       -> Text -- ^ 'vAvailabilityZone'
       -> VolumeState -- ^ 'vState'
       -> UTCTime -- ^ 'vCreateTime'
       -> VolumeType -- ^ 'vVolumeType'
       -> Bool -- ^ 'vEncrypted'
       -> Volume
volume p1 p2 p3 p4 p5 p6 p7 p8 = Volume
    { _vVolumeId         = p1
    , _vSize             = p2
    , _vSnapshotId       = p3
    , _vAvailabilityZone = p4
    , _vState            = p5
    , _vCreateTime       = withIso _Time (const id) p6
    , _vVolumeType       = p7
    , _vEncrypted        = p8
    , _vAttachments      = mempty
    , _vTags             = mempty
    , _vIops             = Nothing
    , _vKmsKeyId         = Nothing
    }
volume p1 p2 p3 p4 p5 p6 p7 p8 = Volume
    { _vVolumeId         = p1
    , _vSize             = p2
    , _vSnapshotId       = p3
    , _vAvailabilityZone = p4
    , _vState            = p5
    , _vCreateTime       = withIso _Time (const id) p6
    , _vVolumeType       = p7
    , _vEncrypted        = p8
    , _vAttachments      = mempty
    , _vTags             = mempty
    , _vIops             = Nothing
    , _vKmsKeyId         = Nothing
    }