module Network.AWS.ElastiCache.DescribeReservedCacheNodes
(
DescribeReservedCacheNodes
, describeReservedCacheNodes
, drcnCacheNodeType
, drcnDuration
, drcnMarker
, drcnMaxRecords
, drcnOfferingType
, drcnProductDescription
, drcnReservedCacheNodeId
, drcnReservedCacheNodesOfferingId
, DescribeReservedCacheNodesResponse
, describeReservedCacheNodesResponse
, drcnrMarker
, drcnrReservedCacheNodes
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.ElastiCache.Types
import qualified GHC.Exts
data DescribeReservedCacheNodes = DescribeReservedCacheNodes
{ _drcnCacheNodeType :: Maybe Text
, _drcnDuration :: Maybe Text
, _drcnMarker :: Maybe Text
, _drcnMaxRecords :: Maybe Int
, _drcnOfferingType :: Maybe Text
, _drcnProductDescription :: Maybe Text
, _drcnReservedCacheNodeId :: Maybe Text
, _drcnReservedCacheNodesOfferingId :: Maybe Text
} deriving (Eq, Ord, Read, Show)
describeReservedCacheNodes :: DescribeReservedCacheNodes
describeReservedCacheNodes = DescribeReservedCacheNodes
{ _drcnReservedCacheNodeId = Nothing
, _drcnReservedCacheNodesOfferingId = Nothing
, _drcnCacheNodeType = Nothing
, _drcnDuration = Nothing
, _drcnProductDescription = Nothing
, _drcnOfferingType = Nothing
, _drcnMaxRecords = Nothing
, _drcnMarker = Nothing
}
drcnCacheNodeType :: Lens' DescribeReservedCacheNodes (Maybe Text)
drcnCacheNodeType =
lens _drcnCacheNodeType (\s a -> s { _drcnCacheNodeType = a })
drcnDuration :: Lens' DescribeReservedCacheNodes (Maybe Text)
drcnDuration = lens _drcnDuration (\s a -> s { _drcnDuration = a })
drcnMarker :: Lens' DescribeReservedCacheNodes (Maybe Text)
drcnMarker = lens _drcnMarker (\s a -> s { _drcnMarker = a })
drcnMaxRecords :: Lens' DescribeReservedCacheNodes (Maybe Int)
drcnMaxRecords = lens _drcnMaxRecords (\s a -> s { _drcnMaxRecords = a })
drcnOfferingType :: Lens' DescribeReservedCacheNodes (Maybe Text)
drcnOfferingType = lens _drcnOfferingType (\s a -> s { _drcnOfferingType = a })
drcnProductDescription :: Lens' DescribeReservedCacheNodes (Maybe Text)
drcnProductDescription =
lens _drcnProductDescription (\s a -> s { _drcnProductDescription = a })
drcnReservedCacheNodeId :: Lens' DescribeReservedCacheNodes (Maybe Text)
drcnReservedCacheNodeId =
lens _drcnReservedCacheNodeId (\s a -> s { _drcnReservedCacheNodeId = a })
drcnReservedCacheNodesOfferingId :: Lens' DescribeReservedCacheNodes (Maybe Text)
drcnReservedCacheNodesOfferingId =
lens _drcnReservedCacheNodesOfferingId
(\s a -> s { _drcnReservedCacheNodesOfferingId = a })
data DescribeReservedCacheNodesResponse = DescribeReservedCacheNodesResponse
{ _drcnrMarker :: Maybe Text
, _drcnrReservedCacheNodes :: List "member" ReservedCacheNode
} deriving (Eq, Read, Show)
describeReservedCacheNodesResponse :: DescribeReservedCacheNodesResponse
describeReservedCacheNodesResponse = DescribeReservedCacheNodesResponse
{ _drcnrMarker = Nothing
, _drcnrReservedCacheNodes = mempty
}
drcnrMarker :: Lens' DescribeReservedCacheNodesResponse (Maybe Text)
drcnrMarker = lens _drcnrMarker (\s a -> s { _drcnrMarker = a })
drcnrReservedCacheNodes :: Lens' DescribeReservedCacheNodesResponse [ReservedCacheNode]
drcnrReservedCacheNodes =
lens _drcnrReservedCacheNodes (\s a -> s { _drcnrReservedCacheNodes = a })
. _List
instance ToPath DescribeReservedCacheNodes where
toPath = const "/"
instance ToQuery DescribeReservedCacheNodes where
toQuery DescribeReservedCacheNodes{..} = mconcat
[ "CacheNodeType" =? _drcnCacheNodeType
, "Duration" =? _drcnDuration
, "Marker" =? _drcnMarker
, "MaxRecords" =? _drcnMaxRecords
, "OfferingType" =? _drcnOfferingType
, "ProductDescription" =? _drcnProductDescription
, "ReservedCacheNodeId" =? _drcnReservedCacheNodeId
, "ReservedCacheNodesOfferingId" =? _drcnReservedCacheNodesOfferingId
]
instance ToHeaders DescribeReservedCacheNodes
instance AWSRequest DescribeReservedCacheNodes where
type Sv DescribeReservedCacheNodes = ElastiCache
type Rs DescribeReservedCacheNodes = DescribeReservedCacheNodesResponse
request = post "DescribeReservedCacheNodes"
response = xmlResponse
instance FromXML DescribeReservedCacheNodesResponse where
parseXML = withElement "DescribeReservedCacheNodesResult" $ \x -> DescribeReservedCacheNodesResponse
<$> x .@? "Marker"
<*> x .@? "ReservedCacheNodes" .!@ mempty
instance AWSPager DescribeReservedCacheNodes where
page rq rs
| stop (rs ^. drcnrMarker) = Nothing
| otherwise = (\x -> rq & drcnMarker ?~ x)
<$> (rs ^. drcnrMarker)