{-# 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 -- 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 -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | 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 in the /Amazon Elastic Compute Cloud User Guide for Linux/. -- -- 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" `toQueryList` _dv2Filters , "maxResults" =? _dv2MaxResults , "nextToken" =? _dv2NextToken , "VolumeId" `toQueryList` _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" .!@ mempty