amazonka-ec2-0.0.0: gen/Network/AWS/EC2/DescribeVolumes.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-- Module : Network.AWS.EC2.DescribeVolumes
-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
-- License : This Source Code Form is subject to the terms of
-- the Mozilla Public License, v. 2.0.
-- A copy of the MPL can be found in the LICENSE file or
-- you can obtain it at http://mozilla.org/MPL/2.0/.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
-- | Describes the specified Amazon EBS volumes. If you are describing a long
-- list of volumes, you can paginate the output to make the list more
-- manageable. The MaxResults parameter sets the maximum number of results
-- returned in a single page. If the list of results exceeds your MaxResults
-- value, then that number of results is returned along with a NextToken value
-- that can be passed to a subsequent DescribeVolumes request to retrieve the
-- remaining results. For more information about Amazon EBS volumes, see
-- Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.
--
-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVolumes.html>
module Network.AWS.EC2.DescribeVolumes
(
-- * Request
DescribeVolumes
-- ** Request constructor
, describeVolumes
-- ** Request lenses
, dv2DryRun
, dv2Filters
, dv2MaxResults
, dv2NextToken
, dv2VolumeIds
-- * Response
, DescribeVolumesResponse
-- ** Response constructor
, describeVolumesResponse
-- ** Response lenses
, dvrNextToken
, dvrVolumes
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.EC2.Types
import qualified GHC.Exts
data DescribeVolumes = DescribeVolumes
{ _dv2DryRun :: Maybe Bool
, _dv2Filters :: List "Filter" Filter
, _dv2MaxResults :: Maybe Int
, _dv2NextToken :: Maybe Text
, _dv2VolumeIds :: List "VolumeId" Text
} deriving (Eq, Show)
-- | 'DescribeVolumes' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'dv2DryRun' @::@ 'Maybe' 'Bool'
--
-- * 'dv2Filters' @::@ ['Filter']
--
-- * 'dv2MaxResults' @::@ 'Maybe' 'Int'
--
-- * 'dv2NextToken' @::@ 'Maybe' 'Text'
--
-- * 'dv2VolumeIds' @::@ ['Text']
--
describeVolumes :: DescribeVolumes
describeVolumes = DescribeVolumes
{ _dv2DryRun = Nothing
, _dv2VolumeIds = mempty
, _dv2Filters = mempty
, _dv2NextToken = Nothing
, _dv2MaxResults = Nothing
}
dv2DryRun :: Lens' DescribeVolumes (Maybe Bool)
dv2DryRun = lens _dv2DryRun (\s a -> s { _dv2DryRun = a })
-- | One or more filters. attachment.attach-time - The time stamp when the
-- attachment initiated. attachment.delete-on-termination - Whether the
-- volume is deleted on instance termination. attachment.device - The device
-- name that is exposed to the instance (for example, /dev/sda1).
-- attachment.instance-id - The ID of the instance the volume is attached
-- to. attachment.status - The attachment state (attaching | attached |
-- detaching | detached). availability-zone - The Availability Zone in which
-- the volume was created. create-time - The time stamp when the volume was
-- created. encrypted - The encryption status of the volume. size - The size
-- of the volume, in GiB. snapshot-id - The snapshot from which the volume
-- was created. status - The status of the volume (creating | available |
-- in-use | deleting | deleted | error). tag:key=value - The key/value
-- combination of a tag assigned to the resource. tag-key - The key of a tag
-- assigned to the resource. This filter is independent of the tag-value
-- filter. For example, if you use both the filter "tag-key=Purpose" and the
-- filter "tag-value=X", you get any resources assigned both the tag key
-- Purpose (regardless of what the tag's value is), and the tag value X
-- (regardless of what the tag's key is). If you want to list only resources
-- where Purpose is X, see the tag:key=value filter. tag-value - The value
-- of a tag assigned to the resource. This filter is independent of the
-- tag-key filter. volume-id - The volume ID. volume-type - The Amazon EBS
-- volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for
-- Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.
dv2Filters :: Lens' DescribeVolumes [Filter]
dv2Filters = lens _dv2Filters (\s a -> s { _dv2Filters = a }) . _List
-- | The maximum number of volume results returned by DescribeVolumes in
-- paginated output. When this parameter is used, DescribeVolumes only
-- returns MaxResults results in a single page along with a NextToken
-- response element. The remaining results of the initial request can be
-- seen by sending another DescribeVolumes request with the returned
-- NextToken value. This value can be between 5 and 1000; if MaxResults is
-- given a value larger than 1000, only 1000 results are returned. If this
-- parameter is not used, then DescribeVolumes returns all results.
dv2MaxResults :: Lens' DescribeVolumes (Maybe Int)
dv2MaxResults = lens _dv2MaxResults (\s a -> s { _dv2MaxResults = a })
-- | The NextToken value returned from a previous paginated DescribeVolumes
-- request where MaxResults was used and the results exceeded the value of
-- that parameter. Pagination continues from the end of the previous results
-- that returned the NextToken value. This value is null when there are no
-- more results to return.
dv2NextToken :: Lens' DescribeVolumes (Maybe Text)
dv2NextToken = lens _dv2NextToken (\s a -> s { _dv2NextToken = a })
-- | One or more volume IDs.
dv2VolumeIds :: Lens' DescribeVolumes [Text]
dv2VolumeIds = lens _dv2VolumeIds (\s a -> s { _dv2VolumeIds = a }) . _List
data DescribeVolumesResponse = DescribeVolumesResponse
{ _dvrNextToken :: Maybe Text
, _dvrVolumes :: List "item" Volume
} deriving (Eq, Show)
-- | 'DescribeVolumesResponse' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'dvrNextToken' @::@ 'Maybe' 'Text'
--
-- * 'dvrVolumes' @::@ ['Volume']
--
describeVolumesResponse :: DescribeVolumesResponse
describeVolumesResponse = DescribeVolumesResponse
{ _dvrVolumes = mempty
, _dvrNextToken = Nothing
}
-- | The NextToken value to include in a future DescribeVolumes request. When
-- the results of a DescribeVolumes request exceed MaxResults, this value
-- can be used to retrieve the next page of results. This value is null when
-- there are no more results to return.
dvrNextToken :: Lens' DescribeVolumesResponse (Maybe Text)
dvrNextToken = lens _dvrNextToken (\s a -> s { _dvrNextToken = a })
dvrVolumes :: Lens' DescribeVolumesResponse [Volume]
dvrVolumes = lens _dvrVolumes (\s a -> s { _dvrVolumes = a }) . _List
instance ToPath DescribeVolumes where
toPath = const "/"
instance ToQuery DescribeVolumes where
toQuery DescribeVolumes{..} = mconcat
[ "dryRun" =? _dv2DryRun
, "Filter" =? _dv2Filters
, "maxResults" =? _dv2MaxResults
, "nextToken" =? _dv2NextToken
, "VolumeId" =? _dv2VolumeIds
]
instance ToHeaders DescribeVolumes
instance AWSRequest DescribeVolumes where
type Sv DescribeVolumes = EC2
type Rs DescribeVolumes = DescribeVolumesResponse
request = post "DescribeVolumes"
response = xmlResponse
instance FromXML DescribeVolumesResponse where
parseXML x = DescribeVolumesResponse
<$> x .@? "nextToken"
<*> x .@ "volumeSet"