{-# 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) -- | 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. -- -- 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"