amazonka-rds-0.2.3: gen/Network/AWS/RDS/DescribeReservedDBInstancesOfferings.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.RDS.DescribeReservedDBInstancesOfferings
-- 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)
--
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- | Lists available reserved DB instance offerings.
--
-- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeReservedDBInstancesOfferings.html>
module Network.AWS.RDS.DescribeReservedDBInstancesOfferings
(
-- * Request
DescribeReservedDBInstancesOfferings
-- ** Request constructor
, describeReservedDBInstancesOfferings
-- ** Request lenses
, drdbioDBInstanceClass
, drdbioDuration
, drdbioFilters
, drdbioMarker
, drdbioMaxRecords
, drdbioMultiAZ
, drdbioOfferingType
, drdbioProductDescription
, drdbioReservedDBInstancesOfferingId
-- * Response
, DescribeReservedDBInstancesOfferingsResponse
-- ** Response constructor
, describeReservedDBInstancesOfferingsResponse
-- ** Response lenses
, drdbiorMarker
, drdbiorReservedDBInstancesOfferings
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.RDS.Types
import qualified GHC.Exts
data DescribeReservedDBInstancesOfferings = DescribeReservedDBInstancesOfferings
{ _drdbioDBInstanceClass :: Maybe Text
, _drdbioDuration :: Maybe Text
, _drdbioFilters :: List "member" Filter
, _drdbioMarker :: Maybe Text
, _drdbioMaxRecords :: Maybe Int
, _drdbioMultiAZ :: Maybe Bool
, _drdbioOfferingType :: Maybe Text
, _drdbioProductDescription :: Maybe Text
, _drdbioReservedDBInstancesOfferingId :: Maybe Text
} deriving (Eq, Read, Show)
-- | 'DescribeReservedDBInstancesOfferings' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'drdbioDBInstanceClass' @::@ 'Maybe' 'Text'
--
-- * 'drdbioDuration' @::@ 'Maybe' 'Text'
--
-- * 'drdbioFilters' @::@ ['Filter']
--
-- * 'drdbioMarker' @::@ 'Maybe' 'Text'
--
-- * 'drdbioMaxRecords' @::@ 'Maybe' 'Int'
--
-- * 'drdbioMultiAZ' @::@ 'Maybe' 'Bool'
--
-- * 'drdbioOfferingType' @::@ 'Maybe' 'Text'
--
-- * 'drdbioProductDescription' @::@ 'Maybe' 'Text'
--
-- * 'drdbioReservedDBInstancesOfferingId' @::@ 'Maybe' 'Text'
--
describeReservedDBInstancesOfferings :: DescribeReservedDBInstancesOfferings
describeReservedDBInstancesOfferings = DescribeReservedDBInstancesOfferings
{ _drdbioReservedDBInstancesOfferingId = Nothing
, _drdbioDBInstanceClass = Nothing
, _drdbioDuration = Nothing
, _drdbioProductDescription = Nothing
, _drdbioOfferingType = Nothing
, _drdbioMultiAZ = Nothing
, _drdbioFilters = mempty
, _drdbioMaxRecords = Nothing
, _drdbioMarker = Nothing
}
-- | The DB instance class filter value. Specify this parameter to show only the
-- available offerings matching the specified DB instance class.
drdbioDBInstanceClass :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
drdbioDBInstanceClass =
lens _drdbioDBInstanceClass (\s a -> s { _drdbioDBInstanceClass = a })
-- | Duration filter value, specified in years or seconds. Specify this parameter
-- to show only reservations for this duration.
--
-- Valid Values: '1 | 3 | 31536000 | 94608000'
drdbioDuration :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
drdbioDuration = lens _drdbioDuration (\s a -> s { _drdbioDuration = a })
-- | This parameter is not currently supported.
drdbioFilters :: Lens' DescribeReservedDBInstancesOfferings [Filter]
drdbioFilters = lens _drdbioFilters (\s a -> s { _drdbioFilters = a }) . _List
-- | An optional pagination token provided by a previous request. If this
-- parameter is specified, the response includes only records beyond the marker,
-- up to the value specified by 'MaxRecords'.
drdbioMarker :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
drdbioMarker = lens _drdbioMarker (\s a -> s { _drdbioMarker = a })
-- | The maximum number of records to include in the response. If more than the 'MaxRecords' value is available, a pagination token called a marker is included in the
-- response so that the following results can be retrieved.
--
-- Default: 100
--
-- Constraints: minimum 20, maximum 100
drdbioMaxRecords :: Lens' DescribeReservedDBInstancesOfferings (Maybe Int)
drdbioMaxRecords = lens _drdbioMaxRecords (\s a -> s { _drdbioMaxRecords = a })
-- | The Multi-AZ filter value. Specify this parameter to show only the available
-- offerings matching the specified Multi-AZ parameter.
drdbioMultiAZ :: Lens' DescribeReservedDBInstancesOfferings (Maybe Bool)
drdbioMultiAZ = lens _drdbioMultiAZ (\s a -> s { _drdbioMultiAZ = a })
-- | The offering type filter value. Specify this parameter to show only the
-- available offerings matching the specified offering type.
--
-- Valid Values: '"Light Utilization" | "Medium Utilization" | "HeavyUtilization" '
drdbioOfferingType :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
drdbioOfferingType =
lens _drdbioOfferingType (\s a -> s { _drdbioOfferingType = a })
-- | Product description filter value. Specify this parameter to show only the
-- available offerings matching the specified product description.
drdbioProductDescription :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
drdbioProductDescription =
lens _drdbioProductDescription
(\s a -> s { _drdbioProductDescription = a })
-- | The offering identifier filter value. Specify this parameter to show only
-- the available offering that matches the specified reservation identifier.
--
-- Example: '438012d3-4052-4cc7-b2e3-8d3372e0e706'
drdbioReservedDBInstancesOfferingId :: Lens' DescribeReservedDBInstancesOfferings (Maybe Text)
drdbioReservedDBInstancesOfferingId =
lens _drdbioReservedDBInstancesOfferingId
(\s a -> s { _drdbioReservedDBInstancesOfferingId = a })
data DescribeReservedDBInstancesOfferingsResponse = DescribeReservedDBInstancesOfferingsResponse
{ _drdbiorMarker :: Maybe Text
, _drdbiorReservedDBInstancesOfferings :: List "member" ReservedDBInstancesOffering
} deriving (Eq, Read, Show)
-- | 'DescribeReservedDBInstancesOfferingsResponse' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'drdbiorMarker' @::@ 'Maybe' 'Text'
--
-- * 'drdbiorReservedDBInstancesOfferings' @::@ ['ReservedDBInstancesOffering']
--
describeReservedDBInstancesOfferingsResponse :: DescribeReservedDBInstancesOfferingsResponse
describeReservedDBInstancesOfferingsResponse = DescribeReservedDBInstancesOfferingsResponse
{ _drdbiorMarker = Nothing
, _drdbiorReservedDBInstancesOfferings = mempty
}
-- | An optional pagination token provided by a previous request. If this
-- parameter is specified, the response includes only records beyond the marker,
-- up to the value specified by 'MaxRecords'.
drdbiorMarker :: Lens' DescribeReservedDBInstancesOfferingsResponse (Maybe Text)
drdbiorMarker = lens _drdbiorMarker (\s a -> s { _drdbiorMarker = a })
-- | A list of reserved DB instance offerings.
drdbiorReservedDBInstancesOfferings :: Lens' DescribeReservedDBInstancesOfferingsResponse [ReservedDBInstancesOffering]
drdbiorReservedDBInstancesOfferings =
lens _drdbiorReservedDBInstancesOfferings
(\s a -> s { _drdbiorReservedDBInstancesOfferings = a })
. _List
instance ToPath DescribeReservedDBInstancesOfferings where
toPath = const "/"
instance ToQuery DescribeReservedDBInstancesOfferings where
toQuery DescribeReservedDBInstancesOfferings{..} = mconcat
[ "DBInstanceClass" =? _drdbioDBInstanceClass
, "Duration" =? _drdbioDuration
, "Filters" =? _drdbioFilters
, "Marker" =? _drdbioMarker
, "MaxRecords" =? _drdbioMaxRecords
, "MultiAZ" =? _drdbioMultiAZ
, "OfferingType" =? _drdbioOfferingType
, "ProductDescription" =? _drdbioProductDescription
, "ReservedDBInstancesOfferingId" =? _drdbioReservedDBInstancesOfferingId
]
instance ToHeaders DescribeReservedDBInstancesOfferings
instance AWSRequest DescribeReservedDBInstancesOfferings where
type Sv DescribeReservedDBInstancesOfferings = RDS
type Rs DescribeReservedDBInstancesOfferings = DescribeReservedDBInstancesOfferingsResponse
request = post "DescribeReservedDBInstancesOfferings"
response = xmlResponse
instance FromXML DescribeReservedDBInstancesOfferingsResponse where
parseXML = withElement "DescribeReservedDBInstancesOfferingsResult" $ \x -> DescribeReservedDBInstancesOfferingsResponse
<$> x .@? "Marker"
<*> x .@? "ReservedDBInstancesOfferings" .!@ mempty
instance AWSPager DescribeReservedDBInstancesOfferings where
page rq rs
| stop (rs ^. drdbiorMarker) = Nothing
| otherwise = (\x -> rq & drdbioMarker ?~ x)
<$> (rs ^. drdbiorMarker)