{-# 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.StorageGateway.DescribeVTLDevices -- 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. -- | Returns a description of virtual tape library (VTL) devices for the specified -- gateway. In the response, AWS Storage Gateway returns VTL device information. -- -- The list of VTL devices must be from one gateway. -- -- module Network.AWS.StorageGateway.DescribeVTLDevices ( -- * Request DescribeVTLDevices -- ** Request constructor , describeVTLDevices -- ** Request lenses , dvtldGatewayARN , dvtldLimit , dvtldMarker , dvtldVTLDeviceARNs -- * Response , DescribeVTLDevicesResponse -- ** Response constructor , describeVTLDevicesResponse -- ** Response lenses , dvtldrGatewayARN , dvtldrMarker , dvtldrVTLDevices ) where import Network.AWS.Prelude import Network.AWS.Request.JSON import Network.AWS.StorageGateway.Types import qualified GHC.Exts data DescribeVTLDevices = DescribeVTLDevices { _dvtldGatewayARN :: Text , _dvtldLimit :: Maybe Nat , _dvtldMarker :: Maybe Text , _dvtldVTLDeviceARNs :: List "VTLDeviceARNs" Text } deriving (Eq, Ord, Read, Show) -- | 'DescribeVTLDevices' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'dvtldGatewayARN' @::@ 'Text' -- -- * 'dvtldLimit' @::@ 'Maybe' 'Natural' -- -- * 'dvtldMarker' @::@ 'Maybe' 'Text' -- -- * 'dvtldVTLDeviceARNs' @::@ ['Text'] -- describeVTLDevices :: Text -- ^ 'dvtldGatewayARN' -> DescribeVTLDevices describeVTLDevices p1 = DescribeVTLDevices { _dvtldGatewayARN = p1 , _dvtldVTLDeviceARNs = mempty , _dvtldMarker = Nothing , _dvtldLimit = Nothing } dvtldGatewayARN :: Lens' DescribeVTLDevices Text dvtldGatewayARN = lens _dvtldGatewayARN (\s a -> s { _dvtldGatewayARN = a }) -- | Specifies that the number of VTL devices described be limited to the -- specified number. dvtldLimit :: Lens' DescribeVTLDevices (Maybe Natural) dvtldLimit = lens _dvtldLimit (\s a -> s { _dvtldLimit = a }) . mapping _Nat -- | An opaque string that indicates the position at which to begin describing the -- VTL devices. dvtldMarker :: Lens' DescribeVTLDevices (Maybe Text) dvtldMarker = lens _dvtldMarker (\s a -> s { _dvtldMarker = a }) -- | An array of strings, where each string represents the Amazon Resource Name -- (ARN) of a VTL device. -- -- All of the specified VTL devices must be from the same gateway. If no VTL -- devices are specified, the result will contain all devices on the specified -- gateway. dvtldVTLDeviceARNs :: Lens' DescribeVTLDevices [Text] dvtldVTLDeviceARNs = lens _dvtldVTLDeviceARNs (\s a -> s { _dvtldVTLDeviceARNs = a }) . _List data DescribeVTLDevicesResponse = DescribeVTLDevicesResponse { _dvtldrGatewayARN :: Maybe Text , _dvtldrMarker :: Maybe Text , _dvtldrVTLDevices :: List "VTLDevices" VTLDevice } deriving (Eq, Read, Show) -- | 'DescribeVTLDevicesResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'dvtldrGatewayARN' @::@ 'Maybe' 'Text' -- -- * 'dvtldrMarker' @::@ 'Maybe' 'Text' -- -- * 'dvtldrVTLDevices' @::@ ['VTLDevice'] -- describeVTLDevicesResponse :: DescribeVTLDevicesResponse describeVTLDevicesResponse = DescribeVTLDevicesResponse { _dvtldrGatewayARN = Nothing , _dvtldrVTLDevices = mempty , _dvtldrMarker = Nothing } dvtldrGatewayARN :: Lens' DescribeVTLDevicesResponse (Maybe Text) dvtldrGatewayARN = lens _dvtldrGatewayARN (\s a -> s { _dvtldrGatewayARN = a }) -- | An opaque string that indicates the position at which the VTL devices that -- were fetched for description ended. Use the marker in your next request to -- fetch the next set of VTL devices in the list. If there are no more VTL -- devices to describe, this field does not appear in the response. dvtldrMarker :: Lens' DescribeVTLDevicesResponse (Maybe Text) dvtldrMarker = lens _dvtldrMarker (\s a -> s { _dvtldrMarker = a }) -- | An array of VTL device objects composed of the Amazon Resource Name(ARN) of -- the VTL devices. dvtldrVTLDevices :: Lens' DescribeVTLDevicesResponse [VTLDevice] dvtldrVTLDevices = lens _dvtldrVTLDevices (\s a -> s { _dvtldrVTLDevices = a }) . _List instance ToPath DescribeVTLDevices where toPath = const "/" instance ToQuery DescribeVTLDevices where toQuery = const mempty instance ToHeaders DescribeVTLDevices instance ToJSON DescribeVTLDevices where toJSON DescribeVTLDevices{..} = object [ "GatewayARN" .= _dvtldGatewayARN , "VTLDeviceARNs" .= _dvtldVTLDeviceARNs , "Marker" .= _dvtldMarker , "Limit" .= _dvtldLimit ] instance AWSRequest DescribeVTLDevices where type Sv DescribeVTLDevices = StorageGateway type Rs DescribeVTLDevices = DescribeVTLDevicesResponse request = post "DescribeVTLDevices" response = jsonResponse instance FromJSON DescribeVTLDevicesResponse where parseJSON = withObject "DescribeVTLDevicesResponse" $ \o -> DescribeVTLDevicesResponse <$> o .:? "GatewayARN" <*> o .:? "Marker" <*> o .:? "VTLDevices" .!= mempty instance AWSPager DescribeVTLDevices where page rq rs | stop (rs ^. dvtldrMarker) = Nothing | otherwise = (\x -> rq & dvtldMarker ?~ x) <$> (rs ^. dvtldrMarker)