{-# 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.ElastiCache.DescribeCacheEngineVersions -- 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) -- | The /DescribeCacheEngineVersions/ operation returns a list of the available -- cache engines and their versions. -- -- module Network.AWS.ElastiCache.DescribeCacheEngineVersions ( -- * Request DescribeCacheEngineVersions -- ** Request constructor , describeCacheEngineVersions -- ** Request lenses , dcevCacheParameterGroupFamily , dcevDefaultOnly , dcevEngine , dcevEngineVersion , dcevMarker , dcevMaxRecords -- * Response , DescribeCacheEngineVersionsResponse -- ** Response constructor , describeCacheEngineVersionsResponse -- ** Response lenses , dcevrCacheEngineVersions , dcevrMarker ) where import Network.AWS.Prelude import Network.AWS.Request.Query import Network.AWS.ElastiCache.Types import qualified GHC.Exts data DescribeCacheEngineVersions = DescribeCacheEngineVersions { _dcevCacheParameterGroupFamily :: Maybe Text , _dcevDefaultOnly :: Maybe Bool , _dcevEngine :: Maybe Text , _dcevEngineVersion :: Maybe Text , _dcevMarker :: Maybe Text , _dcevMaxRecords :: Maybe Int } deriving (Eq, Ord, Show) -- | 'DescribeCacheEngineVersions' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'dcevCacheParameterGroupFamily' @::@ 'Maybe' 'Text' -- -- * 'dcevDefaultOnly' @::@ 'Maybe' 'Bool' -- -- * 'dcevEngine' @::@ 'Maybe' 'Text' -- -- * 'dcevEngineVersion' @::@ 'Maybe' 'Text' -- -- * 'dcevMarker' @::@ 'Maybe' 'Text' -- -- * 'dcevMaxRecords' @::@ 'Maybe' 'Int' -- describeCacheEngineVersions :: DescribeCacheEngineVersions describeCacheEngineVersions = DescribeCacheEngineVersions { _dcevEngine = Nothing , _dcevEngineVersion = Nothing , _dcevCacheParameterGroupFamily = Nothing , _dcevMaxRecords = Nothing , _dcevMarker = Nothing , _dcevDefaultOnly = Nothing } -- | The name of a specific cache parameter group family to return details for. -- -- Constraints: -- -- Must be 1 to 255 alphanumeric characters First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens -- dcevCacheParameterGroupFamily :: Lens' DescribeCacheEngineVersions (Maybe Text) dcevCacheParameterGroupFamily = lens _dcevCacheParameterGroupFamily (\s a -> s { _dcevCacheParameterGroupFamily = a }) -- | If /true/, specifies that only the default version of the specified engine or -- engine and major version combination is to be returned. dcevDefaultOnly :: Lens' DescribeCacheEngineVersions (Maybe Bool) dcevDefaultOnly = lens _dcevDefaultOnly (\s a -> s { _dcevDefaultOnly = a }) -- | The cache engine to return. Valid values: 'memcached' | 'redis' dcevEngine :: Lens' DescribeCacheEngineVersions (Maybe Text) dcevEngine = lens _dcevEngine (\s a -> s { _dcevEngine = a }) -- | The cache engine version to return. -- -- Example: '1.4.14' dcevEngineVersion :: Lens' DescribeCacheEngineVersions (Maybe Text) dcevEngineVersion = lens _dcevEngineVersion (\s a -> s { _dcevEngineVersion = a }) -- | An optional marker returned from a prior request. Use this marker for -- pagination of results from this operation. If this parameter is specified, -- the response includes only records beyond the marker, up to the value -- specified by /MaxRecords/. dcevMarker :: Lens' DescribeCacheEngineVersions (Maybe Text) dcevMarker = lens _dcevMarker (\s a -> s { _dcevMarker = a }) -- | The maximum number of records to include in the response. If more records -- exist than the specified 'MaxRecords' value, a marker is included in the -- response so that the remaining results can be retrieved. -- -- Default: 100 -- -- Constraints: minimum 20; maximum 100. dcevMaxRecords :: Lens' DescribeCacheEngineVersions (Maybe Int) dcevMaxRecords = lens _dcevMaxRecords (\s a -> s { _dcevMaxRecords = a }) data DescribeCacheEngineVersionsResponse = DescribeCacheEngineVersionsResponse { _dcevrCacheEngineVersions :: List "CacheEngineVersion" CacheEngineVersion , _dcevrMarker :: Maybe Text } deriving (Eq, Show) -- | 'DescribeCacheEngineVersionsResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'dcevrCacheEngineVersions' @::@ ['CacheEngineVersion'] -- -- * 'dcevrMarker' @::@ 'Maybe' 'Text' -- describeCacheEngineVersionsResponse :: DescribeCacheEngineVersionsResponse describeCacheEngineVersionsResponse = DescribeCacheEngineVersionsResponse { _dcevrMarker = Nothing , _dcevrCacheEngineVersions = mempty } -- | A list of cache engine version details. Each element in the list contains -- detailed information about one cache engine version. dcevrCacheEngineVersions :: Lens' DescribeCacheEngineVersionsResponse [CacheEngineVersion] dcevrCacheEngineVersions = lens _dcevrCacheEngineVersions (\s a -> s { _dcevrCacheEngineVersions = a }) . _List -- | Provides an identifier to allow retrieval of paginated results. dcevrMarker :: Lens' DescribeCacheEngineVersionsResponse (Maybe Text) dcevrMarker = lens _dcevrMarker (\s a -> s { _dcevrMarker = a }) instance ToPath DescribeCacheEngineVersions where toPath = const "/" instance ToQuery DescribeCacheEngineVersions where toQuery DescribeCacheEngineVersions{..} = mconcat [ "CacheParameterGroupFamily" =? _dcevCacheParameterGroupFamily , "DefaultOnly" =? _dcevDefaultOnly , "Engine" =? _dcevEngine , "EngineVersion" =? _dcevEngineVersion , "Marker" =? _dcevMarker , "MaxRecords" =? _dcevMaxRecords ] instance ToHeaders DescribeCacheEngineVersions instance AWSRequest DescribeCacheEngineVersions where type Sv DescribeCacheEngineVersions = ElastiCache type Rs DescribeCacheEngineVersions = DescribeCacheEngineVersionsResponse request = post "DescribeCacheEngineVersions" response = xmlResponse instance FromXML DescribeCacheEngineVersionsResponse where parseXML = withElement "DescribeCacheEngineVersionsResult" $ \x -> DescribeCacheEngineVersionsResponse <$> x .@ "CacheEngineVersions" <*> x .@? "Marker" instance AWSPager DescribeCacheEngineVersions where page rq rs | stop (rq ^. dcevMarker) = Nothing | otherwise = (\x -> rq & dcevMarker ?~ x) <$> (rs ^. dcevrMarker)