packages feed

amazonka-elasticache (empty) → 0.0.0

raw patch · 40 files changed

+9222/−0 lines, 40 filesdep +amazonka-coredep +basesetup-changed

Dependencies added: amazonka-core, base

Files

+ LICENSE view
@@ -0,0 +1,373 @@+Mozilla Public License Version 2.0+==================================++1. Definitions+--------------++1.1. "Contributor"+    means each individual or legal entity that creates, contributes to+    the creation of, or owns Covered Software.++1.2. "Contributor Version"+    means the combination of the Contributions of others (if any) used+    by a Contributor and that particular Contributor's Contribution.++1.3. "Contribution"+    means Covered Software of a particular Contributor.++1.4. "Covered Software"+    means Source Code Form to which the initial Contributor has attached+    the notice in Exhibit A, the Executable Form of such Source Code+    Form, and Modifications of such Source Code Form, in each case+    including portions thereof.++1.5. "Incompatible With Secondary Licenses"+    means++    (a) that the initial Contributor has attached the notice described+        in Exhibit B to the Covered Software; or++    (b) that the Covered Software was made available under the terms of+        version 1.1 or earlier of the License, but not also under the+        terms of a Secondary License.++1.6. "Executable Form"+    means any form of the work other than Source Code Form.++1.7. "Larger Work"+    means a work that combines Covered Software with other material, in+    a separate file or files, that is not Covered Software.++1.8. "License"+    means this document.++1.9. "Licensable"+    means having the right to grant, to the maximum extent possible,+    whether at the time of the initial grant or subsequently, any and+    all of the rights conveyed by this License.++1.10. "Modifications"+    means any of the following:++    (a) any file in Source Code Form that results from an addition to,+        deletion from, or modification of the contents of Covered+        Software; or++    (b) any new file in Source Code Form that contains any Covered+        Software.++1.11. "Patent Claims" of a Contributor+    means any patent claim(s), including without limitation, method,+    process, and apparatus claims, in any patent Licensable by such+    Contributor that would be infringed, but for the grant of the+    License, by the making, using, selling, offering for sale, having+    made, import, or transfer of either its Contributions or its+    Contributor Version.++1.12. "Secondary License"+    means either the GNU General Public License, Version 2.0, the GNU+    Lesser General Public License, Version 2.1, the GNU Affero General+    Public License, Version 3.0, or any later versions of those+    licenses.++1.13. "Source Code Form"+    means the form of the work preferred for making modifications.++1.14. "You" (or "Your")+    means an individual or a legal entity exercising rights under this+    License. For legal entities, "You" includes any entity that+    controls, is controlled by, or is under common control with You. For+    purposes of this definition, "control" means (a) the power, direct+    or indirect, to cause the direction or management of such entity,+    whether by contract or otherwise, or (b) ownership of more than+    fifty percent (50%) of the outstanding shares or beneficial+    ownership of such entity.++2. License Grants and Conditions+--------------------------------++2.1. Grants++Each Contributor hereby grants You a world-wide, royalty-free,+non-exclusive license:++(a) under intellectual property rights (other than patent or trademark)+    Licensable by such Contributor to use, reproduce, make available,+    modify, display, perform, distribute, and otherwise exploit its+    Contributions, either on an unmodified basis, with Modifications, or+    as part of a Larger Work; and++(b) under Patent Claims of such Contributor to make, use, sell, offer+    for sale, have made, import, and otherwise transfer either its+    Contributions or its Contributor Version.++2.2. Effective Date++The licenses granted in Section 2.1 with respect to any Contribution+become effective for each Contribution on the date the Contributor first+distributes such Contribution.++2.3. Limitations on Grant Scope++The licenses granted in this Section 2 are the only rights granted under+this License. No additional rights or licenses will be implied from the+distribution or licensing of Covered Software under this License.+Notwithstanding Section 2.1(b) above, no patent license is granted by a+Contributor:++(a) for any code that a Contributor has removed from Covered Software;+    or++(b) for infringements caused by: (i) Your and any other third party's+    modifications of Covered Software, or (ii) the combination of its+    Contributions with other software (except as part of its Contributor+    Version); or++(c) under Patent Claims infringed by Covered Software in the absence of+    its Contributions.++This License does not grant any rights in the trademarks, service marks,+or logos of any Contributor (except as may be necessary to comply with+the notice requirements in Section 3.4).++2.4. Subsequent Licenses++No Contributor makes additional grants as a result of Your choice to+distribute the Covered Software under a subsequent version of this+License (see Section 10.2) or under the terms of a Secondary License (if+permitted under the terms of Section 3.3).++2.5. Representation++Each Contributor represents that the Contributor believes its+Contributions are its original creation(s) or it has sufficient rights+to grant the rights to its Contributions conveyed by this License.++2.6. Fair Use++This License is not intended to limit any rights You have under+applicable copyright doctrines of fair use, fair dealing, or other+equivalents.++2.7. Conditions++Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted+in Section 2.1.++3. Responsibilities+-------------------++3.1. Distribution of Source Form++All distribution of Covered Software in Source Code Form, including any+Modifications that You create or to which You contribute, must be under+the terms of this License. You must inform recipients that the Source+Code Form of the Covered Software is governed by the terms of this+License, and how they can obtain a copy of this License. You may not+attempt to alter or restrict the recipients' rights in the Source Code+Form.++3.2. Distribution of Executable Form++If You distribute Covered Software in Executable Form then:++(a) such Covered Software must also be made available in Source Code+    Form, as described in Section 3.1, and You must inform recipients of+    the Executable Form how they can obtain a copy of such Source Code+    Form by reasonable means in a timely manner, at a charge no more+    than the cost of distribution to the recipient; and++(b) You may distribute such Executable Form under the terms of this+    License, or sublicense it under different terms, provided that the+    license for the Executable Form does not attempt to limit or alter+    the recipients' rights in the Source Code Form under this License.++3.3. Distribution of a Larger Work++You may create and distribute a Larger Work under terms of Your choice,+provided that You also comply with the requirements of this License for+the Covered Software. If the Larger Work is a combination of Covered+Software with a work governed by one or more Secondary Licenses, and the+Covered Software is not Incompatible With Secondary Licenses, this+License permits You to additionally distribute such Covered Software+under the terms of such Secondary License(s), so that the recipient of+the Larger Work may, at their option, further distribute the Covered+Software under the terms of either this License or such Secondary+License(s).++3.4. Notices++You may not remove or alter the substance of any license notices+(including copyright notices, patent notices, disclaimers of warranty,+or limitations of liability) contained within the Source Code Form of+the Covered Software, except that You may alter any license notices to+the extent required to remedy known factual inaccuracies.++3.5. Application of Additional Terms++You may choose to offer, and to charge a fee for, warranty, support,+indemnity or liability obligations to one or more recipients of Covered+Software. However, You may do so only on Your own behalf, and not on+behalf of any Contributor. You must make it absolutely clear that any+such warranty, support, indemnity, or liability obligation is offered by+You alone, and You hereby agree to indemnify every Contributor for any+liability incurred by such Contributor as a result of warranty, support,+indemnity or liability terms You offer. You may include additional+disclaimers of warranty and limitations of liability specific to any+jurisdiction.++4. Inability to Comply Due to Statute or Regulation+---------------------------------------------------++If it is impossible for You to comply with any of the terms of this+License with respect to some or all of the Covered Software due to+statute, judicial order, or regulation then You must: (a) comply with+the terms of this License to the maximum extent possible; and (b)+describe the limitations and the code they affect. Such description must+be placed in a text file included with all distributions of the Covered+Software under this License. Except to the extent prohibited by statute+or regulation, such description must be sufficiently detailed for a+recipient of ordinary skill to be able to understand it.++5. Termination+--------------++5.1. The rights granted under this License will terminate automatically+if You fail to comply with any of its terms. However, if You become+compliant, then the rights granted under this License from a particular+Contributor are reinstated (a) provisionally, unless and until such+Contributor explicitly and finally terminates Your grants, and (b) on an+ongoing basis, if such Contributor fails to notify You of the+non-compliance by some reasonable means prior to 60 days after You have+come back into compliance. Moreover, Your grants from a particular+Contributor are reinstated on an ongoing basis if such Contributor+notifies You of the non-compliance by some reasonable means, this is the+first time You have received notice of non-compliance with this License+from such Contributor, and You become compliant prior to 30 days after+Your receipt of the notice.++5.2. If You initiate litigation against any entity by asserting a patent+infringement claim (excluding declaratory judgment actions,+counter-claims, and cross-claims) alleging that a Contributor Version+directly or indirectly infringes any patent, then the rights granted to+You by any and all Contributors for the Covered Software under Section+2.1 of this License shall terminate.++5.3. In the event of termination under Sections 5.1 or 5.2 above, all+end user license agreements (excluding distributors and resellers) which+have been validly granted by You or Your distributors under this License+prior to termination shall survive termination.++************************************************************************+*                                                                      *+*  6. Disclaimer of Warranty                                           *+*  -------------------------                                           *+*                                                                      *+*  Covered Software is provided under this License on an "as is"       *+*  basis, without warranty of any kind, either expressed, implied, or  *+*  statutory, including, without limitation, warranties that the       *+*  Covered Software is free of defects, merchantable, fit for a        *+*  particular purpose or non-infringing. The entire risk as to the     *+*  quality and performance of the Covered Software is with You.        *+*  Should any Covered Software prove defective in any respect, You     *+*  (not any Contributor) assume the cost of any necessary servicing,   *+*  repair, or correction. This disclaimer of warranty constitutes an   *+*  essential part of this License. No use of any Covered Software is   *+*  authorized under this License except under this disclaimer.         *+*                                                                      *+************************************************************************++************************************************************************+*                                                                      *+*  7. Limitation of Liability                                          *+*  --------------------------                                          *+*                                                                      *+*  Under no circumstances and under no legal theory, whether tort      *+*  (including negligence), contract, or otherwise, shall any           *+*  Contributor, or anyone who distributes Covered Software as          *+*  permitted above, be liable to You for any direct, indirect,         *+*  special, incidental, or consequential damages of any character      *+*  including, without limitation, damages for lost profits, loss of    *+*  goodwill, work stoppage, computer failure or malfunction, or any    *+*  and all other commercial damages or losses, even if such party      *+*  shall have been informed of the possibility of such damages. This   *+*  limitation of liability shall not apply to liability for death or   *+*  personal injury resulting from such party's negligence to the       *+*  extent applicable law prohibits such limitation. Some               *+*  jurisdictions do not allow the exclusion or limitation of           *+*  incidental or consequential damages, so this exclusion and          *+*  limitation may not apply to You.                                    *+*                                                                      *+************************************************************************++8. Litigation+-------------++Any litigation relating to this License may be brought only in the+courts of a jurisdiction where the defendant maintains its principal+place of business and such litigation shall be governed by laws of that+jurisdiction, without reference to its conflict-of-law provisions.+Nothing in this Section shall prevent a party's ability to bring+cross-claims or counter-claims.++9. Miscellaneous+----------------++This License represents the complete agreement concerning the subject+matter hereof. If any provision of this License is held to be+unenforceable, such provision shall be reformed only to the extent+necessary to make it enforceable. Any law or regulation which provides+that the language of a contract shall be construed against the drafter+shall not be used to construe this License against a Contributor.++10. Versions of the License+---------------------------++10.1. New Versions++Mozilla Foundation is the license steward. Except as provided in Section+10.3, no one other than the license steward has the right to modify or+publish new versions of this License. Each version will be given a+distinguishing version number.++10.2. Effect of New Versions++You may distribute the Covered Software under the terms of the version+of the License under which You originally received the Covered Software,+or under the terms of any subsequent version published by the license+steward.++10.3. Modified Versions++If you create software not governed by this License, and you want to+create a new license for such software, you may create and use a+modified version of this License if you rename the license and remove+any references to the name of the license steward (except to note that+such modified license differs from this License).++10.4. Distributing Source Code Form that is Incompatible With Secondary+Licenses++If You choose to distribute Source Code Form that is Incompatible With+Secondary Licenses under the terms of this version of the License, the+notice described in Exhibit B of this License must be attached.++Exhibit A - Source Code Form License Notice+-------------------------------------------++  This Source Code Form is subject to the terms of the Mozilla Public+  License, v. 2.0. If a copy of the MPL was not distributed with this+  file, You can obtain one at http://mozilla.org/MPL/2.0/.++If it is not possible or desirable to put the notice in a particular+file, then You may include the notice in a location (such as a LICENSE+file in a relevant directory) where a recipient would be likely to look+for such a notice.++You may add additional accurate notices of copyright ownership.++Exhibit B - "Incompatible With Secondary Licenses" Notice+---------------------------------------------------------++  This Source Code Form is "Incompatible With Secondary Licenses", as+  defined by the Mozilla Public License, v. 2.0.
+ README.md view
@@ -0,0 +1,26 @@+# Amazon ElastiCache SDK++> _Warning:_ This is an experimental preview release which is still under heavy development and not intended for public consumption, _caveat emptor_!++* [description](#description)+* [Contribute](#contribute)+* [Licence](#licence)++## Description++ElastiCache is a web service that makes it easy to deploy, operate, and scale an in-memory cache in the cloud. The service improves the performance of web applications by allowing you to retrieve information from fast, managed, in-memory caches, instead of relying entirely on slower disk-based databases. Amazon ElastiCache automatically detects and replaces failed nodes, reducing the overhead associated with self-managed infrastructures and provides a resilient system that mitigates the risk of overloaded databases, which slow website and application load times. Through integration with Amazon CloudWatch, Amazon ElastiCache provides enhanced visibility into key performance metrics associated with your Memcached or Redis nodes.++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-elasticache)+and [AWS API Reference](http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/Welcome.html).+++## Contribute++For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).++> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.+++## Licence++`amazonka-elasticache` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ amazonka-elasticache.cabal view
@@ -0,0 +1,85 @@+name:                  amazonka-elasticache+version:               0.0.0+synopsis:              Amazon ElastiCache SDK.+homepage:              https://github.com/brendanhay/amazonka+license:               OtherLicense+license-file:          LICENSE+author:                Brendan Hay+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>+copyright:             Copyright (c) 2013-2014 Brendan Hay+category:              Network, AWS, Cloud+build-type:            Simple+extra-source-files:    README.md+cabal-version:         >= 1.10++description:+    ElastiCache is a web service that makes it easy to deploy, operate, and+    scale an in-memory cache in the cloud. The service improves the+    performance of web applications by allowing you to retrieve information+    from fast, managed, in-memory caches, instead of relying entirely on+    slower disk-based databases. Amazon ElastiCache automatically detects+    and replaces failed nodes, reducing the overhead associated with+    self-managed infrastructures and provides a resilient system that+    mitigates the risk of overloaded databases, which slow website and+    application load times. Through integration with Amazon CloudWatch,+    Amazon ElastiCache provides enhanced visibility into key performance+    metrics associated with your Memcached or Redis nodes.+    .+    /See:/ <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/Welcome.html AWS API Reference>+    .+    /Warning:/ This is an experimental preview release which is still under+    heavy development and not intended for public consumption, caveat emptor!++source-repository head+    type:     git+    location: git://github.com/brendanhay/amazonka.git++library+    default-language:  Haskell2010+    hs-source-dirs:    src gen++    ghc-options:       -Wall++    exposed-modules:+          Network.AWS.ElastiCache+        , Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress+        , Network.AWS.ElastiCache.CopySnapshot+        , Network.AWS.ElastiCache.CreateCacheCluster+        , Network.AWS.ElastiCache.CreateCacheParameterGroup+        , Network.AWS.ElastiCache.CreateCacheSecurityGroup+        , Network.AWS.ElastiCache.CreateCacheSubnetGroup+        , Network.AWS.ElastiCache.CreateReplicationGroup+        , Network.AWS.ElastiCache.CreateSnapshot+        , Network.AWS.ElastiCache.DeleteCacheCluster+        , Network.AWS.ElastiCache.DeleteCacheParameterGroup+        , Network.AWS.ElastiCache.DeleteCacheSecurityGroup+        , Network.AWS.ElastiCache.DeleteCacheSubnetGroup+        , Network.AWS.ElastiCache.DeleteReplicationGroup+        , Network.AWS.ElastiCache.DeleteSnapshot+        , Network.AWS.ElastiCache.DescribeCacheClusters+        , Network.AWS.ElastiCache.DescribeCacheEngineVersions+        , Network.AWS.ElastiCache.DescribeCacheParameterGroups+        , Network.AWS.ElastiCache.DescribeCacheParameters+        , Network.AWS.ElastiCache.DescribeCacheSecurityGroups+        , Network.AWS.ElastiCache.DescribeCacheSubnetGroups+        , Network.AWS.ElastiCache.DescribeEngineDefaultParameters+        , Network.AWS.ElastiCache.DescribeEvents+        , Network.AWS.ElastiCache.DescribeReplicationGroups+        , Network.AWS.ElastiCache.DescribeReservedCacheNodes+        , Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings+        , Network.AWS.ElastiCache.DescribeSnapshots+        , Network.AWS.ElastiCache.ModifyCacheCluster+        , Network.AWS.ElastiCache.ModifyCacheParameterGroup+        , Network.AWS.ElastiCache.ModifyCacheSubnetGroup+        , Network.AWS.ElastiCache.ModifyReplicationGroup+        , Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering+        , Network.AWS.ElastiCache.RebootCacheCluster+        , Network.AWS.ElastiCache.ResetCacheParameterGroup+        , Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress+        , Network.AWS.ElastiCache.Types++    other-modules:++    build-depends:+          amazonka-core+        , base          >= 4.7 && < 5
+ gen/Network/AWS/ElastiCache.hs view
@@ -0,0 +1,94 @@+-- Module      : Network.AWS.ElastiCache+-- 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)++-- | ElastiCache is a web service that makes it easy to deploy, operate, and+-- scale an in-memory cache in the cloud. The service improves the performance+-- of web applications by allowing you to retrieve information from fast,+-- managed, in-memory caches, instead of relying entirely on slower disk-based+-- databases. Amazon ElastiCache automatically detects and replaces failed+-- nodes, reducing the overhead associated with self-managed infrastructures+-- and provides a resilient system that mitigates the risk of overloaded+-- databases, which slow website and application load times. Through+-- integration with Amazon CloudWatch, Amazon ElastiCache provides enhanced+-- visibility into key performance metrics associated with your Memcached or+-- Redis nodes.+module Network.AWS.ElastiCache+    ( module Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress+    , module Network.AWS.ElastiCache.CopySnapshot+    , module Network.AWS.ElastiCache.CreateCacheCluster+    , module Network.AWS.ElastiCache.CreateCacheParameterGroup+    , module Network.AWS.ElastiCache.CreateCacheSecurityGroup+    , module Network.AWS.ElastiCache.CreateCacheSubnetGroup+    , module Network.AWS.ElastiCache.CreateReplicationGroup+    , module Network.AWS.ElastiCache.CreateSnapshot+    , module Network.AWS.ElastiCache.DeleteCacheCluster+    , module Network.AWS.ElastiCache.DeleteCacheParameterGroup+    , module Network.AWS.ElastiCache.DeleteCacheSecurityGroup+    , module Network.AWS.ElastiCache.DeleteCacheSubnetGroup+    , module Network.AWS.ElastiCache.DeleteReplicationGroup+    , module Network.AWS.ElastiCache.DeleteSnapshot+    , module Network.AWS.ElastiCache.DescribeCacheClusters+    , module Network.AWS.ElastiCache.DescribeCacheEngineVersions+    , module Network.AWS.ElastiCache.DescribeCacheParameterGroups+    , module Network.AWS.ElastiCache.DescribeCacheParameters+    , module Network.AWS.ElastiCache.DescribeCacheSecurityGroups+    , module Network.AWS.ElastiCache.DescribeCacheSubnetGroups+    , module Network.AWS.ElastiCache.DescribeEngineDefaultParameters+    , module Network.AWS.ElastiCache.DescribeEvents+    , module Network.AWS.ElastiCache.DescribeReplicationGroups+    , module Network.AWS.ElastiCache.DescribeReservedCacheNodes+    , module Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings+    , module Network.AWS.ElastiCache.DescribeSnapshots+    , module Network.AWS.ElastiCache.ModifyCacheCluster+    , module Network.AWS.ElastiCache.ModifyCacheParameterGroup+    , module Network.AWS.ElastiCache.ModifyCacheSubnetGroup+    , module Network.AWS.ElastiCache.ModifyReplicationGroup+    , module Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering+    , module Network.AWS.ElastiCache.RebootCacheCluster+    , module Network.AWS.ElastiCache.ResetCacheParameterGroup+    , module Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress+    , module Network.AWS.ElastiCache.Types+    ) where++import Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress+import Network.AWS.ElastiCache.CopySnapshot+import Network.AWS.ElastiCache.CreateCacheCluster+import Network.AWS.ElastiCache.CreateCacheParameterGroup+import Network.AWS.ElastiCache.CreateCacheSecurityGroup+import Network.AWS.ElastiCache.CreateCacheSubnetGroup+import Network.AWS.ElastiCache.CreateReplicationGroup+import Network.AWS.ElastiCache.CreateSnapshot+import Network.AWS.ElastiCache.DeleteCacheCluster+import Network.AWS.ElastiCache.DeleteCacheParameterGroup+import Network.AWS.ElastiCache.DeleteCacheSecurityGroup+import Network.AWS.ElastiCache.DeleteCacheSubnetGroup+import Network.AWS.ElastiCache.DeleteReplicationGroup+import Network.AWS.ElastiCache.DeleteSnapshot+import Network.AWS.ElastiCache.DescribeCacheClusters+import Network.AWS.ElastiCache.DescribeCacheEngineVersions+import Network.AWS.ElastiCache.DescribeCacheParameterGroups+import Network.AWS.ElastiCache.DescribeCacheParameters+import Network.AWS.ElastiCache.DescribeCacheSecurityGroups+import Network.AWS.ElastiCache.DescribeCacheSubnetGroups+import Network.AWS.ElastiCache.DescribeEngineDefaultParameters+import Network.AWS.ElastiCache.DescribeEvents+import Network.AWS.ElastiCache.DescribeReplicationGroups+import Network.AWS.ElastiCache.DescribeReservedCacheNodes+import Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings+import Network.AWS.ElastiCache.DescribeSnapshots+import Network.AWS.ElastiCache.ModifyCacheCluster+import Network.AWS.ElastiCache.ModifyCacheParameterGroup+import Network.AWS.ElastiCache.ModifyCacheSubnetGroup+import Network.AWS.ElastiCache.ModifyReplicationGroup+import Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering+import Network.AWS.ElastiCache.RebootCacheCluster+import Network.AWS.ElastiCache.ResetCacheParameterGroup+import Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress+import Network.AWS.ElastiCache.Types
+ gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs view
@@ -0,0 +1,141 @@+{-# 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.AuthorizeCacheSecurityGroupIngress+-- 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)++-- | The AuthorizeCacheSecurityGroupIngress operation allows network ingress to+-- a cache security group. Applications using ElastiCache must be running on+-- Amazon EC2, and Amazon EC2 security groups are used as the authorization+-- mechanism.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_AuthorizeCacheSecurityGroupIngress.html>+module Network.AWS.ElastiCache.AuthorizeCacheSecurityGroupIngress+    (+    -- * Request+      AuthorizeCacheSecurityGroupIngress+    -- ** Request constructor+    , authorizeCacheSecurityGroupIngress+    -- ** Request lenses+    , acsgiCacheSecurityGroupName+    , acsgiEC2SecurityGroupName+    , acsgiEC2SecurityGroupOwnerId++    -- * Response+    , AuthorizeCacheSecurityGroupIngressResponse+    -- ** Response constructor+    , authorizeCacheSecurityGroupIngressResponse+    -- ** Response lenses+    , acsgirCacheSecurityGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data AuthorizeCacheSecurityGroupIngress = AuthorizeCacheSecurityGroupIngress+    { _acsgiCacheSecurityGroupName  :: Text+    , _acsgiEC2SecurityGroupName    :: Text+    , _acsgiEC2SecurityGroupOwnerId :: Text+    } deriving (Eq, Ord, Show)++-- | 'AuthorizeCacheSecurityGroupIngress' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'acsgiCacheSecurityGroupName' @::@ 'Text'+--+-- * 'acsgiEC2SecurityGroupName' @::@ 'Text'+--+-- * 'acsgiEC2SecurityGroupOwnerId' @::@ 'Text'+--+authorizeCacheSecurityGroupIngress :: Text -- ^ 'acsgiCacheSecurityGroupName'+                                   -> Text -- ^ 'acsgiEC2SecurityGroupName'+                                   -> Text -- ^ 'acsgiEC2SecurityGroupOwnerId'+                                   -> AuthorizeCacheSecurityGroupIngress+authorizeCacheSecurityGroupIngress p1 p2 p3 = AuthorizeCacheSecurityGroupIngress+    { _acsgiCacheSecurityGroupName  = p1+    , _acsgiEC2SecurityGroupName    = p2+    , _acsgiEC2SecurityGroupOwnerId = p3+    }++-- | The cache security group which will allow network ingress.+acsgiCacheSecurityGroupName :: Lens' AuthorizeCacheSecurityGroupIngress Text+acsgiCacheSecurityGroupName =+    lens _acsgiCacheSecurityGroupName+        (\s a -> s { _acsgiCacheSecurityGroupName = a })++-- | The Amazon EC2 security group to be authorized for ingress to the cache+-- security group.+acsgiEC2SecurityGroupName :: Lens' AuthorizeCacheSecurityGroupIngress Text+acsgiEC2SecurityGroupName =+    lens _acsgiEC2SecurityGroupName+        (\s a -> s { _acsgiEC2SecurityGroupName = a })++-- | The AWS account number of the Amazon EC2 security group owner. Note that+-- this is not the same thing as an AWS access key ID - you must provide a+-- valid AWS account number for this parameter.+acsgiEC2SecurityGroupOwnerId :: Lens' AuthorizeCacheSecurityGroupIngress Text+acsgiEC2SecurityGroupOwnerId =+    lens _acsgiEC2SecurityGroupOwnerId+        (\s a -> s { _acsgiEC2SecurityGroupOwnerId = a })++newtype AuthorizeCacheSecurityGroupIngressResponse = AuthorizeCacheSecurityGroupIngressResponse+    { _acsgirCacheSecurityGroup :: Maybe CacheSecurityGroup+    } deriving (Eq, Show)++-- | 'AuthorizeCacheSecurityGroupIngressResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'acsgirCacheSecurityGroup' @::@ 'Maybe' 'CacheSecurityGroup'+--+authorizeCacheSecurityGroupIngressResponse :: AuthorizeCacheSecurityGroupIngressResponse+authorizeCacheSecurityGroupIngressResponse = AuthorizeCacheSecurityGroupIngressResponse+    { _acsgirCacheSecurityGroup = Nothing+    }++acsgirCacheSecurityGroup :: Lens' AuthorizeCacheSecurityGroupIngressResponse (Maybe CacheSecurityGroup)+acsgirCacheSecurityGroup =+    lens _acsgirCacheSecurityGroup+        (\s a -> s { _acsgirCacheSecurityGroup = a })++instance ToPath AuthorizeCacheSecurityGroupIngress where+    toPath = const "/"++instance ToQuery AuthorizeCacheSecurityGroupIngress where+    toQuery AuthorizeCacheSecurityGroupIngress{..} = mconcat+        [ "CacheSecurityGroupName"  =? _acsgiCacheSecurityGroupName+        , "EC2SecurityGroupName"    =? _acsgiEC2SecurityGroupName+        , "EC2SecurityGroupOwnerId" =? _acsgiEC2SecurityGroupOwnerId+        ]++instance ToHeaders AuthorizeCacheSecurityGroupIngress++instance AWSRequest AuthorizeCacheSecurityGroupIngress where+    type Sv AuthorizeCacheSecurityGroupIngress = ElastiCache+    type Rs AuthorizeCacheSecurityGroupIngress = AuthorizeCacheSecurityGroupIngressResponse++    request  = post "AuthorizeCacheSecurityGroupIngress"+    response = xmlResponse++instance FromXML AuthorizeCacheSecurityGroupIngressResponse where+    parseXML = withElement "AuthorizeCacheSecurityGroupIngressResult" $ \x -> AuthorizeCacheSecurityGroupIngressResponse+        <$> x .@? "CacheSecurityGroup"
+ gen/Network/AWS/ElastiCache/CopySnapshot.hs view
@@ -0,0 +1,118 @@+{-# 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.CopySnapshot+-- 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)++-- | The CopySnapshot operation makes a copy of an existing snapshot.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CopySnapshot.html>+module Network.AWS.ElastiCache.CopySnapshot+    (+    -- * Request+      CopySnapshot+    -- ** Request constructor+    , copySnapshot+    -- ** Request lenses+    , csSourceSnapshotName+    , csTargetSnapshotName++    -- * Response+    , CopySnapshotResponse+    -- ** Response constructor+    , copySnapshotResponse+    -- ** Response lenses+    , csrSnapshot+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data CopySnapshot = CopySnapshot+    { _csSourceSnapshotName :: Text+    , _csTargetSnapshotName :: Text+    } deriving (Eq, Ord, Show)++-- | 'CopySnapshot' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csSourceSnapshotName' @::@ 'Text'+--+-- * 'csTargetSnapshotName' @::@ 'Text'+--+copySnapshot :: Text -- ^ 'csSourceSnapshotName'+             -> Text -- ^ 'csTargetSnapshotName'+             -> CopySnapshot+copySnapshot p1 p2 = CopySnapshot+    { _csSourceSnapshotName = p1+    , _csTargetSnapshotName = p2+    }++-- | The name of an existing snapshot from which to copy.+csSourceSnapshotName :: Lens' CopySnapshot Text+csSourceSnapshotName =+    lens _csSourceSnapshotName (\s a -> s { _csSourceSnapshotName = a })++-- | A name for the copied snapshot.+csTargetSnapshotName :: Lens' CopySnapshot Text+csTargetSnapshotName =+    lens _csTargetSnapshotName (\s a -> s { _csTargetSnapshotName = a })++newtype CopySnapshotResponse = CopySnapshotResponse+    { _csrSnapshot :: Maybe Snapshot+    } deriving (Eq, Show)++-- | 'CopySnapshotResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csrSnapshot' @::@ 'Maybe' 'Snapshot'+--+copySnapshotResponse :: CopySnapshotResponse+copySnapshotResponse = CopySnapshotResponse+    { _csrSnapshot = Nothing+    }++csrSnapshot :: Lens' CopySnapshotResponse (Maybe Snapshot)+csrSnapshot = lens _csrSnapshot (\s a -> s { _csrSnapshot = a })++instance ToPath CopySnapshot where+    toPath = const "/"++instance ToQuery CopySnapshot where+    toQuery CopySnapshot{..} = mconcat+        [ "SourceSnapshotName" =? _csSourceSnapshotName+        , "TargetSnapshotName" =? _csTargetSnapshotName+        ]++instance ToHeaders CopySnapshot++instance AWSRequest CopySnapshot where+    type Sv CopySnapshot = ElastiCache+    type Rs CopySnapshot = CopySnapshotResponse++    request  = post "CopySnapshot"+    response = xmlResponse++instance FromXML CopySnapshotResponse where+    parseXML = withElement "CopySnapshotResult" $ \x -> CopySnapshotResponse+        <$> x .@? "Snapshot"
+ gen/Network/AWS/ElastiCache/CreateCacheCluster.hs view
@@ -0,0 +1,411 @@+{-# 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.CreateCacheCluster+-- 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)++-- | The CreateCacheCluster operation creates a cache cluster. All nodes in the+-- cache cluster run the same protocol-compliant cache engine software, either+-- Memcached or Redis.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheCluster.html>+module Network.AWS.ElastiCache.CreateCacheCluster+    (+    -- * Request+      CreateCacheCluster+    -- ** Request constructor+    , createCacheCluster+    -- ** Request lenses+    , cccAZMode+    , cccAutoMinorVersionUpgrade+    , cccCacheClusterId+    , cccCacheNodeType+    , cccCacheParameterGroupName+    , cccCacheSecurityGroupNames+    , cccCacheSubnetGroupName+    , cccEngine+    , cccEngineVersion+    , cccNotificationTopicArn+    , cccNumCacheNodes+    , cccPort+    , cccPreferredAvailabilityZone+    , cccPreferredAvailabilityZones+    , cccPreferredMaintenanceWindow+    , cccReplicationGroupId+    , cccSecurityGroupIds+    , cccSnapshotArns+    , cccSnapshotName+    , cccSnapshotRetentionLimit+    , cccSnapshotWindow++    -- * Response+    , CreateCacheClusterResponse+    -- ** Response constructor+    , createCacheClusterResponse+    -- ** Response lenses+    , cccrCacheCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data CreateCacheCluster = CreateCacheCluster+    { _cccAZMode                     :: Maybe Text+    , _cccAutoMinorVersionUpgrade    :: Maybe Bool+    , _cccCacheClusterId             :: Text+    , _cccCacheNodeType              :: Maybe Text+    , _cccCacheParameterGroupName    :: Maybe Text+    , _cccCacheSecurityGroupNames    :: List "CacheSecurityGroupName" Text+    , _cccCacheSubnetGroupName       :: Maybe Text+    , _cccEngine                     :: Maybe Text+    , _cccEngineVersion              :: Maybe Text+    , _cccNotificationTopicArn       :: Maybe Text+    , _cccNumCacheNodes              :: Maybe Int+    , _cccPort                       :: Maybe Int+    , _cccPreferredAvailabilityZone  :: Maybe Text+    , _cccPreferredAvailabilityZones :: List "PreferredAvailabilityZone" Text+    , _cccPreferredMaintenanceWindow :: Maybe Text+    , _cccReplicationGroupId         :: Maybe Text+    , _cccSecurityGroupIds           :: List "SecurityGroupId" Text+    , _cccSnapshotArns               :: List "SnapshotArn" Text+    , _cccSnapshotName               :: Maybe Text+    , _cccSnapshotRetentionLimit     :: Maybe Int+    , _cccSnapshotWindow             :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'CreateCacheCluster' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cccAZMode' @::@ 'Maybe' 'Text'+--+-- * 'cccAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'+--+-- * 'cccCacheClusterId' @::@ 'Text'+--+-- * 'cccCacheNodeType' @::@ 'Maybe' 'Text'+--+-- * 'cccCacheParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'cccCacheSecurityGroupNames' @::@ ['Text']+--+-- * 'cccCacheSubnetGroupName' @::@ 'Maybe' 'Text'+--+-- * 'cccEngine' @::@ 'Maybe' 'Text'+--+-- * 'cccEngineVersion' @::@ 'Maybe' 'Text'+--+-- * 'cccNotificationTopicArn' @::@ 'Maybe' 'Text'+--+-- * 'cccNumCacheNodes' @::@ 'Maybe' 'Int'+--+-- * 'cccPort' @::@ 'Maybe' 'Int'+--+-- * 'cccPreferredAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'cccPreferredAvailabilityZones' @::@ ['Text']+--+-- * 'cccPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'+--+-- * 'cccReplicationGroupId' @::@ 'Maybe' 'Text'+--+-- * 'cccSecurityGroupIds' @::@ ['Text']+--+-- * 'cccSnapshotArns' @::@ ['Text']+--+-- * 'cccSnapshotName' @::@ 'Maybe' 'Text'+--+-- * 'cccSnapshotRetentionLimit' @::@ 'Maybe' 'Int'+--+-- * 'cccSnapshotWindow' @::@ 'Maybe' 'Text'+--+createCacheCluster :: Text -- ^ 'cccCacheClusterId'+                   -> CreateCacheCluster+createCacheCluster p1 = CreateCacheCluster+    { _cccCacheClusterId             = p1+    , _cccReplicationGroupId         = Nothing+    , _cccAZMode                     = Nothing+    , _cccPreferredAvailabilityZone  = Nothing+    , _cccPreferredAvailabilityZones = mempty+    , _cccNumCacheNodes              = Nothing+    , _cccCacheNodeType              = Nothing+    , _cccEngine                     = Nothing+    , _cccEngineVersion              = Nothing+    , _cccCacheParameterGroupName    = Nothing+    , _cccCacheSubnetGroupName       = Nothing+    , _cccCacheSecurityGroupNames    = mempty+    , _cccSecurityGroupIds           = mempty+    , _cccSnapshotArns               = mempty+    , _cccSnapshotName               = Nothing+    , _cccPreferredMaintenanceWindow = Nothing+    , _cccPort                       = Nothing+    , _cccNotificationTopicArn       = Nothing+    , _cccAutoMinorVersionUpgrade    = Nothing+    , _cccSnapshotRetentionLimit     = Nothing+    , _cccSnapshotWindow             = Nothing+    }++-- | Specifies whether the nodes in this Memcached node group are created in a+-- single Availability Zone or created across multiple Availability Zones in+-- the cluster's region. This parameter is only supported for Memcached+-- cache clusters. If the AZMode and PreferredAvailabilityZones are not+-- specified, ElastiCache assumes single-az mode.+cccAZMode :: Lens' CreateCacheCluster (Maybe Text)+cccAZMode = lens _cccAZMode (\s a -> s { _cccAZMode = a })++-- | Determines whether minor engine upgrades will be applied automatically to+-- the node group during the maintenance window. A value of true allows+-- these upgrades to occur; false disables automatic upgrades. Default:+-- true.+cccAutoMinorVersionUpgrade :: Lens' CreateCacheCluster (Maybe Bool)+cccAutoMinorVersionUpgrade =+    lens _cccAutoMinorVersionUpgrade+        (\s a -> s { _cccAutoMinorVersionUpgrade = a })++-- | The node group identifier. This parameter is stored as a lowercase+-- string. Constraints: A name must contain from 1 to 20 alphanumeric+-- characters or hyphens. The first character must be a letter. A name+-- cannot end with a hyphen or contain two consecutive hyphens.+cccCacheClusterId :: Lens' CreateCacheCluster Text+cccCacheClusterId =+    lens _cccCacheClusterId (\s a -> s { _cccCacheClusterId = a })++-- | The compute and memory capacity of the nodes in the node group. Valid+-- node types are as follows: General purpose: Current generation:+-- cache.t2.micro, cache.t2.small, cache.t2.medium, cache.m3.medium,+-- cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge Previous generation:+-- cache.t1.micro, cache.m1.small, cache.m1.medium, cache.m1.large,+-- cache.m1.xlarge Compute optimized: cache.c1.xlarge Memory optimized+-- Current generation: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge,+-- cache.r3.4xlarge, cache.r3.8xlarge Previous generation: cache.m2.xlarge,+-- cache.m2.2xlarge, cache.m2.4xlarge Notes: All t2 instances are created in+-- an Amazon Virtual Private Cloud (VPC). Redis backup/restore is not+-- supported for t2 instances. Redis Append-only files (AOF) functionality+-- is not supported for t1 or t2 instances. For a complete listing of cache+-- node types and specifications, see Amazon ElastiCache Product Features+-- and Details and Cache Node Type-Specific Parameters for Memcached or+-- Cache Node Type-Specific Parameters for Redis.+cccCacheNodeType :: Lens' CreateCacheCluster (Maybe Text)+cccCacheNodeType = lens _cccCacheNodeType (\s a -> s { _cccCacheNodeType = a })++-- | The name of the parameter group to associate with this cache cluster. If+-- this argument is omitted, the default parameter group for the specified+-- engine is used.+cccCacheParameterGroupName :: Lens' CreateCacheCluster (Maybe Text)+cccCacheParameterGroupName =+    lens _cccCacheParameterGroupName+        (\s a -> s { _cccCacheParameterGroupName = a })++-- | A list of security group names to associate with this cache cluster. Use+-- this parameter only when you are creating a cache cluster outside of an+-- Amazon Virtual Private Cloud (VPC).+cccCacheSecurityGroupNames :: Lens' CreateCacheCluster [Text]+cccCacheSecurityGroupNames =+    lens _cccCacheSecurityGroupNames+        (\s a -> s { _cccCacheSecurityGroupNames = a })+            . _List++-- | The name of the subnet group to be used for the cache cluster. Use this+-- parameter only when you are creating a cache cluster in an Amazon Virtual+-- Private Cloud (VPC).+cccCacheSubnetGroupName :: Lens' CreateCacheCluster (Maybe Text)+cccCacheSubnetGroupName =+    lens _cccCacheSubnetGroupName (\s a -> s { _cccCacheSubnetGroupName = a })++-- | The name of the cache engine to be used for this cache cluster. Valid+-- values for this parameter are: memcached | redis.+cccEngine :: Lens' CreateCacheCluster (Maybe Text)+cccEngine = lens _cccEngine (\s a -> s { _cccEngine = a })++-- | The version number of the cache engine to be used for this cache cluster.+-- To view the supported cache engine versions, use the+-- DescribeCacheEngineVersions operation.+cccEngineVersion :: Lens' CreateCacheCluster (Maybe Text)+cccEngineVersion = lens _cccEngineVersion (\s a -> s { _cccEngineVersion = a })++-- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service+-- (SNS) topic to which notifications will be sent.+cccNotificationTopicArn :: Lens' CreateCacheCluster (Maybe Text)+cccNotificationTopicArn =+    lens _cccNotificationTopicArn (\s a -> s { _cccNotificationTopicArn = a })++-- | The initial number of cache nodes that the cache cluster will have. For+-- Memcached, valid values are between 1 and 20. If you need to exceed this+-- limit, please fill out the ElastiCache Limit Increase Request form at+-- http://aws.amazon.com/contact-us/elasticache-node-limit-request/. For+-- Redis, only single-node cache cluster are supported at this time, so the+-- value for this parameter must be 1.+cccNumCacheNodes :: Lens' CreateCacheCluster (Maybe Int)+cccNumCacheNodes = lens _cccNumCacheNodes (\s a -> s { _cccNumCacheNodes = a })++-- | The port number on which each of the cache nodes will accept connections.+cccPort :: Lens' CreateCacheCluster (Maybe Int)+cccPort = lens _cccPort (\s a -> s { _cccPort = a })++-- | The EC2 Availability Zone in which the cache cluster will be created. All+-- nodes belonging to this Memcached cache cluster are placed in the+-- preferred Availability Zone. If you want to create your nodes across+-- multiple Availability Zones, use PreferredAvailabilityZones. Default:+-- System chosen Availability Zone.+cccPreferredAvailabilityZone :: Lens' CreateCacheCluster (Maybe Text)+cccPreferredAvailabilityZone =+    lens _cccPreferredAvailabilityZone+        (\s a -> s { _cccPreferredAvailabilityZone = a })++-- | A list of the Availability Zones in which cache nodes will be created.+-- The order of the zones in the list is not important. This option is only+-- supported on Memcached. If you want all the nodes in the same+-- Availability Zone, use PreferredAvailabilityZone instead, or repeat the+-- Availability Zone multiple times in the list. Default: System chosen+-- Availability Zones. Example: One Memcached node in each of three+-- different Availability Zones:+-- PreferredAvailabilityZones.member.1=us-east-1a&amp;PreferredAvailabilityZones.member.2=us-east-1b&amp;PreferredAvailabilityZones.member.3=us-east-1d+-- Example: All three Memcached nodes in one Availability Zone:+-- PreferredAvailabilityZones.member.1=us-east-1a&amp;PreferredAvailabilityZones.member.2=us-east-1a&amp;PreferredAvailabilityZones.member.3=us-east-1a.+-- +cccPreferredAvailabilityZones :: Lens' CreateCacheCluster [Text]+cccPreferredAvailabilityZones =+    lens _cccPreferredAvailabilityZones+        (\s a -> s { _cccPreferredAvailabilityZones = a })+            . _List++-- | The weekly time range (in UTC) during which system maintenance can occur.+-- Example: sun:05:00-sun:09:00.+cccPreferredMaintenanceWindow :: Lens' CreateCacheCluster (Maybe Text)+cccPreferredMaintenanceWindow =+    lens _cccPreferredMaintenanceWindow+        (\s a -> s { _cccPreferredMaintenanceWindow = a })++-- | The ID of the replication group to which this cache cluster should+-- belong. If this parameter is specified, the cache cluster will be added+-- to the specified replication group as a read replica; otherwise, the+-- cache cluster will be a standalone primary that is not part of any+-- replication group. If the specified replication group is Automatic+-- Failover enabled and the availability zone is not specified, the cache+-- cluster will be created in availability zones that provide the best+-- spread of read replicas across availability zones. Note: This parameter+-- is only valid if the Engine parameter is redis.+cccReplicationGroupId :: Lens' CreateCacheCluster (Maybe Text)+cccReplicationGroupId =+    lens _cccReplicationGroupId (\s a -> s { _cccReplicationGroupId = a })++-- | One or more VPC security groups associated with the cache cluster. Use+-- this parameter only when you are creating a cache cluster in an Amazon+-- Virtual Private Cloud (VPC).+cccSecurityGroupIds :: Lens' CreateCacheCluster [Text]+cccSecurityGroupIds =+    lens _cccSecurityGroupIds (\s a -> s { _cccSecurityGroupIds = a })+        . _List++-- | A single-element string list containing an Amazon Resource Name (ARN)+-- that uniquely identifies a Redis RDB snapshot file stored in Amazon S3.+-- The snapshot file will be used to populate the node group. The Amazon S3+-- object name in the ARN cannot contain any commas. Note: This parameter is+-- only valid if the Engine parameter is redis. Example of an Amazon S3 ARN:+-- arn:aws:s3:::my_bucket/snapshot1.rdb.+cccSnapshotArns :: Lens' CreateCacheCluster [Text]+cccSnapshotArns = lens _cccSnapshotArns (\s a -> s { _cccSnapshotArns = a }) . _List++-- | The name of a snapshot from which to restore data into the new node+-- group. The snapshot status changes to restoring while the new node group+-- is being created. Note: This parameter is only valid if the Engine+-- parameter is redis.+cccSnapshotName :: Lens' CreateCacheCluster (Maybe Text)+cccSnapshotName = lens _cccSnapshotName (\s a -> s { _cccSnapshotName = a })++-- | The number of days for which ElastiCache will retain automatic snapshots+-- before deleting them. For example, if you set SnapshotRetentionLimit to+-- 5, then a snapshot that was taken today will be retained for 5 days+-- before being deleted. Note: This parameter is only valid if the Engine+-- parameter is redis. Default: 0 (i.e., automatic backups are disabled for+-- this cache cluster).+cccSnapshotRetentionLimit :: Lens' CreateCacheCluster (Maybe Int)+cccSnapshotRetentionLimit =+    lens _cccSnapshotRetentionLimit+        (\s a -> s { _cccSnapshotRetentionLimit = a })++-- | The daily time range (in UTC) during which ElastiCache will begin taking+-- a daily snapshot of your node group. Example: 05:00-09:00 If you do not+-- specify this parameter, then ElastiCache will automatically choose an+-- appropriate time range. Note: This parameter is only valid if the Engine+-- parameter is redis.+cccSnapshotWindow :: Lens' CreateCacheCluster (Maybe Text)+cccSnapshotWindow =+    lens _cccSnapshotWindow (\s a -> s { _cccSnapshotWindow = a })++newtype CreateCacheClusterResponse = CreateCacheClusterResponse+    { _cccrCacheCluster :: Maybe CacheCluster+    } deriving (Eq, Show)++-- | 'CreateCacheClusterResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cccrCacheCluster' @::@ 'Maybe' 'CacheCluster'+--+createCacheClusterResponse :: CreateCacheClusterResponse+createCacheClusterResponse = CreateCacheClusterResponse+    { _cccrCacheCluster = Nothing+    }++cccrCacheCluster :: Lens' CreateCacheClusterResponse (Maybe CacheCluster)+cccrCacheCluster = lens _cccrCacheCluster (\s a -> s { _cccrCacheCluster = a })++instance ToPath CreateCacheCluster where+    toPath = const "/"++instance ToQuery CreateCacheCluster where+    toQuery CreateCacheCluster{..} = mconcat+        [ "AZMode"                     =? _cccAZMode+        , "AutoMinorVersionUpgrade"    =? _cccAutoMinorVersionUpgrade+        , "CacheClusterId"             =? _cccCacheClusterId+        , "CacheNodeType"              =? _cccCacheNodeType+        , "CacheParameterGroupName"    =? _cccCacheParameterGroupName+        , "CacheSecurityGroupNames"    =? _cccCacheSecurityGroupNames+        , "CacheSubnetGroupName"       =? _cccCacheSubnetGroupName+        , "Engine"                     =? _cccEngine+        , "EngineVersion"              =? _cccEngineVersion+        , "NotificationTopicArn"       =? _cccNotificationTopicArn+        , "NumCacheNodes"              =? _cccNumCacheNodes+        , "Port"                       =? _cccPort+        , "PreferredAvailabilityZone"  =? _cccPreferredAvailabilityZone+        , "PreferredAvailabilityZones" =? _cccPreferredAvailabilityZones+        , "PreferredMaintenanceWindow" =? _cccPreferredMaintenanceWindow+        , "ReplicationGroupId"         =? _cccReplicationGroupId+        , "SecurityGroupIds"           =? _cccSecurityGroupIds+        , "SnapshotArns"               =? _cccSnapshotArns+        , "SnapshotName"               =? _cccSnapshotName+        , "SnapshotRetentionLimit"     =? _cccSnapshotRetentionLimit+        , "SnapshotWindow"             =? _cccSnapshotWindow+        ]++instance ToHeaders CreateCacheCluster++instance AWSRequest CreateCacheCluster where+    type Sv CreateCacheCluster = ElastiCache+    type Rs CreateCacheCluster = CreateCacheClusterResponse++    request  = post "CreateCacheCluster"+    response = xmlResponse++instance FromXML CreateCacheClusterResponse where+    parseXML = withElement "CreateCacheClusterResult" $ \x -> CreateCacheClusterResponse+        <$> x .@? "CacheCluster"
+ gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs view
@@ -0,0 +1,136 @@+{-# 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.CreateCacheParameterGroup+-- 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)++-- | The CreateCacheParameterGroup operation creates a new cache parameter+-- group. A cache parameter group is a collection of parameters that you apply+-- to all of the nodes in a cache cluster.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheParameterGroup.html>+module Network.AWS.ElastiCache.CreateCacheParameterGroup+    (+    -- * Request+      CreateCacheParameterGroup+    -- ** Request constructor+    , createCacheParameterGroup+    -- ** Request lenses+    , ccpgCacheParameterGroupFamily+    , ccpgCacheParameterGroupName+    , ccpgDescription++    -- * Response+    , CreateCacheParameterGroupResponse+    -- ** Response constructor+    , createCacheParameterGroupResponse+    -- ** Response lenses+    , ccpgrCacheParameterGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data CreateCacheParameterGroup = CreateCacheParameterGroup+    { _ccpgCacheParameterGroupFamily :: Text+    , _ccpgCacheParameterGroupName   :: Text+    , _ccpgDescription               :: Text+    } deriving (Eq, Ord, Show)++-- | 'CreateCacheParameterGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccpgCacheParameterGroupFamily' @::@ 'Text'+--+-- * 'ccpgCacheParameterGroupName' @::@ 'Text'+--+-- * 'ccpgDescription' @::@ 'Text'+--+createCacheParameterGroup :: Text -- ^ 'ccpgCacheParameterGroupName'+                          -> Text -- ^ 'ccpgCacheParameterGroupFamily'+                          -> Text -- ^ 'ccpgDescription'+                          -> CreateCacheParameterGroup+createCacheParameterGroup p1 p2 p3 = CreateCacheParameterGroup+    { _ccpgCacheParameterGroupName   = p1+    , _ccpgCacheParameterGroupFamily = p2+    , _ccpgDescription               = p3+    }++-- | The name of the cache parameter group family the cache parameter group+-- can be used with. Valid values are: memcached1.4 | redis2.6 | redis2.8.+ccpgCacheParameterGroupFamily :: Lens' CreateCacheParameterGroup Text+ccpgCacheParameterGroupFamily =+    lens _ccpgCacheParameterGroupFamily+        (\s a -> s { _ccpgCacheParameterGroupFamily = a })++-- | A user-specified name for the cache parameter group.+ccpgCacheParameterGroupName :: Lens' CreateCacheParameterGroup Text+ccpgCacheParameterGroupName =+    lens _ccpgCacheParameterGroupName+        (\s a -> s { _ccpgCacheParameterGroupName = a })++-- | A user-specified description for the cache parameter group.+ccpgDescription :: Lens' CreateCacheParameterGroup Text+ccpgDescription = lens _ccpgDescription (\s a -> s { _ccpgDescription = a })++newtype CreateCacheParameterGroupResponse = CreateCacheParameterGroupResponse+    { _ccpgrCacheParameterGroup :: Maybe CacheParameterGroup+    } deriving (Eq, Show)++-- | 'CreateCacheParameterGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccpgrCacheParameterGroup' @::@ 'Maybe' 'CacheParameterGroup'+--+createCacheParameterGroupResponse :: CreateCacheParameterGroupResponse+createCacheParameterGroupResponse = CreateCacheParameterGroupResponse+    { _ccpgrCacheParameterGroup = Nothing+    }++ccpgrCacheParameterGroup :: Lens' CreateCacheParameterGroupResponse (Maybe CacheParameterGroup)+ccpgrCacheParameterGroup =+    lens _ccpgrCacheParameterGroup+        (\s a -> s { _ccpgrCacheParameterGroup = a })++instance ToPath CreateCacheParameterGroup where+    toPath = const "/"++instance ToQuery CreateCacheParameterGroup where+    toQuery CreateCacheParameterGroup{..} = mconcat+        [ "CacheParameterGroupFamily" =? _ccpgCacheParameterGroupFamily+        , "CacheParameterGroupName"   =? _ccpgCacheParameterGroupName+        , "Description"               =? _ccpgDescription+        ]++instance ToHeaders CreateCacheParameterGroup++instance AWSRequest CreateCacheParameterGroup where+    type Sv CreateCacheParameterGroup = ElastiCache+    type Rs CreateCacheParameterGroup = CreateCacheParameterGroupResponse++    request  = post "CreateCacheParameterGroup"+    response = xmlResponse++instance FromXML CreateCacheParameterGroupResponse where+    parseXML = withElement "CreateCacheParameterGroupResult" $ \x -> CreateCacheParameterGroupResponse+        <$> x .@? "CacheParameterGroup"
+ gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs view
@@ -0,0 +1,126 @@+{-# 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.CreateCacheSecurityGroup+-- 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)++-- | The CreateCacheSecurityGroup operation creates a new cache security group.+-- Use a cache security group to control access to one or more cache clusters.+-- Cache security groups are only used when you are creating a cache cluster+-- outside of an Amazon Virtual Private Cloud (VPC). If you are creating a+-- cache cluster inside of a VPC, use a cache subnet group instead. For more+-- information, see CreateCacheSubnetGroup.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheSecurityGroup.html>+module Network.AWS.ElastiCache.CreateCacheSecurityGroup+    (+    -- * Request+      CreateCacheSecurityGroup+    -- ** Request constructor+    , createCacheSecurityGroup+    -- ** Request lenses+    , ccsgCacheSecurityGroupName+    , ccsgDescription++    -- * Response+    , CreateCacheSecurityGroupResponse+    -- ** Response constructor+    , createCacheSecurityGroupResponse+    -- ** Response lenses+    , ccsgrCacheSecurityGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data CreateCacheSecurityGroup = CreateCacheSecurityGroup+    { _ccsgCacheSecurityGroupName :: Text+    , _ccsgDescription            :: Text+    } deriving (Eq, Ord, Show)++-- | 'CreateCacheSecurityGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccsgCacheSecurityGroupName' @::@ 'Text'+--+-- * 'ccsgDescription' @::@ 'Text'+--+createCacheSecurityGroup :: Text -- ^ 'ccsgCacheSecurityGroupName'+                         -> Text -- ^ 'ccsgDescription'+                         -> CreateCacheSecurityGroup+createCacheSecurityGroup p1 p2 = CreateCacheSecurityGroup+    { _ccsgCacheSecurityGroupName = p1+    , _ccsgDescription            = p2+    }++-- | A name for the cache security group. This value is stored as a lowercase+-- string. Constraints: Must contain no more than 255 alphanumeric+-- characters. Cannot be the word "Default". Example: mysecuritygroup.+ccsgCacheSecurityGroupName :: Lens' CreateCacheSecurityGroup Text+ccsgCacheSecurityGroupName =+    lens _ccsgCacheSecurityGroupName+        (\s a -> s { _ccsgCacheSecurityGroupName = a })++-- | A description for the cache security group.+ccsgDescription :: Lens' CreateCacheSecurityGroup Text+ccsgDescription = lens _ccsgDescription (\s a -> s { _ccsgDescription = a })++newtype CreateCacheSecurityGroupResponse = CreateCacheSecurityGroupResponse+    { _ccsgrCacheSecurityGroup :: Maybe CacheSecurityGroup+    } deriving (Eq, Show)++-- | 'CreateCacheSecurityGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccsgrCacheSecurityGroup' @::@ 'Maybe' 'CacheSecurityGroup'+--+createCacheSecurityGroupResponse :: CreateCacheSecurityGroupResponse+createCacheSecurityGroupResponse = CreateCacheSecurityGroupResponse+    { _ccsgrCacheSecurityGroup = Nothing+    }++ccsgrCacheSecurityGroup :: Lens' CreateCacheSecurityGroupResponse (Maybe CacheSecurityGroup)+ccsgrCacheSecurityGroup =+    lens _ccsgrCacheSecurityGroup (\s a -> s { _ccsgrCacheSecurityGroup = a })++instance ToPath CreateCacheSecurityGroup where+    toPath = const "/"++instance ToQuery CreateCacheSecurityGroup where+    toQuery CreateCacheSecurityGroup{..} = mconcat+        [ "CacheSecurityGroupName" =? _ccsgCacheSecurityGroupName+        , "Description"            =? _ccsgDescription+        ]++instance ToHeaders CreateCacheSecurityGroup++instance AWSRequest CreateCacheSecurityGroup where+    type Sv CreateCacheSecurityGroup = ElastiCache+    type Rs CreateCacheSecurityGroup = CreateCacheSecurityGroupResponse++    request  = post "CreateCacheSecurityGroup"+    response = xmlResponse++instance FromXML CreateCacheSecurityGroupResponse where+    parseXML = withElement "CreateCacheSecurityGroupResult" $ \x -> CreateCacheSecurityGroupResponse+        <$> x .@? "CacheSecurityGroup"
+ gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs view
@@ -0,0 +1,135 @@+{-# 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.CreateCacheSubnetGroup+-- 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)++-- | The CreateCacheSubnetGroup operation creates a new cache subnet group. Use+-- this parameter only when you are creating a cluster in an Amazon Virtual+-- Private Cloud (VPC).+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheSubnetGroup.html>+module Network.AWS.ElastiCache.CreateCacheSubnetGroup+    (+    -- * Request+      CreateCacheSubnetGroup+    -- ** Request constructor+    , createCacheSubnetGroup+    -- ** Request lenses+    , ccsgCacheSubnetGroupDescription+    , ccsgCacheSubnetGroupName+    , ccsgSubnetIds++    -- * Response+    , CreateCacheSubnetGroupResponse+    -- ** Response constructor+    , createCacheSubnetGroupResponse+    -- ** Response lenses+    , ccsgrCacheSubnetGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data CreateCacheSubnetGroup = CreateCacheSubnetGroup+    { _ccsgCacheSubnetGroupDescription :: Text+    , _ccsgCacheSubnetGroupName        :: Text+    , _ccsgSubnetIds                   :: List "SubnetIdentifier" Text+    } deriving (Eq, Ord, Show)++-- | 'CreateCacheSubnetGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccsgCacheSubnetGroupDescription' @::@ 'Text'+--+-- * 'ccsgCacheSubnetGroupName' @::@ 'Text'+--+-- * 'ccsgSubnetIds' @::@ ['Text']+--+createCacheSubnetGroup :: Text -- ^ 'ccsgCacheSubnetGroupName'+                       -> Text -- ^ 'ccsgCacheSubnetGroupDescription'+                       -> CreateCacheSubnetGroup+createCacheSubnetGroup p1 p2 = CreateCacheSubnetGroup+    { _ccsgCacheSubnetGroupName        = p1+    , _ccsgCacheSubnetGroupDescription = p2+    , _ccsgSubnetIds                   = mempty+    }++-- | A description for the cache subnet group.+ccsgCacheSubnetGroupDescription :: Lens' CreateCacheSubnetGroup Text+ccsgCacheSubnetGroupDescription =+    lens _ccsgCacheSubnetGroupDescription+        (\s a -> s { _ccsgCacheSubnetGroupDescription = a })++-- | A name for the cache subnet group. This value is stored as a lowercase+-- string. Constraints: Must contain no more than 255 alphanumeric+-- characters or hyphens. Example: mysubnetgroup.+ccsgCacheSubnetGroupName :: Lens' CreateCacheSubnetGroup Text+ccsgCacheSubnetGroupName =+    lens _ccsgCacheSubnetGroupName+        (\s a -> s { _ccsgCacheSubnetGroupName = a })++-- | A list of VPC subnet IDs for the cache subnet group.+ccsgSubnetIds :: Lens' CreateCacheSubnetGroup [Text]+ccsgSubnetIds = lens _ccsgSubnetIds (\s a -> s { _ccsgSubnetIds = a }) . _List++newtype CreateCacheSubnetGroupResponse = CreateCacheSubnetGroupResponse+    { _ccsgrCacheSubnetGroup :: Maybe CacheSubnetGroup+    } deriving (Eq, Show)++-- | 'CreateCacheSubnetGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccsgrCacheSubnetGroup' @::@ 'Maybe' 'CacheSubnetGroup'+--+createCacheSubnetGroupResponse :: CreateCacheSubnetGroupResponse+createCacheSubnetGroupResponse = CreateCacheSubnetGroupResponse+    { _ccsgrCacheSubnetGroup = Nothing+    }++ccsgrCacheSubnetGroup :: Lens' CreateCacheSubnetGroupResponse (Maybe CacheSubnetGroup)+ccsgrCacheSubnetGroup =+    lens _ccsgrCacheSubnetGroup (\s a -> s { _ccsgrCacheSubnetGroup = a })++instance ToPath CreateCacheSubnetGroup where+    toPath = const "/"++instance ToQuery CreateCacheSubnetGroup where+    toQuery CreateCacheSubnetGroup{..} = mconcat+        [ "CacheSubnetGroupDescription" =? _ccsgCacheSubnetGroupDescription+        , "CacheSubnetGroupName"        =? _ccsgCacheSubnetGroupName+        , "SubnetIds"                   =? _ccsgSubnetIds+        ]++instance ToHeaders CreateCacheSubnetGroup++instance AWSRequest CreateCacheSubnetGroup where+    type Sv CreateCacheSubnetGroup = ElastiCache+    type Rs CreateCacheSubnetGroup = CreateCacheSubnetGroupResponse++    request  = post "CreateCacheSubnetGroup"+    response = xmlResponse++instance FromXML CreateCacheSubnetGroupResponse where+    parseXML = withElement "CreateCacheSubnetGroupResult" $ \x -> CreateCacheSubnetGroupResponse+        <$> x .@? "CacheSubnetGroup"
+ gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs view
@@ -0,0 +1,406 @@+{-# 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.CreateReplicationGroup+-- 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)++-- | The CreateReplicationGroup operation creates a replication group. A+-- replication group is a collection of cache clusters, where one of the cache+-- clusters is a read/write primary and the others are read-only replicas.+-- Writes to the primary are automatically propagated to the replicas. When+-- you create a replication group, you must specify an existing cache cluster+-- that is in the primary role. When the replication group has been+-- successfully created, you can add one or more read replica replicas to it,+-- up to a total of five read replicas. Note: This action is valid only for+-- Redis.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html>+module Network.AWS.ElastiCache.CreateReplicationGroup+    (+    -- * Request+      CreateReplicationGroup+    -- ** Request constructor+    , createReplicationGroup+    -- ** Request lenses+    , crgAutoMinorVersionUpgrade+    , crgAutomaticFailoverEnabled+    , crgCacheNodeType+    , crgCacheParameterGroupName+    , crgCacheSecurityGroupNames+    , crgCacheSubnetGroupName+    , crgEngine+    , crgEngineVersion+    , crgNotificationTopicArn+    , crgNumCacheClusters+    , crgPort+    , crgPreferredCacheClusterAZs+    , crgPreferredMaintenanceWindow+    , crgPrimaryClusterId+    , crgReplicationGroupDescription+    , crgReplicationGroupId+    , crgSecurityGroupIds+    , crgSnapshotArns+    , crgSnapshotName+    , crgSnapshotRetentionLimit+    , crgSnapshotWindow++    -- * Response+    , CreateReplicationGroupResponse+    -- ** Response constructor+    , createReplicationGroupResponse+    -- ** Response lenses+    , crgrReplicationGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data CreateReplicationGroup = CreateReplicationGroup+    { _crgAutoMinorVersionUpgrade     :: Maybe Bool+    , _crgAutomaticFailoverEnabled    :: Maybe Bool+    , _crgCacheNodeType               :: Maybe Text+    , _crgCacheParameterGroupName     :: Maybe Text+    , _crgCacheSecurityGroupNames     :: List "CacheSecurityGroupName" Text+    , _crgCacheSubnetGroupName        :: Maybe Text+    , _crgEngine                      :: Maybe Text+    , _crgEngineVersion               :: Maybe Text+    , _crgNotificationTopicArn        :: Maybe Text+    , _crgNumCacheClusters            :: Maybe Int+    , _crgPort                        :: Maybe Int+    , _crgPreferredCacheClusterAZs    :: List "AvailabilityZone" Text+    , _crgPreferredMaintenanceWindow  :: Maybe Text+    , _crgPrimaryClusterId            :: Maybe Text+    , _crgReplicationGroupDescription :: Text+    , _crgReplicationGroupId          :: Text+    , _crgSecurityGroupIds            :: List "SecurityGroupId" Text+    , _crgSnapshotArns                :: List "SnapshotArn" Text+    , _crgSnapshotName                :: Maybe Text+    , _crgSnapshotRetentionLimit      :: Maybe Int+    , _crgSnapshotWindow              :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'CreateReplicationGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'crgAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'+--+-- * 'crgAutomaticFailoverEnabled' @::@ 'Maybe' 'Bool'+--+-- * 'crgCacheNodeType' @::@ 'Maybe' 'Text'+--+-- * 'crgCacheParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'crgCacheSecurityGroupNames' @::@ ['Text']+--+-- * 'crgCacheSubnetGroupName' @::@ 'Maybe' 'Text'+--+-- * 'crgEngine' @::@ 'Maybe' 'Text'+--+-- * 'crgEngineVersion' @::@ 'Maybe' 'Text'+--+-- * 'crgNotificationTopicArn' @::@ 'Maybe' 'Text'+--+-- * 'crgNumCacheClusters' @::@ 'Maybe' 'Int'+--+-- * 'crgPort' @::@ 'Maybe' 'Int'+--+-- * 'crgPreferredCacheClusterAZs' @::@ ['Text']+--+-- * 'crgPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'+--+-- * 'crgPrimaryClusterId' @::@ 'Maybe' 'Text'+--+-- * 'crgReplicationGroupDescription' @::@ 'Text'+--+-- * 'crgReplicationGroupId' @::@ 'Text'+--+-- * 'crgSecurityGroupIds' @::@ ['Text']+--+-- * 'crgSnapshotArns' @::@ ['Text']+--+-- * 'crgSnapshotName' @::@ 'Maybe' 'Text'+--+-- * 'crgSnapshotRetentionLimit' @::@ 'Maybe' 'Int'+--+-- * 'crgSnapshotWindow' @::@ 'Maybe' 'Text'+--+createReplicationGroup :: Text -- ^ 'crgReplicationGroupId'+                       -> Text -- ^ 'crgReplicationGroupDescription'+                       -> CreateReplicationGroup+createReplicationGroup p1 p2 = CreateReplicationGroup+    { _crgReplicationGroupId          = p1+    , _crgReplicationGroupDescription = p2+    , _crgPrimaryClusterId            = Nothing+    , _crgAutomaticFailoverEnabled    = Nothing+    , _crgNumCacheClusters            = Nothing+    , _crgPreferredCacheClusterAZs    = mempty+    , _crgCacheNodeType               = Nothing+    , _crgEngine                      = Nothing+    , _crgEngineVersion               = Nothing+    , _crgCacheParameterGroupName     = Nothing+    , _crgCacheSubnetGroupName        = Nothing+    , _crgCacheSecurityGroupNames     = mempty+    , _crgSecurityGroupIds            = mempty+    , _crgSnapshotArns                = mempty+    , _crgSnapshotName                = Nothing+    , _crgPreferredMaintenanceWindow  = Nothing+    , _crgPort                        = Nothing+    , _crgNotificationTopicArn        = Nothing+    , _crgAutoMinorVersionUpgrade     = Nothing+    , _crgSnapshotRetentionLimit      = Nothing+    , _crgSnapshotWindow              = Nothing+    }++-- | Determines whether minor engine upgrades will be applied automatically to+-- the node group during the maintenance window. A value of true allows+-- these upgrades to occur; false disables automatic upgrades. Default:+-- true.+crgAutoMinorVersionUpgrade :: Lens' CreateReplicationGroup (Maybe Bool)+crgAutoMinorVersionUpgrade =+    lens _crgAutoMinorVersionUpgrade+        (\s a -> s { _crgAutoMinorVersionUpgrade = a })++-- | Specifies whether a read-only replica will be automatically promoted to+-- read/write primary if the existing primary fails. If true, automatic+-- failover is enabled for this replication group. If false, automatic+-- failover is disabled for this replication group. Default: false.+crgAutomaticFailoverEnabled :: Lens' CreateReplicationGroup (Maybe Bool)+crgAutomaticFailoverEnabled =+    lens _crgAutomaticFailoverEnabled+        (\s a -> s { _crgAutomaticFailoverEnabled = a })++-- | The compute and memory capacity of the nodes in the node group. Valid+-- node types are as follows: General purpose: Current generation:+-- cache.t2.micro, cache.t2.small, cache.t2.medium, cache.m3.medium,+-- cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge Previous generation:+-- cache.t1.micro, cache.m1.small, cache.m1.medium, cache.m1.large,+-- cache.m1.xlarge Compute optimized: cache.c1.xlarge Memory optimized+-- Current generation: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge,+-- cache.r3.4xlarge, cache.r3.8xlarge Previous generation: cache.m2.xlarge,+-- cache.m2.2xlarge, cache.m2.4xlarge Notes: All t2 instances are created in+-- an Amazon Virtual Private Cloud (VPC). Redis backup/restore is not+-- supported for t2 instances. Redis Append-only files (AOF) functionality+-- is not supported for t1 or t2 instances. For a complete listing of cache+-- node types and specifications, see Amazon ElastiCache Product Features+-- and Details and Cache Node Type-Specific Parameters for Memcached or+-- Cache Node Type-Specific Parameters for Redis.+crgCacheNodeType :: Lens' CreateReplicationGroup (Maybe Text)+crgCacheNodeType = lens _crgCacheNodeType (\s a -> s { _crgCacheNodeType = a })++-- | The name of the parameter group to associate with this replication group.+-- If this argument is omitted, the default cache parameter group for the+-- specified engine is used.+crgCacheParameterGroupName :: Lens' CreateReplicationGroup (Maybe Text)+crgCacheParameterGroupName =+    lens _crgCacheParameterGroupName+        (\s a -> s { _crgCacheParameterGroupName = a })++-- | A list of cache security group names to associate with this replication+-- group.+crgCacheSecurityGroupNames :: Lens' CreateReplicationGroup [Text]+crgCacheSecurityGroupNames =+    lens _crgCacheSecurityGroupNames+        (\s a -> s { _crgCacheSecurityGroupNames = a })+            . _List++-- | The name of the cache subnet group to be used for the replication group.+crgCacheSubnetGroupName :: Lens' CreateReplicationGroup (Maybe Text)+crgCacheSubnetGroupName =+    lens _crgCacheSubnetGroupName (\s a -> s { _crgCacheSubnetGroupName = a })++-- | The name of the cache engine to be used for the cache clusters in this+-- replication group. Default: redis.+crgEngine :: Lens' CreateReplicationGroup (Maybe Text)+crgEngine = lens _crgEngine (\s a -> s { _crgEngine = a })++-- | The version number of the cach engine to be used for the cache clusters+-- in this replication group. To view the supported cache engine versions,+-- use the DescribeCacheEngineVersions operation.+crgEngineVersion :: Lens' CreateReplicationGroup (Maybe Text)+crgEngineVersion = lens _crgEngineVersion (\s a -> s { _crgEngineVersion = a })++-- | The Amazon Resource Name (ARN) of the Amazon Simple Notification Service+-- (SNS) topic to which notifications will be sent.+crgNotificationTopicArn :: Lens' CreateReplicationGroup (Maybe Text)+crgNotificationTopicArn =+    lens _crgNotificationTopicArn (\s a -> s { _crgNotificationTopicArn = a })++-- | The number of cache clusters this replication group will initially have.+-- If AutomaticFailover is enabled, the value of this parameter must be at+-- least 2. The maximum permitted value for NumCacheClusters is 6 (primary+-- plus 5 replicas). If you need to exceed this limit, please fill out the+-- ElastiCache Limit Increase Request forrm at+-- http://aws.amazon.com/contact-us/elasticache-node-limit-request.+crgNumCacheClusters :: Lens' CreateReplicationGroup (Maybe Int)+crgNumCacheClusters =+    lens _crgNumCacheClusters (\s a -> s { _crgNumCacheClusters = a })++-- | The port number on which each member of the replication group will accept+-- connections.+crgPort :: Lens' CreateReplicationGroup (Maybe Int)+crgPort = lens _crgPort (\s a -> s { _crgPort = a })++-- | A list of EC2 availability zones in which the replication group's cache+-- clusters will be created. The order of the availability zones in the list+-- is not important. Default: system chosen availability zones. Example: One+-- Redis cache cluster in each of three availability zones.+-- PreferredAvailabilityZones.member.1=us-east-1a+-- PreferredAvailabilityZones.member.2=us-east-1c+-- PreferredAvailabilityZones.member.3=us-east-1d.+crgPreferredCacheClusterAZs :: Lens' CreateReplicationGroup [Text]+crgPreferredCacheClusterAZs =+    lens _crgPreferredCacheClusterAZs+        (\s a -> s { _crgPreferredCacheClusterAZs = a })+            . _List++-- | The weekly time range (in UTC) during which system maintenance can occur.+-- Example: sun:05:00-sun:09:00.+crgPreferredMaintenanceWindow :: Lens' CreateReplicationGroup (Maybe Text)+crgPreferredMaintenanceWindow =+    lens _crgPreferredMaintenanceWindow+        (\s a -> s { _crgPreferredMaintenanceWindow = a })++-- | The identifier of the cache cluster that will serve as the primary for+-- this replication group. This cache cluster must already exist and have a+-- status of available. This parameter is not required if NumCacheClusters+-- is specified.+crgPrimaryClusterId :: Lens' CreateReplicationGroup (Maybe Text)+crgPrimaryClusterId =+    lens _crgPrimaryClusterId (\s a -> s { _crgPrimaryClusterId = a })++-- | A user-created description for the replication group.+crgReplicationGroupDescription :: Lens' CreateReplicationGroup Text+crgReplicationGroupDescription =+    lens _crgReplicationGroupDescription+        (\s a -> s { _crgReplicationGroupDescription = a })++-- | The replication group identifier. This parameter is stored as a lowercase+-- string. Constraints: A name must contain from 1 to 20 alphanumeric+-- characters or hyphens. The first character must be a letter. A name+-- cannot end with a hyphen or contain two consecutive hyphens.+crgReplicationGroupId :: Lens' CreateReplicationGroup Text+crgReplicationGroupId =+    lens _crgReplicationGroupId (\s a -> s { _crgReplicationGroupId = a })++-- | One or more Amazon VPC security groups associated with this replication+-- group. Use this parameter only when you are creating a replication group+-- in an Amazon Virtual Private Cloud (VPC).+crgSecurityGroupIds :: Lens' CreateReplicationGroup [Text]+crgSecurityGroupIds =+    lens _crgSecurityGroupIds (\s a -> s { _crgSecurityGroupIds = a })+        . _List++-- | A single-element string list containing an Amazon Resource Name (ARN)+-- that uniquely identifies a Redis RDB snapshot file stored in Amazon S3.+-- The snapshot file will be used to populate the node group. The Amazon S3+-- object name in the ARN cannot contain any commas. Note: This parameter is+-- only valid if the Engine parameter is redis. Example of an Amazon S3 ARN:+-- arn:aws:s3:::my_bucket/snapshot1.rdb.+crgSnapshotArns :: Lens' CreateReplicationGroup [Text]+crgSnapshotArns = lens _crgSnapshotArns (\s a -> s { _crgSnapshotArns = a }) . _List++-- | The name of a snapshot from which to restore data into the new node+-- group. The snapshot status changes to restoring while the new node group+-- is being created. Note: This parameter is only valid if the Engine+-- parameter is redis.+crgSnapshotName :: Lens' CreateReplicationGroup (Maybe Text)+crgSnapshotName = lens _crgSnapshotName (\s a -> s { _crgSnapshotName = a })++-- | The number of days for which ElastiCache will retain automatic snapshots+-- before deleting them. For example, if you set SnapshotRetentionLimit to+-- 5, then a snapshot that was taken today will be retained for 5 days+-- before being deleted. Note: This parameter is only valid if the Engine+-- parameter is redis. Default: 0 (i.e., automatic backups are disabled for+-- this cache cluster).+crgSnapshotRetentionLimit :: Lens' CreateReplicationGroup (Maybe Int)+crgSnapshotRetentionLimit =+    lens _crgSnapshotRetentionLimit+        (\s a -> s { _crgSnapshotRetentionLimit = a })++-- | The daily time range (in UTC) during which ElastiCache will begin taking+-- a daily snapshot of your node group. Example: 05:00-09:00 If you do not+-- specify this parameter, then ElastiCache will automatically choose an+-- appropriate time range. Note: This parameter is only valid if the Engine+-- parameter is redis.+crgSnapshotWindow :: Lens' CreateReplicationGroup (Maybe Text)+crgSnapshotWindow =+    lens _crgSnapshotWindow (\s a -> s { _crgSnapshotWindow = a })++newtype CreateReplicationGroupResponse = CreateReplicationGroupResponse+    { _crgrReplicationGroup :: Maybe ReplicationGroup+    } deriving (Eq, Show)++-- | 'CreateReplicationGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'crgrReplicationGroup' @::@ 'Maybe' 'ReplicationGroup'+--+createReplicationGroupResponse :: CreateReplicationGroupResponse+createReplicationGroupResponse = CreateReplicationGroupResponse+    { _crgrReplicationGroup = Nothing+    }++crgrReplicationGroup :: Lens' CreateReplicationGroupResponse (Maybe ReplicationGroup)+crgrReplicationGroup =+    lens _crgrReplicationGroup (\s a -> s { _crgrReplicationGroup = a })++instance ToPath CreateReplicationGroup where+    toPath = const "/"++instance ToQuery CreateReplicationGroup where+    toQuery CreateReplicationGroup{..} = mconcat+        [ "AutoMinorVersionUpgrade"     =? _crgAutoMinorVersionUpgrade+        , "AutomaticFailoverEnabled"    =? _crgAutomaticFailoverEnabled+        , "CacheNodeType"               =? _crgCacheNodeType+        , "CacheParameterGroupName"     =? _crgCacheParameterGroupName+        , "CacheSecurityGroupNames"     =? _crgCacheSecurityGroupNames+        , "CacheSubnetGroupName"        =? _crgCacheSubnetGroupName+        , "Engine"                      =? _crgEngine+        , "EngineVersion"               =? _crgEngineVersion+        , "NotificationTopicArn"        =? _crgNotificationTopicArn+        , "NumCacheClusters"            =? _crgNumCacheClusters+        , "Port"                        =? _crgPort+        , "PreferredCacheClusterAZs"    =? _crgPreferredCacheClusterAZs+        , "PreferredMaintenanceWindow"  =? _crgPreferredMaintenanceWindow+        , "PrimaryClusterId"            =? _crgPrimaryClusterId+        , "ReplicationGroupDescription" =? _crgReplicationGroupDescription+        , "ReplicationGroupId"          =? _crgReplicationGroupId+        , "SecurityGroupIds"            =? _crgSecurityGroupIds+        , "SnapshotArns"                =? _crgSnapshotArns+        , "SnapshotName"                =? _crgSnapshotName+        , "SnapshotRetentionLimit"      =? _crgSnapshotRetentionLimit+        , "SnapshotWindow"              =? _crgSnapshotWindow+        ]++instance ToHeaders CreateReplicationGroup++instance AWSRequest CreateReplicationGroup where+    type Sv CreateReplicationGroup = ElastiCache+    type Rs CreateReplicationGroup = CreateReplicationGroupResponse++    request  = post "CreateReplicationGroup"+    response = xmlResponse++instance FromXML CreateReplicationGroupResponse where+    parseXML = withElement "CreateReplicationGroupResult" $ \x -> CreateReplicationGroupResponse+        <$> x .@? "ReplicationGroup"
+ gen/Network/AWS/ElastiCache/CreateSnapshot.hs view
@@ -0,0 +1,118 @@+{-# 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.CreateSnapshot+-- 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)++-- | The CreateSnapshot operation creates a copy of an entire cache cluster at a+-- specific moment in time.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateSnapshot.html>+module Network.AWS.ElastiCache.CreateSnapshot+    (+    -- * Request+      CreateSnapshot+    -- ** Request constructor+    , createSnapshot+    -- ** Request lenses+    , csCacheClusterId+    , csSnapshotName++    -- * Response+    , CreateSnapshotResponse+    -- ** Response constructor+    , createSnapshotResponse+    -- ** Response lenses+    , csr1Snapshot+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data CreateSnapshot = CreateSnapshot+    { _csCacheClusterId :: Text+    , _csSnapshotName   :: Text+    } deriving (Eq, Ord, Show)++-- | 'CreateSnapshot' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csCacheClusterId' @::@ 'Text'+--+-- * 'csSnapshotName' @::@ 'Text'+--+createSnapshot :: Text -- ^ 'csCacheClusterId'+               -> Text -- ^ 'csSnapshotName'+               -> CreateSnapshot+createSnapshot p1 p2 = CreateSnapshot+    { _csCacheClusterId = p1+    , _csSnapshotName   = p2+    }++-- | The identifier of an existing cache cluster. The snapshot will be created+-- from this cache cluster.+csCacheClusterId :: Lens' CreateSnapshot Text+csCacheClusterId = lens _csCacheClusterId (\s a -> s { _csCacheClusterId = a })++-- | A name for the snapshot being created.+csSnapshotName :: Lens' CreateSnapshot Text+csSnapshotName = lens _csSnapshotName (\s a -> s { _csSnapshotName = a })++newtype CreateSnapshotResponse = CreateSnapshotResponse+    { _csr1Snapshot :: Maybe Snapshot+    } deriving (Eq, Show)++-- | 'CreateSnapshotResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csr1Snapshot' @::@ 'Maybe' 'Snapshot'+--+createSnapshotResponse :: CreateSnapshotResponse+createSnapshotResponse = CreateSnapshotResponse+    { _csr1Snapshot = Nothing+    }++csr1Snapshot :: Lens' CreateSnapshotResponse (Maybe Snapshot)+csr1Snapshot = lens _csr1Snapshot (\s a -> s { _csr1Snapshot = a })++instance ToPath CreateSnapshot where+    toPath = const "/"++instance ToQuery CreateSnapshot where+    toQuery CreateSnapshot{..} = mconcat+        [ "CacheClusterId" =? _csCacheClusterId+        , "SnapshotName"   =? _csSnapshotName+        ]++instance ToHeaders CreateSnapshot++instance AWSRequest CreateSnapshot where+    type Sv CreateSnapshot = ElastiCache+    type Rs CreateSnapshot = CreateSnapshotResponse++    request  = post "CreateSnapshot"+    response = xmlResponse++instance FromXML CreateSnapshotResponse where+    parseXML = withElement "CreateSnapshotResult" $ \x -> CreateSnapshotResponse+        <$> x .@? "Snapshot"
+ gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs view
@@ -0,0 +1,127 @@+{-# 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.DeleteCacheCluster+-- 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)++-- | The DeleteCacheCluster operation deletes a previously provisioned cache+-- cluster. DeleteCacheCluster deletes all associated cache nodes, node+-- endpoints and the cache cluster itself. When you receive a successful+-- response from this operation, Amazon ElastiCache immediately begins+-- deleting the cache cluster; you cannot cancel or revert this operation.+-- This API cannot be used to delete a cache cluster that is the last read+-- replica of a replication group that has automatic failover mode enabled.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteCacheCluster.html>+module Network.AWS.ElastiCache.DeleteCacheCluster+    (+    -- * Request+      DeleteCacheCluster+    -- ** Request constructor+    , deleteCacheCluster+    -- ** Request lenses+    , dccCacheClusterId+    , dccFinalSnapshotIdentifier++    -- * Response+    , DeleteCacheClusterResponse+    -- ** Response constructor+    , deleteCacheClusterResponse+    -- ** Response lenses+    , dccrCacheCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data DeleteCacheCluster = DeleteCacheCluster+    { _dccCacheClusterId          :: Text+    , _dccFinalSnapshotIdentifier :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DeleteCacheCluster' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dccCacheClusterId' @::@ 'Text'+--+-- * 'dccFinalSnapshotIdentifier' @::@ 'Maybe' 'Text'+--+deleteCacheCluster :: Text -- ^ 'dccCacheClusterId'+                   -> DeleteCacheCluster+deleteCacheCluster p1 = DeleteCacheCluster+    { _dccCacheClusterId          = p1+    , _dccFinalSnapshotIdentifier = Nothing+    }++-- | The cache cluster identifier for the cluster to be deleted. This+-- parameter is not case sensitive.+dccCacheClusterId :: Lens' DeleteCacheCluster Text+dccCacheClusterId =+    lens _dccCacheClusterId (\s a -> s { _dccCacheClusterId = a })++-- | The user-supplied name of a final cache cluster snapshot. This is the+-- unique name that identifies the snapshot. ElastiCache creates the+-- snapshot, and then deletes the cache cluster immediately afterward.+dccFinalSnapshotIdentifier :: Lens' DeleteCacheCluster (Maybe Text)+dccFinalSnapshotIdentifier =+    lens _dccFinalSnapshotIdentifier+        (\s a -> s { _dccFinalSnapshotIdentifier = a })++newtype DeleteCacheClusterResponse = DeleteCacheClusterResponse+    { _dccrCacheCluster :: Maybe CacheCluster+    } deriving (Eq, Show)++-- | 'DeleteCacheClusterResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dccrCacheCluster' @::@ 'Maybe' 'CacheCluster'+--+deleteCacheClusterResponse :: DeleteCacheClusterResponse+deleteCacheClusterResponse = DeleteCacheClusterResponse+    { _dccrCacheCluster = Nothing+    }++dccrCacheCluster :: Lens' DeleteCacheClusterResponse (Maybe CacheCluster)+dccrCacheCluster = lens _dccrCacheCluster (\s a -> s { _dccrCacheCluster = a })++instance ToPath DeleteCacheCluster where+    toPath = const "/"++instance ToQuery DeleteCacheCluster where+    toQuery DeleteCacheCluster{..} = mconcat+        [ "CacheClusterId"          =? _dccCacheClusterId+        , "FinalSnapshotIdentifier" =? _dccFinalSnapshotIdentifier+        ]++instance ToHeaders DeleteCacheCluster++instance AWSRequest DeleteCacheCluster where+    type Sv DeleteCacheCluster = ElastiCache+    type Rs DeleteCacheCluster = DeleteCacheClusterResponse++    request  = post "DeleteCacheCluster"+    response = xmlResponse++instance FromXML DeleteCacheClusterResponse where+    parseXML = withElement "DeleteCacheClusterResult" $ \x -> DeleteCacheClusterResponse+        <$> x .@? "CacheCluster"
+ gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs view
@@ -0,0 +1,92 @@+{-# 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.DeleteCacheParameterGroup+-- 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)++-- | The DeleteCacheParameterGroup operation deletes the specified cache+-- parameter group. You cannot delete a cache parameter group if it is+-- associated with any cache clusters.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteCacheParameterGroup.html>+module Network.AWS.ElastiCache.DeleteCacheParameterGroup+    (+    -- * Request+      DeleteCacheParameterGroup+    -- ** Request constructor+    , deleteCacheParameterGroup+    -- ** Request lenses+    , dcpg1CacheParameterGroupName++    -- * Response+    , DeleteCacheParameterGroupResponse+    -- ** Response constructor+    , deleteCacheParameterGroupResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++newtype DeleteCacheParameterGroup = DeleteCacheParameterGroup+    { _dcpg1CacheParameterGroupName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteCacheParameterGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcpg1CacheParameterGroupName' @::@ 'Text'+--+deleteCacheParameterGroup :: Text -- ^ 'dcpg1CacheParameterGroupName'+                          -> DeleteCacheParameterGroup+deleteCacheParameterGroup p1 = DeleteCacheParameterGroup+    { _dcpg1CacheParameterGroupName = p1+    }++-- | The name of the cache parameter group to delete.+dcpg1CacheParameterGroupName :: Lens' DeleteCacheParameterGroup Text+dcpg1CacheParameterGroupName =+    lens _dcpg1CacheParameterGroupName+        (\s a -> s { _dcpg1CacheParameterGroupName = a })++data DeleteCacheParameterGroupResponse = DeleteCacheParameterGroupResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteCacheParameterGroupResponse' constructor.+deleteCacheParameterGroupResponse :: DeleteCacheParameterGroupResponse+deleteCacheParameterGroupResponse = DeleteCacheParameterGroupResponse++instance ToPath DeleteCacheParameterGroup where+    toPath = const "/"++instance ToQuery DeleteCacheParameterGroup where+    toQuery DeleteCacheParameterGroup{..} = mconcat+        [ "CacheParameterGroupName" =? _dcpg1CacheParameterGroupName+        ]++instance ToHeaders DeleteCacheParameterGroup++instance AWSRequest DeleteCacheParameterGroup where+    type Sv DeleteCacheParameterGroup = ElastiCache+    type Rs DeleteCacheParameterGroup = DeleteCacheParameterGroupResponse++    request  = post "DeleteCacheParameterGroup"+    response = nullResponse DeleteCacheParameterGroupResponse
+ gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs view
@@ -0,0 +1,90 @@+{-# 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.DeleteCacheSecurityGroup+-- 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)++-- | The DeleteCacheSecurityGroup operation deletes a cache security group.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteCacheSecurityGroup.html>+module Network.AWS.ElastiCache.DeleteCacheSecurityGroup+    (+    -- * Request+      DeleteCacheSecurityGroup+    -- ** Request constructor+    , deleteCacheSecurityGroup+    -- ** Request lenses+    , dcsgCacheSecurityGroupName++    -- * Response+    , DeleteCacheSecurityGroupResponse+    -- ** Response constructor+    , deleteCacheSecurityGroupResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++newtype DeleteCacheSecurityGroup = DeleteCacheSecurityGroup+    { _dcsgCacheSecurityGroupName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteCacheSecurityGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsgCacheSecurityGroupName' @::@ 'Text'+--+deleteCacheSecurityGroup :: Text -- ^ 'dcsgCacheSecurityGroupName'+                         -> DeleteCacheSecurityGroup+deleteCacheSecurityGroup p1 = DeleteCacheSecurityGroup+    { _dcsgCacheSecurityGroupName = p1+    }++-- | The name of the cache security group to delete.+dcsgCacheSecurityGroupName :: Lens' DeleteCacheSecurityGroup Text+dcsgCacheSecurityGroupName =+    lens _dcsgCacheSecurityGroupName+        (\s a -> s { _dcsgCacheSecurityGroupName = a })++data DeleteCacheSecurityGroupResponse = DeleteCacheSecurityGroupResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteCacheSecurityGroupResponse' constructor.+deleteCacheSecurityGroupResponse :: DeleteCacheSecurityGroupResponse+deleteCacheSecurityGroupResponse = DeleteCacheSecurityGroupResponse++instance ToPath DeleteCacheSecurityGroup where+    toPath = const "/"++instance ToQuery DeleteCacheSecurityGroup where+    toQuery DeleteCacheSecurityGroup{..} = mconcat+        [ "CacheSecurityGroupName" =? _dcsgCacheSecurityGroupName+        ]++instance ToHeaders DeleteCacheSecurityGroup++instance AWSRequest DeleteCacheSecurityGroup where+    type Sv DeleteCacheSecurityGroup = ElastiCache+    type Rs DeleteCacheSecurityGroup = DeleteCacheSecurityGroupResponse++    request  = post "DeleteCacheSecurityGroup"+    response = nullResponse DeleteCacheSecurityGroupResponse
+ gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs view
@@ -0,0 +1,91 @@+{-# 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.DeleteCacheSubnetGroup+-- 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)++-- | The DeleteCacheSubnetGroup operation deletes a cache subnet group.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteCacheSubnetGroup.html>+module Network.AWS.ElastiCache.DeleteCacheSubnetGroup+    (+    -- * Request+      DeleteCacheSubnetGroup+    -- ** Request constructor+    , deleteCacheSubnetGroup+    -- ** Request lenses+    , dcsg1CacheSubnetGroupName++    -- * Response+    , DeleteCacheSubnetGroupResponse+    -- ** Response constructor+    , deleteCacheSubnetGroupResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++newtype DeleteCacheSubnetGroup = DeleteCacheSubnetGroup+    { _dcsg1CacheSubnetGroupName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteCacheSubnetGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsg1CacheSubnetGroupName' @::@ 'Text'+--+deleteCacheSubnetGroup :: Text -- ^ 'dcsg1CacheSubnetGroupName'+                       -> DeleteCacheSubnetGroup+deleteCacheSubnetGroup p1 = DeleteCacheSubnetGroup+    { _dcsg1CacheSubnetGroupName = p1+    }++-- | The name of the cache subnet group to delete. Constraints: Must contain+-- no more than 255 alphanumeric characters or hyphens.+dcsg1CacheSubnetGroupName :: Lens' DeleteCacheSubnetGroup Text+dcsg1CacheSubnetGroupName =+    lens _dcsg1CacheSubnetGroupName+        (\s a -> s { _dcsg1CacheSubnetGroupName = a })++data DeleteCacheSubnetGroupResponse = DeleteCacheSubnetGroupResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteCacheSubnetGroupResponse' constructor.+deleteCacheSubnetGroupResponse :: DeleteCacheSubnetGroupResponse+deleteCacheSubnetGroupResponse = DeleteCacheSubnetGroupResponse++instance ToPath DeleteCacheSubnetGroup where+    toPath = const "/"++instance ToQuery DeleteCacheSubnetGroup where+    toQuery DeleteCacheSubnetGroup{..} = mconcat+        [ "CacheSubnetGroupName" =? _dcsg1CacheSubnetGroupName+        ]++instance ToHeaders DeleteCacheSubnetGroup++instance AWSRequest DeleteCacheSubnetGroup where+    type Sv DeleteCacheSubnetGroup = ElastiCache+    type Rs DeleteCacheSubnetGroup = DeleteCacheSubnetGroupResponse++    request  = post "DeleteCacheSubnetGroup"+    response = nullResponse DeleteCacheSubnetGroupResponse
+ gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs view
@@ -0,0 +1,141 @@+{-# 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.DeleteReplicationGroup+-- 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)++-- | The DeleteReplicationGroup operation deletes an existing cluster. By+-- default, this operation deletes the entire cluster, including the primary+-- node group and all of the read replicas. You can optionally delete only the+-- read replicas, while retaining the primary node group. When you receive a+-- successful response from this operation, Amazon ElastiCache immediately+-- begins deleting the selected resources; you cannot cancel or revert this+-- operation.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteReplicationGroup.html>+module Network.AWS.ElastiCache.DeleteReplicationGroup+    (+    -- * Request+      DeleteReplicationGroup+    -- ** Request constructor+    , deleteReplicationGroup+    -- ** Request lenses+    , drgFinalSnapshotIdentifier+    , drgReplicationGroupId+    , drgRetainPrimaryCluster++    -- * Response+    , DeleteReplicationGroupResponse+    -- ** Response constructor+    , deleteReplicationGroupResponse+    -- ** Response lenses+    , drgrReplicationGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data DeleteReplicationGroup = DeleteReplicationGroup+    { _drgFinalSnapshotIdentifier :: Maybe Text+    , _drgReplicationGroupId      :: Text+    , _drgRetainPrimaryCluster    :: Maybe Bool+    } deriving (Eq, Ord, Show)++-- | 'DeleteReplicationGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drgFinalSnapshotIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'drgReplicationGroupId' @::@ 'Text'+--+-- * 'drgRetainPrimaryCluster' @::@ 'Maybe' 'Bool'+--+deleteReplicationGroup :: Text -- ^ 'drgReplicationGroupId'+                       -> DeleteReplicationGroup+deleteReplicationGroup p1 = DeleteReplicationGroup+    { _drgReplicationGroupId      = p1+    , _drgRetainPrimaryCluster    = Nothing+    , _drgFinalSnapshotIdentifier = Nothing+    }++-- | The name of a final node group snapshot. ElastiCache creates the snapshot+-- from the primary node in the cluster, rather than one of the replicas;+-- this is to ensure that it captures the freshest data. After the final+-- snapshot is taken, the cluster is immediately deleted.+drgFinalSnapshotIdentifier :: Lens' DeleteReplicationGroup (Maybe Text)+drgFinalSnapshotIdentifier =+    lens _drgFinalSnapshotIdentifier+        (\s a -> s { _drgFinalSnapshotIdentifier = a })++-- | The identifier for the cluster to be deleted. This parameter is not case+-- sensitive.+drgReplicationGroupId :: Lens' DeleteReplicationGroup Text+drgReplicationGroupId =+    lens _drgReplicationGroupId (\s a -> s { _drgReplicationGroupId = a })++-- | If set to true, all of the read replicas will be deleted, but the primary+-- node will be retained.+drgRetainPrimaryCluster :: Lens' DeleteReplicationGroup (Maybe Bool)+drgRetainPrimaryCluster =+    lens _drgRetainPrimaryCluster (\s a -> s { _drgRetainPrimaryCluster = a })++newtype DeleteReplicationGroupResponse = DeleteReplicationGroupResponse+    { _drgrReplicationGroup :: Maybe ReplicationGroup+    } deriving (Eq, Show)++-- | 'DeleteReplicationGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drgrReplicationGroup' @::@ 'Maybe' 'ReplicationGroup'+--+deleteReplicationGroupResponse :: DeleteReplicationGroupResponse+deleteReplicationGroupResponse = DeleteReplicationGroupResponse+    { _drgrReplicationGroup = Nothing+    }++drgrReplicationGroup :: Lens' DeleteReplicationGroupResponse (Maybe ReplicationGroup)+drgrReplicationGroup =+    lens _drgrReplicationGroup (\s a -> s { _drgrReplicationGroup = a })++instance ToPath DeleteReplicationGroup where+    toPath = const "/"++instance ToQuery DeleteReplicationGroup where+    toQuery DeleteReplicationGroup{..} = mconcat+        [ "FinalSnapshotIdentifier" =? _drgFinalSnapshotIdentifier+        , "ReplicationGroupId"      =? _drgReplicationGroupId+        , "RetainPrimaryCluster"    =? _drgRetainPrimaryCluster+        ]++instance ToHeaders DeleteReplicationGroup++instance AWSRequest DeleteReplicationGroup where+    type Sv DeleteReplicationGroup = ElastiCache+    type Rs DeleteReplicationGroup = DeleteReplicationGroupResponse++    request  = post "DeleteReplicationGroup"+    response = xmlResponse++instance FromXML DeleteReplicationGroupResponse where+    parseXML = withElement "DeleteReplicationGroupResult" $ \x -> DeleteReplicationGroupResponse+        <$> x .@? "ReplicationGroup"
+ gen/Network/AWS/ElastiCache/DeleteSnapshot.hs view
@@ -0,0 +1,107 @@+{-# 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.DeleteSnapshot+-- 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)++-- | The DeleteSnapshot operation deletes an existing snapshot. When you receive+-- a successful response from this operation, ElastiCache immediately begins+-- deleting the snapshot; you cannot cancel or revert this operation.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteSnapshot.html>+module Network.AWS.ElastiCache.DeleteSnapshot+    (+    -- * Request+      DeleteSnapshot+    -- ** Request constructor+    , deleteSnapshot+    -- ** Request lenses+    , ds1SnapshotName++    -- * Response+    , DeleteSnapshotResponse+    -- ** Response constructor+    , deleteSnapshotResponse+    -- ** Response lenses+    , dsrSnapshot+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++newtype DeleteSnapshot = DeleteSnapshot+    { _ds1SnapshotName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteSnapshot' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ds1SnapshotName' @::@ 'Text'+--+deleteSnapshot :: Text -- ^ 'ds1SnapshotName'+               -> DeleteSnapshot+deleteSnapshot p1 = DeleteSnapshot+    { _ds1SnapshotName = p1+    }++-- | The name of the snapshot to be deleted.+ds1SnapshotName :: Lens' DeleteSnapshot Text+ds1SnapshotName = lens _ds1SnapshotName (\s a -> s { _ds1SnapshotName = a })++newtype DeleteSnapshotResponse = DeleteSnapshotResponse+    { _dsrSnapshot :: Maybe Snapshot+    } deriving (Eq, Show)++-- | 'DeleteSnapshotResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dsrSnapshot' @::@ 'Maybe' 'Snapshot'+--+deleteSnapshotResponse :: DeleteSnapshotResponse+deleteSnapshotResponse = DeleteSnapshotResponse+    { _dsrSnapshot = Nothing+    }++dsrSnapshot :: Lens' DeleteSnapshotResponse (Maybe Snapshot)+dsrSnapshot = lens _dsrSnapshot (\s a -> s { _dsrSnapshot = a })++instance ToPath DeleteSnapshot where+    toPath = const "/"++instance ToQuery DeleteSnapshot where+    toQuery DeleteSnapshot{..} = mconcat+        [ "SnapshotName" =? _ds1SnapshotName+        ]++instance ToHeaders DeleteSnapshot++instance AWSRequest DeleteSnapshot where+    type Sv DeleteSnapshot = ElastiCache+    type Rs DeleteSnapshot = DeleteSnapshotResponse++    request  = post "DeleteSnapshot"+    response = xmlResponse++instance FromXML DeleteSnapshotResponse where+    parseXML = withElement "DeleteSnapshotResult" $ \x -> DeleteSnapshotResponse+        <$> x .@? "Snapshot"
+ gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs view
@@ -0,0 +1,180 @@+{-# 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.DescribeCacheClusters+-- 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)++-- | The DescribeCacheClusters operation returns information about all+-- provisioned cache clusters if no cache cluster identifier is specified, or+-- about a specific cache cluster if a cache cluster identifier is supplied.+-- By default, abbreviated information about the cache clusters(s) will be+-- returned. You can use the optional ShowDetails flag to retrieve detailed+-- information about the cache nodes associated with the cache clusters. These+-- details include the DNS address and port for the cache node endpoint. If+-- the cluster is in the CREATING state, only cluster level information will+-- be displayed until all of the nodes are successfully provisioned. If the+-- cluster is in the DELETING state, only cluster level information will be+-- displayed. If cache nodes are currently being added to the cache cluster,+-- node endpoint information and creation time for the additional nodes will+-- not be displayed until they are completely provisioned. When the cache+-- cluster state is available, the cluster is ready for use. If cache nodes+-- are currently being removed from the cache cluster, no endpoint information+-- for the removed nodes is displayed.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheClusters.html>+module Network.AWS.ElastiCache.DescribeCacheClusters+    (+    -- * Request+      DescribeCacheClusters+    -- ** Request constructor+    , describeCacheClusters+    -- ** Request lenses+    , dcc1CacheClusterId+    , dcc1Marker+    , dcc1MaxRecords+    , dcc1ShowCacheNodeInfo++    -- * Response+    , DescribeCacheClustersResponse+    -- ** Response constructor+    , describeCacheClustersResponse+    -- ** Response lenses+    , dccrCacheClusters+    , dccrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data DescribeCacheClusters = DescribeCacheClusters+    { _dcc1CacheClusterId    :: Maybe Text+    , _dcc1Marker            :: Maybe Text+    , _dcc1MaxRecords        :: Maybe Int+    , _dcc1ShowCacheNodeInfo :: Maybe Bool+    } deriving (Eq, Ord, Show)++-- | 'DescribeCacheClusters' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcc1CacheClusterId' @::@ 'Maybe' 'Text'+--+-- * 'dcc1Marker' @::@ 'Maybe' 'Text'+--+-- * 'dcc1MaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'dcc1ShowCacheNodeInfo' @::@ 'Maybe' 'Bool'+--+describeCacheClusters :: DescribeCacheClusters+describeCacheClusters = DescribeCacheClusters+    { _dcc1CacheClusterId    = Nothing+    , _dcc1MaxRecords        = Nothing+    , _dcc1Marker            = Nothing+    , _dcc1ShowCacheNodeInfo = Nothing+    }++-- | The user-supplied cluster identifier. If this parameter is specified,+-- only information about that specific cache cluster is returned. This+-- parameter isn't case sensitive.+dcc1CacheClusterId :: Lens' DescribeCacheClusters (Maybe Text)+dcc1CacheClusterId =+    lens _dcc1CacheClusterId (\s a -> s { _dcc1CacheClusterId = 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.+dcc1Marker :: Lens' DescribeCacheClusters (Maybe Text)+dcc1Marker = lens _dcc1Marker (\s a -> s { _dcc1Marker = 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.+dcc1MaxRecords :: Lens' DescribeCacheClusters (Maybe Int)+dcc1MaxRecords = lens _dcc1MaxRecords (\s a -> s { _dcc1MaxRecords = a })++-- | An optional flag that can be included in the DescribeCacheCluster request+-- to retrieve information about the individual cache nodes.+dcc1ShowCacheNodeInfo :: Lens' DescribeCacheClusters (Maybe Bool)+dcc1ShowCacheNodeInfo =+    lens _dcc1ShowCacheNodeInfo (\s a -> s { _dcc1ShowCacheNodeInfo = a })++data DescribeCacheClustersResponse = DescribeCacheClustersResponse+    { _dccrCacheClusters :: List "CacheCluster" CacheCluster+    , _dccrMarker        :: Maybe Text+    } deriving (Eq, Show)++-- | 'DescribeCacheClustersResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dccrCacheClusters' @::@ ['CacheCluster']+--+-- * 'dccrMarker' @::@ 'Maybe' 'Text'+--+describeCacheClustersResponse :: DescribeCacheClustersResponse+describeCacheClustersResponse = DescribeCacheClustersResponse+    { _dccrMarker        = Nothing+    , _dccrCacheClusters = mempty+    }++-- | A list of cache clusters. Each item in the list contains detailed+-- information about one cache cluster.+dccrCacheClusters :: Lens' DescribeCacheClustersResponse [CacheCluster]+dccrCacheClusters =+    lens _dccrCacheClusters (\s a -> s { _dccrCacheClusters = a })+        . _List++-- | Provides an identifier to allow retrieval of paginated results.+dccrMarker :: Lens' DescribeCacheClustersResponse (Maybe Text)+dccrMarker = lens _dccrMarker (\s a -> s { _dccrMarker = a })++instance ToPath DescribeCacheClusters where+    toPath = const "/"++instance ToQuery DescribeCacheClusters where+    toQuery DescribeCacheClusters{..} = mconcat+        [ "CacheClusterId"    =? _dcc1CacheClusterId+        , "Marker"            =? _dcc1Marker+        , "MaxRecords"        =? _dcc1MaxRecords+        , "ShowCacheNodeInfo" =? _dcc1ShowCacheNodeInfo+        ]++instance ToHeaders DescribeCacheClusters++instance AWSRequest DescribeCacheClusters where+    type Sv DescribeCacheClusters = ElastiCache+    type Rs DescribeCacheClusters = DescribeCacheClustersResponse++    request  = post "DescribeCacheClusters"+    response = xmlResponse++instance FromXML DescribeCacheClustersResponse where+    parseXML = withElement "DescribeCacheClustersResult" $ \x -> DescribeCacheClustersResponse+        <$> x .@  "CacheClusters"+        <*> x .@? "Marker"++instance AWSPager DescribeCacheClusters where+    page rq rs+        | stop (rq ^. dcc1Marker) = Nothing+        | otherwise = (\x -> rq & dcc1Marker ?~ x)+            <$> (rs ^. dccrMarker)
+ gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs view
@@ -0,0 +1,189 @@+{-# 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 <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)++-- | The DescribeCacheEngineVersions operation returns a list of the available+-- cache engines and their versions.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheEngineVersions.html>+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)
+ gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs view
@@ -0,0 +1,155 @@+{-# 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.DescribeCacheParameterGroups+-- 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)++-- | The DescribeCacheParameterGroups operation returns a list of cache+-- parameter group descriptions. If a cache parameter group name is specified,+-- the list will contain only the descriptions for that group.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheParameterGroups.html>+module Network.AWS.ElastiCache.DescribeCacheParameterGroups+    (+    -- * Request+      DescribeCacheParameterGroups+    -- ** Request constructor+    , describeCacheParameterGroups+    -- ** Request lenses+    , dcpgCacheParameterGroupName+    , dcpgMarker+    , dcpgMaxRecords++    -- * Response+    , DescribeCacheParameterGroupsResponse+    -- ** Response constructor+    , describeCacheParameterGroupsResponse+    -- ** Response lenses+    , dcpgrCacheParameterGroups+    , dcpgrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data DescribeCacheParameterGroups = DescribeCacheParameterGroups+    { _dcpgCacheParameterGroupName :: Maybe Text+    , _dcpgMarker                  :: Maybe Text+    , _dcpgMaxRecords              :: Maybe Int+    } deriving (Eq, Ord, Show)++-- | 'DescribeCacheParameterGroups' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcpgCacheParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'dcpgMarker' @::@ 'Maybe' 'Text'+--+-- * 'dcpgMaxRecords' @::@ 'Maybe' 'Int'+--+describeCacheParameterGroups :: DescribeCacheParameterGroups+describeCacheParameterGroups = DescribeCacheParameterGroups+    { _dcpgCacheParameterGroupName = Nothing+    , _dcpgMaxRecords              = Nothing+    , _dcpgMarker                  = Nothing+    }++-- | The name of a specific cache parameter group to return details for.+dcpgCacheParameterGroupName :: Lens' DescribeCacheParameterGroups (Maybe Text)+dcpgCacheParameterGroupName =+    lens _dcpgCacheParameterGroupName+        (\s a -> s { _dcpgCacheParameterGroupName = 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.+dcpgMarker :: Lens' DescribeCacheParameterGroups (Maybe Text)+dcpgMarker = lens _dcpgMarker (\s a -> s { _dcpgMarker = 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.+dcpgMaxRecords :: Lens' DescribeCacheParameterGroups (Maybe Int)+dcpgMaxRecords = lens _dcpgMaxRecords (\s a -> s { _dcpgMaxRecords = a })++data DescribeCacheParameterGroupsResponse = DescribeCacheParameterGroupsResponse+    { _dcpgrCacheParameterGroups :: List "CacheParameterGroup" CacheParameterGroup+    , _dcpgrMarker               :: Maybe Text+    } deriving (Eq, Show)++-- | 'DescribeCacheParameterGroupsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcpgrCacheParameterGroups' @::@ ['CacheParameterGroup']+--+-- * 'dcpgrMarker' @::@ 'Maybe' 'Text'+--+describeCacheParameterGroupsResponse :: DescribeCacheParameterGroupsResponse+describeCacheParameterGroupsResponse = DescribeCacheParameterGroupsResponse+    { _dcpgrMarker               = Nothing+    , _dcpgrCacheParameterGroups = mempty+    }++-- | A list of cache parameter groups. Each element in the list contains+-- detailed information about one cache parameter group.+dcpgrCacheParameterGroups :: Lens' DescribeCacheParameterGroupsResponse [CacheParameterGroup]+dcpgrCacheParameterGroups =+    lens _dcpgrCacheParameterGroups+        (\s a -> s { _dcpgrCacheParameterGroups = a })+            . _List++-- | Provides an identifier to allow retrieval of paginated results.+dcpgrMarker :: Lens' DescribeCacheParameterGroupsResponse (Maybe Text)+dcpgrMarker = lens _dcpgrMarker (\s a -> s { _dcpgrMarker = a })++instance ToPath DescribeCacheParameterGroups where+    toPath = const "/"++instance ToQuery DescribeCacheParameterGroups where+    toQuery DescribeCacheParameterGroups{..} = mconcat+        [ "CacheParameterGroupName" =? _dcpgCacheParameterGroupName+        , "Marker"                  =? _dcpgMarker+        , "MaxRecords"              =? _dcpgMaxRecords+        ]++instance ToHeaders DescribeCacheParameterGroups++instance AWSRequest DescribeCacheParameterGroups where+    type Sv DescribeCacheParameterGroups = ElastiCache+    type Rs DescribeCacheParameterGroups = DescribeCacheParameterGroupsResponse++    request  = post "DescribeCacheParameterGroups"+    response = xmlResponse++instance FromXML DescribeCacheParameterGroupsResponse where+    parseXML = withElement "DescribeCacheParameterGroupsResult" $ \x -> DescribeCacheParameterGroupsResponse+        <$> x .@  "CacheParameterGroups"+        <*> x .@? "Marker"++instance AWSPager DescribeCacheParameterGroups where+    page rq rs+        | stop (rq ^. dcpgMarker) = Nothing+        | otherwise = (\x -> rq & dcpgMarker ?~ x)+            <$> (rs ^. dcpgrMarker)
+ gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs view
@@ -0,0 +1,176 @@+{-# 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.DescribeCacheParameters+-- 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)++-- | The DescribeCacheParameters operation returns the detailed parameter list+-- for a particular cache parameter group.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheParameters.html>+module Network.AWS.ElastiCache.DescribeCacheParameters+    (+    -- * Request+      DescribeCacheParameters+    -- ** Request constructor+    , describeCacheParameters+    -- ** Request lenses+    , dcpCacheParameterGroupName+    , dcpMarker+    , dcpMaxRecords+    , dcpSource++    -- * Response+    , DescribeCacheParametersResponse+    -- ** Response constructor+    , describeCacheParametersResponse+    -- ** Response lenses+    , dcprCacheNodeTypeSpecificParameters+    , dcprMarker+    , dcprParameters+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data DescribeCacheParameters = DescribeCacheParameters+    { _dcpCacheParameterGroupName :: Text+    , _dcpMarker                  :: Maybe Text+    , _dcpMaxRecords              :: Maybe Int+    , _dcpSource                  :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeCacheParameters' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcpCacheParameterGroupName' @::@ 'Text'+--+-- * 'dcpMarker' @::@ 'Maybe' 'Text'+--+-- * 'dcpMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'dcpSource' @::@ 'Maybe' 'Text'+--+describeCacheParameters :: Text -- ^ 'dcpCacheParameterGroupName'+                        -> DescribeCacheParameters+describeCacheParameters p1 = DescribeCacheParameters+    { _dcpCacheParameterGroupName = p1+    , _dcpSource                  = Nothing+    , _dcpMaxRecords              = Nothing+    , _dcpMarker                  = Nothing+    }++-- | The name of a specific cache parameter group to return details for.+dcpCacheParameterGroupName :: Lens' DescribeCacheParameters Text+dcpCacheParameterGroupName =+    lens _dcpCacheParameterGroupName+        (\s a -> s { _dcpCacheParameterGroupName = 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.+dcpMarker :: Lens' DescribeCacheParameters (Maybe Text)+dcpMarker = lens _dcpMarker (\s a -> s { _dcpMarker = 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.+dcpMaxRecords :: Lens' DescribeCacheParameters (Maybe Int)+dcpMaxRecords = lens _dcpMaxRecords (\s a -> s { _dcpMaxRecords = a })++-- | The parameter types to return. Valid values: user | system |+-- engine-default.+dcpSource :: Lens' DescribeCacheParameters (Maybe Text)+dcpSource = lens _dcpSource (\s a -> s { _dcpSource = a })++data DescribeCacheParametersResponse = DescribeCacheParametersResponse+    { _dcprCacheNodeTypeSpecificParameters :: List "CacheNodeTypeSpecificParameter" CacheNodeTypeSpecificParameter+    , _dcprMarker                          :: Maybe Text+    , _dcprParameters                      :: List "Parameter" Parameter+    } deriving (Eq, Show)++-- | 'DescribeCacheParametersResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcprCacheNodeTypeSpecificParameters' @::@ ['CacheNodeTypeSpecificParameter']+--+-- * 'dcprMarker' @::@ 'Maybe' 'Text'+--+-- * 'dcprParameters' @::@ ['Parameter']+--+describeCacheParametersResponse :: DescribeCacheParametersResponse+describeCacheParametersResponse = DescribeCacheParametersResponse+    { _dcprMarker                          = Nothing+    , _dcprParameters                      = mempty+    , _dcprCacheNodeTypeSpecificParameters = mempty+    }++-- | A list of parameters specific to a particular cache node type. Each+-- element in the list contains detailed information about one parameter.+dcprCacheNodeTypeSpecificParameters :: Lens' DescribeCacheParametersResponse [CacheNodeTypeSpecificParameter]+dcprCacheNodeTypeSpecificParameters =+    lens _dcprCacheNodeTypeSpecificParameters+        (\s a -> s { _dcprCacheNodeTypeSpecificParameters = a })+            . _List++-- | Provides an identifier to allow retrieval of paginated results.+dcprMarker :: Lens' DescribeCacheParametersResponse (Maybe Text)+dcprMarker = lens _dcprMarker (\s a -> s { _dcprMarker = a })++-- | A list of Parameter instances.+dcprParameters :: Lens' DescribeCacheParametersResponse [Parameter]+dcprParameters = lens _dcprParameters (\s a -> s { _dcprParameters = a }) . _List++instance ToPath DescribeCacheParameters where+    toPath = const "/"++instance ToQuery DescribeCacheParameters where+    toQuery DescribeCacheParameters{..} = mconcat+        [ "CacheParameterGroupName" =? _dcpCacheParameterGroupName+        , "Marker"                  =? _dcpMarker+        , "MaxRecords"              =? _dcpMaxRecords+        , "Source"                  =? _dcpSource+        ]++instance ToHeaders DescribeCacheParameters++instance AWSRequest DescribeCacheParameters where+    type Sv DescribeCacheParameters = ElastiCache+    type Rs DescribeCacheParameters = DescribeCacheParametersResponse++    request  = post "DescribeCacheParameters"+    response = xmlResponse++instance FromXML DescribeCacheParametersResponse where+    parseXML = withElement "DescribeCacheParametersResult" $ \x -> DescribeCacheParametersResponse+        <$> x .@  "CacheNodeTypeSpecificParameters"+        <*> x .@? "Marker"+        <*> x .@  "Parameters"++instance AWSPager DescribeCacheParameters where+    page rq rs+        | stop (rq ^. dcpMarker) = Nothing+        | otherwise = (\x -> rq & dcpMarker ?~ x)+            <$> (rs ^. dcprMarker)
+ gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs view
@@ -0,0 +1,155 @@+{-# 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.DescribeCacheSecurityGroups+-- 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)++-- | The DescribeCacheSecurityGroups operation returns a list of cache security+-- group descriptions. If a cache security group name is specified, the list+-- will contain only the description of that group.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheSecurityGroups.html>+module Network.AWS.ElastiCache.DescribeCacheSecurityGroups+    (+    -- * Request+      DescribeCacheSecurityGroups+    -- ** Request constructor+    , describeCacheSecurityGroups+    -- ** Request lenses+    , dcsg1CacheSecurityGroupName+    , dcsg1Marker+    , dcsg1MaxRecords++    -- * Response+    , DescribeCacheSecurityGroupsResponse+    -- ** Response constructor+    , describeCacheSecurityGroupsResponse+    -- ** Response lenses+    , dcsgr1CacheSecurityGroups+    , dcsgr1Marker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data DescribeCacheSecurityGroups = DescribeCacheSecurityGroups+    { _dcsg1CacheSecurityGroupName :: Maybe Text+    , _dcsg1Marker                 :: Maybe Text+    , _dcsg1MaxRecords             :: Maybe Int+    } deriving (Eq, Ord, Show)++-- | 'DescribeCacheSecurityGroups' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsg1CacheSecurityGroupName' @::@ 'Maybe' 'Text'+--+-- * 'dcsg1Marker' @::@ 'Maybe' 'Text'+--+-- * 'dcsg1MaxRecords' @::@ 'Maybe' 'Int'+--+describeCacheSecurityGroups :: DescribeCacheSecurityGroups+describeCacheSecurityGroups = DescribeCacheSecurityGroups+    { _dcsg1CacheSecurityGroupName = Nothing+    , _dcsg1MaxRecords             = Nothing+    , _dcsg1Marker                 = Nothing+    }++-- | The name of the cache security group to return details for.+dcsg1CacheSecurityGroupName :: Lens' DescribeCacheSecurityGroups (Maybe Text)+dcsg1CacheSecurityGroupName =+    lens _dcsg1CacheSecurityGroupName+        (\s a -> s { _dcsg1CacheSecurityGroupName = 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.+dcsg1Marker :: Lens' DescribeCacheSecurityGroups (Maybe Text)+dcsg1Marker = lens _dcsg1Marker (\s a -> s { _dcsg1Marker = 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.+dcsg1MaxRecords :: Lens' DescribeCacheSecurityGroups (Maybe Int)+dcsg1MaxRecords = lens _dcsg1MaxRecords (\s a -> s { _dcsg1MaxRecords = a })++data DescribeCacheSecurityGroupsResponse = DescribeCacheSecurityGroupsResponse+    { _dcsgr1CacheSecurityGroups :: List "CacheSecurityGroup" CacheSecurityGroup+    , _dcsgr1Marker              :: Maybe Text+    } deriving (Eq, Show)++-- | 'DescribeCacheSecurityGroupsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsgr1CacheSecurityGroups' @::@ ['CacheSecurityGroup']+--+-- * 'dcsgr1Marker' @::@ 'Maybe' 'Text'+--+describeCacheSecurityGroupsResponse :: DescribeCacheSecurityGroupsResponse+describeCacheSecurityGroupsResponse = DescribeCacheSecurityGroupsResponse+    { _dcsgr1Marker              = Nothing+    , _dcsgr1CacheSecurityGroups = mempty+    }++-- | A list of cache security groups. Each element in the list contains+-- detailed information about one group.+dcsgr1CacheSecurityGroups :: Lens' DescribeCacheSecurityGroupsResponse [CacheSecurityGroup]+dcsgr1CacheSecurityGroups =+    lens _dcsgr1CacheSecurityGroups+        (\s a -> s { _dcsgr1CacheSecurityGroups = a })+            . _List++-- | Provides an identifier to allow retrieval of paginated results.+dcsgr1Marker :: Lens' DescribeCacheSecurityGroupsResponse (Maybe Text)+dcsgr1Marker = lens _dcsgr1Marker (\s a -> s { _dcsgr1Marker = a })++instance ToPath DescribeCacheSecurityGroups where+    toPath = const "/"++instance ToQuery DescribeCacheSecurityGroups where+    toQuery DescribeCacheSecurityGroups{..} = mconcat+        [ "CacheSecurityGroupName" =? _dcsg1CacheSecurityGroupName+        , "Marker"                 =? _dcsg1Marker+        , "MaxRecords"             =? _dcsg1MaxRecords+        ]++instance ToHeaders DescribeCacheSecurityGroups++instance AWSRequest DescribeCacheSecurityGroups where+    type Sv DescribeCacheSecurityGroups = ElastiCache+    type Rs DescribeCacheSecurityGroups = DescribeCacheSecurityGroupsResponse++    request  = post "DescribeCacheSecurityGroups"+    response = xmlResponse++instance FromXML DescribeCacheSecurityGroupsResponse where+    parseXML = withElement "DescribeCacheSecurityGroupsResult" $ \x -> DescribeCacheSecurityGroupsResponse+        <$> x .@  "CacheSecurityGroups"+        <*> x .@? "Marker"++instance AWSPager DescribeCacheSecurityGroups where+    page rq rs+        | stop (rq ^. dcsg1Marker) = Nothing+        | otherwise = (\x -> rq & dcsg1Marker ?~ x)+            <$> (rs ^. dcsgr1Marker)
+ gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs view
@@ -0,0 +1,154 @@+{-# 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.DescribeCacheSubnetGroups+-- 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)++-- | The DescribeCacheSubnetGroups operation returns a list of cache subnet+-- group descriptions. If a subnet group name is specified, the list will+-- contain only the description of that group.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheSubnetGroups.html>+module Network.AWS.ElastiCache.DescribeCacheSubnetGroups+    (+    -- * Request+      DescribeCacheSubnetGroups+    -- ** Request constructor+    , describeCacheSubnetGroups+    -- ** Request lenses+    , dcsgCacheSubnetGroupName+    , dcsgMarker+    , dcsgMaxRecords++    -- * Response+    , DescribeCacheSubnetGroupsResponse+    -- ** Response constructor+    , describeCacheSubnetGroupsResponse+    -- ** Response lenses+    , dcsgrCacheSubnetGroups+    , dcsgrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data DescribeCacheSubnetGroups = DescribeCacheSubnetGroups+    { _dcsgCacheSubnetGroupName :: Maybe Text+    , _dcsgMarker               :: Maybe Text+    , _dcsgMaxRecords           :: Maybe Int+    } deriving (Eq, Ord, Show)++-- | 'DescribeCacheSubnetGroups' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsgCacheSubnetGroupName' @::@ 'Maybe' 'Text'+--+-- * 'dcsgMarker' @::@ 'Maybe' 'Text'+--+-- * 'dcsgMaxRecords' @::@ 'Maybe' 'Int'+--+describeCacheSubnetGroups :: DescribeCacheSubnetGroups+describeCacheSubnetGroups = DescribeCacheSubnetGroups+    { _dcsgCacheSubnetGroupName = Nothing+    , _dcsgMaxRecords           = Nothing+    , _dcsgMarker               = Nothing+    }++-- | The name of the cache subnet group to return details for.+dcsgCacheSubnetGroupName :: Lens' DescribeCacheSubnetGroups (Maybe Text)+dcsgCacheSubnetGroupName =+    lens _dcsgCacheSubnetGroupName+        (\s a -> s { _dcsgCacheSubnetGroupName = 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.+dcsgMarker :: Lens' DescribeCacheSubnetGroups (Maybe Text)+dcsgMarker = lens _dcsgMarker (\s a -> s { _dcsgMarker = 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.+dcsgMaxRecords :: Lens' DescribeCacheSubnetGroups (Maybe Int)+dcsgMaxRecords = lens _dcsgMaxRecords (\s a -> s { _dcsgMaxRecords = a })++data DescribeCacheSubnetGroupsResponse = DescribeCacheSubnetGroupsResponse+    { _dcsgrCacheSubnetGroups :: List "CacheSubnetGroup" CacheSubnetGroup+    , _dcsgrMarker            :: Maybe Text+    } deriving (Eq, Show)++-- | 'DescribeCacheSubnetGroupsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsgrCacheSubnetGroups' @::@ ['CacheSubnetGroup']+--+-- * 'dcsgrMarker' @::@ 'Maybe' 'Text'+--+describeCacheSubnetGroupsResponse :: DescribeCacheSubnetGroupsResponse+describeCacheSubnetGroupsResponse = DescribeCacheSubnetGroupsResponse+    { _dcsgrMarker            = Nothing+    , _dcsgrCacheSubnetGroups = mempty+    }++-- | A list of cache subnet groups. Each element in the list contains detailed+-- information about one group.+dcsgrCacheSubnetGroups :: Lens' DescribeCacheSubnetGroupsResponse [CacheSubnetGroup]+dcsgrCacheSubnetGroups =+    lens _dcsgrCacheSubnetGroups (\s a -> s { _dcsgrCacheSubnetGroups = a })+        . _List++-- | Provides an identifier to allow retrieval of paginated results.+dcsgrMarker :: Lens' DescribeCacheSubnetGroupsResponse (Maybe Text)+dcsgrMarker = lens _dcsgrMarker (\s a -> s { _dcsgrMarker = a })++instance ToPath DescribeCacheSubnetGroups where+    toPath = const "/"++instance ToQuery DescribeCacheSubnetGroups where+    toQuery DescribeCacheSubnetGroups{..} = mconcat+        [ "CacheSubnetGroupName" =? _dcsgCacheSubnetGroupName+        , "Marker"               =? _dcsgMarker+        , "MaxRecords"           =? _dcsgMaxRecords+        ]++instance ToHeaders DescribeCacheSubnetGroups++instance AWSRequest DescribeCacheSubnetGroups where+    type Sv DescribeCacheSubnetGroups = ElastiCache+    type Rs DescribeCacheSubnetGroups = DescribeCacheSubnetGroupsResponse++    request  = post "DescribeCacheSubnetGroups"+    response = xmlResponse++instance FromXML DescribeCacheSubnetGroupsResponse where+    parseXML = withElement "DescribeCacheSubnetGroupsResult" $ \x -> DescribeCacheSubnetGroupsResponse+        <$> x .@  "CacheSubnetGroups"+        <*> x .@? "Marker"++instance AWSPager DescribeCacheSubnetGroups where+    page rq rs+        | stop (rq ^. dcsgMarker) = Nothing+        | otherwise = (\x -> rq & dcsgMarker ?~ x)+            <$> (rs ^. dcsgrMarker)
+ gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs view
@@ -0,0 +1,143 @@+{-# 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.DescribeEngineDefaultParameters+-- 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)++-- | The DescribeEngineDefaultParameters operation returns the default engine+-- and system parameter information for the specified cache engine.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEngineDefaultParameters.html>+module Network.AWS.ElastiCache.DescribeEngineDefaultParameters+    (+    -- * Request+      DescribeEngineDefaultParameters+    -- ** Request constructor+    , describeEngineDefaultParameters+    -- ** Request lenses+    , dedpCacheParameterGroupFamily+    , dedpMarker+    , dedpMaxRecords++    -- * Response+    , DescribeEngineDefaultParametersResponse+    -- ** Response constructor+    , describeEngineDefaultParametersResponse+    -- ** Response lenses+    , dedprEngineDefaults+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data DescribeEngineDefaultParameters = DescribeEngineDefaultParameters+    { _dedpCacheParameterGroupFamily :: Text+    , _dedpMarker                    :: Maybe Text+    , _dedpMaxRecords                :: Maybe Int+    } deriving (Eq, Ord, Show)++-- | 'DescribeEngineDefaultParameters' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dedpCacheParameterGroupFamily' @::@ 'Text'+--+-- * 'dedpMarker' @::@ 'Maybe' 'Text'+--+-- * 'dedpMaxRecords' @::@ 'Maybe' 'Int'+--+describeEngineDefaultParameters :: Text -- ^ 'dedpCacheParameterGroupFamily'+                                -> DescribeEngineDefaultParameters+describeEngineDefaultParameters p1 = DescribeEngineDefaultParameters+    { _dedpCacheParameterGroupFamily = p1+    , _dedpMaxRecords                = Nothing+    , _dedpMarker                    = Nothing+    }++-- | The name of the cache parameter group family. Valid values are:+-- memcached1.4 | redis2.6 | redis2.8.+dedpCacheParameterGroupFamily :: Lens' DescribeEngineDefaultParameters Text+dedpCacheParameterGroupFamily =+    lens _dedpCacheParameterGroupFamily+        (\s a -> s { _dedpCacheParameterGroupFamily = 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.+dedpMarker :: Lens' DescribeEngineDefaultParameters (Maybe Text)+dedpMarker = lens _dedpMarker (\s a -> s { _dedpMarker = 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.+dedpMaxRecords :: Lens' DescribeEngineDefaultParameters (Maybe Int)+dedpMaxRecords = lens _dedpMaxRecords (\s a -> s { _dedpMaxRecords = a })++newtype DescribeEngineDefaultParametersResponse = DescribeEngineDefaultParametersResponse+    { _dedprEngineDefaults :: EngineDefaults+    } deriving (Eq, Show)++-- | 'DescribeEngineDefaultParametersResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dedprEngineDefaults' @::@ 'EngineDefaults'+--+describeEngineDefaultParametersResponse :: EngineDefaults -- ^ 'dedprEngineDefaults'+                                        -> DescribeEngineDefaultParametersResponse+describeEngineDefaultParametersResponse p1 = DescribeEngineDefaultParametersResponse+    { _dedprEngineDefaults = p1+    }++dedprEngineDefaults :: Lens' DescribeEngineDefaultParametersResponse EngineDefaults+dedprEngineDefaults =+    lens _dedprEngineDefaults (\s a -> s { _dedprEngineDefaults = a })++instance ToPath DescribeEngineDefaultParameters where+    toPath = const "/"++instance ToQuery DescribeEngineDefaultParameters where+    toQuery DescribeEngineDefaultParameters{..} = mconcat+        [ "CacheParameterGroupFamily" =? _dedpCacheParameterGroupFamily+        , "Marker"                    =? _dedpMarker+        , "MaxRecords"                =? _dedpMaxRecords+        ]++instance ToHeaders DescribeEngineDefaultParameters++instance AWSRequest DescribeEngineDefaultParameters where+    type Sv DescribeEngineDefaultParameters = ElastiCache+    type Rs DescribeEngineDefaultParameters = DescribeEngineDefaultParametersResponse++    request  = post "DescribeEngineDefaultParameters"+    response = xmlResponse++instance FromXML DescribeEngineDefaultParametersResponse where+    parseXML = withElement "DescribeEngineDefaultParametersResult" $ \x -> DescribeEngineDefaultParametersResponse+        <$> x .@  "EngineDefaults"++instance AWSPager DescribeEngineDefaultParameters where+    page rq rs+        | stop (rq ^. dedpMarker) = Nothing+        | otherwise = (\x -> rq & dedpMarker ?~ x)+            <$> (rs ^. dedprEngineDefaults . edMarker)
+ gen/Network/AWS/ElastiCache/DescribeEvents.hs view
@@ -0,0 +1,199 @@+{-# 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.DescribeEvents+-- 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)++-- | The DescribeEvents operation returns events related to cache clusters,+-- cache security groups, and cache parameter groups. You can obtain events+-- specific to a particular cache cluster, cache security group, or cache+-- parameter group by providing the name as a parameter. By default, only the+-- events occurring within the last hour are returned; however, you can+-- retrieve up to 14 days' worth of events if necessary.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEvents.html>+module Network.AWS.ElastiCache.DescribeEvents+    (+    -- * Request+      DescribeEvents+    -- ** Request constructor+    , describeEvents+    -- ** Request lenses+    , deDuration+    , deEndTime+    , deMarker+    , deMaxRecords+    , deSourceIdentifier+    , deSourceType+    , deStartTime++    -- * Response+    , DescribeEventsResponse+    -- ** Response constructor+    , describeEventsResponse+    -- ** Response lenses+    , derEvents+    , derMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data DescribeEvents = DescribeEvents+    { _deDuration         :: Maybe Int+    , _deEndTime          :: Maybe RFC822+    , _deMarker           :: Maybe Text+    , _deMaxRecords       :: Maybe Int+    , _deSourceIdentifier :: Maybe Text+    , _deSourceType       :: Maybe Text+    , _deStartTime        :: Maybe RFC822+    } deriving (Eq, Ord, Show)++-- | 'DescribeEvents' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'deDuration' @::@ 'Maybe' 'Int'+--+-- * 'deEndTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'deMarker' @::@ 'Maybe' 'Text'+--+-- * 'deMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'deSourceIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'deSourceType' @::@ 'Maybe' 'Text'+--+-- * 'deStartTime' @::@ 'Maybe' 'UTCTime'+--+describeEvents :: DescribeEvents+describeEvents = DescribeEvents+    { _deSourceIdentifier = Nothing+    , _deSourceType       = Nothing+    , _deStartTime        = Nothing+    , _deEndTime          = Nothing+    , _deDuration         = Nothing+    , _deMaxRecords       = Nothing+    , _deMarker           = Nothing+    }++-- | The number of minutes' worth of events to retrieve.+deDuration :: Lens' DescribeEvents (Maybe Int)+deDuration = lens _deDuration (\s a -> s { _deDuration = a })++-- | The end of the time interval for which to retrieve events, specified in+-- ISO 8601 format.+deEndTime :: Lens' DescribeEvents (Maybe UTCTime)+deEndTime = lens _deEndTime (\s a -> s { _deEndTime = a }) . mapping _Time++-- | 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.+deMarker :: Lens' DescribeEvents (Maybe Text)+deMarker = lens _deMarker (\s a -> s { _deMarker = 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.+deMaxRecords :: Lens' DescribeEvents (Maybe Int)+deMaxRecords = lens _deMaxRecords (\s a -> s { _deMaxRecords = a })++-- | The identifier of the event source for which events will be returned. If+-- not specified, then all sources are included in the response.+deSourceIdentifier :: Lens' DescribeEvents (Maybe Text)+deSourceIdentifier =+    lens _deSourceIdentifier (\s a -> s { _deSourceIdentifier = a })++-- | The event source to retrieve events for. If no value is specified, all+-- events are returned. Valid values are: cache-cluster |+-- cache-parameter-group | cache-security-group | cache-subnet-group.+deSourceType :: Lens' DescribeEvents (Maybe Text)+deSourceType = lens _deSourceType (\s a -> s { _deSourceType = a })++-- | The beginning of the time interval to retrieve events for, specified in+-- ISO 8601 format.+deStartTime :: Lens' DescribeEvents (Maybe UTCTime)+deStartTime = lens _deStartTime (\s a -> s { _deStartTime = a }) . mapping _Time++data DescribeEventsResponse = DescribeEventsResponse+    { _derEvents :: List "Event" Event+    , _derMarker :: Maybe Text+    } deriving (Eq, Show)++-- | 'DescribeEventsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'derEvents' @::@ ['Event']+--+-- * 'derMarker' @::@ 'Maybe' 'Text'+--+describeEventsResponse :: DescribeEventsResponse+describeEventsResponse = DescribeEventsResponse+    { _derMarker = Nothing+    , _derEvents = mempty+    }++-- | A list of events. Each element in the list contains detailed information+-- about one event.+derEvents :: Lens' DescribeEventsResponse [Event]+derEvents = lens _derEvents (\s a -> s { _derEvents = a }) . _List++-- | Provides an identifier to allow retrieval of paginated results.+derMarker :: Lens' DescribeEventsResponse (Maybe Text)+derMarker = lens _derMarker (\s a -> s { _derMarker = a })++instance ToPath DescribeEvents where+    toPath = const "/"++instance ToQuery DescribeEvents where+    toQuery DescribeEvents{..} = mconcat+        [ "Duration"         =? _deDuration+        , "EndTime"          =? _deEndTime+        , "Marker"           =? _deMarker+        , "MaxRecords"       =? _deMaxRecords+        , "SourceIdentifier" =? _deSourceIdentifier+        , "SourceType"       =? _deSourceType+        , "StartTime"        =? _deStartTime+        ]++instance ToHeaders DescribeEvents++instance AWSRequest DescribeEvents where+    type Sv DescribeEvents = ElastiCache+    type Rs DescribeEvents = DescribeEventsResponse++    request  = post "DescribeEvents"+    response = xmlResponse++instance FromXML DescribeEventsResponse where+    parseXML = withElement "DescribeEventsResult" $ \x -> DescribeEventsResponse+        <$> x .@  "Events"+        <*> x .@? "Marker"++instance AWSPager DescribeEvents where+    page rq rs+        | stop (rq ^. deMarker) = Nothing+        | otherwise = (\x -> rq & deMarker ?~ x)+            <$> (rs ^. derMarker)
+ gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs view
@@ -0,0 +1,155 @@+{-# 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.DescribeReplicationGroups+-- 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)++-- | The DescribeReplicationGroups operation returns information about a+-- particular replication group. If no identifier is specified,+-- DescribeReplicationGroups returns information about all replication groups.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html>+module Network.AWS.ElastiCache.DescribeReplicationGroups+    (+    -- * Request+      DescribeReplicationGroups+    -- ** Request constructor+    , describeReplicationGroups+    -- ** Request lenses+    , drg1Marker+    , drg1MaxRecords+    , drg1ReplicationGroupId++    -- * Response+    , DescribeReplicationGroupsResponse+    -- ** Response constructor+    , describeReplicationGroupsResponse+    -- ** Response lenses+    , drgrMarker+    , drgrReplicationGroups+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data DescribeReplicationGroups = DescribeReplicationGroups+    { _drg1Marker             :: Maybe Text+    , _drg1MaxRecords         :: Maybe Int+    , _drg1ReplicationGroupId :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeReplicationGroups' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drg1Marker' @::@ 'Maybe' 'Text'+--+-- * 'drg1MaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'drg1ReplicationGroupId' @::@ 'Maybe' 'Text'+--+describeReplicationGroups :: DescribeReplicationGroups+describeReplicationGroups = DescribeReplicationGroups+    { _drg1ReplicationGroupId = Nothing+    , _drg1MaxRecords         = Nothing+    , _drg1Marker             = Nothing+    }++-- | 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.+drg1Marker :: Lens' DescribeReplicationGroups (Maybe Text)+drg1Marker = lens _drg1Marker (\s a -> s { _drg1Marker = 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.+drg1MaxRecords :: Lens' DescribeReplicationGroups (Maybe Int)+drg1MaxRecords = lens _drg1MaxRecords (\s a -> s { _drg1MaxRecords = a })++-- | The identifier for the replication group to be described. This parameter+-- is not case sensitive. If you do not specify this parameter, information+-- about all replication groups is returned.+drg1ReplicationGroupId :: Lens' DescribeReplicationGroups (Maybe Text)+drg1ReplicationGroupId =+    lens _drg1ReplicationGroupId (\s a -> s { _drg1ReplicationGroupId = a })++data DescribeReplicationGroupsResponse = DescribeReplicationGroupsResponse+    { _drgrMarker            :: Maybe Text+    , _drgrReplicationGroups :: List "ReplicationGroup" ReplicationGroup+    } deriving (Eq, Show)++-- | 'DescribeReplicationGroupsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drgrMarker' @::@ 'Maybe' 'Text'+--+-- * 'drgrReplicationGroups' @::@ ['ReplicationGroup']+--+describeReplicationGroupsResponse :: DescribeReplicationGroupsResponse+describeReplicationGroupsResponse = DescribeReplicationGroupsResponse+    { _drgrMarker            = Nothing+    , _drgrReplicationGroups = mempty+    }++-- | Provides an identifier to allow retrieval of paginated results.+drgrMarker :: Lens' DescribeReplicationGroupsResponse (Maybe Text)+drgrMarker = lens _drgrMarker (\s a -> s { _drgrMarker = a })++-- | A list of replication groups. Each item in the list contains detailed+-- information about one replication group.+drgrReplicationGroups :: Lens' DescribeReplicationGroupsResponse [ReplicationGroup]+drgrReplicationGroups =+    lens _drgrReplicationGroups (\s a -> s { _drgrReplicationGroups = a })+        . _List++instance ToPath DescribeReplicationGroups where+    toPath = const "/"++instance ToQuery DescribeReplicationGroups where+    toQuery DescribeReplicationGroups{..} = mconcat+        [ "Marker"             =? _drg1Marker+        , "MaxRecords"         =? _drg1MaxRecords+        , "ReplicationGroupId" =? _drg1ReplicationGroupId+        ]++instance ToHeaders DescribeReplicationGroups++instance AWSRequest DescribeReplicationGroups where+    type Sv DescribeReplicationGroups = ElastiCache+    type Rs DescribeReplicationGroups = DescribeReplicationGroupsResponse++    request  = post "DescribeReplicationGroups"+    response = xmlResponse++instance FromXML DescribeReplicationGroupsResponse where+    parseXML = withElement "DescribeReplicationGroupsResult" $ \x -> DescribeReplicationGroupsResponse+        <$> x .@? "Marker"+        <*> x .@  "ReplicationGroups"++instance AWSPager DescribeReplicationGroups where+    page rq rs+        | stop (rq ^. drg1Marker) = Nothing+        | otherwise = (\x -> rq & drg1Marker ?~ x)+            <$> (rs ^. drgrMarker)
+ gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs view
@@ -0,0 +1,214 @@+{-# 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.DescribeReservedCacheNodes+-- 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)++-- | The DescribeReservedCacheNodes operation returns information about reserved+-- cache nodes for this account, or about a specified reserved cache node.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReservedCacheNodes.html>+module Network.AWS.ElastiCache.DescribeReservedCacheNodes+    (+    -- * Request+      DescribeReservedCacheNodes+    -- ** Request constructor+    , describeReservedCacheNodes+    -- ** Request lenses+    , drcnCacheNodeType+    , drcnDuration+    , drcnMarker+    , drcnMaxRecords+    , drcnOfferingType+    , drcnProductDescription+    , drcnReservedCacheNodeId+    , drcnReservedCacheNodesOfferingId++    -- * Response+    , DescribeReservedCacheNodesResponse+    -- ** Response constructor+    , describeReservedCacheNodesResponse+    -- ** Response lenses+    , 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, Show)++-- | 'DescribeReservedCacheNodes' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drcnCacheNodeType' @::@ 'Maybe' 'Text'+--+-- * 'drcnDuration' @::@ 'Maybe' 'Text'+--+-- * 'drcnMarker' @::@ 'Maybe' 'Text'+--+-- * 'drcnMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'drcnOfferingType' @::@ 'Maybe' 'Text'+--+-- * 'drcnProductDescription' @::@ 'Maybe' 'Text'+--+-- * 'drcnReservedCacheNodeId' @::@ 'Maybe' 'Text'+--+-- * 'drcnReservedCacheNodesOfferingId' @::@ 'Maybe' 'Text'+--+describeReservedCacheNodes :: DescribeReservedCacheNodes+describeReservedCacheNodes = DescribeReservedCacheNodes+    { _drcnReservedCacheNodeId          = Nothing+    , _drcnReservedCacheNodesOfferingId = Nothing+    , _drcnCacheNodeType                = Nothing+    , _drcnDuration                     = Nothing+    , _drcnProductDescription           = Nothing+    , _drcnOfferingType                 = Nothing+    , _drcnMaxRecords                   = Nothing+    , _drcnMarker                       = Nothing+    }++-- | The cache node type filter value. Use this parameter to show only those+-- reservations matching the specified cache node type.+drcnCacheNodeType :: Lens' DescribeReservedCacheNodes (Maybe Text)+drcnCacheNodeType =+    lens _drcnCacheNodeType (\s a -> s { _drcnCacheNodeType = a })++-- | The duration filter value, specified in years or seconds. Use this+-- parameter to show only reservations for this duration. Valid Values: 1 |+-- 3 | 31536000 | 94608000.+drcnDuration :: Lens' DescribeReservedCacheNodes (Maybe Text)+drcnDuration = lens _drcnDuration (\s a -> s { _drcnDuration = 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.+drcnMarker :: Lens' DescribeReservedCacheNodes (Maybe Text)+drcnMarker = lens _drcnMarker (\s a -> s { _drcnMarker = 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.+drcnMaxRecords :: Lens' DescribeReservedCacheNodes (Maybe Int)+drcnMaxRecords = lens _drcnMaxRecords (\s a -> s { _drcnMaxRecords = a })++-- | The offering type filter value. Use this parameter to show only the+-- available offerings matching the specified offering type. Valid values:+-- "Light Utilization" | "Medium Utilization" | "Heavy Utilization".+drcnOfferingType :: Lens' DescribeReservedCacheNodes (Maybe Text)+drcnOfferingType = lens _drcnOfferingType (\s a -> s { _drcnOfferingType = a })++-- | The product description filter value. Use this parameter to show only+-- those reservations matching the specified product description.+drcnProductDescription :: Lens' DescribeReservedCacheNodes (Maybe Text)+drcnProductDescription =+    lens _drcnProductDescription (\s a -> s { _drcnProductDescription = a })++-- | The reserved cache node identifier filter value. Use this parameter to+-- show only the reservation that matches the specified reservation ID.+drcnReservedCacheNodeId :: Lens' DescribeReservedCacheNodes (Maybe Text)+drcnReservedCacheNodeId =+    lens _drcnReservedCacheNodeId (\s a -> s { _drcnReservedCacheNodeId = a })++-- | The offering identifier filter value. Use this parameter to show only+-- purchased reservations matching the specified offering identifier.+drcnReservedCacheNodesOfferingId :: Lens' DescribeReservedCacheNodes (Maybe Text)+drcnReservedCacheNodesOfferingId =+    lens _drcnReservedCacheNodesOfferingId+        (\s a -> s { _drcnReservedCacheNodesOfferingId = a })++data DescribeReservedCacheNodesResponse = DescribeReservedCacheNodesResponse+    { _drcnrMarker             :: Maybe Text+    , _drcnrReservedCacheNodes :: List "ReservedCacheNode" ReservedCacheNode+    } deriving (Eq, Show)++-- | 'DescribeReservedCacheNodesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drcnrMarker' @::@ 'Maybe' 'Text'+--+-- * 'drcnrReservedCacheNodes' @::@ ['ReservedCacheNode']+--+describeReservedCacheNodesResponse :: DescribeReservedCacheNodesResponse+describeReservedCacheNodesResponse = DescribeReservedCacheNodesResponse+    { _drcnrMarker             = Nothing+    , _drcnrReservedCacheNodes = mempty+    }++-- | Provides an identifier to allow retrieval of paginated results.+drcnrMarker :: Lens' DescribeReservedCacheNodesResponse (Maybe Text)+drcnrMarker = lens _drcnrMarker (\s a -> s { _drcnrMarker = a })++-- | A list of reserved cache nodes. Each element in the list contains+-- detailed information about one node.+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"++instance AWSPager DescribeReservedCacheNodes where+    page rq rs+        | stop (rq ^. drcnMarker) = Nothing+        | otherwise = (\x -> rq & drcnMarker ?~ x)+            <$> (rs ^. drcnrMarker)
+ gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs view
@@ -0,0 +1,205 @@+{-# 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.DescribeReservedCacheNodesOfferings+-- 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)++-- | The DescribeReservedCacheNodesOfferings operation lists available reserved+-- cache node offerings.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReservedCacheNodesOfferings.html>+module Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings+    (+    -- * Request+      DescribeReservedCacheNodesOfferings+    -- ** Request constructor+    , describeReservedCacheNodesOfferings+    -- ** Request lenses+    , drcnoCacheNodeType+    , drcnoDuration+    , drcnoMarker+    , drcnoMaxRecords+    , drcnoOfferingType+    , drcnoProductDescription+    , drcnoReservedCacheNodesOfferingId++    -- * Response+    , DescribeReservedCacheNodesOfferingsResponse+    -- ** Response constructor+    , describeReservedCacheNodesOfferingsResponse+    -- ** Response lenses+    , drcnorMarker+    , drcnorReservedCacheNodesOfferings+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data DescribeReservedCacheNodesOfferings = DescribeReservedCacheNodesOfferings+    { _drcnoCacheNodeType                :: Maybe Text+    , _drcnoDuration                     :: Maybe Text+    , _drcnoMarker                       :: Maybe Text+    , _drcnoMaxRecords                   :: Maybe Int+    , _drcnoOfferingType                 :: Maybe Text+    , _drcnoProductDescription           :: Maybe Text+    , _drcnoReservedCacheNodesOfferingId :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeReservedCacheNodesOfferings' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drcnoCacheNodeType' @::@ 'Maybe' 'Text'+--+-- * 'drcnoDuration' @::@ 'Maybe' 'Text'+--+-- * 'drcnoMarker' @::@ 'Maybe' 'Text'+--+-- * 'drcnoMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'drcnoOfferingType' @::@ 'Maybe' 'Text'+--+-- * 'drcnoProductDescription' @::@ 'Maybe' 'Text'+--+-- * 'drcnoReservedCacheNodesOfferingId' @::@ 'Maybe' 'Text'+--+describeReservedCacheNodesOfferings :: DescribeReservedCacheNodesOfferings+describeReservedCacheNodesOfferings = DescribeReservedCacheNodesOfferings+    { _drcnoReservedCacheNodesOfferingId = Nothing+    , _drcnoCacheNodeType                = Nothing+    , _drcnoDuration                     = Nothing+    , _drcnoProductDescription           = Nothing+    , _drcnoOfferingType                 = Nothing+    , _drcnoMaxRecords                   = Nothing+    , _drcnoMarker                       = Nothing+    }++-- | The cache node type filter value. Use this parameter to show only the+-- available offerings matching the specified cache node type.+drcnoCacheNodeType :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)+drcnoCacheNodeType =+    lens _drcnoCacheNodeType (\s a -> s { _drcnoCacheNodeType = a })++-- | Duration filter value, specified in years or seconds. Use this parameter+-- to show only reservations for a given duration. Valid Values: 1 | 3 |+-- 31536000 | 94608000.+drcnoDuration :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)+drcnoDuration = lens _drcnoDuration (\s a -> s { _drcnoDuration = 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.+drcnoMarker :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)+drcnoMarker = lens _drcnoMarker (\s a -> s { _drcnoMarker = 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.+drcnoMaxRecords :: Lens' DescribeReservedCacheNodesOfferings (Maybe Int)+drcnoMaxRecords = lens _drcnoMaxRecords (\s a -> s { _drcnoMaxRecords = a })++-- | The offering type filter value. Use this parameter to show only the+-- available offerings matching the specified offering type. Valid Values:+-- "Light Utilization" | "Medium Utilization" | "Heavy Utilization".+drcnoOfferingType :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)+drcnoOfferingType =+    lens _drcnoOfferingType (\s a -> s { _drcnoOfferingType = a })++-- | The product description filter value. Use this parameter to show only the+-- available offerings matching the specified product description.+drcnoProductDescription :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)+drcnoProductDescription =+    lens _drcnoProductDescription (\s a -> s { _drcnoProductDescription = a })++-- | The offering identifier filter value. Use this parameter to show only the+-- available offering that matches the specified reservation identifier.+-- Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706.+drcnoReservedCacheNodesOfferingId :: Lens' DescribeReservedCacheNodesOfferings (Maybe Text)+drcnoReservedCacheNodesOfferingId =+    lens _drcnoReservedCacheNodesOfferingId+        (\s a -> s { _drcnoReservedCacheNodesOfferingId = a })++data DescribeReservedCacheNodesOfferingsResponse = DescribeReservedCacheNodesOfferingsResponse+    { _drcnorMarker                      :: Maybe Text+    , _drcnorReservedCacheNodesOfferings :: List "ReservedCacheNodesOffering" ReservedCacheNodesOffering+    } deriving (Eq, Show)++-- | 'DescribeReservedCacheNodesOfferingsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drcnorMarker' @::@ 'Maybe' 'Text'+--+-- * 'drcnorReservedCacheNodesOfferings' @::@ ['ReservedCacheNodesOffering']+--+describeReservedCacheNodesOfferingsResponse :: DescribeReservedCacheNodesOfferingsResponse+describeReservedCacheNodesOfferingsResponse = DescribeReservedCacheNodesOfferingsResponse+    { _drcnorMarker                      = Nothing+    , _drcnorReservedCacheNodesOfferings = mempty+    }++-- | Provides an identifier to allow retrieval of paginated results.+drcnorMarker :: Lens' DescribeReservedCacheNodesOfferingsResponse (Maybe Text)+drcnorMarker = lens _drcnorMarker (\s a -> s { _drcnorMarker = a })++-- | A list of reserved cache node offerings. Each element in the list+-- contains detailed information about one offering.+drcnorReservedCacheNodesOfferings :: Lens' DescribeReservedCacheNodesOfferingsResponse [ReservedCacheNodesOffering]+drcnorReservedCacheNodesOfferings =+    lens _drcnorReservedCacheNodesOfferings+        (\s a -> s { _drcnorReservedCacheNodesOfferings = a })+            . _List++instance ToPath DescribeReservedCacheNodesOfferings where+    toPath = const "/"++instance ToQuery DescribeReservedCacheNodesOfferings where+    toQuery DescribeReservedCacheNodesOfferings{..} = mconcat+        [ "CacheNodeType"                =? _drcnoCacheNodeType+        , "Duration"                     =? _drcnoDuration+        , "Marker"                       =? _drcnoMarker+        , "MaxRecords"                   =? _drcnoMaxRecords+        , "OfferingType"                 =? _drcnoOfferingType+        , "ProductDescription"           =? _drcnoProductDescription+        , "ReservedCacheNodesOfferingId" =? _drcnoReservedCacheNodesOfferingId+        ]++instance ToHeaders DescribeReservedCacheNodesOfferings++instance AWSRequest DescribeReservedCacheNodesOfferings where+    type Sv DescribeReservedCacheNodesOfferings = ElastiCache+    type Rs DescribeReservedCacheNodesOfferings = DescribeReservedCacheNodesOfferingsResponse++    request  = post "DescribeReservedCacheNodesOfferings"+    response = xmlResponse++instance FromXML DescribeReservedCacheNodesOfferingsResponse where+    parseXML = withElement "DescribeReservedCacheNodesOfferingsResult" $ \x -> DescribeReservedCacheNodesOfferingsResponse+        <$> x .@? "Marker"+        <*> x .@  "ReservedCacheNodesOfferings"++instance AWSPager DescribeReservedCacheNodesOfferings where+    page rq rs+        | stop (rq ^. drcnoMarker) = Nothing+        | otherwise = (\x -> rq & drcnoMarker ?~ x)+            <$> (rs ^. drcnorMarker)
+ gen/Network/AWS/ElastiCache/DescribeSnapshots.hs view
@@ -0,0 +1,179 @@+{-# 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.DescribeSnapshots+-- 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)++-- | The DescribeSnapshots operation returns information about cache cluster+-- snapshots. By default, DescribeSnapshots lists all of your snapshots; it+-- can optionally describe a single snapshot, or just the snapshots associated+-- with a particular cache cluster.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeSnapshots.html>+module Network.AWS.ElastiCache.DescribeSnapshots+    (+    -- * Request+      DescribeSnapshots+    -- ** Request constructor+    , describeSnapshots+    -- ** Request lenses+    , dsCacheClusterId+    , dsMarker+    , dsMaxRecords+    , dsSnapshotName+    , dsSnapshotSource++    -- * Response+    , DescribeSnapshotsResponse+    -- ** Response constructor+    , describeSnapshotsResponse+    -- ** Response lenses+    , dsrMarker+    , dsrSnapshots+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data DescribeSnapshots = DescribeSnapshots+    { _dsCacheClusterId :: Maybe Text+    , _dsMarker         :: Maybe Text+    , _dsMaxRecords     :: Maybe Int+    , _dsSnapshotName   :: Maybe Text+    , _dsSnapshotSource :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeSnapshots' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dsCacheClusterId' @::@ 'Maybe' 'Text'+--+-- * 'dsMarker' @::@ 'Maybe' 'Text'+--+-- * 'dsMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'dsSnapshotName' @::@ 'Maybe' 'Text'+--+-- * 'dsSnapshotSource' @::@ 'Maybe' 'Text'+--+describeSnapshots :: DescribeSnapshots+describeSnapshots = DescribeSnapshots+    { _dsCacheClusterId = Nothing+    , _dsSnapshotName   = Nothing+    , _dsSnapshotSource = Nothing+    , _dsMarker         = Nothing+    , _dsMaxRecords     = Nothing+    }++-- | A user-supplied cluster identifier. If this parameter is specified, only+-- snapshots associated with that specific cache cluster will be described.+dsCacheClusterId :: Lens' DescribeSnapshots (Maybe Text)+dsCacheClusterId = lens _dsCacheClusterId (\s a -> s { _dsCacheClusterId = 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.+dsMarker :: Lens' DescribeSnapshots (Maybe Text)+dsMarker = lens _dsMarker (\s a -> s { _dsMarker = 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: 50+-- Constraints: minimum 20; maximum 50.+dsMaxRecords :: Lens' DescribeSnapshots (Maybe Int)+dsMaxRecords = lens _dsMaxRecords (\s a -> s { _dsMaxRecords = a })++-- | A user-supplied name of the snapshot. If this parameter is specified,+-- only this snapshot will be described.+dsSnapshotName :: Lens' DescribeSnapshots (Maybe Text)+dsSnapshotName = lens _dsSnapshotName (\s a -> s { _dsSnapshotName = a })++-- | If set to system, the output shows snapshots that were automatically+-- created by ElastiCache. If set to user the output shows snapshots that+-- were manually created. If omitted, the output shows both automatically+-- and manually created snapshots.+dsSnapshotSource :: Lens' DescribeSnapshots (Maybe Text)+dsSnapshotSource = lens _dsSnapshotSource (\s a -> s { _dsSnapshotSource = a })++data DescribeSnapshotsResponse = DescribeSnapshotsResponse+    { _dsrMarker    :: Maybe Text+    , _dsrSnapshots :: List "Snapshot" Snapshot+    } deriving (Eq, Show)++-- | 'DescribeSnapshotsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dsrMarker' @::@ 'Maybe' 'Text'+--+-- * 'dsrSnapshots' @::@ ['Snapshot']+--+describeSnapshotsResponse :: DescribeSnapshotsResponse+describeSnapshotsResponse = DescribeSnapshotsResponse+    { _dsrMarker    = Nothing+    , _dsrSnapshots = mempty+    }++-- | 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.+dsrMarker :: Lens' DescribeSnapshotsResponse (Maybe Text)+dsrMarker = lens _dsrMarker (\s a -> s { _dsrMarker = a })++-- | A list of snapshots. Each item in the list contains detailed information+-- about one snapshot.+dsrSnapshots :: Lens' DescribeSnapshotsResponse [Snapshot]+dsrSnapshots = lens _dsrSnapshots (\s a -> s { _dsrSnapshots = a }) . _List++instance ToPath DescribeSnapshots where+    toPath = const "/"++instance ToQuery DescribeSnapshots where+    toQuery DescribeSnapshots{..} = mconcat+        [ "CacheClusterId" =? _dsCacheClusterId+        , "Marker"         =? _dsMarker+        , "MaxRecords"     =? _dsMaxRecords+        , "SnapshotName"   =? _dsSnapshotName+        , "SnapshotSource" =? _dsSnapshotSource+        ]++instance ToHeaders DescribeSnapshots++instance AWSRequest DescribeSnapshots where+    type Sv DescribeSnapshots = ElastiCache+    type Rs DescribeSnapshots = DescribeSnapshotsResponse++    request  = post "DescribeSnapshots"+    response = xmlResponse++instance FromXML DescribeSnapshotsResponse where+    parseXML = withElement "DescribeSnapshotsResult" $ \x -> DescribeSnapshotsResponse+        <$> x .@? "Marker"+        <*> x .@  "Snapshots"++instance AWSPager DescribeSnapshots where+    page rq rs+        | stop (rq ^. dsMarker) = Nothing+        | otherwise = (\x -> rq & dsMarker ?~ x)+            <$> (rs ^. dsrMarker)
+ gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs view
@@ -0,0 +1,378 @@+{-# 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.ModifyCacheCluster+-- 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)++-- | The ModifyCacheCluster operation modifies the settings for a cache cluster.+-- You can use this operation to change one or more cluster configuration+-- parameters by specifying the parameters and the new values.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html>+module Network.AWS.ElastiCache.ModifyCacheCluster+    (+    -- * Request+      ModifyCacheCluster+    -- ** Request constructor+    , modifyCacheCluster+    -- ** Request lenses+    , mccAZMode+    , mccApplyImmediately+    , mccAutoMinorVersionUpgrade+    , mccCacheClusterId+    , mccCacheNodeIdsToRemove+    , mccCacheParameterGroupName+    , mccCacheSecurityGroupNames+    , mccEngineVersion+    , mccNewAvailabilityZones+    , mccNotificationTopicArn+    , mccNotificationTopicStatus+    , mccNumCacheNodes+    , mccPreferredMaintenanceWindow+    , mccSecurityGroupIds+    , mccSnapshotRetentionLimit+    , mccSnapshotWindow++    -- * Response+    , ModifyCacheClusterResponse+    -- ** Response constructor+    , modifyCacheClusterResponse+    -- ** Response lenses+    , mccrCacheCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data ModifyCacheCluster = ModifyCacheCluster+    { _mccAZMode                     :: Maybe Text+    , _mccApplyImmediately           :: Maybe Bool+    , _mccAutoMinorVersionUpgrade    :: Maybe Bool+    , _mccCacheClusterId             :: Text+    , _mccCacheNodeIdsToRemove       :: List "CacheNodeId" Text+    , _mccCacheParameterGroupName    :: Maybe Text+    , _mccCacheSecurityGroupNames    :: List "CacheSecurityGroupName" Text+    , _mccEngineVersion              :: Maybe Text+    , _mccNewAvailabilityZones       :: List "PreferredAvailabilityZone" Text+    , _mccNotificationTopicArn       :: Maybe Text+    , _mccNotificationTopicStatus    :: Maybe Text+    , _mccNumCacheNodes              :: Maybe Int+    , _mccPreferredMaintenanceWindow :: Maybe Text+    , _mccSecurityGroupIds           :: List "SecurityGroupId" Text+    , _mccSnapshotRetentionLimit     :: Maybe Int+    , _mccSnapshotWindow             :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ModifyCacheCluster' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mccAZMode' @::@ 'Maybe' 'Text'+--+-- * 'mccApplyImmediately' @::@ 'Maybe' 'Bool'+--+-- * 'mccAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'+--+-- * 'mccCacheClusterId' @::@ 'Text'+--+-- * 'mccCacheNodeIdsToRemove' @::@ ['Text']+--+-- * 'mccCacheParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'mccCacheSecurityGroupNames' @::@ ['Text']+--+-- * 'mccEngineVersion' @::@ 'Maybe' 'Text'+--+-- * 'mccNewAvailabilityZones' @::@ ['Text']+--+-- * 'mccNotificationTopicArn' @::@ 'Maybe' 'Text'+--+-- * 'mccNotificationTopicStatus' @::@ 'Maybe' 'Text'+--+-- * 'mccNumCacheNodes' @::@ 'Maybe' 'Int'+--+-- * 'mccPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'+--+-- * 'mccSecurityGroupIds' @::@ ['Text']+--+-- * 'mccSnapshotRetentionLimit' @::@ 'Maybe' 'Int'+--+-- * 'mccSnapshotWindow' @::@ 'Maybe' 'Text'+--+modifyCacheCluster :: Text -- ^ 'mccCacheClusterId'+                   -> ModifyCacheCluster+modifyCacheCluster p1 = ModifyCacheCluster+    { _mccCacheClusterId             = p1+    , _mccNumCacheNodes              = Nothing+    , _mccCacheNodeIdsToRemove       = mempty+    , _mccAZMode                     = Nothing+    , _mccNewAvailabilityZones       = mempty+    , _mccCacheSecurityGroupNames    = mempty+    , _mccSecurityGroupIds           = mempty+    , _mccPreferredMaintenanceWindow = Nothing+    , _mccNotificationTopicArn       = Nothing+    , _mccCacheParameterGroupName    = Nothing+    , _mccNotificationTopicStatus    = Nothing+    , _mccApplyImmediately           = Nothing+    , _mccEngineVersion              = Nothing+    , _mccAutoMinorVersionUpgrade    = Nothing+    , _mccSnapshotRetentionLimit     = Nothing+    , _mccSnapshotWindow             = Nothing+    }++-- | Specifies whether the new nodes in this Memcached cache cluster are all+-- created in a single Availability Zone or created across multiple+-- Availability Zones. Valid values: single-az | cross-az. This option is+-- only supported for Memcached cache clusters.+mccAZMode :: Lens' ModifyCacheCluster (Maybe Text)+mccAZMode = lens _mccAZMode (\s a -> s { _mccAZMode = a })++-- | If true, this parameter causes the modifications in this request and any+-- pending modifications to be applied, asynchronously and as soon as+-- possible, regardless of the PreferredMaintenanceWindow setting for the+-- cache cluster. If false, then changes to the cache cluster are applied on+-- the next maintenance reboot, or the next failure reboot, whichever occurs+-- first. If you perform a ModifyCacheCluster before a pending modification+-- is applied, the pending modification is replaced by the newer+-- modification. Valid values: true | false Default: false.+mccApplyImmediately :: Lens' ModifyCacheCluster (Maybe Bool)+mccApplyImmediately =+    lens _mccApplyImmediately (\s a -> s { _mccApplyImmediately = a })++-- | If true, then minor engine upgrades will be applied automatically to the+-- cache cluster during the maintenance window. Valid values: true | false+-- Default: true.+mccAutoMinorVersionUpgrade :: Lens' ModifyCacheCluster (Maybe Bool)+mccAutoMinorVersionUpgrade =+    lens _mccAutoMinorVersionUpgrade+        (\s a -> s { _mccAutoMinorVersionUpgrade = a })++-- | The cache cluster identifier. This value is stored as a lowercase string.+mccCacheClusterId :: Lens' ModifyCacheCluster Text+mccCacheClusterId =+    lens _mccCacheClusterId (\s a -> s { _mccCacheClusterId = a })++-- | A list of cache node IDs to be removed. A node ID is a numeric identifier+-- (0001, 0002, etc.). This parameter is only valid when NumCacheNodes is+-- less than the existing number of cache nodes. The number of cache node+-- IDs supplied in this parameter must match the difference between the+-- existing number of cache nodes in the cluster or pending cache nodes,+-- whichever is greater, and the value of NumCacheNodes in the request. For+-- example: If you have 3 active cache nodes, 7 pending cache nodes, and the+-- number of cache nodes in this ModifyCacheCluser call is 5, you must list+-- 2 (7 - 5) cache node IDs to remove.+mccCacheNodeIdsToRemove :: Lens' ModifyCacheCluster [Text]+mccCacheNodeIdsToRemove =+    lens _mccCacheNodeIdsToRemove (\s a -> s { _mccCacheNodeIdsToRemove = a })+        . _List++-- | The name of the cache parameter group to apply to this cache cluster.+-- This change is asynchronously applied as soon as possible for parameters+-- when the ApplyImmediately parameter is specified as true for this+-- request.+mccCacheParameterGroupName :: Lens' ModifyCacheCluster (Maybe Text)+mccCacheParameterGroupName =+    lens _mccCacheParameterGroupName+        (\s a -> s { _mccCacheParameterGroupName = a })++-- | A list of cache security group names to authorize on this cache cluster.+-- This change is asynchronously applied as soon as possible. This parameter+-- can be used only with clusters that are created outside of an Amazon+-- Virtual Private Cloud (VPC). Constraints: Must contain no more than 255+-- alphanumeric characters. Must not be "Default".+mccCacheSecurityGroupNames :: Lens' ModifyCacheCluster [Text]+mccCacheSecurityGroupNames =+    lens _mccCacheSecurityGroupNames+        (\s a -> s { _mccCacheSecurityGroupNames = a })+            . _List++-- | The upgraded version of the cache engine to be run on the cache nodes.+mccEngineVersion :: Lens' ModifyCacheCluster (Maybe Text)+mccEngineVersion = lens _mccEngineVersion (\s a -> s { _mccEngineVersion = a })++-- | The list of Availability Zones where the new Memcached cache nodes will+-- be created. This parameter is only valid when NumCacheNodes in the+-- request is greater than the sum of the number of active cache nodes and+-- the number of cache nodes pending creation (which may be zero). The+-- number of Availability Zones supplied in this list must match the cache+-- nodes being added in this request. This option is only supported on+-- Memcached clusters. Scenarios: Scenario 1: You have 3 active nodes and+-- wish to add 2 nodes. Specify NumCacheNodes=5 (3 + 2) and optionally+-- specify two Availability Zones for the two new nodes. Scenario 2: You+-- have 3 active nodes and 2 nodes pending creation (from the scenario 1+-- call) and want to add 1 more node. Specify NumCacheNodes=6 ((3 + 2) + 1)+-- and optionally specify an Availability Zone for the new node. Scenario 3:+-- You want to cancel all pending actions. Specify NumCacheNodes=3 to cancel+-- all pending actions. The Availability Zone placement of nodes pending+-- creation cannot be modified. If you wish to cancel any nodes pending+-- creation, add 0 nodes by setting NumCacheNodes to the number of current+-- nodes. If cross-az is specified, existing Memcached nodes remain in their+-- current Availability Zone. Only newly created nodes can be located in+-- different Availability Zones. For guidance on how to move existing+-- Memcached nodes to different Availability Zones, see the Availability+-- Zone Considerations section of Cache Node Considerations for Memcached.+-- Impact of new add/remove requests upon pending requests Scenarios Pending+-- Operation New Request Results Scenario-1 Delete Delete The new delete,+-- pending or immediate, replaces the pending delete. Scenario-2 Delete+-- Create The new create, pending or immediate, replaces the pending delete.+-- Scenario-3 Create Delete The new delete, pending or immediate, replaces+-- the pending create. Scenario-4 Create Create The new create is added to+-- the pending create. Important:If the new create request is Apply+-- Immediately - Yes, all creates are performed immediately. If the new+-- create request is Apply Immediately - No, all creates are pending.+-- Example:+-- NewAvailabilityZones.member.1=us-east-1a&amp;NewAvailabilityZones.member.2=us-east-1b&amp;NewAvailabilityZones.member.3=us-east-1d.+-- +mccNewAvailabilityZones :: Lens' ModifyCacheCluster [Text]+mccNewAvailabilityZones =+    lens _mccNewAvailabilityZones (\s a -> s { _mccNewAvailabilityZones = a })+        . _List++-- | The Amazon Resource Name (ARN) of the Amazon SNS topic to which+-- notifications will be sent.+mccNotificationTopicArn :: Lens' ModifyCacheCluster (Maybe Text)+mccNotificationTopicArn =+    lens _mccNotificationTopicArn (\s a -> s { _mccNotificationTopicArn = a })++-- | The status of the Amazon SNS notification topic. Notifications are sent+-- only if the status is active. Valid values: active | inactive.+mccNotificationTopicStatus :: Lens' ModifyCacheCluster (Maybe Text)+mccNotificationTopicStatus =+    lens _mccNotificationTopicStatus+        (\s a -> s { _mccNotificationTopicStatus = a })++-- | The number of cache nodes that the cache cluster should have. If the+-- value for NumCacheNodes is greater than the sum of the number of current+-- cache nodes and the number of cache nodes pending creation (which may be+-- zero), then more nodes will be added. If the value is less than the+-- number of existing cache nodes, then nodes will be removed. If the value+-- is equal to the number of current cache nodes, then any pending add or+-- remove requests are canceled. If you are removing cache nodes, you must+-- use the CacheNodeIdsToRemove parameter to provide the IDs of the specific+-- cache nodes to remove. For cache clusters running Redis, the value of+-- NumCacheNodesmust be 1. Note:Adding or removing Memcached cache nodes can+-- be applied immediately or as a pending action. See ApplyImmediately. A+-- pending action to modify the number of cache nodes in a cluster during+-- its maintenance window, whether by adding or removing nodes in accordance+-- with the scale out architecture, is not queued. The customer's latest+-- request to add or remove nodes to the cluster overrides any previous+-- pending actions to modify the number of cache nodes in the cluster. For+-- example, a request to remove 2 nodes would override a previous pending+-- action to remove 3 nodes. Similarly, a request to add 2 nodes would+-- override a previous pending action to remove 3 nodes and vice versa. As+-- Memcached cache nodes may now be provisioned in different Availability+-- Zones with flexible cache node placement, a request to add nodes does not+-- automatically override a previous pending action to add nodes. The+-- customer can modify the previous pending action to add more nodes or+-- explicitly cancel the pending request and retry the new request. To+-- cancel pending actions to modify the number of cache nodes in a cluster,+-- use the ModifyCacheCluster request and set NumCacheNodes equal to the+-- number of cache nodes currently in the cache cluster.+mccNumCacheNodes :: Lens' ModifyCacheCluster (Maybe Int)+mccNumCacheNodes = lens _mccNumCacheNodes (\s a -> s { _mccNumCacheNodes = a })++-- | The weekly time range (in UTC) during which system maintenance can occur.+-- Note that system maintenance may result in an outage. This change is made+-- immediately. If you are moving this window to the current time, there+-- must be at least 120 minutes between the current time and end of the+-- window to ensure that pending changes are applied.+mccPreferredMaintenanceWindow :: Lens' ModifyCacheCluster (Maybe Text)+mccPreferredMaintenanceWindow =+    lens _mccPreferredMaintenanceWindow+        (\s a -> s { _mccPreferredMaintenanceWindow = a })++-- | Specifies the VPC Security Groups associated with the cache cluster. This+-- parameter can be used only with clusters that are created in an Amazon+-- Virtual Private Cloud (VPC).+mccSecurityGroupIds :: Lens' ModifyCacheCluster [Text]+mccSecurityGroupIds =+    lens _mccSecurityGroupIds (\s a -> s { _mccSecurityGroupIds = a })+        . _List++-- | The number of days for which ElastiCache will retain automatic cache+-- cluster snapshots before deleting them. For example, if you set+-- SnapshotRetentionLimit to 5, then a snapshot that was taken today will be+-- retained for 5 days before being deleted. ImportantIf the value of+-- SnapshotRetentionLimit is set to zero (0), backups are turned off.+mccSnapshotRetentionLimit :: Lens' ModifyCacheCluster (Maybe Int)+mccSnapshotRetentionLimit =+    lens _mccSnapshotRetentionLimit+        (\s a -> s { _mccSnapshotRetentionLimit = a })++-- | The daily time range (in UTC) during which ElastiCache will begin taking+-- a daily snapshot of your cache cluster.+mccSnapshotWindow :: Lens' ModifyCacheCluster (Maybe Text)+mccSnapshotWindow =+    lens _mccSnapshotWindow (\s a -> s { _mccSnapshotWindow = a })++newtype ModifyCacheClusterResponse = ModifyCacheClusterResponse+    { _mccrCacheCluster :: Maybe CacheCluster+    } deriving (Eq, Show)++-- | 'ModifyCacheClusterResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mccrCacheCluster' @::@ 'Maybe' 'CacheCluster'+--+modifyCacheClusterResponse :: ModifyCacheClusterResponse+modifyCacheClusterResponse = ModifyCacheClusterResponse+    { _mccrCacheCluster = Nothing+    }++mccrCacheCluster :: Lens' ModifyCacheClusterResponse (Maybe CacheCluster)+mccrCacheCluster = lens _mccrCacheCluster (\s a -> s { _mccrCacheCluster = a })++instance ToPath ModifyCacheCluster where+    toPath = const "/"++instance ToQuery ModifyCacheCluster where+    toQuery ModifyCacheCluster{..} = mconcat+        [ "AZMode"                     =? _mccAZMode+        , "ApplyImmediately"           =? _mccApplyImmediately+        , "AutoMinorVersionUpgrade"    =? _mccAutoMinorVersionUpgrade+        , "CacheClusterId"             =? _mccCacheClusterId+        , "CacheNodeIdsToRemove"       =? _mccCacheNodeIdsToRemove+        , "CacheParameterGroupName"    =? _mccCacheParameterGroupName+        , "CacheSecurityGroupNames"    =? _mccCacheSecurityGroupNames+        , "EngineVersion"              =? _mccEngineVersion+        , "NewAvailabilityZones"       =? _mccNewAvailabilityZones+        , "NotificationTopicArn"       =? _mccNotificationTopicArn+        , "NotificationTopicStatus"    =? _mccNotificationTopicStatus+        , "NumCacheNodes"              =? _mccNumCacheNodes+        , "PreferredMaintenanceWindow" =? _mccPreferredMaintenanceWindow+        , "SecurityGroupIds"           =? _mccSecurityGroupIds+        , "SnapshotRetentionLimit"     =? _mccSnapshotRetentionLimit+        , "SnapshotWindow"             =? _mccSnapshotWindow+        ]++instance ToHeaders ModifyCacheCluster++instance AWSRequest ModifyCacheCluster where+    type Sv ModifyCacheCluster = ElastiCache+    type Rs ModifyCacheCluster = ModifyCacheClusterResponse++    request  = post "ModifyCacheCluster"+    response = xmlResponse++instance FromXML ModifyCacheClusterResponse where+    parseXML = withElement "ModifyCacheClusterResult" $ \x -> ModifyCacheClusterResponse+        <$> x .@? "CacheCluster"
+ gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs view
@@ -0,0 +1,126 @@+{-# 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.ModifyCacheParameterGroup+-- 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)++-- | The ModifyCacheParameterGroup operation modifies the parameters of a cache+-- parameter group. You can modify up to 20 parameters in a single request by+-- submitting a list parameter name and value pairs.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheParameterGroup.html>+module Network.AWS.ElastiCache.ModifyCacheParameterGroup+    (+    -- * Request+      ModifyCacheParameterGroup+    -- ** Request constructor+    , modifyCacheParameterGroup+    -- ** Request lenses+    , mcpgCacheParameterGroupName+    , mcpgParameterNameValues++    -- * Response+    , ModifyCacheParameterGroupResponse+    -- ** Response constructor+    , modifyCacheParameterGroupResponse+    -- ** Response lenses+    , mcpgrCacheParameterGroupName+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data ModifyCacheParameterGroup = ModifyCacheParameterGroup+    { _mcpgCacheParameterGroupName :: Text+    , _mcpgParameterNameValues     :: List "ParameterNameValue" ParameterNameValue+    } deriving (Eq, Show)++-- | 'ModifyCacheParameterGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mcpgCacheParameterGroupName' @::@ 'Text'+--+-- * 'mcpgParameterNameValues' @::@ ['ParameterNameValue']+--+modifyCacheParameterGroup :: Text -- ^ 'mcpgCacheParameterGroupName'+                          -> ModifyCacheParameterGroup+modifyCacheParameterGroup p1 = ModifyCacheParameterGroup+    { _mcpgCacheParameterGroupName = p1+    , _mcpgParameterNameValues     = mempty+    }++-- | The name of the cache parameter group to modify.+mcpgCacheParameterGroupName :: Lens' ModifyCacheParameterGroup Text+mcpgCacheParameterGroupName =+    lens _mcpgCacheParameterGroupName+        (\s a -> s { _mcpgCacheParameterGroupName = a })++-- | An array of parameter names and values for the parameter update. You must+-- supply at least one parameter name and value; subsequent arguments are+-- optional. A maximum of 20 parameters may be modified per request.+mcpgParameterNameValues :: Lens' ModifyCacheParameterGroup [ParameterNameValue]+mcpgParameterNameValues =+    lens _mcpgParameterNameValues (\s a -> s { _mcpgParameterNameValues = a })+        . _List++newtype ModifyCacheParameterGroupResponse = ModifyCacheParameterGroupResponse+    { _mcpgrCacheParameterGroupName :: Maybe Text+    } deriving (Eq, Ord, Show, Monoid)++-- | 'ModifyCacheParameterGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mcpgrCacheParameterGroupName' @::@ 'Maybe' 'Text'+--+modifyCacheParameterGroupResponse :: ModifyCacheParameterGroupResponse+modifyCacheParameterGroupResponse = ModifyCacheParameterGroupResponse+    { _mcpgrCacheParameterGroupName = Nothing+    }++-- | The name of the cache parameter group.+mcpgrCacheParameterGroupName :: Lens' ModifyCacheParameterGroupResponse (Maybe Text)+mcpgrCacheParameterGroupName =+    lens _mcpgrCacheParameterGroupName+        (\s a -> s { _mcpgrCacheParameterGroupName = a })++instance ToPath ModifyCacheParameterGroup where+    toPath = const "/"++instance ToQuery ModifyCacheParameterGroup where+    toQuery ModifyCacheParameterGroup{..} = mconcat+        [ "CacheParameterGroupName" =? _mcpgCacheParameterGroupName+        , "ParameterNameValues"     =? _mcpgParameterNameValues+        ]++instance ToHeaders ModifyCacheParameterGroup++instance AWSRequest ModifyCacheParameterGroup where+    type Sv ModifyCacheParameterGroup = ElastiCache+    type Rs ModifyCacheParameterGroup = ModifyCacheParameterGroupResponse++    request  = post "ModifyCacheParameterGroup"+    response = xmlResponse++instance FromXML ModifyCacheParameterGroupResponse where+    parseXML = withElement "ModifyCacheParameterGroupResult" $ \x -> ModifyCacheParameterGroupResponse+        <$> x .@? "CacheParameterGroupName"
+ gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs view
@@ -0,0 +1,133 @@+{-# 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.ModifyCacheSubnetGroup+-- 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)++-- | The ModifyCacheSubnetGroup operation modifies an existing cache subnet+-- group.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheSubnetGroup.html>+module Network.AWS.ElastiCache.ModifyCacheSubnetGroup+    (+    -- * Request+      ModifyCacheSubnetGroup+    -- ** Request constructor+    , modifyCacheSubnetGroup+    -- ** Request lenses+    , mcsgCacheSubnetGroupDescription+    , mcsgCacheSubnetGroupName+    , mcsgSubnetIds++    -- * Response+    , ModifyCacheSubnetGroupResponse+    -- ** Response constructor+    , modifyCacheSubnetGroupResponse+    -- ** Response lenses+    , mcsgrCacheSubnetGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data ModifyCacheSubnetGroup = ModifyCacheSubnetGroup+    { _mcsgCacheSubnetGroupDescription :: Maybe Text+    , _mcsgCacheSubnetGroupName        :: Text+    , _mcsgSubnetIds                   :: List "SubnetIdentifier" Text+    } deriving (Eq, Ord, Show)++-- | 'ModifyCacheSubnetGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mcsgCacheSubnetGroupDescription' @::@ 'Maybe' 'Text'+--+-- * 'mcsgCacheSubnetGroupName' @::@ 'Text'+--+-- * 'mcsgSubnetIds' @::@ ['Text']+--+modifyCacheSubnetGroup :: Text -- ^ 'mcsgCacheSubnetGroupName'+                       -> ModifyCacheSubnetGroup+modifyCacheSubnetGroup p1 = ModifyCacheSubnetGroup+    { _mcsgCacheSubnetGroupName        = p1+    , _mcsgCacheSubnetGroupDescription = Nothing+    , _mcsgSubnetIds                   = mempty+    }++-- | A description for the cache subnet group.+mcsgCacheSubnetGroupDescription :: Lens' ModifyCacheSubnetGroup (Maybe Text)+mcsgCacheSubnetGroupDescription =+    lens _mcsgCacheSubnetGroupDescription+        (\s a -> s { _mcsgCacheSubnetGroupDescription = a })++-- | The name for the cache subnet group. This value is stored as a lowercase+-- string. Constraints: Must contain no more than 255 alphanumeric+-- characters or hyphens. Example: mysubnetgroup.+mcsgCacheSubnetGroupName :: Lens' ModifyCacheSubnetGroup Text+mcsgCacheSubnetGroupName =+    lens _mcsgCacheSubnetGroupName+        (\s a -> s { _mcsgCacheSubnetGroupName = a })++-- | The EC2 subnet IDs for the cache subnet group.+mcsgSubnetIds :: Lens' ModifyCacheSubnetGroup [Text]+mcsgSubnetIds = lens _mcsgSubnetIds (\s a -> s { _mcsgSubnetIds = a }) . _List++newtype ModifyCacheSubnetGroupResponse = ModifyCacheSubnetGroupResponse+    { _mcsgrCacheSubnetGroup :: Maybe CacheSubnetGroup+    } deriving (Eq, Show)++-- | 'ModifyCacheSubnetGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mcsgrCacheSubnetGroup' @::@ 'Maybe' 'CacheSubnetGroup'+--+modifyCacheSubnetGroupResponse :: ModifyCacheSubnetGroupResponse+modifyCacheSubnetGroupResponse = ModifyCacheSubnetGroupResponse+    { _mcsgrCacheSubnetGroup = Nothing+    }++mcsgrCacheSubnetGroup :: Lens' ModifyCacheSubnetGroupResponse (Maybe CacheSubnetGroup)+mcsgrCacheSubnetGroup =+    lens _mcsgrCacheSubnetGroup (\s a -> s { _mcsgrCacheSubnetGroup = a })++instance ToPath ModifyCacheSubnetGroup where+    toPath = const "/"++instance ToQuery ModifyCacheSubnetGroup where+    toQuery ModifyCacheSubnetGroup{..} = mconcat+        [ "CacheSubnetGroupDescription" =? _mcsgCacheSubnetGroupDescription+        , "CacheSubnetGroupName"        =? _mcsgCacheSubnetGroupName+        , "SubnetIds"                   =? _mcsgSubnetIds+        ]++instance ToHeaders ModifyCacheSubnetGroup++instance AWSRequest ModifyCacheSubnetGroup where+    type Sv ModifyCacheSubnetGroup = ElastiCache+    type Rs ModifyCacheSubnetGroup = ModifyCacheSubnetGroupResponse++    request  = post "ModifyCacheSubnetGroup"+    response = xmlResponse++instance FromXML ModifyCacheSubnetGroupResponse where+    parseXML = withElement "ModifyCacheSubnetGroupResult" $ \x -> ModifyCacheSubnetGroupResponse+        <$> x .@? "CacheSubnetGroup"
+ gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs view
@@ -0,0 +1,325 @@+{-# 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.ModifyReplicationGroup+-- 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)++-- | The ModifyReplicationGroup operation modifies the settings for a+-- replication group.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html>+module Network.AWS.ElastiCache.ModifyReplicationGroup+    (+    -- * Request+      ModifyReplicationGroup+    -- ** Request constructor+    , modifyReplicationGroup+    -- ** Request lenses+    , mrgApplyImmediately+    , mrgAutoMinorVersionUpgrade+    , mrgAutomaticFailoverEnabled+    , mrgCacheParameterGroupName+    , mrgCacheSecurityGroupNames+    , mrgEngineVersion+    , mrgNotificationTopicArn+    , mrgNotificationTopicStatus+    , mrgPreferredMaintenanceWindow+    , mrgPrimaryClusterId+    , mrgReplicationGroupDescription+    , mrgReplicationGroupId+    , mrgSecurityGroupIds+    , mrgSnapshotRetentionLimit+    , mrgSnapshotWindow+    , mrgSnapshottingClusterId++    -- * Response+    , ModifyReplicationGroupResponse+    -- ** Response constructor+    , modifyReplicationGroupResponse+    -- ** Response lenses+    , mrgrReplicationGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data ModifyReplicationGroup = ModifyReplicationGroup+    { _mrgApplyImmediately            :: Maybe Bool+    , _mrgAutoMinorVersionUpgrade     :: Maybe Bool+    , _mrgAutomaticFailoverEnabled    :: Maybe Bool+    , _mrgCacheParameterGroupName     :: Maybe Text+    , _mrgCacheSecurityGroupNames     :: List "CacheSecurityGroupName" Text+    , _mrgEngineVersion               :: Maybe Text+    , _mrgNotificationTopicArn        :: Maybe Text+    , _mrgNotificationTopicStatus     :: Maybe Text+    , _mrgPreferredMaintenanceWindow  :: Maybe Text+    , _mrgPrimaryClusterId            :: Maybe Text+    , _mrgReplicationGroupDescription :: Maybe Text+    , _mrgReplicationGroupId          :: Text+    , _mrgSecurityGroupIds            :: List "SecurityGroupId" Text+    , _mrgSnapshotRetentionLimit      :: Maybe Int+    , _mrgSnapshotWindow              :: Maybe Text+    , _mrgSnapshottingClusterId       :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ModifyReplicationGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mrgApplyImmediately' @::@ 'Maybe' 'Bool'+--+-- * 'mrgAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'+--+-- * 'mrgAutomaticFailoverEnabled' @::@ 'Maybe' 'Bool'+--+-- * 'mrgCacheParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'mrgCacheSecurityGroupNames' @::@ ['Text']+--+-- * 'mrgEngineVersion' @::@ 'Maybe' 'Text'+--+-- * 'mrgNotificationTopicArn' @::@ 'Maybe' 'Text'+--+-- * 'mrgNotificationTopicStatus' @::@ 'Maybe' 'Text'+--+-- * 'mrgPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'+--+-- * 'mrgPrimaryClusterId' @::@ 'Maybe' 'Text'+--+-- * 'mrgReplicationGroupDescription' @::@ 'Maybe' 'Text'+--+-- * 'mrgReplicationGroupId' @::@ 'Text'+--+-- * 'mrgSecurityGroupIds' @::@ ['Text']+--+-- * 'mrgSnapshotRetentionLimit' @::@ 'Maybe' 'Int'+--+-- * 'mrgSnapshotWindow' @::@ 'Maybe' 'Text'+--+-- * 'mrgSnapshottingClusterId' @::@ 'Maybe' 'Text'+--+modifyReplicationGroup :: Text -- ^ 'mrgReplicationGroupId'+                       -> ModifyReplicationGroup+modifyReplicationGroup p1 = ModifyReplicationGroup+    { _mrgReplicationGroupId          = p1+    , _mrgReplicationGroupDescription = Nothing+    , _mrgPrimaryClusterId            = Nothing+    , _mrgSnapshottingClusterId       = Nothing+    , _mrgAutomaticFailoverEnabled    = Nothing+    , _mrgCacheSecurityGroupNames     = mempty+    , _mrgSecurityGroupIds            = mempty+    , _mrgPreferredMaintenanceWindow  = Nothing+    , _mrgNotificationTopicArn        = Nothing+    , _mrgCacheParameterGroupName     = Nothing+    , _mrgNotificationTopicStatus     = Nothing+    , _mrgApplyImmediately            = Nothing+    , _mrgEngineVersion               = Nothing+    , _mrgAutoMinorVersionUpgrade     = Nothing+    , _mrgSnapshotRetentionLimit      = Nothing+    , _mrgSnapshotWindow              = Nothing+    }++-- | If true, this parameter causes the modifications in this request and any+-- pending modifications to be applied, asynchronously and as soon as+-- possible, regardless of the PreferredMaintenanceWindow setting for the+-- replication group. If false, then changes to the nodes in the replication+-- group are applied on the next maintenance reboot, or the next failure+-- reboot, whichever occurs first. Valid values: true | false Default:+-- false.+mrgApplyImmediately :: Lens' ModifyReplicationGroup (Maybe Bool)+mrgApplyImmediately =+    lens _mrgApplyImmediately (\s a -> s { _mrgApplyImmediately = a })++-- | Determines whether minor engine upgrades will be applied automatically to+-- all of the clusters in the replication group during the maintenance+-- window. A value of true allows these upgrades to occur; false disables+-- automatic upgrades.+mrgAutoMinorVersionUpgrade :: Lens' ModifyReplicationGroup (Maybe Bool)+mrgAutoMinorVersionUpgrade =+    lens _mrgAutoMinorVersionUpgrade+        (\s a -> s { _mrgAutoMinorVersionUpgrade = a })++-- | Whether a read replica will be automatically promoted to read/write+-- primary if the existing primary encounters a failure. Valid values: true+-- | false.+mrgAutomaticFailoverEnabled :: Lens' ModifyReplicationGroup (Maybe Bool)+mrgAutomaticFailoverEnabled =+    lens _mrgAutomaticFailoverEnabled+        (\s a -> s { _mrgAutomaticFailoverEnabled = a })++-- | The name of the cache parameter group to apply to all of the clusters in+-- this replication group. This change is asynchronously applied as soon as+-- possible for parameters when the ApplyImmediately parameter is specified+-- as true for this request.+mrgCacheParameterGroupName :: Lens' ModifyReplicationGroup (Maybe Text)+mrgCacheParameterGroupName =+    lens _mrgCacheParameterGroupName+        (\s a -> s { _mrgCacheParameterGroupName = a })++-- | A list of cache security group names to authorize for the clusters in+-- this replication group. This change is asynchronously applied as soon as+-- possible. This parameter can be used only with replication group+-- containing cache clusters running outside of an Amazon Virtual Private+-- Cloud (VPC). Constraints: Must contain no more than 255 alphanumeric+-- characters. Must not be "Default".+mrgCacheSecurityGroupNames :: Lens' ModifyReplicationGroup [Text]+mrgCacheSecurityGroupNames =+    lens _mrgCacheSecurityGroupNames+        (\s a -> s { _mrgCacheSecurityGroupNames = a })+            . _List++-- | The upgraded version of the cache engine to be run on the cache clusters+-- in the replication group.+mrgEngineVersion :: Lens' ModifyReplicationGroup (Maybe Text)+mrgEngineVersion = lens _mrgEngineVersion (\s a -> s { _mrgEngineVersion = a })++-- | The Amazon Resource Name (ARN) of the Amazon SNS topic to which+-- notifications will be sent.+mrgNotificationTopicArn :: Lens' ModifyReplicationGroup (Maybe Text)+mrgNotificationTopicArn =+    lens _mrgNotificationTopicArn (\s a -> s { _mrgNotificationTopicArn = a })++-- | The status of the Amazon SNS notification topic for the replication+-- group. Notifications are sent only if the status is active. Valid values:+-- active | inactive.+mrgNotificationTopicStatus :: Lens' ModifyReplicationGroup (Maybe Text)+mrgNotificationTopicStatus =+    lens _mrgNotificationTopicStatus+        (\s a -> s { _mrgNotificationTopicStatus = a })++-- | The weekly time range (in UTC) during which replication group system+-- maintenance can occur. Note that system maintenance may result in an+-- outage. This change is made immediately. If you are moving this window to+-- the current time, there must be at least 120 minutes between the current+-- time and end of the window to ensure that pending changes are applied.+mrgPreferredMaintenanceWindow :: Lens' ModifyReplicationGroup (Maybe Text)+mrgPreferredMaintenanceWindow =+    lens _mrgPreferredMaintenanceWindow+        (\s a -> s { _mrgPreferredMaintenanceWindow = a })++-- | If this parameter is specified, ElastiCache will promote each of the+-- cache clusters in the specified replication group to the primary role.+-- The nodes of all other cache clusters in the replication group will be+-- read replicas.+mrgPrimaryClusterId :: Lens' ModifyReplicationGroup (Maybe Text)+mrgPrimaryClusterId =+    lens _mrgPrimaryClusterId (\s a -> s { _mrgPrimaryClusterId = a })++-- | A description for the replication group. Maximum length is 255+-- characters.+mrgReplicationGroupDescription :: Lens' ModifyReplicationGroup (Maybe Text)+mrgReplicationGroupDescription =+    lens _mrgReplicationGroupDescription+        (\s a -> s { _mrgReplicationGroupDescription = a })++-- | The identifier of the replication group to modify.+mrgReplicationGroupId :: Lens' ModifyReplicationGroup Text+mrgReplicationGroupId =+    lens _mrgReplicationGroupId (\s a -> s { _mrgReplicationGroupId = a })++-- | Specifies the VPC Security Groups associated with the cache clusters in+-- the replication group. This parameter can be used only with replication+-- group containing cache clusters running in an Amazon Virtual Private+-- Cloud (VPC).+mrgSecurityGroupIds :: Lens' ModifyReplicationGroup [Text]+mrgSecurityGroupIds =+    lens _mrgSecurityGroupIds (\s a -> s { _mrgSecurityGroupIds = a })+        . _List++-- | The number of days for which ElastiCache will retain automatic node group+-- snapshots before deleting them. For example, if you set+-- SnapshotRetentionLimit to 5, then a snapshot that was taken today will be+-- retained for 5 days before being deleted. ImportantIf the value of+-- SnapshotRetentionLimit is set to zero (0), backups are turned off.+mrgSnapshotRetentionLimit :: Lens' ModifyReplicationGroup (Maybe Int)+mrgSnapshotRetentionLimit =+    lens _mrgSnapshotRetentionLimit+        (\s a -> s { _mrgSnapshotRetentionLimit = a })++-- | The daily time range (in UTC) during which ElastiCache will begin taking+-- a daily snapshot of the node group specified by SnapshottingClusterId.+-- Example: 05:00-09:00 If you do not specify this parameter, then+-- ElastiCache will automatically choose an appropriate time range.+mrgSnapshotWindow :: Lens' ModifyReplicationGroup (Maybe Text)+mrgSnapshotWindow =+    lens _mrgSnapshotWindow (\s a -> s { _mrgSnapshotWindow = a })++-- | The cache cluster ID that will be used as the daily snapshot source for+-- the replication group.+mrgSnapshottingClusterId :: Lens' ModifyReplicationGroup (Maybe Text)+mrgSnapshottingClusterId =+    lens _mrgSnapshottingClusterId+        (\s a -> s { _mrgSnapshottingClusterId = a })++newtype ModifyReplicationGroupResponse = ModifyReplicationGroupResponse+    { _mrgrReplicationGroup :: Maybe ReplicationGroup+    } deriving (Eq, Show)++-- | 'ModifyReplicationGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mrgrReplicationGroup' @::@ 'Maybe' 'ReplicationGroup'+--+modifyReplicationGroupResponse :: ModifyReplicationGroupResponse+modifyReplicationGroupResponse = ModifyReplicationGroupResponse+    { _mrgrReplicationGroup = Nothing+    }++mrgrReplicationGroup :: Lens' ModifyReplicationGroupResponse (Maybe ReplicationGroup)+mrgrReplicationGroup =+    lens _mrgrReplicationGroup (\s a -> s { _mrgrReplicationGroup = a })++instance ToPath ModifyReplicationGroup where+    toPath = const "/"++instance ToQuery ModifyReplicationGroup where+    toQuery ModifyReplicationGroup{..} = mconcat+        [ "ApplyImmediately"            =? _mrgApplyImmediately+        , "AutoMinorVersionUpgrade"     =? _mrgAutoMinorVersionUpgrade+        , "AutomaticFailoverEnabled"    =? _mrgAutomaticFailoverEnabled+        , "CacheParameterGroupName"     =? _mrgCacheParameterGroupName+        , "CacheSecurityGroupNames"     =? _mrgCacheSecurityGroupNames+        , "EngineVersion"               =? _mrgEngineVersion+        , "NotificationTopicArn"        =? _mrgNotificationTopicArn+        , "NotificationTopicStatus"     =? _mrgNotificationTopicStatus+        , "PreferredMaintenanceWindow"  =? _mrgPreferredMaintenanceWindow+        , "PrimaryClusterId"            =? _mrgPrimaryClusterId+        , "ReplicationGroupDescription" =? _mrgReplicationGroupDescription+        , "ReplicationGroupId"          =? _mrgReplicationGroupId+        , "SecurityGroupIds"            =? _mrgSecurityGroupIds+        , "SnapshotRetentionLimit"      =? _mrgSnapshotRetentionLimit+        , "SnapshotWindow"              =? _mrgSnapshotWindow+        , "SnapshottingClusterId"       =? _mrgSnapshottingClusterId+        ]++instance ToHeaders ModifyReplicationGroup++instance AWSRequest ModifyReplicationGroup where+    type Sv ModifyReplicationGroup = ElastiCache+    type Rs ModifyReplicationGroup = ModifyReplicationGroupResponse++    request  = post "ModifyReplicationGroup"+    response = xmlResponse++instance FromXML ModifyReplicationGroupResponse where+    parseXML = withElement "ModifyReplicationGroupResult" $ \x -> ModifyReplicationGroupResponse+        <$> x .@? "ReplicationGroup"
+ gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs view
@@ -0,0 +1,134 @@+{-# 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.PurchaseReservedCacheNodesOffering+-- 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)++-- | The PurchaseReservedCacheNodesOffering operation allows you to purchase a+-- reserved cache node offering.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_PurchaseReservedCacheNodesOffering.html>+module Network.AWS.ElastiCache.PurchaseReservedCacheNodesOffering+    (+    -- * Request+      PurchaseReservedCacheNodesOffering+    -- ** Request constructor+    , purchaseReservedCacheNodesOffering+    -- ** Request lenses+    , prcnoCacheNodeCount+    , prcnoReservedCacheNodeId+    , prcnoReservedCacheNodesOfferingId++    -- * Response+    , PurchaseReservedCacheNodesOfferingResponse+    -- ** Response constructor+    , purchaseReservedCacheNodesOfferingResponse+    -- ** Response lenses+    , prcnorReservedCacheNode+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data PurchaseReservedCacheNodesOffering = PurchaseReservedCacheNodesOffering+    { _prcnoCacheNodeCount               :: Maybe Int+    , _prcnoReservedCacheNodeId          :: Maybe Text+    , _prcnoReservedCacheNodesOfferingId :: Text+    } deriving (Eq, Ord, Show)++-- | 'PurchaseReservedCacheNodesOffering' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'prcnoCacheNodeCount' @::@ 'Maybe' 'Int'+--+-- * 'prcnoReservedCacheNodeId' @::@ 'Maybe' 'Text'+--+-- * 'prcnoReservedCacheNodesOfferingId' @::@ 'Text'+--+purchaseReservedCacheNodesOffering :: Text -- ^ 'prcnoReservedCacheNodesOfferingId'+                                   -> PurchaseReservedCacheNodesOffering+purchaseReservedCacheNodesOffering p1 = PurchaseReservedCacheNodesOffering+    { _prcnoReservedCacheNodesOfferingId = p1+    , _prcnoReservedCacheNodeId          = Nothing+    , _prcnoCacheNodeCount               = Nothing+    }++-- | The number of cache node instances to reserve. Default: 1.+prcnoCacheNodeCount :: Lens' PurchaseReservedCacheNodesOffering (Maybe Int)+prcnoCacheNodeCount =+    lens _prcnoCacheNodeCount (\s a -> s { _prcnoCacheNodeCount = a })++-- | A customer-specified identifier to track this reservation. Example:+-- myreservationID.+prcnoReservedCacheNodeId :: Lens' PurchaseReservedCacheNodesOffering (Maybe Text)+prcnoReservedCacheNodeId =+    lens _prcnoReservedCacheNodeId+        (\s a -> s { _prcnoReservedCacheNodeId = a })++-- | The ID of the reserved cache node offering to purchase. Example:+-- 438012d3-4052-4cc7-b2e3-8d3372e0e706.+prcnoReservedCacheNodesOfferingId :: Lens' PurchaseReservedCacheNodesOffering Text+prcnoReservedCacheNodesOfferingId =+    lens _prcnoReservedCacheNodesOfferingId+        (\s a -> s { _prcnoReservedCacheNodesOfferingId = a })++newtype PurchaseReservedCacheNodesOfferingResponse = PurchaseReservedCacheNodesOfferingResponse+    { _prcnorReservedCacheNode :: Maybe ReservedCacheNode+    } deriving (Eq, Show)++-- | 'PurchaseReservedCacheNodesOfferingResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'prcnorReservedCacheNode' @::@ 'Maybe' 'ReservedCacheNode'+--+purchaseReservedCacheNodesOfferingResponse :: PurchaseReservedCacheNodesOfferingResponse+purchaseReservedCacheNodesOfferingResponse = PurchaseReservedCacheNodesOfferingResponse+    { _prcnorReservedCacheNode = Nothing+    }++prcnorReservedCacheNode :: Lens' PurchaseReservedCacheNodesOfferingResponse (Maybe ReservedCacheNode)+prcnorReservedCacheNode =+    lens _prcnorReservedCacheNode (\s a -> s { _prcnorReservedCacheNode = a })++instance ToPath PurchaseReservedCacheNodesOffering where+    toPath = const "/"++instance ToQuery PurchaseReservedCacheNodesOffering where+    toQuery PurchaseReservedCacheNodesOffering{..} = mconcat+        [ "CacheNodeCount"               =? _prcnoCacheNodeCount+        , "ReservedCacheNodeId"          =? _prcnoReservedCacheNodeId+        , "ReservedCacheNodesOfferingId" =? _prcnoReservedCacheNodesOfferingId+        ]++instance ToHeaders PurchaseReservedCacheNodesOffering++instance AWSRequest PurchaseReservedCacheNodesOffering where+    type Sv PurchaseReservedCacheNodesOffering = ElastiCache+    type Rs PurchaseReservedCacheNodesOffering = PurchaseReservedCacheNodesOfferingResponse++    request  = post "PurchaseReservedCacheNodesOffering"+    response = xmlResponse++instance FromXML PurchaseReservedCacheNodesOfferingResponse where+    parseXML = withElement "PurchaseReservedCacheNodesOfferingResult" $ \x -> PurchaseReservedCacheNodesOfferingResponse+        <$> x .@? "ReservedCacheNode"
+ gen/Network/AWS/ElastiCache/RebootCacheCluster.hs view
@@ -0,0 +1,127 @@+{-# 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.RebootCacheCluster+-- 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)++-- | The RebootCacheCluster operation reboots some, or all, of the cache nodes+-- within a provisioned cache cluster. This API will apply any modified cache+-- parameter groups to the cache cluster. The reboot action takes place as+-- soon as possible, and results in a momentary outage to the cache cluster.+-- During the reboot, the cache cluster status is set to REBOOTING. The reboot+-- causes the contents of the cache (for each cache node being rebooted) to be+-- lost. When the reboot is complete, a cache cluster event is created.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_RebootCacheCluster.html>+module Network.AWS.ElastiCache.RebootCacheCluster+    (+    -- * Request+      RebootCacheCluster+    -- ** Request constructor+    , rebootCacheCluster+    -- ** Request lenses+    , rccCacheClusterId+    , rccCacheNodeIdsToReboot++    -- * Response+    , RebootCacheClusterResponse+    -- ** Response constructor+    , rebootCacheClusterResponse+    -- ** Response lenses+    , rccrCacheCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data RebootCacheCluster = RebootCacheCluster+    { _rccCacheClusterId       :: Text+    , _rccCacheNodeIdsToReboot :: List "CacheNodeId" Text+    } deriving (Eq, Ord, Show)++-- | 'RebootCacheCluster' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rccCacheClusterId' @::@ 'Text'+--+-- * 'rccCacheNodeIdsToReboot' @::@ ['Text']+--+rebootCacheCluster :: Text -- ^ 'rccCacheClusterId'+                   -> RebootCacheCluster+rebootCacheCluster p1 = RebootCacheCluster+    { _rccCacheClusterId       = p1+    , _rccCacheNodeIdsToReboot = mempty+    }++-- | The cache cluster identifier. This parameter is stored as a lowercase+-- string.+rccCacheClusterId :: Lens' RebootCacheCluster Text+rccCacheClusterId =+    lens _rccCacheClusterId (\s a -> s { _rccCacheClusterId = a })++-- | A list of cache node IDs to reboot. A node ID is a numeric identifier+-- (0001, 0002, etc.). To reboot an entire cache cluster, specify all of the+-- cache node IDs.+rccCacheNodeIdsToReboot :: Lens' RebootCacheCluster [Text]+rccCacheNodeIdsToReboot =+    lens _rccCacheNodeIdsToReboot (\s a -> s { _rccCacheNodeIdsToReboot = a })+        . _List++newtype RebootCacheClusterResponse = RebootCacheClusterResponse+    { _rccrCacheCluster :: Maybe CacheCluster+    } deriving (Eq, Show)++-- | 'RebootCacheClusterResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rccrCacheCluster' @::@ 'Maybe' 'CacheCluster'+--+rebootCacheClusterResponse :: RebootCacheClusterResponse+rebootCacheClusterResponse = RebootCacheClusterResponse+    { _rccrCacheCluster = Nothing+    }++rccrCacheCluster :: Lens' RebootCacheClusterResponse (Maybe CacheCluster)+rccrCacheCluster = lens _rccrCacheCluster (\s a -> s { _rccrCacheCluster = a })++instance ToPath RebootCacheCluster where+    toPath = const "/"++instance ToQuery RebootCacheCluster where+    toQuery RebootCacheCluster{..} = mconcat+        [ "CacheClusterId"       =? _rccCacheClusterId+        , "CacheNodeIdsToReboot" =? _rccCacheNodeIdsToReboot+        ]++instance ToHeaders RebootCacheCluster++instance AWSRequest RebootCacheCluster where+    type Sv RebootCacheCluster = ElastiCache+    type Rs RebootCacheCluster = RebootCacheClusterResponse++    request  = post "RebootCacheCluster"+    response = xmlResponse++instance FromXML RebootCacheClusterResponse where+    parseXML = withElement "RebootCacheClusterResult" $ \x -> RebootCacheClusterResponse+        <$> x .@? "CacheCluster"
+ gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs view
@@ -0,0 +1,141 @@+{-# 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.ResetCacheParameterGroup+-- 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)++-- | The ResetCacheParameterGroup operation modifies the parameters of a cache+-- parameter group to the engine or system default value. You can reset+-- specific parameters by submitting a list of parameter names. To reset the+-- entire cache parameter group, specify the ResetAllParameters and+-- CacheParameterGroupName parameters.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ResetCacheParameterGroup.html>+module Network.AWS.ElastiCache.ResetCacheParameterGroup+    (+    -- * Request+      ResetCacheParameterGroup+    -- ** Request constructor+    , resetCacheParameterGroup+    -- ** Request lenses+    , rcpgCacheParameterGroupName+    , rcpgParameterNameValues+    , rcpgResetAllParameters++    -- * Response+    , ResetCacheParameterGroupResponse+    -- ** Response constructor+    , resetCacheParameterGroupResponse+    -- ** Response lenses+    , rcpgrCacheParameterGroupName+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data ResetCacheParameterGroup = ResetCacheParameterGroup+    { _rcpgCacheParameterGroupName :: Text+    , _rcpgParameterNameValues     :: List "ParameterNameValue" ParameterNameValue+    , _rcpgResetAllParameters      :: Maybe Bool+    } deriving (Eq, Show)++-- | 'ResetCacheParameterGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcpgCacheParameterGroupName' @::@ 'Text'+--+-- * 'rcpgParameterNameValues' @::@ ['ParameterNameValue']+--+-- * 'rcpgResetAllParameters' @::@ 'Maybe' 'Bool'+--+resetCacheParameterGroup :: Text -- ^ 'rcpgCacheParameterGroupName'+                         -> ResetCacheParameterGroup+resetCacheParameterGroup p1 = ResetCacheParameterGroup+    { _rcpgCacheParameterGroupName = p1+    , _rcpgResetAllParameters      = Nothing+    , _rcpgParameterNameValues     = mempty+    }++-- | The name of the cache parameter group to reset.+rcpgCacheParameterGroupName :: Lens' ResetCacheParameterGroup Text+rcpgCacheParameterGroupName =+    lens _rcpgCacheParameterGroupName+        (\s a -> s { _rcpgCacheParameterGroupName = a })++-- | An array of parameter names to be reset. If you are not resetting the+-- entire cache parameter group, you must specify at least one parameter+-- name.+rcpgParameterNameValues :: Lens' ResetCacheParameterGroup [ParameterNameValue]+rcpgParameterNameValues =+    lens _rcpgParameterNameValues (\s a -> s { _rcpgParameterNameValues = a })+        . _List++-- | If true, all parameters in the cache parameter group will be reset to+-- default values. If false, no such action occurs. Valid values: true |+-- false.+rcpgResetAllParameters :: Lens' ResetCacheParameterGroup (Maybe Bool)+rcpgResetAllParameters =+    lens _rcpgResetAllParameters (\s a -> s { _rcpgResetAllParameters = a })++newtype ResetCacheParameterGroupResponse = ResetCacheParameterGroupResponse+    { _rcpgrCacheParameterGroupName :: Maybe Text+    } deriving (Eq, Ord, Show, Monoid)++-- | 'ResetCacheParameterGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcpgrCacheParameterGroupName' @::@ 'Maybe' 'Text'+--+resetCacheParameterGroupResponse :: ResetCacheParameterGroupResponse+resetCacheParameterGroupResponse = ResetCacheParameterGroupResponse+    { _rcpgrCacheParameterGroupName = Nothing+    }++-- | The name of the cache parameter group.+rcpgrCacheParameterGroupName :: Lens' ResetCacheParameterGroupResponse (Maybe Text)+rcpgrCacheParameterGroupName =+    lens _rcpgrCacheParameterGroupName+        (\s a -> s { _rcpgrCacheParameterGroupName = a })++instance ToPath ResetCacheParameterGroup where+    toPath = const "/"++instance ToQuery ResetCacheParameterGroup where+    toQuery ResetCacheParameterGroup{..} = mconcat+        [ "CacheParameterGroupName" =? _rcpgCacheParameterGroupName+        , "ParameterNameValues"     =? _rcpgParameterNameValues+        , "ResetAllParameters"      =? _rcpgResetAllParameters+        ]++instance ToHeaders ResetCacheParameterGroup++instance AWSRequest ResetCacheParameterGroup where+    type Sv ResetCacheParameterGroup = ElastiCache+    type Rs ResetCacheParameterGroup = ResetCacheParameterGroupResponse++    request  = post "ResetCacheParameterGroup"+    response = xmlResponse++instance FromXML ResetCacheParameterGroupResponse where+    parseXML = withElement "ResetCacheParameterGroupResult" $ \x -> ResetCacheParameterGroupResponse+        <$> x .@? "CacheParameterGroupName"
+ gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs view
@@ -0,0 +1,139 @@+{-# 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.RevokeCacheSecurityGroupIngress+-- 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)++-- | The RevokeCacheSecurityGroupIngress operation revokes ingress from a cache+-- security group. Use this operation to disallow access from an Amazon EC2+-- security group that had been previously authorized.+--+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_RevokeCacheSecurityGroupIngress.html>+module Network.AWS.ElastiCache.RevokeCacheSecurityGroupIngress+    (+    -- * Request+      RevokeCacheSecurityGroupIngress+    -- ** Request constructor+    , revokeCacheSecurityGroupIngress+    -- ** Request lenses+    , rcsgiCacheSecurityGroupName+    , rcsgiEC2SecurityGroupName+    , rcsgiEC2SecurityGroupOwnerId++    -- * Response+    , RevokeCacheSecurityGroupIngressResponse+    -- ** Response constructor+    , revokeCacheSecurityGroupIngressResponse+    -- ** Response lenses+    , rcsgirCacheSecurityGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.ElastiCache.Types+import qualified GHC.Exts++data RevokeCacheSecurityGroupIngress = RevokeCacheSecurityGroupIngress+    { _rcsgiCacheSecurityGroupName  :: Text+    , _rcsgiEC2SecurityGroupName    :: Text+    , _rcsgiEC2SecurityGroupOwnerId :: Text+    } deriving (Eq, Ord, Show)++-- | 'RevokeCacheSecurityGroupIngress' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcsgiCacheSecurityGroupName' @::@ 'Text'+--+-- * 'rcsgiEC2SecurityGroupName' @::@ 'Text'+--+-- * 'rcsgiEC2SecurityGroupOwnerId' @::@ 'Text'+--+revokeCacheSecurityGroupIngress :: Text -- ^ 'rcsgiCacheSecurityGroupName'+                                -> Text -- ^ 'rcsgiEC2SecurityGroupName'+                                -> Text -- ^ 'rcsgiEC2SecurityGroupOwnerId'+                                -> RevokeCacheSecurityGroupIngress+revokeCacheSecurityGroupIngress p1 p2 p3 = RevokeCacheSecurityGroupIngress+    { _rcsgiCacheSecurityGroupName  = p1+    , _rcsgiEC2SecurityGroupName    = p2+    , _rcsgiEC2SecurityGroupOwnerId = p3+    }++-- | The name of the cache security group to revoke ingress from.+rcsgiCacheSecurityGroupName :: Lens' RevokeCacheSecurityGroupIngress Text+rcsgiCacheSecurityGroupName =+    lens _rcsgiCacheSecurityGroupName+        (\s a -> s { _rcsgiCacheSecurityGroupName = a })++-- | The name of the Amazon EC2 security group to revoke access from.+rcsgiEC2SecurityGroupName :: Lens' RevokeCacheSecurityGroupIngress Text+rcsgiEC2SecurityGroupName =+    lens _rcsgiEC2SecurityGroupName+        (\s a -> s { _rcsgiEC2SecurityGroupName = a })++-- | The AWS account number of the Amazon EC2 security group owner. Note that+-- this is not the same thing as an AWS access key ID - you must provide a+-- valid AWS account number for this parameter.+rcsgiEC2SecurityGroupOwnerId :: Lens' RevokeCacheSecurityGroupIngress Text+rcsgiEC2SecurityGroupOwnerId =+    lens _rcsgiEC2SecurityGroupOwnerId+        (\s a -> s { _rcsgiEC2SecurityGroupOwnerId = a })++newtype RevokeCacheSecurityGroupIngressResponse = RevokeCacheSecurityGroupIngressResponse+    { _rcsgirCacheSecurityGroup :: Maybe CacheSecurityGroup+    } deriving (Eq, Show)++-- | 'RevokeCacheSecurityGroupIngressResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcsgirCacheSecurityGroup' @::@ 'Maybe' 'CacheSecurityGroup'+--+revokeCacheSecurityGroupIngressResponse :: RevokeCacheSecurityGroupIngressResponse+revokeCacheSecurityGroupIngressResponse = RevokeCacheSecurityGroupIngressResponse+    { _rcsgirCacheSecurityGroup = Nothing+    }++rcsgirCacheSecurityGroup :: Lens' RevokeCacheSecurityGroupIngressResponse (Maybe CacheSecurityGroup)+rcsgirCacheSecurityGroup =+    lens _rcsgirCacheSecurityGroup+        (\s a -> s { _rcsgirCacheSecurityGroup = a })++instance ToPath RevokeCacheSecurityGroupIngress where+    toPath = const "/"++instance ToQuery RevokeCacheSecurityGroupIngress where+    toQuery RevokeCacheSecurityGroupIngress{..} = mconcat+        [ "CacheSecurityGroupName"  =? _rcsgiCacheSecurityGroupName+        , "EC2SecurityGroupName"    =? _rcsgiEC2SecurityGroupName+        , "EC2SecurityGroupOwnerId" =? _rcsgiEC2SecurityGroupOwnerId+        ]++instance ToHeaders RevokeCacheSecurityGroupIngress++instance AWSRequest RevokeCacheSecurityGroupIngress where+    type Sv RevokeCacheSecurityGroupIngress = ElastiCache+    type Rs RevokeCacheSecurityGroupIngress = RevokeCacheSecurityGroupIngressResponse++    request  = post "RevokeCacheSecurityGroupIngress"+    response = xmlResponse++instance FromXML RevokeCacheSecurityGroupIngressResponse where+    parseXML = withElement "RevokeCacheSecurityGroupIngressResult" $ \x -> RevokeCacheSecurityGroupIngressResponse+        <$> x .@? "CacheSecurityGroup"
+ gen/Network/AWS/ElastiCache/Types.hs view
@@ -0,0 +1,2796 @@+{-# 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.Types+-- 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)++module Network.AWS.ElastiCache.Types+    (+    -- * Service+      ElastiCache+    -- ** Error+    , RESTError+    -- ** XML+    , ns++    -- * NodeSnapshot+    , NodeSnapshot+    , nodeSnapshot+    , nsCacheNodeCreateTime+    , nsCacheNodeId+    , nsCacheSize+    , nsSnapshotCreateTime++    -- * Snapshot+    , Snapshot+    , snapshot+    , sAutoMinorVersionUpgrade+    , sCacheClusterCreateTime+    , sCacheClusterId+    , sCacheNodeType+    , sCacheParameterGroupName+    , sCacheSubnetGroupName+    , sEngine+    , sEngineVersion+    , sNodeSnapshots+    , sNumCacheNodes+    , sPort+    , sPreferredAvailabilityZone+    , sPreferredMaintenanceWindow+    , sSnapshotName+    , sSnapshotRetentionLimit+    , sSnapshotSource+    , sSnapshotStatus+    , sSnapshotWindow+    , sTopicArn+    , sVpcId++    -- * Event+    , Event+    , event+    , eDate+    , eMessage+    , eSourceIdentifier+    , eSourceType++    -- * NodeGroup+    , NodeGroup+    , nodeGroup+    , ngNodeGroupId+    , ngNodeGroupMembers+    , ngPrimaryEndpoint+    , ngStatus++    -- * CacheNodeTypeSpecificValue+    , CacheNodeTypeSpecificValue+    , cacheNodeTypeSpecificValue+    , cntsvCacheNodeType+    , cntsvValue++    -- * PendingAutomaticFailoverStatus+    , PendingAutomaticFailoverStatus (..)++    -- * NotificationConfiguration+    , NotificationConfiguration+    , notificationConfiguration+    , ncTopicArn+    , ncTopicStatus++    -- * ReplicationGroupPendingModifiedValues+    , ReplicationGroupPendingModifiedValues+    , replicationGroupPendingModifiedValues+    , rgpmvAutomaticFailoverStatus+    , rgpmvPrimaryClusterId++    -- * EC2SecurityGroup+    , EC2SecurityGroup+    , ec2SecurityGroup+    , ecsgEC2SecurityGroupName+    , ecsgEC2SecurityGroupOwnerId+    , ecsgStatus++    -- * ParameterNameValue+    , ParameterNameValue+    , parameterNameValue+    , pnvParameterName+    , pnvParameterValue++    -- * SourceType+    , SourceType (..)++    -- * CacheSubnetGroup+    , CacheSubnetGroup+    , cacheSubnetGroup+    , csgCacheSubnetGroupDescription+    , csgCacheSubnetGroupName+    , csgSubnets+    , csgVpcId++    -- * ReservedCacheNode+    , ReservedCacheNode+    , reservedCacheNode+    , rcnCacheNodeCount+    , rcnCacheNodeType+    , rcnDuration+    , rcnFixedPrice+    , rcnOfferingType+    , rcnProductDescription+    , rcnRecurringCharges+    , rcnReservedCacheNodeId+    , rcnReservedCacheNodesOfferingId+    , rcnStartTime+    , rcnState+    , rcnUsagePrice++    -- * Subnet+    , Subnet+    , subnet+    , sSubnetAvailabilityZone+    , sSubnetIdentifier++    -- * SecurityGroupMembership+    , SecurityGroupMembership+    , securityGroupMembership+    , sgmSecurityGroupId+    , sgmStatus++    -- * CacheCluster+    , CacheCluster+    , cacheCluster+    , ccAutoMinorVersionUpgrade+    , ccCacheClusterCreateTime+    , ccCacheClusterId+    , ccCacheClusterStatus+    , ccCacheNodeType+    , ccCacheNodes+    , ccCacheParameterGroup+    , ccCacheSecurityGroups+    , ccCacheSubnetGroupName+    , ccClientDownloadLandingPage+    , ccConfigurationEndpoint+    , ccEngine+    , ccEngineVersion+    , ccNotificationConfiguration+    , ccNumCacheNodes+    , ccPendingModifiedValues+    , ccPreferredAvailabilityZone+    , ccPreferredMaintenanceWindow+    , ccReplicationGroupId+    , ccSecurityGroups+    , ccSnapshotRetentionLimit+    , ccSnapshotWindow++    -- * EngineDefaults+    , EngineDefaults+    , engineDefaults+    , edCacheNodeTypeSpecificParameters+    , edCacheParameterGroupFamily+    , edMarker+    , edParameters++    -- * CacheParameterGroupStatus+    , CacheParameterGroupStatus+    , cacheParameterGroupStatus+    , cpgsCacheNodeIdsToReboot+    , cpgsCacheParameterGroupName+    , cpgsParameterApplyStatus++    -- * CacheNode+    , CacheNode+    , cacheNode+    , cnCacheNodeCreateTime+    , cnCacheNodeId+    , cnCacheNodeStatus+    , cnCustomerAvailabilityZone+    , cnEndpoint+    , cnParameterGroupStatus+    , cnSourceCacheNodeId++    -- * CacheSecurityGroupMembership+    , CacheSecurityGroupMembership+    , cacheSecurityGroupMembership+    , csgmCacheSecurityGroupName+    , csgmStatus++    -- * AvailabilityZone+    , AvailabilityZone+    , availabilityZone+    , azName++    -- * NodeGroupMember+    , NodeGroupMember+    , nodeGroupMember+    , ngmCacheClusterId+    , ngmCacheNodeId+    , ngmCurrentRole+    , ngmPreferredAvailabilityZone+    , ngmReadEndpoint++    -- * CacheParameterGroup+    , CacheParameterGroup+    , cacheParameterGroup+    , cpgCacheParameterGroupFamily+    , cpgCacheParameterGroupName+    , cpgDescription++    -- * AutomaticFailoverStatus+    , AutomaticFailoverStatus (..)++    -- * CacheSecurityGroup+    , CacheSecurityGroup+    , cacheSecurityGroup+    , csgCacheSecurityGroupName+    , csgDescription+    , csgEC2SecurityGroups+    , csgOwnerId++    -- * CacheNodeTypeSpecificParameter+    , CacheNodeTypeSpecificParameter+    , cacheNodeTypeSpecificParameter+    , cntspAllowedValues+    , cntspCacheNodeTypeSpecificValues+    , cntspDataType+    , cntspDescription+    , cntspIsModifiable+    , cntspMinimumEngineVersion+    , cntspParameterName+    , cntspSource++    -- * AZMode+    , AZMode (..)++    -- * CacheEngineVersion+    , CacheEngineVersion+    , cacheEngineVersion+    , cevCacheEngineDescription+    , cevCacheEngineVersionDescription+    , cevCacheParameterGroupFamily+    , cevEngine+    , cevEngineVersion++    -- * ReplicationGroup+    , ReplicationGroup+    , replicationGroup+    , rgAutomaticFailover+    , rgDescription+    , rgMemberClusters+    , rgNodeGroups+    , rgPendingModifiedValues+    , rgReplicationGroupId+    , rgSnapshottingClusterId+    , rgStatus++    -- * RecurringCharge+    , RecurringCharge+    , recurringCharge+    , rcRecurringChargeAmount+    , rcRecurringChargeFrequency++    -- * ReservedCacheNodesOffering+    , ReservedCacheNodesOffering+    , reservedCacheNodesOffering+    , rcnoCacheNodeType+    , rcnoDuration+    , rcnoFixedPrice+    , rcnoOfferingType+    , rcnoProductDescription+    , rcnoRecurringCharges+    , rcnoReservedCacheNodesOfferingId+    , rcnoUsagePrice++    -- * Endpoint+    , Endpoint+    , endpoint+    , eAddress+    , ePort++    -- * PendingModifiedValues+    , PendingModifiedValues+    , pendingModifiedValues+    , pmvCacheNodeIdsToRemove+    , pmvEngineVersion+    , pmvNumCacheNodes++    -- * CacheParameterGroupNameMessage+    , CacheParameterGroupNameMessage+    , cacheParameterGroupNameMessage+    , cpgnmCacheParameterGroupName++    -- * Parameter+    , Parameter+    , parameter+    , pAllowedValues+    , pDataType+    , pDescription+    , pIsModifiable+    , pMinimumEngineVersion+    , pParameterName+    , pParameterValue+    , pSource+    ) where++import Network.AWS.Error+import Network.AWS.Prelude+import Network.AWS.Signing.V4+import qualified GHC.Exts++-- | Version @2014-09-30@ of the Amazon ElastiCache service.+data ElastiCache++instance AWSService ElastiCache where+    type Sg ElastiCache = V4+    type Er ElastiCache = RESTError++    service = Service+        { _svcEndpoint     = regional+        , _svcAbbrev       = "ElastiCache"+        , _svcPrefix       = "elasticache"+        , _svcVersion      = "2014-09-30"+        , _svcTargetPrefix = Nothing+        , _svcJSONVersion  = Nothing+        }++    handle = restError statusSuccess++ns :: Text+ns = "http://elasticache.amazonaws.com/doc/2014-09-30/"++data NodeSnapshot = NodeSnapshot+    { _nsCacheNodeCreateTime :: Maybe RFC822+    , _nsCacheNodeId         :: Maybe Text+    , _nsCacheSize           :: Maybe Text+    , _nsSnapshotCreateTime  :: Maybe RFC822+    } deriving (Eq, Ord, Show)++-- | 'NodeSnapshot' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'nsCacheNodeCreateTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'nsCacheNodeId' @::@ 'Maybe' 'Text'+--+-- * 'nsCacheSize' @::@ 'Maybe' 'Text'+--+-- * 'nsSnapshotCreateTime' @::@ 'Maybe' 'UTCTime'+--+nodeSnapshot :: NodeSnapshot+nodeSnapshot = NodeSnapshot+    { _nsCacheNodeId         = Nothing+    , _nsCacheSize           = Nothing+    , _nsCacheNodeCreateTime = Nothing+    , _nsSnapshotCreateTime  = Nothing+    }++-- | The date and time when the cache node was created in the source cache+-- cluster.+nsCacheNodeCreateTime :: Lens' NodeSnapshot (Maybe UTCTime)+nsCacheNodeCreateTime =+    lens _nsCacheNodeCreateTime (\s a -> s { _nsCacheNodeCreateTime = a })+        . mapping _Time++-- | The cache node identifier for the node in the source cache cluster.+nsCacheNodeId :: Lens' NodeSnapshot (Maybe Text)+nsCacheNodeId = lens _nsCacheNodeId (\s a -> s { _nsCacheNodeId = a })++-- | The size of the cache on the source cache node.+nsCacheSize :: Lens' NodeSnapshot (Maybe Text)+nsCacheSize = lens _nsCacheSize (\s a -> s { _nsCacheSize = a })++-- | The date and time when the source node's metadata and cache data set was+-- obtained for the snapshot.+nsSnapshotCreateTime :: Lens' NodeSnapshot (Maybe UTCTime)+nsSnapshotCreateTime =+    lens _nsSnapshotCreateTime (\s a -> s { _nsSnapshotCreateTime = a })+        . mapping _Time++instance FromXML NodeSnapshot where+    parseXML x = NodeSnapshot+        <$> x .@? "CacheNodeCreateTime"+        <*> x .@? "CacheNodeId"+        <*> x .@? "CacheSize"+        <*> x .@? "SnapshotCreateTime"++instance ToQuery NodeSnapshot where+    toQuery NodeSnapshot{..} = mconcat+        [ "CacheNodeCreateTime" =? _nsCacheNodeCreateTime+        , "CacheNodeId"         =? _nsCacheNodeId+        , "CacheSize"           =? _nsCacheSize+        , "SnapshotCreateTime"  =? _nsSnapshotCreateTime+        ]++data Snapshot = Snapshot+    { _sAutoMinorVersionUpgrade    :: Maybe Bool+    , _sCacheClusterCreateTime     :: Maybe RFC822+    , _sCacheClusterId             :: Maybe Text+    , _sCacheNodeType              :: Maybe Text+    , _sCacheParameterGroupName    :: Maybe Text+    , _sCacheSubnetGroupName       :: Maybe Text+    , _sEngine                     :: Maybe Text+    , _sEngineVersion              :: Maybe Text+    , _sNodeSnapshots              :: List "NodeSnapshot" NodeSnapshot+    , _sNumCacheNodes              :: Maybe Int+    , _sPort                       :: Maybe Int+    , _sPreferredAvailabilityZone  :: Maybe Text+    , _sPreferredMaintenanceWindow :: Maybe Text+    , _sSnapshotName               :: Maybe Text+    , _sSnapshotRetentionLimit     :: Maybe Int+    , _sSnapshotSource             :: Maybe Text+    , _sSnapshotStatus             :: Maybe Text+    , _sSnapshotWindow             :: Maybe Text+    , _sTopicArn                   :: Maybe Text+    , _sVpcId                      :: Maybe Text+    } deriving (Eq, Show)++-- | 'Snapshot' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'+--+-- * 'sCacheClusterCreateTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'sCacheClusterId' @::@ 'Maybe' 'Text'+--+-- * 'sCacheNodeType' @::@ 'Maybe' 'Text'+--+-- * 'sCacheParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'sCacheSubnetGroupName' @::@ 'Maybe' 'Text'+--+-- * 'sEngine' @::@ 'Maybe' 'Text'+--+-- * 'sEngineVersion' @::@ 'Maybe' 'Text'+--+-- * 'sNodeSnapshots' @::@ ['NodeSnapshot']+--+-- * 'sNumCacheNodes' @::@ 'Maybe' 'Int'+--+-- * 'sPort' @::@ 'Maybe' 'Int'+--+-- * 'sPreferredAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'sPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'+--+-- * 'sSnapshotName' @::@ 'Maybe' 'Text'+--+-- * 'sSnapshotRetentionLimit' @::@ 'Maybe' 'Int'+--+-- * 'sSnapshotSource' @::@ 'Maybe' 'Text'+--+-- * 'sSnapshotStatus' @::@ 'Maybe' 'Text'+--+-- * 'sSnapshotWindow' @::@ 'Maybe' 'Text'+--+-- * 'sTopicArn' @::@ 'Maybe' 'Text'+--+-- * 'sVpcId' @::@ 'Maybe' 'Text'+--+snapshot :: Snapshot+snapshot = Snapshot+    { _sSnapshotName               = Nothing+    , _sCacheClusterId             = Nothing+    , _sSnapshotStatus             = Nothing+    , _sSnapshotSource             = Nothing+    , _sCacheNodeType              = Nothing+    , _sEngine                     = Nothing+    , _sEngineVersion              = Nothing+    , _sNumCacheNodes              = Nothing+    , _sPreferredAvailabilityZone  = Nothing+    , _sCacheClusterCreateTime     = Nothing+    , _sPreferredMaintenanceWindow = Nothing+    , _sTopicArn                   = Nothing+    , _sPort                       = Nothing+    , _sCacheParameterGroupName    = Nothing+    , _sCacheSubnetGroupName       = Nothing+    , _sVpcId                      = Nothing+    , _sAutoMinorVersionUpgrade    = Nothing+    , _sSnapshotRetentionLimit     = Nothing+    , _sSnapshotWindow             = Nothing+    , _sNodeSnapshots              = mempty+    }++-- | For the source cache cluster, indicates whether minor version patches are+-- applied automatically (true) or not (false).+sAutoMinorVersionUpgrade :: Lens' Snapshot (Maybe Bool)+sAutoMinorVersionUpgrade =+    lens _sAutoMinorVersionUpgrade+        (\s a -> s { _sAutoMinorVersionUpgrade = a })++-- | The date and time when the source cache cluster was created.+sCacheClusterCreateTime :: Lens' Snapshot (Maybe UTCTime)+sCacheClusterCreateTime =+    lens _sCacheClusterCreateTime (\s a -> s { _sCacheClusterCreateTime = a })+        . mapping _Time++-- | The user-supplied identifier of the source cache cluster.+sCacheClusterId :: Lens' Snapshot (Maybe Text)+sCacheClusterId = lens _sCacheClusterId (\s a -> s { _sCacheClusterId = a })++-- | The name of the compute and memory capacity node type for the source+-- cache cluster.+sCacheNodeType :: Lens' Snapshot (Maybe Text)+sCacheNodeType = lens _sCacheNodeType (\s a -> s { _sCacheNodeType = a })++-- | The cache parameter group that is associated with the source cache+-- cluster.+sCacheParameterGroupName :: Lens' Snapshot (Maybe Text)+sCacheParameterGroupName =+    lens _sCacheParameterGroupName+        (\s a -> s { _sCacheParameterGroupName = a })++-- | The name of the cache subnet group associated with the source cache+-- cluster.+sCacheSubnetGroupName :: Lens' Snapshot (Maybe Text)+sCacheSubnetGroupName =+    lens _sCacheSubnetGroupName (\s a -> s { _sCacheSubnetGroupName = a })++-- | The name of the cache engine (memcached or redis) used by the source+-- cache cluster.+sEngine :: Lens' Snapshot (Maybe Text)+sEngine = lens _sEngine (\s a -> s { _sEngine = a })++-- | The version of the cache engine version that is used by the source cache+-- cluster.+sEngineVersion :: Lens' Snapshot (Maybe Text)+sEngineVersion = lens _sEngineVersion (\s a -> s { _sEngineVersion = a })++-- | A list of the cache nodes in the source cache cluster.+sNodeSnapshots :: Lens' Snapshot [NodeSnapshot]+sNodeSnapshots = lens _sNodeSnapshots (\s a -> s { _sNodeSnapshots = a }) . _List++-- | The number of cache nodes in the source cache cluster.+sNumCacheNodes :: Lens' Snapshot (Maybe Int)+sNumCacheNodes = lens _sNumCacheNodes (\s a -> s { _sNumCacheNodes = a })++-- | The port number used by each cache nodes in the source cache cluster.+sPort :: Lens' Snapshot (Maybe Int)+sPort = lens _sPort (\s a -> s { _sPort = a })++-- | The name of the Availability Zone in which the source cache cluster is+-- located.+sPreferredAvailabilityZone :: Lens' Snapshot (Maybe Text)+sPreferredAvailabilityZone =+    lens _sPreferredAvailabilityZone+        (\s a -> s { _sPreferredAvailabilityZone = a })++-- | The time range (in UTC) during which weekly system maintenance can occur+-- on the source cache cluster.+sPreferredMaintenanceWindow :: Lens' Snapshot (Maybe Text)+sPreferredMaintenanceWindow =+    lens _sPreferredMaintenanceWindow+        (\s a -> s { _sPreferredMaintenanceWindow = a })++-- | The name of a snapshot. For an automatic snapshot, the name is+-- system-generated; for a manual snapshot, this is the user-provided name.+sSnapshotName :: Lens' Snapshot (Maybe Text)+sSnapshotName = lens _sSnapshotName (\s a -> s { _sSnapshotName = a })++-- | For an automatic snapshot, the number of days for which ElastiCache will+-- retain the snapshot before deleting it. For manual snapshots, this field+-- reflects the SnapshotRetentionLimit for the source cache cluster when the+-- snapshot was created. This field is otherwise ignored: Manual snapshots+-- do not expire, and can only be deleted using the DeleteSnapshot action.+-- ImportantIf the value of SnapshotRetentionLimit is set to zero (0),+-- backups are turned off.+sSnapshotRetentionLimit :: Lens' Snapshot (Maybe Int)+sSnapshotRetentionLimit =+    lens _sSnapshotRetentionLimit (\s a -> s { _sSnapshotRetentionLimit = a })++-- | Indicates whether the snapshot is from an automatic backup (automated) or+-- was created manually (manual).+sSnapshotSource :: Lens' Snapshot (Maybe Text)+sSnapshotSource = lens _sSnapshotSource (\s a -> s { _sSnapshotSource = a })++-- | The status of the snapshot. Valid values: creating | available |+-- restoring | copying | deleting.+sSnapshotStatus :: Lens' Snapshot (Maybe Text)+sSnapshotStatus = lens _sSnapshotStatus (\s a -> s { _sSnapshotStatus = a })++-- | The daily time range during which ElastiCache takes daily snapshots of+-- the source cache cluster.+sSnapshotWindow :: Lens' Snapshot (Maybe Text)+sSnapshotWindow = lens _sSnapshotWindow (\s a -> s { _sSnapshotWindow = a })++-- | The Amazon Resource Name (ARN) for the topic used by the source cache+-- cluster for publishing notifications.+sTopicArn :: Lens' Snapshot (Maybe Text)+sTopicArn = lens _sTopicArn (\s a -> s { _sTopicArn = a })++-- | The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet+-- group for the source cache cluster.+sVpcId :: Lens' Snapshot (Maybe Text)+sVpcId = lens _sVpcId (\s a -> s { _sVpcId = a })++instance FromXML Snapshot where+    parseXML x = Snapshot+        <$> x .@? "AutoMinorVersionUpgrade"+        <*> x .@? "CacheClusterCreateTime"+        <*> x .@? "CacheClusterId"+        <*> x .@? "CacheNodeType"+        <*> x .@? "CacheParameterGroupName"+        <*> x .@? "CacheSubnetGroupName"+        <*> x .@? "Engine"+        <*> x .@? "EngineVersion"+        <*> x .@  "NodeSnapshots"+        <*> x .@? "NumCacheNodes"+        <*> x .@? "Port"+        <*> x .@? "PreferredAvailabilityZone"+        <*> x .@? "PreferredMaintenanceWindow"+        <*> x .@? "SnapshotName"+        <*> x .@? "SnapshotRetentionLimit"+        <*> x .@? "SnapshotSource"+        <*> x .@? "SnapshotStatus"+        <*> x .@? "SnapshotWindow"+        <*> x .@? "TopicArn"+        <*> x .@? "VpcId"++instance ToQuery Snapshot where+    toQuery Snapshot{..} = mconcat+        [ "AutoMinorVersionUpgrade"    =? _sAutoMinorVersionUpgrade+        , "CacheClusterCreateTime"     =? _sCacheClusterCreateTime+        , "CacheClusterId"             =? _sCacheClusterId+        , "CacheNodeType"              =? _sCacheNodeType+        , "CacheParameterGroupName"    =? _sCacheParameterGroupName+        , "CacheSubnetGroupName"       =? _sCacheSubnetGroupName+        , "Engine"                     =? _sEngine+        , "EngineVersion"              =? _sEngineVersion+        , "NodeSnapshots"              =? _sNodeSnapshots+        , "NumCacheNodes"              =? _sNumCacheNodes+        , "Port"                       =? _sPort+        , "PreferredAvailabilityZone"  =? _sPreferredAvailabilityZone+        , "PreferredMaintenanceWindow" =? _sPreferredMaintenanceWindow+        , "SnapshotName"               =? _sSnapshotName+        , "SnapshotRetentionLimit"     =? _sSnapshotRetentionLimit+        , "SnapshotSource"             =? _sSnapshotSource+        , "SnapshotStatus"             =? _sSnapshotStatus+        , "SnapshotWindow"             =? _sSnapshotWindow+        , "TopicArn"                   =? _sTopicArn+        , "VpcId"                      =? _sVpcId+        ]++data Event = Event+    { _eDate             :: Maybe RFC822+    , _eMessage          :: Maybe Text+    , _eSourceIdentifier :: Maybe Text+    , _eSourceType       :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'Event' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'eDate' @::@ 'Maybe' 'UTCTime'+--+-- * 'eMessage' @::@ 'Maybe' 'Text'+--+-- * 'eSourceIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'eSourceType' @::@ 'Maybe' 'Text'+--+event :: Event+event = Event+    { _eSourceIdentifier = Nothing+    , _eSourceType       = Nothing+    , _eMessage          = Nothing+    , _eDate             = Nothing+    }++-- | The date and time when the event occurred.+eDate :: Lens' Event (Maybe UTCTime)+eDate = lens _eDate (\s a -> s { _eDate = a }) . mapping _Time++-- | The text of the event.+eMessage :: Lens' Event (Maybe Text)+eMessage = lens _eMessage (\s a -> s { _eMessage = a })++-- | The identifier for the source of the event. For example, if the event+-- occurred at the cache cluster level, the identifier would be the name of+-- the cache cluster.+eSourceIdentifier :: Lens' Event (Maybe Text)+eSourceIdentifier =+    lens _eSourceIdentifier (\s a -> s { _eSourceIdentifier = a })++-- | Specifies the origin of this event - a cache cluster, a parameter group,+-- a security group, etc.+eSourceType :: Lens' Event (Maybe Text)+eSourceType = lens _eSourceType (\s a -> s { _eSourceType = a })++instance FromXML Event where+    parseXML x = Event+        <$> x .@? "Date"+        <*> x .@? "Message"+        <*> x .@? "SourceIdentifier"+        <*> x .@? "SourceType"++instance ToQuery Event where+    toQuery Event{..} = mconcat+        [ "Date"             =? _eDate+        , "Message"          =? _eMessage+        , "SourceIdentifier" =? _eSourceIdentifier+        , "SourceType"       =? _eSourceType+        ]++data NodeGroup = NodeGroup+    { _ngNodeGroupId      :: Maybe Text+    , _ngNodeGroupMembers :: List "NodeGroupMember" NodeGroupMember+    , _ngPrimaryEndpoint  :: Maybe Endpoint+    , _ngStatus           :: Maybe Text+    } deriving (Eq, Show)++-- | 'NodeGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ngNodeGroupId' @::@ 'Maybe' 'Text'+--+-- * 'ngNodeGroupMembers' @::@ ['NodeGroupMember']+--+-- * 'ngPrimaryEndpoint' @::@ 'Maybe' 'Endpoint'+--+-- * 'ngStatus' @::@ 'Maybe' 'Text'+--+nodeGroup :: NodeGroup+nodeGroup = NodeGroup+    { _ngNodeGroupId      = Nothing+    , _ngStatus           = Nothing+    , _ngPrimaryEndpoint  = Nothing+    , _ngNodeGroupMembers = mempty+    }++-- | The identifier for the node group. A replication group contains only one+-- node group; therefore, the node group ID is 0001.+ngNodeGroupId :: Lens' NodeGroup (Maybe Text)+ngNodeGroupId = lens _ngNodeGroupId (\s a -> s { _ngNodeGroupId = a })++-- | A list containing information about individual nodes within the node+-- group.+ngNodeGroupMembers :: Lens' NodeGroup [NodeGroupMember]+ngNodeGroupMembers =+    lens _ngNodeGroupMembers (\s a -> s { _ngNodeGroupMembers = a })+        . _List++ngPrimaryEndpoint :: Lens' NodeGroup (Maybe Endpoint)+ngPrimaryEndpoint =+    lens _ngPrimaryEndpoint (\s a -> s { _ngPrimaryEndpoint = a })++-- | The current state of this replication group - creating, available, etc.+ngStatus :: Lens' NodeGroup (Maybe Text)+ngStatus = lens _ngStatus (\s a -> s { _ngStatus = a })++instance FromXML NodeGroup where+    parseXML x = NodeGroup+        <$> x .@? "NodeGroupId"+        <*> x .@  "NodeGroupMembers"+        <*> x .@? "PrimaryEndpoint"+        <*> x .@? "Status"++instance ToQuery NodeGroup where+    toQuery NodeGroup{..} = mconcat+        [ "NodeGroupId"      =? _ngNodeGroupId+        , "NodeGroupMembers" =? _ngNodeGroupMembers+        , "PrimaryEndpoint"  =? _ngPrimaryEndpoint+        , "Status"           =? _ngStatus+        ]++data CacheNodeTypeSpecificValue = CacheNodeTypeSpecificValue+    { _cntsvCacheNodeType :: Maybe Text+    , _cntsvValue         :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'CacheNodeTypeSpecificValue' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cntsvCacheNodeType' @::@ 'Maybe' 'Text'+--+-- * 'cntsvValue' @::@ 'Maybe' 'Text'+--+cacheNodeTypeSpecificValue :: CacheNodeTypeSpecificValue+cacheNodeTypeSpecificValue = CacheNodeTypeSpecificValue+    { _cntsvCacheNodeType = Nothing+    , _cntsvValue         = Nothing+    }++-- | The cache node type for which this value applies.+cntsvCacheNodeType :: Lens' CacheNodeTypeSpecificValue (Maybe Text)+cntsvCacheNodeType =+    lens _cntsvCacheNodeType (\s a -> s { _cntsvCacheNodeType = a })++-- | The value for the cache node type.+cntsvValue :: Lens' CacheNodeTypeSpecificValue (Maybe Text)+cntsvValue = lens _cntsvValue (\s a -> s { _cntsvValue = a })++instance FromXML CacheNodeTypeSpecificValue where+    parseXML x = CacheNodeTypeSpecificValue+        <$> x .@? "CacheNodeType"+        <*> x .@? "Value"++instance ToQuery CacheNodeTypeSpecificValue where+    toQuery CacheNodeTypeSpecificValue{..} = mconcat+        [ "CacheNodeType" =? _cntsvCacheNodeType+        , "Value"         =? _cntsvValue+        ]++data PendingAutomaticFailoverStatus+    = Disabled -- ^ disabled+    | Enabled  -- ^ enabled+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable PendingAutomaticFailoverStatus++instance FromText PendingAutomaticFailoverStatus where+    parser = match "disabled" Disabled+         <|> match "enabled"  Enabled++instance ToText PendingAutomaticFailoverStatus where+    toText = \case+        Disabled -> "disabled"+        Enabled  -> "enabled"++instance FromXML PendingAutomaticFailoverStatus where+    parseXML = parseXMLText "PendingAutomaticFailoverStatus"++instance ToQuery PendingAutomaticFailoverStatus where+    toQuery = toQuery . toText++data NotificationConfiguration = NotificationConfiguration+    { _ncTopicArn    :: Maybe Text+    , _ncTopicStatus :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'NotificationConfiguration' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ncTopicArn' @::@ 'Maybe' 'Text'+--+-- * 'ncTopicStatus' @::@ 'Maybe' 'Text'+--+notificationConfiguration :: NotificationConfiguration+notificationConfiguration = NotificationConfiguration+    { _ncTopicArn    = Nothing+    , _ncTopicStatus = Nothing+    }++-- | The Amazon Resource Name (ARN) that identifies the topic.+ncTopicArn :: Lens' NotificationConfiguration (Maybe Text)+ncTopicArn = lens _ncTopicArn (\s a -> s { _ncTopicArn = a })++-- | The current state of the topic.+ncTopicStatus :: Lens' NotificationConfiguration (Maybe Text)+ncTopicStatus = lens _ncTopicStatus (\s a -> s { _ncTopicStatus = a })++instance FromXML NotificationConfiguration where+    parseXML x = NotificationConfiguration+        <$> x .@? "TopicArn"+        <*> x .@? "TopicStatus"++instance ToQuery NotificationConfiguration where+    toQuery NotificationConfiguration{..} = mconcat+        [ "TopicArn"    =? _ncTopicArn+        , "TopicStatus" =? _ncTopicStatus+        ]++data ReplicationGroupPendingModifiedValues = ReplicationGroupPendingModifiedValues+    { _rgpmvAutomaticFailoverStatus :: Maybe Text+    , _rgpmvPrimaryClusterId        :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ReplicationGroupPendingModifiedValues' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rgpmvAutomaticFailoverStatus' @::@ 'Maybe' 'Text'+--+-- * 'rgpmvPrimaryClusterId' @::@ 'Maybe' 'Text'+--+replicationGroupPendingModifiedValues :: ReplicationGroupPendingModifiedValues+replicationGroupPendingModifiedValues = ReplicationGroupPendingModifiedValues+    { _rgpmvPrimaryClusterId        = Nothing+    , _rgpmvAutomaticFailoverStatus = Nothing+    }++-- | Indicates the status of automatic failover for this replication group.+rgpmvAutomaticFailoverStatus :: Lens' ReplicationGroupPendingModifiedValues (Maybe Text)+rgpmvAutomaticFailoverStatus =+    lens _rgpmvAutomaticFailoverStatus+        (\s a -> s { _rgpmvAutomaticFailoverStatus = a })++-- | The primary cluster ID which will be applied immediately (if+-- --apply-immediately was specified), or during the next maintenance+-- window.+rgpmvPrimaryClusterId :: Lens' ReplicationGroupPendingModifiedValues (Maybe Text)+rgpmvPrimaryClusterId =+    lens _rgpmvPrimaryClusterId (\s a -> s { _rgpmvPrimaryClusterId = a })++instance FromXML ReplicationGroupPendingModifiedValues where+    parseXML x = ReplicationGroupPendingModifiedValues+        <$> x .@? "AutomaticFailoverStatus"+        <*> x .@? "PrimaryClusterId"++instance ToQuery ReplicationGroupPendingModifiedValues where+    toQuery ReplicationGroupPendingModifiedValues{..} = mconcat+        [ "AutomaticFailoverStatus" =? _rgpmvAutomaticFailoverStatus+        , "PrimaryClusterId"        =? _rgpmvPrimaryClusterId+        ]++data EC2SecurityGroup = EC2SecurityGroup+    { _ecsgEC2SecurityGroupName    :: Maybe Text+    , _ecsgEC2SecurityGroupOwnerId :: Maybe Text+    , _ecsgStatus                  :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'EC2SecurityGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ecsgEC2SecurityGroupName' @::@ 'Maybe' 'Text'+--+-- * 'ecsgEC2SecurityGroupOwnerId' @::@ 'Maybe' 'Text'+--+-- * 'ecsgStatus' @::@ 'Maybe' 'Text'+--+ec2SecurityGroup :: EC2SecurityGroup+ec2SecurityGroup = EC2SecurityGroup+    { _ecsgStatus                  = Nothing+    , _ecsgEC2SecurityGroupName    = Nothing+    , _ecsgEC2SecurityGroupOwnerId = Nothing+    }++-- | The name of the Amazon EC2 security group.+ecsgEC2SecurityGroupName :: Lens' EC2SecurityGroup (Maybe Text)+ecsgEC2SecurityGroupName =+    lens _ecsgEC2SecurityGroupName+        (\s a -> s { _ecsgEC2SecurityGroupName = a })++-- | The AWS account ID of the Amazon EC2 security group owner.+ecsgEC2SecurityGroupOwnerId :: Lens' EC2SecurityGroup (Maybe Text)+ecsgEC2SecurityGroupOwnerId =+    lens _ecsgEC2SecurityGroupOwnerId+        (\s a -> s { _ecsgEC2SecurityGroupOwnerId = a })++-- | The status of the Amazon EC2 security group.+ecsgStatus :: Lens' EC2SecurityGroup (Maybe Text)+ecsgStatus = lens _ecsgStatus (\s a -> s { _ecsgStatus = a })++instance FromXML EC2SecurityGroup where+    parseXML x = EC2SecurityGroup+        <$> x .@? "EC2SecurityGroupName"+        <*> x .@? "EC2SecurityGroupOwnerId"+        <*> x .@? "Status"++instance ToQuery EC2SecurityGroup where+    toQuery EC2SecurityGroup{..} = mconcat+        [ "EC2SecurityGroupName"    =? _ecsgEC2SecurityGroupName+        , "EC2SecurityGroupOwnerId" =? _ecsgEC2SecurityGroupOwnerId+        , "Status"                  =? _ecsgStatus+        ]++data ParameterNameValue = ParameterNameValue+    { _pnvParameterName  :: Maybe Text+    , _pnvParameterValue :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ParameterNameValue' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pnvParameterName' @::@ 'Maybe' 'Text'+--+-- * 'pnvParameterValue' @::@ 'Maybe' 'Text'+--+parameterNameValue :: ParameterNameValue+parameterNameValue = ParameterNameValue+    { _pnvParameterName  = Nothing+    , _pnvParameterValue = Nothing+    }++-- | The name of the parameter.+pnvParameterName :: Lens' ParameterNameValue (Maybe Text)+pnvParameterName = lens _pnvParameterName (\s a -> s { _pnvParameterName = a })++-- | The value of the parameter.+pnvParameterValue :: Lens' ParameterNameValue (Maybe Text)+pnvParameterValue =+    lens _pnvParameterValue (\s a -> s { _pnvParameterValue = a })++instance FromXML ParameterNameValue where+    parseXML x = ParameterNameValue+        <$> x .@? "ParameterName"+        <*> x .@? "ParameterValue"++instance ToQuery ParameterNameValue where+    toQuery ParameterNameValue{..} = mconcat+        [ "ParameterName"  =? _pnvParameterName+        , "ParameterValue" =? _pnvParameterValue+        ]++data SourceType+    = STCacheCluster        -- ^ cache-cluster+    | STCacheParameterGroup -- ^ cache-parameter-group+    | STCacheSecurityGroup  -- ^ cache-security-group+    | STCacheSubnetGroup    -- ^ cache-subnet-group+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable SourceType++instance FromText SourceType where+    parser = match "cache-cluster"         STCacheCluster+         <|> match "cache-parameter-group" STCacheParameterGroup+         <|> match "cache-security-group"  STCacheSecurityGroup+         <|> match "cache-subnet-group"    STCacheSubnetGroup++instance ToText SourceType where+    toText = \case+        STCacheCluster        -> "cache-cluster"+        STCacheParameterGroup -> "cache-parameter-group"+        STCacheSecurityGroup  -> "cache-security-group"+        STCacheSubnetGroup    -> "cache-subnet-group"++instance FromXML SourceType where+    parseXML = parseXMLText "SourceType"++instance ToQuery SourceType where+    toQuery = toQuery . toText++data CacheSubnetGroup = CacheSubnetGroup+    { _csgCacheSubnetGroupDescription :: Maybe Text+    , _csgCacheSubnetGroupName        :: Maybe Text+    , _csgSubnets                     :: List "Subnet" Subnet+    , _csgVpcId                       :: Maybe Text+    } deriving (Eq, Show)++-- | 'CacheSubnetGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csgCacheSubnetGroupDescription' @::@ 'Maybe' 'Text'+--+-- * 'csgCacheSubnetGroupName' @::@ 'Maybe' 'Text'+--+-- * 'csgSubnets' @::@ ['Subnet']+--+-- * 'csgVpcId' @::@ 'Maybe' 'Text'+--+cacheSubnetGroup :: CacheSubnetGroup+cacheSubnetGroup = CacheSubnetGroup+    { _csgCacheSubnetGroupName        = Nothing+    , _csgCacheSubnetGroupDescription = Nothing+    , _csgVpcId                       = Nothing+    , _csgSubnets                     = mempty+    }++-- | The description of the cache subnet group.+csgCacheSubnetGroupDescription :: Lens' CacheSubnetGroup (Maybe Text)+csgCacheSubnetGroupDescription =+    lens _csgCacheSubnetGroupDescription+        (\s a -> s { _csgCacheSubnetGroupDescription = a })++-- | The name of the cache subnet group.+csgCacheSubnetGroupName :: Lens' CacheSubnetGroup (Maybe Text)+csgCacheSubnetGroupName =+    lens _csgCacheSubnetGroupName (\s a -> s { _csgCacheSubnetGroupName = a })++-- | A list of subnets associated with the cache subnet group.+csgSubnets :: Lens' CacheSubnetGroup [Subnet]+csgSubnets = lens _csgSubnets (\s a -> s { _csgSubnets = a }) . _List++-- | The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet+-- group.+csgVpcId :: Lens' CacheSubnetGroup (Maybe Text)+csgVpcId = lens _csgVpcId (\s a -> s { _csgVpcId = a })++instance FromXML CacheSubnetGroup where+    parseXML x = CacheSubnetGroup+        <$> x .@? "CacheSubnetGroupDescription"+        <*> x .@? "CacheSubnetGroupName"+        <*> x .@  "Subnets"+        <*> x .@? "VpcId"++instance ToQuery CacheSubnetGroup where+    toQuery CacheSubnetGroup{..} = mconcat+        [ "CacheSubnetGroupDescription" =? _csgCacheSubnetGroupDescription+        , "CacheSubnetGroupName"        =? _csgCacheSubnetGroupName+        , "Subnets"                     =? _csgSubnets+        , "VpcId"                       =? _csgVpcId+        ]++data ReservedCacheNode = ReservedCacheNode+    { _rcnCacheNodeCount               :: Maybe Int+    , _rcnCacheNodeType                :: Maybe Text+    , _rcnDuration                     :: Maybe Int+    , _rcnFixedPrice                   :: Maybe Double+    , _rcnOfferingType                 :: Maybe Text+    , _rcnProductDescription           :: Maybe Text+    , _rcnRecurringCharges             :: List "RecurringCharge" RecurringCharge+    , _rcnReservedCacheNodeId          :: Maybe Text+    , _rcnReservedCacheNodesOfferingId :: Maybe Text+    , _rcnStartTime                    :: Maybe RFC822+    , _rcnState                        :: Maybe Text+    , _rcnUsagePrice                   :: Maybe Double+    } deriving (Eq, Show)++-- | 'ReservedCacheNode' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcnCacheNodeCount' @::@ 'Maybe' 'Int'+--+-- * 'rcnCacheNodeType' @::@ 'Maybe' 'Text'+--+-- * 'rcnDuration' @::@ 'Maybe' 'Int'+--+-- * 'rcnFixedPrice' @::@ 'Maybe' 'Double'+--+-- * 'rcnOfferingType' @::@ 'Maybe' 'Text'+--+-- * 'rcnProductDescription' @::@ 'Maybe' 'Text'+--+-- * 'rcnRecurringCharges' @::@ ['RecurringCharge']+--+-- * 'rcnReservedCacheNodeId' @::@ 'Maybe' 'Text'+--+-- * 'rcnReservedCacheNodesOfferingId' @::@ 'Maybe' 'Text'+--+-- * 'rcnStartTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'rcnState' @::@ 'Maybe' 'Text'+--+-- * 'rcnUsagePrice' @::@ 'Maybe' 'Double'+--+reservedCacheNode :: ReservedCacheNode+reservedCacheNode = ReservedCacheNode+    { _rcnReservedCacheNodeId          = Nothing+    , _rcnReservedCacheNodesOfferingId = Nothing+    , _rcnCacheNodeType                = Nothing+    , _rcnStartTime                    = Nothing+    , _rcnDuration                     = Nothing+    , _rcnFixedPrice                   = Nothing+    , _rcnUsagePrice                   = Nothing+    , _rcnCacheNodeCount               = Nothing+    , _rcnProductDescription           = Nothing+    , _rcnOfferingType                 = Nothing+    , _rcnState                        = Nothing+    , _rcnRecurringCharges             = mempty+    }++-- | The number of cache nodes that have been reserved.+rcnCacheNodeCount :: Lens' ReservedCacheNode (Maybe Int)+rcnCacheNodeCount =+    lens _rcnCacheNodeCount (\s a -> s { _rcnCacheNodeCount = a })++-- | The cache node type for the reserved cache nodes.+rcnCacheNodeType :: Lens' ReservedCacheNode (Maybe Text)+rcnCacheNodeType = lens _rcnCacheNodeType (\s a -> s { _rcnCacheNodeType = a })++-- | The duration of the reservation in seconds.+rcnDuration :: Lens' ReservedCacheNode (Maybe Int)+rcnDuration = lens _rcnDuration (\s a -> s { _rcnDuration = a })++-- | The fixed price charged for this reserved cache node.+rcnFixedPrice :: Lens' ReservedCacheNode (Maybe Double)+rcnFixedPrice = lens _rcnFixedPrice (\s a -> s { _rcnFixedPrice = a })++-- | The offering type of this reserved cache node.+rcnOfferingType :: Lens' ReservedCacheNode (Maybe Text)+rcnOfferingType = lens _rcnOfferingType (\s a -> s { _rcnOfferingType = a })++-- | The description of the reserved cache node.+rcnProductDescription :: Lens' ReservedCacheNode (Maybe Text)+rcnProductDescription =+    lens _rcnProductDescription (\s a -> s { _rcnProductDescription = a })++-- | The recurring price charged to run this reserved cache node.+rcnRecurringCharges :: Lens' ReservedCacheNode [RecurringCharge]+rcnRecurringCharges =+    lens _rcnRecurringCharges (\s a -> s { _rcnRecurringCharges = a })+        . _List++-- | The unique identifier for the reservation.+rcnReservedCacheNodeId :: Lens' ReservedCacheNode (Maybe Text)+rcnReservedCacheNodeId =+    lens _rcnReservedCacheNodeId (\s a -> s { _rcnReservedCacheNodeId = a })++-- | The offering identifier.+rcnReservedCacheNodesOfferingId :: Lens' ReservedCacheNode (Maybe Text)+rcnReservedCacheNodesOfferingId =+    lens _rcnReservedCacheNodesOfferingId+        (\s a -> s { _rcnReservedCacheNodesOfferingId = a })++-- | The time the reservation started.+rcnStartTime :: Lens' ReservedCacheNode (Maybe UTCTime)+rcnStartTime = lens _rcnStartTime (\s a -> s { _rcnStartTime = a }) . mapping _Time++-- | The state of the reserved cache node.+rcnState :: Lens' ReservedCacheNode (Maybe Text)+rcnState = lens _rcnState (\s a -> s { _rcnState = a })++-- | The hourly price charged for this reserved cache node.+rcnUsagePrice :: Lens' ReservedCacheNode (Maybe Double)+rcnUsagePrice = lens _rcnUsagePrice (\s a -> s { _rcnUsagePrice = a })++instance FromXML ReservedCacheNode where+    parseXML x = ReservedCacheNode+        <$> x .@? "CacheNodeCount"+        <*> x .@? "CacheNodeType"+        <*> x .@? "Duration"+        <*> x .@? "FixedPrice"+        <*> x .@? "OfferingType"+        <*> x .@? "ProductDescription"+        <*> x .@  "RecurringCharges"+        <*> x .@? "ReservedCacheNodeId"+        <*> x .@? "ReservedCacheNodesOfferingId"+        <*> x .@? "StartTime"+        <*> x .@? "State"+        <*> x .@? "UsagePrice"++instance ToQuery ReservedCacheNode where+    toQuery ReservedCacheNode{..} = mconcat+        [ "CacheNodeCount"               =? _rcnCacheNodeCount+        , "CacheNodeType"                =? _rcnCacheNodeType+        , "Duration"                     =? _rcnDuration+        , "FixedPrice"                   =? _rcnFixedPrice+        , "OfferingType"                 =? _rcnOfferingType+        , "ProductDescription"           =? _rcnProductDescription+        , "RecurringCharges"             =? _rcnRecurringCharges+        , "ReservedCacheNodeId"          =? _rcnReservedCacheNodeId+        , "ReservedCacheNodesOfferingId" =? _rcnReservedCacheNodesOfferingId+        , "StartTime"                    =? _rcnStartTime+        , "State"                        =? _rcnState+        , "UsagePrice"                   =? _rcnUsagePrice+        ]++data Subnet = Subnet+    { _sSubnetAvailabilityZone :: Maybe AvailabilityZone+    , _sSubnetIdentifier       :: Maybe Text+    } deriving (Eq, Show)++-- | 'Subnet' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sSubnetAvailabilityZone' @::@ 'Maybe' 'AvailabilityZone'+--+-- * 'sSubnetIdentifier' @::@ 'Maybe' 'Text'+--+subnet :: Subnet+subnet = Subnet+    { _sSubnetIdentifier       = Nothing+    , _sSubnetAvailabilityZone = Nothing+    }++-- | The Availability Zone associated with the subnet.+sSubnetAvailabilityZone :: Lens' Subnet (Maybe AvailabilityZone)+sSubnetAvailabilityZone =+    lens _sSubnetAvailabilityZone (\s a -> s { _sSubnetAvailabilityZone = a })++-- | The unique identifier for the subnet.+sSubnetIdentifier :: Lens' Subnet (Maybe Text)+sSubnetIdentifier =+    lens _sSubnetIdentifier (\s a -> s { _sSubnetIdentifier = a })++instance FromXML Subnet where+    parseXML x = Subnet+        <$> x .@? "SubnetAvailabilityZone"+        <*> x .@? "SubnetIdentifier"++instance ToQuery Subnet where+    toQuery Subnet{..} = mconcat+        [ "SubnetAvailabilityZone" =? _sSubnetAvailabilityZone+        , "SubnetIdentifier"       =? _sSubnetIdentifier+        ]++data SecurityGroupMembership = SecurityGroupMembership+    { _sgmSecurityGroupId :: Maybe Text+    , _sgmStatus          :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'SecurityGroupMembership' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sgmSecurityGroupId' @::@ 'Maybe' 'Text'+--+-- * 'sgmStatus' @::@ 'Maybe' 'Text'+--+securityGroupMembership :: SecurityGroupMembership+securityGroupMembership = SecurityGroupMembership+    { _sgmSecurityGroupId = Nothing+    , _sgmStatus          = Nothing+    }++-- | The identifier of the cache security group.+sgmSecurityGroupId :: Lens' SecurityGroupMembership (Maybe Text)+sgmSecurityGroupId =+    lens _sgmSecurityGroupId (\s a -> s { _sgmSecurityGroupId = a })++-- | The status of the cache security group membership. The status changes+-- whenever a cache security group is modified, or when the cache security+-- groups assigned to a cache cluster are modified.+sgmStatus :: Lens' SecurityGroupMembership (Maybe Text)+sgmStatus = lens _sgmStatus (\s a -> s { _sgmStatus = a })++instance FromXML SecurityGroupMembership where+    parseXML x = SecurityGroupMembership+        <$> x .@? "SecurityGroupId"+        <*> x .@? "Status"++instance ToQuery SecurityGroupMembership where+    toQuery SecurityGroupMembership{..} = mconcat+        [ "SecurityGroupId" =? _sgmSecurityGroupId+        , "Status"          =? _sgmStatus+        ]++data CacheCluster = CacheCluster+    { _ccAutoMinorVersionUpgrade    :: Maybe Bool+    , _ccCacheClusterCreateTime     :: Maybe RFC822+    , _ccCacheClusterId             :: Maybe Text+    , _ccCacheClusterStatus         :: Maybe Text+    , _ccCacheNodeType              :: Maybe Text+    , _ccCacheNodes                 :: List "CacheNode" CacheNode+    , _ccCacheParameterGroup        :: Maybe CacheParameterGroupStatus+    , _ccCacheSecurityGroups        :: List "CacheSecurityGroup" CacheSecurityGroupMembership+    , _ccCacheSubnetGroupName       :: Maybe Text+    , _ccClientDownloadLandingPage  :: Maybe Text+    , _ccConfigurationEndpoint      :: Maybe Endpoint+    , _ccEngine                     :: Maybe Text+    , _ccEngineVersion              :: Maybe Text+    , _ccNotificationConfiguration  :: Maybe NotificationConfiguration+    , _ccNumCacheNodes              :: Maybe Int+    , _ccPendingModifiedValues      :: Maybe PendingModifiedValues+    , _ccPreferredAvailabilityZone  :: Maybe Text+    , _ccPreferredMaintenanceWindow :: Maybe Text+    , _ccReplicationGroupId         :: Maybe Text+    , _ccSecurityGroups             :: List "SecurityGroups" SecurityGroupMembership+    , _ccSnapshotRetentionLimit     :: Maybe Int+    , _ccSnapshotWindow             :: Maybe Text+    } deriving (Eq, Show)++-- | 'CacheCluster' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'+--+-- * 'ccCacheClusterCreateTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'ccCacheClusterId' @::@ 'Maybe' 'Text'+--+-- * 'ccCacheClusterStatus' @::@ 'Maybe' 'Text'+--+-- * 'ccCacheNodeType' @::@ 'Maybe' 'Text'+--+-- * 'ccCacheNodes' @::@ ['CacheNode']+--+-- * 'ccCacheParameterGroup' @::@ 'Maybe' 'CacheParameterGroupStatus'+--+-- * 'ccCacheSecurityGroups' @::@ ['CacheSecurityGroupMembership']+--+-- * 'ccCacheSubnetGroupName' @::@ 'Maybe' 'Text'+--+-- * 'ccClientDownloadLandingPage' @::@ 'Maybe' 'Text'+--+-- * 'ccConfigurationEndpoint' @::@ 'Maybe' 'Endpoint'+--+-- * 'ccEngine' @::@ 'Maybe' 'Text'+--+-- * 'ccEngineVersion' @::@ 'Maybe' 'Text'+--+-- * 'ccNotificationConfiguration' @::@ 'Maybe' 'NotificationConfiguration'+--+-- * 'ccNumCacheNodes' @::@ 'Maybe' 'Int'+--+-- * 'ccPendingModifiedValues' @::@ 'Maybe' 'PendingModifiedValues'+--+-- * 'ccPreferredAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'ccPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'+--+-- * 'ccReplicationGroupId' @::@ 'Maybe' 'Text'+--+-- * 'ccSecurityGroups' @::@ ['SecurityGroupMembership']+--+-- * 'ccSnapshotRetentionLimit' @::@ 'Maybe' 'Int'+--+-- * 'ccSnapshotWindow' @::@ 'Maybe' 'Text'+--+cacheCluster :: CacheCluster+cacheCluster = CacheCluster+    { _ccCacheClusterId             = Nothing+    , _ccConfigurationEndpoint      = Nothing+    , _ccClientDownloadLandingPage  = Nothing+    , _ccCacheNodeType              = Nothing+    , _ccEngine                     = Nothing+    , _ccEngineVersion              = Nothing+    , _ccCacheClusterStatus         = Nothing+    , _ccNumCacheNodes              = Nothing+    , _ccPreferredAvailabilityZone  = Nothing+    , _ccCacheClusterCreateTime     = Nothing+    , _ccPreferredMaintenanceWindow = Nothing+    , _ccPendingModifiedValues      = Nothing+    , _ccNotificationConfiguration  = Nothing+    , _ccCacheSecurityGroups        = mempty+    , _ccCacheParameterGroup        = Nothing+    , _ccCacheSubnetGroupName       = Nothing+    , _ccCacheNodes                 = mempty+    , _ccAutoMinorVersionUpgrade    = Nothing+    , _ccSecurityGroups             = mempty+    , _ccReplicationGroupId         = Nothing+    , _ccSnapshotRetentionLimit     = Nothing+    , _ccSnapshotWindow             = Nothing+    }++-- | If true, then minor version patches are applied automatically; if false,+-- then automatic minor version patches are disabled.+ccAutoMinorVersionUpgrade :: Lens' CacheCluster (Maybe Bool)+ccAutoMinorVersionUpgrade =+    lens _ccAutoMinorVersionUpgrade+        (\s a -> s { _ccAutoMinorVersionUpgrade = a })++-- | The date and time when the cache cluster was created.+ccCacheClusterCreateTime :: Lens' CacheCluster (Maybe UTCTime)+ccCacheClusterCreateTime =+    lens _ccCacheClusterCreateTime+        (\s a -> s { _ccCacheClusterCreateTime = a })+            . mapping _Time++-- | The user-supplied identifier of the cache cluster. This identifier is a+-- unique key that identifies a cache cluster.+ccCacheClusterId :: Lens' CacheCluster (Maybe Text)+ccCacheClusterId = lens _ccCacheClusterId (\s a -> s { _ccCacheClusterId = a })++-- | The current state of this cache cluster, one of the following values:+-- available, creating, deleted, deleting, incompatible-network, modifying,+-- rebooting cache cluster nodes, restore-failed, or snapshotting.+ccCacheClusterStatus :: Lens' CacheCluster (Maybe Text)+ccCacheClusterStatus =+    lens _ccCacheClusterStatus (\s a -> s { _ccCacheClusterStatus = a })++-- | The name of the compute and memory capacity node type for the cache+-- cluster.+ccCacheNodeType :: Lens' CacheCluster (Maybe Text)+ccCacheNodeType = lens _ccCacheNodeType (\s a -> s { _ccCacheNodeType = a })++-- | A list of cache nodes that are members of the cache cluster.+ccCacheNodes :: Lens' CacheCluster [CacheNode]+ccCacheNodes = lens _ccCacheNodes (\s a -> s { _ccCacheNodes = a }) . _List++ccCacheParameterGroup :: Lens' CacheCluster (Maybe CacheParameterGroupStatus)+ccCacheParameterGroup =+    lens _ccCacheParameterGroup (\s a -> s { _ccCacheParameterGroup = a })++-- | A list of cache security group elements, composed of name and status+-- sub-elements.+ccCacheSecurityGroups :: Lens' CacheCluster [CacheSecurityGroupMembership]+ccCacheSecurityGroups =+    lens _ccCacheSecurityGroups (\s a -> s { _ccCacheSecurityGroups = a })+        . _List++-- | The name of the cache subnet group associated with the cache cluster.+ccCacheSubnetGroupName :: Lens' CacheCluster (Maybe Text)+ccCacheSubnetGroupName =+    lens _ccCacheSubnetGroupName (\s a -> s { _ccCacheSubnetGroupName = a })++-- | The URL of the web page where you can download the latest ElastiCache+-- client library.+ccClientDownloadLandingPage :: Lens' CacheCluster (Maybe Text)+ccClientDownloadLandingPage =+    lens _ccClientDownloadLandingPage+        (\s a -> s { _ccClientDownloadLandingPage = a })++ccConfigurationEndpoint :: Lens' CacheCluster (Maybe Endpoint)+ccConfigurationEndpoint =+    lens _ccConfigurationEndpoint (\s a -> s { _ccConfigurationEndpoint = a })++-- | The name of the cache engine (memcached or redis) to be used for this+-- cache cluster.+ccEngine :: Lens' CacheCluster (Maybe Text)+ccEngine = lens _ccEngine (\s a -> s { _ccEngine = a })++-- | The version of the cache engine version that is used in this cache+-- cluster.+ccEngineVersion :: Lens' CacheCluster (Maybe Text)+ccEngineVersion = lens _ccEngineVersion (\s a -> s { _ccEngineVersion = a })++ccNotificationConfiguration :: Lens' CacheCluster (Maybe NotificationConfiguration)+ccNotificationConfiguration =+    lens _ccNotificationConfiguration+        (\s a -> s { _ccNotificationConfiguration = a })++-- | The number of cache nodes in the cache cluster.+ccNumCacheNodes :: Lens' CacheCluster (Maybe Int)+ccNumCacheNodes = lens _ccNumCacheNodes (\s a -> s { _ccNumCacheNodes = a })++ccPendingModifiedValues :: Lens' CacheCluster (Maybe PendingModifiedValues)+ccPendingModifiedValues =+    lens _ccPendingModifiedValues (\s a -> s { _ccPendingModifiedValues = a })++-- | The name of the Availability Zone in which the cache cluster is located+-- or "Multiple" if the cache nodes are located in different Availability+-- Zones.+ccPreferredAvailabilityZone :: Lens' CacheCluster (Maybe Text)+ccPreferredAvailabilityZone =+    lens _ccPreferredAvailabilityZone+        (\s a -> s { _ccPreferredAvailabilityZone = a })++-- | The time range (in UTC) during which weekly system maintenance can occur.+ccPreferredMaintenanceWindow :: Lens' CacheCluster (Maybe Text)+ccPreferredMaintenanceWindow =+    lens _ccPreferredMaintenanceWindow+        (\s a -> s { _ccPreferredMaintenanceWindow = a })++-- | The replication group to which this cache cluster belongs. If this field+-- is empty, the cache cluster is not associated with any replication group.+ccReplicationGroupId :: Lens' CacheCluster (Maybe Text)+ccReplicationGroupId =+    lens _ccReplicationGroupId (\s a -> s { _ccReplicationGroupId = a })++-- | A list of VPC Security Groups associated with the cache cluster.+ccSecurityGroups :: Lens' CacheCluster [SecurityGroupMembership]+ccSecurityGroups = lens _ccSecurityGroups (\s a -> s { _ccSecurityGroups = a }) . _List++-- | The number of days for which ElastiCache will retain automatic cache+-- cluster snapshots before deleting them. For example, if you set+-- SnapshotRetentionLimit to 5, then a snapshot that was taken today will be+-- retained for 5 days before being deleted. ImportantIf the value of+-- SnapshotRetentionLimit is set to zero (0), backups are turned off.+ccSnapshotRetentionLimit :: Lens' CacheCluster (Maybe Int)+ccSnapshotRetentionLimit =+    lens _ccSnapshotRetentionLimit+        (\s a -> s { _ccSnapshotRetentionLimit = a })++-- | The daily time range (in UTC) during which ElastiCache will begin taking+-- a daily snapshot of your cache cluster. Example: 05:00-09:00.+ccSnapshotWindow :: Lens' CacheCluster (Maybe Text)+ccSnapshotWindow = lens _ccSnapshotWindow (\s a -> s { _ccSnapshotWindow = a })++instance FromXML CacheCluster where+    parseXML x = CacheCluster+        <$> x .@? "AutoMinorVersionUpgrade"+        <*> x .@? "CacheClusterCreateTime"+        <*> x .@? "CacheClusterId"+        <*> x .@? "CacheClusterStatus"+        <*> x .@? "CacheNodeType"+        <*> x .@  "CacheNodes"+        <*> x .@? "CacheParameterGroup"+        <*> x .@  "CacheSecurityGroups"+        <*> x .@? "CacheSubnetGroupName"+        <*> x .@? "ClientDownloadLandingPage"+        <*> x .@? "ConfigurationEndpoint"+        <*> x .@? "Engine"+        <*> x .@? "EngineVersion"+        <*> x .@? "NotificationConfiguration"+        <*> x .@? "NumCacheNodes"+        <*> x .@? "PendingModifiedValues"+        <*> x .@? "PreferredAvailabilityZone"+        <*> x .@? "PreferredMaintenanceWindow"+        <*> x .@? "ReplicationGroupId"+        <*> x .@  "SecurityGroups"+        <*> x .@? "SnapshotRetentionLimit"+        <*> x .@? "SnapshotWindow"++instance ToQuery CacheCluster where+    toQuery CacheCluster{..} = mconcat+        [ "AutoMinorVersionUpgrade"    =? _ccAutoMinorVersionUpgrade+        , "CacheClusterCreateTime"     =? _ccCacheClusterCreateTime+        , "CacheClusterId"             =? _ccCacheClusterId+        , "CacheClusterStatus"         =? _ccCacheClusterStatus+        , "CacheNodeType"              =? _ccCacheNodeType+        , "CacheNodes"                 =? _ccCacheNodes+        , "CacheParameterGroup"        =? _ccCacheParameterGroup+        , "CacheSecurityGroups"        =? _ccCacheSecurityGroups+        , "CacheSubnetGroupName"       =? _ccCacheSubnetGroupName+        , "ClientDownloadLandingPage"  =? _ccClientDownloadLandingPage+        , "ConfigurationEndpoint"      =? _ccConfigurationEndpoint+        , "Engine"                     =? _ccEngine+        , "EngineVersion"              =? _ccEngineVersion+        , "NotificationConfiguration"  =? _ccNotificationConfiguration+        , "NumCacheNodes"              =? _ccNumCacheNodes+        , "PendingModifiedValues"      =? _ccPendingModifiedValues+        , "PreferredAvailabilityZone"  =? _ccPreferredAvailabilityZone+        , "PreferredMaintenanceWindow" =? _ccPreferredMaintenanceWindow+        , "ReplicationGroupId"         =? _ccReplicationGroupId+        , "SecurityGroups"             =? _ccSecurityGroups+        , "SnapshotRetentionLimit"     =? _ccSnapshotRetentionLimit+        , "SnapshotWindow"             =? _ccSnapshotWindow+        ]++data EngineDefaults = EngineDefaults+    { _edCacheNodeTypeSpecificParameters :: List "CacheNodeTypeSpecificParameter" CacheNodeTypeSpecificParameter+    , _edCacheParameterGroupFamily       :: Maybe Text+    , _edMarker                          :: Maybe Text+    , _edParameters                      :: List "Parameter" Parameter+    } deriving (Eq, Show)++-- | 'EngineDefaults' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'edCacheNodeTypeSpecificParameters' @::@ ['CacheNodeTypeSpecificParameter']+--+-- * 'edCacheParameterGroupFamily' @::@ 'Maybe' 'Text'+--+-- * 'edMarker' @::@ 'Maybe' 'Text'+--+-- * 'edParameters' @::@ ['Parameter']+--+engineDefaults :: EngineDefaults+engineDefaults = EngineDefaults+    { _edCacheParameterGroupFamily       = Nothing+    , _edMarker                          = Nothing+    , _edParameters                      = mempty+    , _edCacheNodeTypeSpecificParameters = mempty+    }++-- | A list of parameters specific to a particular cache node type. Each+-- element in the list contains detailed information about one parameter.+edCacheNodeTypeSpecificParameters :: Lens' EngineDefaults [CacheNodeTypeSpecificParameter]+edCacheNodeTypeSpecificParameters =+    lens _edCacheNodeTypeSpecificParameters+        (\s a -> s { _edCacheNodeTypeSpecificParameters = a })+            . _List++-- | Specifies the name of the cache parameter group family to which the+-- engine default parameters apply.+edCacheParameterGroupFamily :: Lens' EngineDefaults (Maybe Text)+edCacheParameterGroupFamily =+    lens _edCacheParameterGroupFamily+        (\s a -> s { _edCacheParameterGroupFamily = a })++-- | Provides an identifier to allow retrieval of paginated results.+edMarker :: Lens' EngineDefaults (Maybe Text)+edMarker = lens _edMarker (\s a -> s { _edMarker = a })++-- | Contains a list of engine default parameters.+edParameters :: Lens' EngineDefaults [Parameter]+edParameters = lens _edParameters (\s a -> s { _edParameters = a }) . _List++instance FromXML EngineDefaults where+    parseXML x = EngineDefaults+        <$> x .@  "CacheNodeTypeSpecificParameters"+        <*> x .@? "CacheParameterGroupFamily"+        <*> x .@? "Marker"+        <*> x .@  "Parameters"++instance ToQuery EngineDefaults where+    toQuery EngineDefaults{..} = mconcat+        [ "CacheNodeTypeSpecificParameters" =? _edCacheNodeTypeSpecificParameters+        , "CacheParameterGroupFamily"       =? _edCacheParameterGroupFamily+        , "Marker"                          =? _edMarker+        , "Parameters"                      =? _edParameters+        ]++data CacheParameterGroupStatus = CacheParameterGroupStatus+    { _cpgsCacheNodeIdsToReboot    :: List "CacheNodeId" Text+    , _cpgsCacheParameterGroupName :: Maybe Text+    , _cpgsParameterApplyStatus    :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'CacheParameterGroupStatus' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cpgsCacheNodeIdsToReboot' @::@ ['Text']+--+-- * 'cpgsCacheParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'cpgsParameterApplyStatus' @::@ 'Maybe' 'Text'+--+cacheParameterGroupStatus :: CacheParameterGroupStatus+cacheParameterGroupStatus = CacheParameterGroupStatus+    { _cpgsCacheParameterGroupName = Nothing+    , _cpgsParameterApplyStatus    = Nothing+    , _cpgsCacheNodeIdsToReboot    = mempty+    }++-- | A list of the cache node IDs which need to be rebooted for parameter+-- changes to be applied. A node ID is a numeric identifier (0001, 0002,+-- etc.).+cpgsCacheNodeIdsToReboot :: Lens' CacheParameterGroupStatus [Text]+cpgsCacheNodeIdsToReboot =+    lens _cpgsCacheNodeIdsToReboot+        (\s a -> s { _cpgsCacheNodeIdsToReboot = a })+            . _List++-- | The name of the cache parameter group.+cpgsCacheParameterGroupName :: Lens' CacheParameterGroupStatus (Maybe Text)+cpgsCacheParameterGroupName =+    lens _cpgsCacheParameterGroupName+        (\s a -> s { _cpgsCacheParameterGroupName = a })++-- | The status of parameter updates.+cpgsParameterApplyStatus :: Lens' CacheParameterGroupStatus (Maybe Text)+cpgsParameterApplyStatus =+    lens _cpgsParameterApplyStatus+        (\s a -> s { _cpgsParameterApplyStatus = a })++instance FromXML CacheParameterGroupStatus where+    parseXML x = CacheParameterGroupStatus+        <$> x .@  "CacheNodeIdsToReboot"+        <*> x .@? "CacheParameterGroupName"+        <*> x .@? "ParameterApplyStatus"++instance ToQuery CacheParameterGroupStatus where+    toQuery CacheParameterGroupStatus{..} = mconcat+        [ "CacheNodeIdsToReboot"    =? _cpgsCacheNodeIdsToReboot+        , "CacheParameterGroupName" =? _cpgsCacheParameterGroupName+        , "ParameterApplyStatus"    =? _cpgsParameterApplyStatus+        ]++data CacheNode = CacheNode+    { _cnCacheNodeCreateTime      :: Maybe RFC822+    , _cnCacheNodeId              :: Maybe Text+    , _cnCacheNodeStatus          :: Maybe Text+    , _cnCustomerAvailabilityZone :: Maybe Text+    , _cnEndpoint                 :: Maybe Endpoint+    , _cnParameterGroupStatus     :: Maybe Text+    , _cnSourceCacheNodeId        :: Maybe Text+    } deriving (Eq, Show)++-- | 'CacheNode' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cnCacheNodeCreateTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'cnCacheNodeId' @::@ 'Maybe' 'Text'+--+-- * 'cnCacheNodeStatus' @::@ 'Maybe' 'Text'+--+-- * 'cnCustomerAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'cnEndpoint' @::@ 'Maybe' 'Endpoint'+--+-- * 'cnParameterGroupStatus' @::@ 'Maybe' 'Text'+--+-- * 'cnSourceCacheNodeId' @::@ 'Maybe' 'Text'+--+cacheNode :: CacheNode+cacheNode = CacheNode+    { _cnCacheNodeId              = Nothing+    , _cnCacheNodeStatus          = Nothing+    , _cnCacheNodeCreateTime      = Nothing+    , _cnEndpoint                 = Nothing+    , _cnParameterGroupStatus     = Nothing+    , _cnSourceCacheNodeId        = Nothing+    , _cnCustomerAvailabilityZone = Nothing+    }++-- | The date and time when the cache node was created.+cnCacheNodeCreateTime :: Lens' CacheNode (Maybe UTCTime)+cnCacheNodeCreateTime =+    lens _cnCacheNodeCreateTime (\s a -> s { _cnCacheNodeCreateTime = a })+        . mapping _Time++-- | The cache node identifier. A node ID is a numeric identifier (0001, 0002,+-- etc.). The combination of cluster ID and node ID uniquely identifies+-- every cache node used in a customer's AWS account.+cnCacheNodeId :: Lens' CacheNode (Maybe Text)+cnCacheNodeId = lens _cnCacheNodeId (\s a -> s { _cnCacheNodeId = a })++-- | The current state of this cache node.+cnCacheNodeStatus :: Lens' CacheNode (Maybe Text)+cnCacheNodeStatus =+    lens _cnCacheNodeStatus (\s a -> s { _cnCacheNodeStatus = a })++-- | The Availability Zone where this node was created and now resides.+cnCustomerAvailabilityZone :: Lens' CacheNode (Maybe Text)+cnCustomerAvailabilityZone =+    lens _cnCustomerAvailabilityZone+        (\s a -> s { _cnCustomerAvailabilityZone = a })++-- | The hostname and IP address for connecting to this cache node.+cnEndpoint :: Lens' CacheNode (Maybe Endpoint)+cnEndpoint = lens _cnEndpoint (\s a -> s { _cnEndpoint = a })++-- | The status of the parameter group applied to this cache node.+cnParameterGroupStatus :: Lens' CacheNode (Maybe Text)+cnParameterGroupStatus =+    lens _cnParameterGroupStatus (\s a -> s { _cnParameterGroupStatus = a })++-- | The ID of the primary node to which this read replica node is+-- synchronized. If this field is empty, then this node is not associated+-- with a primary cache cluster.+cnSourceCacheNodeId :: Lens' CacheNode (Maybe Text)+cnSourceCacheNodeId =+    lens _cnSourceCacheNodeId (\s a -> s { _cnSourceCacheNodeId = a })++instance FromXML CacheNode where+    parseXML x = CacheNode+        <$> x .@? "CacheNodeCreateTime"+        <*> x .@? "CacheNodeId"+        <*> x .@? "CacheNodeStatus"+        <*> x .@? "CustomerAvailabilityZone"+        <*> x .@? "Endpoint"+        <*> x .@? "ParameterGroupStatus"+        <*> x .@? "SourceCacheNodeId"++instance ToQuery CacheNode where+    toQuery CacheNode{..} = mconcat+        [ "CacheNodeCreateTime"      =? _cnCacheNodeCreateTime+        , "CacheNodeId"              =? _cnCacheNodeId+        , "CacheNodeStatus"          =? _cnCacheNodeStatus+        , "CustomerAvailabilityZone" =? _cnCustomerAvailabilityZone+        , "Endpoint"                 =? _cnEndpoint+        , "ParameterGroupStatus"     =? _cnParameterGroupStatus+        , "SourceCacheNodeId"        =? _cnSourceCacheNodeId+        ]++data CacheSecurityGroupMembership = CacheSecurityGroupMembership+    { _csgmCacheSecurityGroupName :: Maybe Text+    , _csgmStatus                 :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'CacheSecurityGroupMembership' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csgmCacheSecurityGroupName' @::@ 'Maybe' 'Text'+--+-- * 'csgmStatus' @::@ 'Maybe' 'Text'+--+cacheSecurityGroupMembership :: CacheSecurityGroupMembership+cacheSecurityGroupMembership = CacheSecurityGroupMembership+    { _csgmCacheSecurityGroupName = Nothing+    , _csgmStatus                 = Nothing+    }++-- | The name of the cache security group.+csgmCacheSecurityGroupName :: Lens' CacheSecurityGroupMembership (Maybe Text)+csgmCacheSecurityGroupName =+    lens _csgmCacheSecurityGroupName+        (\s a -> s { _csgmCacheSecurityGroupName = a })++-- | The membership status in the cache security group. The status changes+-- when a cache security group is modified, or when the cache security+-- groups assigned to a cache cluster are modified.+csgmStatus :: Lens' CacheSecurityGroupMembership (Maybe Text)+csgmStatus = lens _csgmStatus (\s a -> s { _csgmStatus = a })++instance FromXML CacheSecurityGroupMembership where+    parseXML x = CacheSecurityGroupMembership+        <$> x .@? "CacheSecurityGroupName"+        <*> x .@? "Status"++instance ToQuery CacheSecurityGroupMembership where+    toQuery CacheSecurityGroupMembership{..} = mconcat+        [ "CacheSecurityGroupName" =? _csgmCacheSecurityGroupName+        , "Status"                 =? _csgmStatus+        ]++newtype AvailabilityZone = AvailabilityZone+    { _azName :: Maybe Text+    } deriving (Eq, Ord, Show, Monoid)++-- | 'AvailabilityZone' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'azName' @::@ 'Maybe' 'Text'+--+availabilityZone :: AvailabilityZone+availabilityZone = AvailabilityZone+    { _azName = Nothing+    }++-- | The name of the Availability Zone.+azName :: Lens' AvailabilityZone (Maybe Text)+azName = lens _azName (\s a -> s { _azName = a })++instance FromXML AvailabilityZone where+    parseXML x = AvailabilityZone+        <$> x .@? "Name"++instance ToQuery AvailabilityZone where+    toQuery AvailabilityZone{..} = mconcat+        [ "Name" =? _azName+        ]++data NodeGroupMember = NodeGroupMember+    { _ngmCacheClusterId            :: Maybe Text+    , _ngmCacheNodeId               :: Maybe Text+    , _ngmCurrentRole               :: Maybe Text+    , _ngmPreferredAvailabilityZone :: Maybe Text+    , _ngmReadEndpoint              :: Maybe Endpoint+    } deriving (Eq, Show)++-- | 'NodeGroupMember' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ngmCacheClusterId' @::@ 'Maybe' 'Text'+--+-- * 'ngmCacheNodeId' @::@ 'Maybe' 'Text'+--+-- * 'ngmCurrentRole' @::@ 'Maybe' 'Text'+--+-- * 'ngmPreferredAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'ngmReadEndpoint' @::@ 'Maybe' 'Endpoint'+--+nodeGroupMember :: NodeGroupMember+nodeGroupMember = NodeGroupMember+    { _ngmCacheClusterId            = Nothing+    , _ngmCacheNodeId               = Nothing+    , _ngmReadEndpoint              = Nothing+    , _ngmPreferredAvailabilityZone = Nothing+    , _ngmCurrentRole               = Nothing+    }++-- | The ID of the cache cluster to which the node belongs.+ngmCacheClusterId :: Lens' NodeGroupMember (Maybe Text)+ngmCacheClusterId =+    lens _ngmCacheClusterId (\s a -> s { _ngmCacheClusterId = a })++-- | The ID of the node within its cache cluster. A node ID is a numeric+-- identifier (0001, 0002, etc.).+ngmCacheNodeId :: Lens' NodeGroupMember (Maybe Text)+ngmCacheNodeId = lens _ngmCacheNodeId (\s a -> s { _ngmCacheNodeId = a })++-- | The role that is currently assigned to the node - primary or replica.+ngmCurrentRole :: Lens' NodeGroupMember (Maybe Text)+ngmCurrentRole = lens _ngmCurrentRole (\s a -> s { _ngmCurrentRole = a })++-- | The name of the Availability Zone in which the node is located.+ngmPreferredAvailabilityZone :: Lens' NodeGroupMember (Maybe Text)+ngmPreferredAvailabilityZone =+    lens _ngmPreferredAvailabilityZone+        (\s a -> s { _ngmPreferredAvailabilityZone = a })++ngmReadEndpoint :: Lens' NodeGroupMember (Maybe Endpoint)+ngmReadEndpoint = lens _ngmReadEndpoint (\s a -> s { _ngmReadEndpoint = a })++instance FromXML NodeGroupMember where+    parseXML x = NodeGroupMember+        <$> x .@? "CacheClusterId"+        <*> x .@? "CacheNodeId"+        <*> x .@? "CurrentRole"+        <*> x .@? "PreferredAvailabilityZone"+        <*> x .@? "ReadEndpoint"++instance ToQuery NodeGroupMember where+    toQuery NodeGroupMember{..} = mconcat+        [ "CacheClusterId"            =? _ngmCacheClusterId+        , "CacheNodeId"               =? _ngmCacheNodeId+        , "CurrentRole"               =? _ngmCurrentRole+        , "PreferredAvailabilityZone" =? _ngmPreferredAvailabilityZone+        , "ReadEndpoint"              =? _ngmReadEndpoint+        ]++data CacheParameterGroup = CacheParameterGroup+    { _cpgCacheParameterGroupFamily :: Maybe Text+    , _cpgCacheParameterGroupName   :: Maybe Text+    , _cpgDescription               :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'CacheParameterGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cpgCacheParameterGroupFamily' @::@ 'Maybe' 'Text'+--+-- * 'cpgCacheParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'cpgDescription' @::@ 'Maybe' 'Text'+--+cacheParameterGroup :: CacheParameterGroup+cacheParameterGroup = CacheParameterGroup+    { _cpgCacheParameterGroupName   = Nothing+    , _cpgCacheParameterGroupFamily = Nothing+    , _cpgDescription               = Nothing+    }++-- | The name of the cache parameter group family that this cache parameter+-- group is compatible with.+cpgCacheParameterGroupFamily :: Lens' CacheParameterGroup (Maybe Text)+cpgCacheParameterGroupFamily =+    lens _cpgCacheParameterGroupFamily+        (\s a -> s { _cpgCacheParameterGroupFamily = a })++-- | The name of the cache parameter group.+cpgCacheParameterGroupName :: Lens' CacheParameterGroup (Maybe Text)+cpgCacheParameterGroupName =+    lens _cpgCacheParameterGroupName+        (\s a -> s { _cpgCacheParameterGroupName = a })++-- | The description for this cache parameter group.+cpgDescription :: Lens' CacheParameterGroup (Maybe Text)+cpgDescription = lens _cpgDescription (\s a -> s { _cpgDescription = a })++instance FromXML CacheParameterGroup where+    parseXML x = CacheParameterGroup+        <$> x .@? "CacheParameterGroupFamily"+        <*> x .@? "CacheParameterGroupName"+        <*> x .@? "Description"++instance ToQuery CacheParameterGroup where+    toQuery CacheParameterGroup{..} = mconcat+        [ "CacheParameterGroupFamily" =? _cpgCacheParameterGroupFamily+        , "CacheParameterGroupName"   =? _cpgCacheParameterGroupName+        , "Description"               =? _cpgDescription+        ]++data AutomaticFailoverStatus+    = AFSDisabled  -- ^ disabled+    | AFSDisabling -- ^ disabling+    | AFSEnabled   -- ^ enabled+    | AFSEnabling  -- ^ enabling+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable AutomaticFailoverStatus++instance FromText AutomaticFailoverStatus where+    parser = match "disabled"  AFSDisabled+         <|> match "disabling" AFSDisabling+         <|> match "enabled"   AFSEnabled+         <|> match "enabling"  AFSEnabling++instance ToText AutomaticFailoverStatus where+    toText = \case+        AFSDisabled  -> "disabled"+        AFSDisabling -> "disabling"+        AFSEnabled   -> "enabled"+        AFSEnabling  -> "enabling"++instance FromXML AutomaticFailoverStatus where+    parseXML = parseXMLText "AutomaticFailoverStatus"++instance ToQuery AutomaticFailoverStatus where+    toQuery = toQuery . toText++data CacheSecurityGroup = CacheSecurityGroup+    { _csgCacheSecurityGroupName :: Maybe Text+    , _csgDescription            :: Maybe Text+    , _csgEC2SecurityGroups      :: List "EC2SecurityGroup" EC2SecurityGroup+    , _csgOwnerId                :: Maybe Text+    } deriving (Eq, Show)++-- | 'CacheSecurityGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csgCacheSecurityGroupName' @::@ 'Maybe' 'Text'+--+-- * 'csgDescription' @::@ 'Maybe' 'Text'+--+-- * 'csgEC2SecurityGroups' @::@ ['EC2SecurityGroup']+--+-- * 'csgOwnerId' @::@ 'Maybe' 'Text'+--+cacheSecurityGroup :: CacheSecurityGroup+cacheSecurityGroup = CacheSecurityGroup+    { _csgOwnerId                = Nothing+    , _csgCacheSecurityGroupName = Nothing+    , _csgDescription            = Nothing+    , _csgEC2SecurityGroups      = mempty+    }++-- | The name of the cache security group.+csgCacheSecurityGroupName :: Lens' CacheSecurityGroup (Maybe Text)+csgCacheSecurityGroupName =+    lens _csgCacheSecurityGroupName+        (\s a -> s { _csgCacheSecurityGroupName = a })++-- | The description of the cache security group.+csgDescription :: Lens' CacheSecurityGroup (Maybe Text)+csgDescription = lens _csgDescription (\s a -> s { _csgDescription = a })++-- | A list of Amazon EC2 security groups that are associated with this cache+-- security group.+csgEC2SecurityGroups :: Lens' CacheSecurityGroup [EC2SecurityGroup]+csgEC2SecurityGroups =+    lens _csgEC2SecurityGroups (\s a -> s { _csgEC2SecurityGroups = a })+        . _List++-- | The AWS account ID of the cache security group owner.+csgOwnerId :: Lens' CacheSecurityGroup (Maybe Text)+csgOwnerId = lens _csgOwnerId (\s a -> s { _csgOwnerId = a })++instance FromXML CacheSecurityGroup where+    parseXML x = CacheSecurityGroup+        <$> x .@? "CacheSecurityGroupName"+        <*> x .@? "Description"+        <*> x .@  "EC2SecurityGroups"+        <*> x .@? "OwnerId"++instance ToQuery CacheSecurityGroup where+    toQuery CacheSecurityGroup{..} = mconcat+        [ "CacheSecurityGroupName" =? _csgCacheSecurityGroupName+        , "Description"            =? _csgDescription+        , "EC2SecurityGroups"      =? _csgEC2SecurityGroups+        , "OwnerId"                =? _csgOwnerId+        ]++data CacheNodeTypeSpecificParameter = CacheNodeTypeSpecificParameter+    { _cntspAllowedValues               :: Maybe Text+    , _cntspCacheNodeTypeSpecificValues :: List "CacheNodeTypeSpecificValue" CacheNodeTypeSpecificValue+    , _cntspDataType                    :: Maybe Text+    , _cntspDescription                 :: Maybe Text+    , _cntspIsModifiable                :: Maybe Bool+    , _cntspMinimumEngineVersion        :: Maybe Text+    , _cntspParameterName               :: Maybe Text+    , _cntspSource                      :: Maybe Text+    } deriving (Eq, Show)++-- | 'CacheNodeTypeSpecificParameter' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cntspAllowedValues' @::@ 'Maybe' 'Text'+--+-- * 'cntspCacheNodeTypeSpecificValues' @::@ ['CacheNodeTypeSpecificValue']+--+-- * 'cntspDataType' @::@ 'Maybe' 'Text'+--+-- * 'cntspDescription' @::@ 'Maybe' 'Text'+--+-- * 'cntspIsModifiable' @::@ 'Maybe' 'Bool'+--+-- * 'cntspMinimumEngineVersion' @::@ 'Maybe' 'Text'+--+-- * 'cntspParameterName' @::@ 'Maybe' 'Text'+--+-- * 'cntspSource' @::@ 'Maybe' 'Text'+--+cacheNodeTypeSpecificParameter :: CacheNodeTypeSpecificParameter+cacheNodeTypeSpecificParameter = CacheNodeTypeSpecificParameter+    { _cntspParameterName               = Nothing+    , _cntspDescription                 = Nothing+    , _cntspSource                      = Nothing+    , _cntspDataType                    = Nothing+    , _cntspAllowedValues               = Nothing+    , _cntspIsModifiable                = Nothing+    , _cntspMinimumEngineVersion        = Nothing+    , _cntspCacheNodeTypeSpecificValues = mempty+    }++-- | The valid range of values for the parameter.+cntspAllowedValues :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)+cntspAllowedValues =+    lens _cntspAllowedValues (\s a -> s { _cntspAllowedValues = a })++-- | A list of cache node types and their corresponding values for this+-- parameter.+cntspCacheNodeTypeSpecificValues :: Lens' CacheNodeTypeSpecificParameter [CacheNodeTypeSpecificValue]+cntspCacheNodeTypeSpecificValues =+    lens _cntspCacheNodeTypeSpecificValues+        (\s a -> s { _cntspCacheNodeTypeSpecificValues = a })+            . _List++-- | The valid data type for the parameter.+cntspDataType :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)+cntspDataType = lens _cntspDataType (\s a -> s { _cntspDataType = a })++-- | A description of the parameter.+cntspDescription :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)+cntspDescription = lens _cntspDescription (\s a -> s { _cntspDescription = a })++-- | Indicates whether (true) or not (false) the parameter can be modified.+-- Some parameters have security or operational implications that prevent+-- them from being changed.+cntspIsModifiable :: Lens' CacheNodeTypeSpecificParameter (Maybe Bool)+cntspIsModifiable =+    lens _cntspIsModifiable (\s a -> s { _cntspIsModifiable = a })++-- | The earliest cache engine version to which the parameter can apply.+cntspMinimumEngineVersion :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)+cntspMinimumEngineVersion =+    lens _cntspMinimumEngineVersion+        (\s a -> s { _cntspMinimumEngineVersion = a })++-- | The name of the parameter.+cntspParameterName :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)+cntspParameterName =+    lens _cntspParameterName (\s a -> s { _cntspParameterName = a })++-- | The source of the parameter value.+cntspSource :: Lens' CacheNodeTypeSpecificParameter (Maybe Text)+cntspSource = lens _cntspSource (\s a -> s { _cntspSource = a })++instance FromXML CacheNodeTypeSpecificParameter where+    parseXML x = CacheNodeTypeSpecificParameter+        <$> x .@? "AllowedValues"+        <*> x .@  "CacheNodeTypeSpecificValues"+        <*> x .@? "DataType"+        <*> x .@? "Description"+        <*> x .@? "IsModifiable"+        <*> x .@? "MinimumEngineVersion"+        <*> x .@? "ParameterName"+        <*> x .@? "Source"++instance ToQuery CacheNodeTypeSpecificParameter where+    toQuery CacheNodeTypeSpecificParameter{..} = mconcat+        [ "AllowedValues"               =? _cntspAllowedValues+        , "CacheNodeTypeSpecificValues" =? _cntspCacheNodeTypeSpecificValues+        , "DataType"                    =? _cntspDataType+        , "Description"                 =? _cntspDescription+        , "IsModifiable"                =? _cntspIsModifiable+        , "MinimumEngineVersion"        =? _cntspMinimumEngineVersion+        , "ParameterName"               =? _cntspParameterName+        , "Source"                      =? _cntspSource+        ]++data AZMode+    = CrossAz  -- ^ cross-az+    | SingleAz -- ^ single-az+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable AZMode++instance FromText AZMode where+    parser = match "cross-az"  CrossAz+         <|> match "single-az" SingleAz++instance ToText AZMode where+    toText = \case+        CrossAz  -> "cross-az"+        SingleAz -> "single-az"++instance FromXML AZMode where+    parseXML = parseXMLText "AZMode"++instance ToQuery AZMode where+    toQuery = toQuery . toText++data CacheEngineVersion = CacheEngineVersion+    { _cevCacheEngineDescription        :: Maybe Text+    , _cevCacheEngineVersionDescription :: Maybe Text+    , _cevCacheParameterGroupFamily     :: Maybe Text+    , _cevEngine                        :: Maybe Text+    , _cevEngineVersion                 :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'CacheEngineVersion' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cevCacheEngineDescription' @::@ 'Maybe' 'Text'+--+-- * 'cevCacheEngineVersionDescription' @::@ 'Maybe' 'Text'+--+-- * 'cevCacheParameterGroupFamily' @::@ 'Maybe' 'Text'+--+-- * 'cevEngine' @::@ 'Maybe' 'Text'+--+-- * 'cevEngineVersion' @::@ 'Maybe' 'Text'+--+cacheEngineVersion :: CacheEngineVersion+cacheEngineVersion = CacheEngineVersion+    { _cevEngine                        = Nothing+    , _cevEngineVersion                 = Nothing+    , _cevCacheParameterGroupFamily     = Nothing+    , _cevCacheEngineDescription        = Nothing+    , _cevCacheEngineVersionDescription = Nothing+    }++-- | The description of the cache engine.+cevCacheEngineDescription :: Lens' CacheEngineVersion (Maybe Text)+cevCacheEngineDescription =+    lens _cevCacheEngineDescription+        (\s a -> s { _cevCacheEngineDescription = a })++-- | The description of the cache engine version.+cevCacheEngineVersionDescription :: Lens' CacheEngineVersion (Maybe Text)+cevCacheEngineVersionDescription =+    lens _cevCacheEngineVersionDescription+        (\s a -> s { _cevCacheEngineVersionDescription = a })++-- | The name of the cache parameter group family associated with this cache+-- engine.+cevCacheParameterGroupFamily :: Lens' CacheEngineVersion (Maybe Text)+cevCacheParameterGroupFamily =+    lens _cevCacheParameterGroupFamily+        (\s a -> s { _cevCacheParameterGroupFamily = a })++-- | The name of the cache engine.+cevEngine :: Lens' CacheEngineVersion (Maybe Text)+cevEngine = lens _cevEngine (\s a -> s { _cevEngine = a })++-- | The version number of the cache engine.+cevEngineVersion :: Lens' CacheEngineVersion (Maybe Text)+cevEngineVersion = lens _cevEngineVersion (\s a -> s { _cevEngineVersion = a })++instance FromXML CacheEngineVersion where+    parseXML x = CacheEngineVersion+        <$> x .@? "CacheEngineDescription"+        <*> x .@? "CacheEngineVersionDescription"+        <*> x .@? "CacheParameterGroupFamily"+        <*> x .@? "Engine"+        <*> x .@? "EngineVersion"++instance ToQuery CacheEngineVersion where+    toQuery CacheEngineVersion{..} = mconcat+        [ "CacheEngineDescription"        =? _cevCacheEngineDescription+        , "CacheEngineVersionDescription" =? _cevCacheEngineVersionDescription+        , "CacheParameterGroupFamily"     =? _cevCacheParameterGroupFamily+        , "Engine"                        =? _cevEngine+        , "EngineVersion"                 =? _cevEngineVersion+        ]++data ReplicationGroup = ReplicationGroup+    { _rgAutomaticFailover     :: Maybe Text+    , _rgDescription           :: Maybe Text+    , _rgMemberClusters        :: List "ClusterId" Text+    , _rgNodeGroups            :: List "NodeGroup" NodeGroup+    , _rgPendingModifiedValues :: Maybe ReplicationGroupPendingModifiedValues+    , _rgReplicationGroupId    :: Maybe Text+    , _rgSnapshottingClusterId :: Maybe Text+    , _rgStatus                :: Maybe Text+    } deriving (Eq, Show)++-- | 'ReplicationGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rgAutomaticFailover' @::@ 'Maybe' 'Text'+--+-- * 'rgDescription' @::@ 'Maybe' 'Text'+--+-- * 'rgMemberClusters' @::@ ['Text']+--+-- * 'rgNodeGroups' @::@ ['NodeGroup']+--+-- * 'rgPendingModifiedValues' @::@ 'Maybe' 'ReplicationGroupPendingModifiedValues'+--+-- * 'rgReplicationGroupId' @::@ 'Maybe' 'Text'+--+-- * 'rgSnapshottingClusterId' @::@ 'Maybe' 'Text'+--+-- * 'rgStatus' @::@ 'Maybe' 'Text'+--+replicationGroup :: ReplicationGroup+replicationGroup = ReplicationGroup+    { _rgReplicationGroupId    = Nothing+    , _rgDescription           = Nothing+    , _rgStatus                = Nothing+    , _rgPendingModifiedValues = Nothing+    , _rgMemberClusters        = mempty+    , _rgNodeGroups            = mempty+    , _rgSnapshottingClusterId = Nothing+    , _rgAutomaticFailover     = Nothing+    }++-- | Indicates the status of automatic failover for this replication group.+rgAutomaticFailover :: Lens' ReplicationGroup (Maybe Text)+rgAutomaticFailover =+    lens _rgAutomaticFailover (\s a -> s { _rgAutomaticFailover = a })++-- | The description of the replication group.+rgDescription :: Lens' ReplicationGroup (Maybe Text)+rgDescription = lens _rgDescription (\s a -> s { _rgDescription = a })++-- | The names of all the cache clusters that are part of this replication+-- group.+rgMemberClusters :: Lens' ReplicationGroup [Text]+rgMemberClusters = lens _rgMemberClusters (\s a -> s { _rgMemberClusters = a }) . _List++-- | A single element list with information about the nodes in the replication+-- group.+rgNodeGroups :: Lens' ReplicationGroup [NodeGroup]+rgNodeGroups = lens _rgNodeGroups (\s a -> s { _rgNodeGroups = a }) . _List++-- | A group of settings to be applied to the replication group, either+-- immediately or during the next maintenance window.+rgPendingModifiedValues :: Lens' ReplicationGroup (Maybe ReplicationGroupPendingModifiedValues)+rgPendingModifiedValues =+    lens _rgPendingModifiedValues (\s a -> s { _rgPendingModifiedValues = a })++-- | The identifier for the replication group.+rgReplicationGroupId :: Lens' ReplicationGroup (Maybe Text)+rgReplicationGroupId =+    lens _rgReplicationGroupId (\s a -> s { _rgReplicationGroupId = a })++-- | The cache cluster ID that is used as the daily snapshot source for the+-- replication group.+rgSnapshottingClusterId :: Lens' ReplicationGroup (Maybe Text)+rgSnapshottingClusterId =+    lens _rgSnapshottingClusterId (\s a -> s { _rgSnapshottingClusterId = a })++-- | The current state of this replication group - creating, available, etc.+rgStatus :: Lens' ReplicationGroup (Maybe Text)+rgStatus = lens _rgStatus (\s a -> s { _rgStatus = a })++instance FromXML ReplicationGroup where+    parseXML x = ReplicationGroup+        <$> x .@? "AutomaticFailover"+        <*> x .@? "Description"+        <*> x .@  "MemberClusters"+        <*> x .@  "NodeGroups"+        <*> x .@? "PendingModifiedValues"+        <*> x .@? "ReplicationGroupId"+        <*> x .@? "SnapshottingClusterId"+        <*> x .@? "Status"++instance ToQuery ReplicationGroup where+    toQuery ReplicationGroup{..} = mconcat+        [ "AutomaticFailover"     =? _rgAutomaticFailover+        , "Description"           =? _rgDescription+        , "MemberClusters"        =? _rgMemberClusters+        , "NodeGroups"            =? _rgNodeGroups+        , "PendingModifiedValues" =? _rgPendingModifiedValues+        , "ReplicationGroupId"    =? _rgReplicationGroupId+        , "SnapshottingClusterId" =? _rgSnapshottingClusterId+        , "Status"                =? _rgStatus+        ]++data RecurringCharge = RecurringCharge+    { _rcRecurringChargeAmount    :: Maybe Double+    , _rcRecurringChargeFrequency :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'RecurringCharge' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcRecurringChargeAmount' @::@ 'Maybe' 'Double'+--+-- * 'rcRecurringChargeFrequency' @::@ 'Maybe' 'Text'+--+recurringCharge :: RecurringCharge+recurringCharge = RecurringCharge+    { _rcRecurringChargeAmount    = Nothing+    , _rcRecurringChargeFrequency = Nothing+    }++-- | The monetary amount of the recurring charge.+rcRecurringChargeAmount :: Lens' RecurringCharge (Maybe Double)+rcRecurringChargeAmount =+    lens _rcRecurringChargeAmount (\s a -> s { _rcRecurringChargeAmount = a })++-- | The frequency of the recurring charge.+rcRecurringChargeFrequency :: Lens' RecurringCharge (Maybe Text)+rcRecurringChargeFrequency =+    lens _rcRecurringChargeFrequency+        (\s a -> s { _rcRecurringChargeFrequency = a })++instance FromXML RecurringCharge where+    parseXML x = RecurringCharge+        <$> x .@? "RecurringChargeAmount"+        <*> x .@? "RecurringChargeFrequency"++instance ToQuery RecurringCharge where+    toQuery RecurringCharge{..} = mconcat+        [ "RecurringChargeAmount"    =? _rcRecurringChargeAmount+        , "RecurringChargeFrequency" =? _rcRecurringChargeFrequency+        ]++data ReservedCacheNodesOffering = ReservedCacheNodesOffering+    { _rcnoCacheNodeType                :: Maybe Text+    , _rcnoDuration                     :: Maybe Int+    , _rcnoFixedPrice                   :: Maybe Double+    , _rcnoOfferingType                 :: Maybe Text+    , _rcnoProductDescription           :: Maybe Text+    , _rcnoRecurringCharges             :: List "RecurringCharge" RecurringCharge+    , _rcnoReservedCacheNodesOfferingId :: Maybe Text+    , _rcnoUsagePrice                   :: Maybe Double+    } deriving (Eq, Show)++-- | 'ReservedCacheNodesOffering' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcnoCacheNodeType' @::@ 'Maybe' 'Text'+--+-- * 'rcnoDuration' @::@ 'Maybe' 'Int'+--+-- * 'rcnoFixedPrice' @::@ 'Maybe' 'Double'+--+-- * 'rcnoOfferingType' @::@ 'Maybe' 'Text'+--+-- * 'rcnoProductDescription' @::@ 'Maybe' 'Text'+--+-- * 'rcnoRecurringCharges' @::@ ['RecurringCharge']+--+-- * 'rcnoReservedCacheNodesOfferingId' @::@ 'Maybe' 'Text'+--+-- * 'rcnoUsagePrice' @::@ 'Maybe' 'Double'+--+reservedCacheNodesOffering :: ReservedCacheNodesOffering+reservedCacheNodesOffering = ReservedCacheNodesOffering+    { _rcnoReservedCacheNodesOfferingId = Nothing+    , _rcnoCacheNodeType                = Nothing+    , _rcnoDuration                     = Nothing+    , _rcnoFixedPrice                   = Nothing+    , _rcnoUsagePrice                   = Nothing+    , _rcnoProductDescription           = Nothing+    , _rcnoOfferingType                 = Nothing+    , _rcnoRecurringCharges             = mempty+    }++-- | The cache node type for the reserved cache node.+rcnoCacheNodeType :: Lens' ReservedCacheNodesOffering (Maybe Text)+rcnoCacheNodeType =+    lens _rcnoCacheNodeType (\s a -> s { _rcnoCacheNodeType = a })++-- | The duration of the offering. in seconds.+rcnoDuration :: Lens' ReservedCacheNodesOffering (Maybe Int)+rcnoDuration = lens _rcnoDuration (\s a -> s { _rcnoDuration = a })++-- | The fixed price charged for this offering.+rcnoFixedPrice :: Lens' ReservedCacheNodesOffering (Maybe Double)+rcnoFixedPrice = lens _rcnoFixedPrice (\s a -> s { _rcnoFixedPrice = a })++-- | The offering type.+rcnoOfferingType :: Lens' ReservedCacheNodesOffering (Maybe Text)+rcnoOfferingType = lens _rcnoOfferingType (\s a -> s { _rcnoOfferingType = a })++-- | The cache engine used by the offering.+rcnoProductDescription :: Lens' ReservedCacheNodesOffering (Maybe Text)+rcnoProductDescription =+    lens _rcnoProductDescription (\s a -> s { _rcnoProductDescription = a })++-- | The recurring price charged to run this reserved cache node.+rcnoRecurringCharges :: Lens' ReservedCacheNodesOffering [RecurringCharge]+rcnoRecurringCharges =+    lens _rcnoRecurringCharges (\s a -> s { _rcnoRecurringCharges = a })+        . _List++-- | A unique identifier for the reserved cache node offering.+rcnoReservedCacheNodesOfferingId :: Lens' ReservedCacheNodesOffering (Maybe Text)+rcnoReservedCacheNodesOfferingId =+    lens _rcnoReservedCacheNodesOfferingId+        (\s a -> s { _rcnoReservedCacheNodesOfferingId = a })++-- | The hourly price charged for this offering.+rcnoUsagePrice :: Lens' ReservedCacheNodesOffering (Maybe Double)+rcnoUsagePrice = lens _rcnoUsagePrice (\s a -> s { _rcnoUsagePrice = a })++instance FromXML ReservedCacheNodesOffering where+    parseXML x = ReservedCacheNodesOffering+        <$> x .@? "CacheNodeType"+        <*> x .@? "Duration"+        <*> x .@? "FixedPrice"+        <*> x .@? "OfferingType"+        <*> x .@? "ProductDescription"+        <*> x .@  "RecurringCharges"+        <*> x .@? "ReservedCacheNodesOfferingId"+        <*> x .@? "UsagePrice"++instance ToQuery ReservedCacheNodesOffering where+    toQuery ReservedCacheNodesOffering{..} = mconcat+        [ "CacheNodeType"                =? _rcnoCacheNodeType+        , "Duration"                     =? _rcnoDuration+        , "FixedPrice"                   =? _rcnoFixedPrice+        , "OfferingType"                 =? _rcnoOfferingType+        , "ProductDescription"           =? _rcnoProductDescription+        , "RecurringCharges"             =? _rcnoRecurringCharges+        , "ReservedCacheNodesOfferingId" =? _rcnoReservedCacheNodesOfferingId+        , "UsagePrice"                   =? _rcnoUsagePrice+        ]++data Endpoint = Endpoint+    { _eAddress :: Maybe Text+    , _ePort    :: Maybe Int+    } deriving (Eq, Ord, Show)++-- | 'Endpoint' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'eAddress' @::@ 'Maybe' 'Text'+--+-- * 'ePort' @::@ 'Maybe' 'Int'+--+endpoint :: Endpoint+endpoint = Endpoint+    { _eAddress = Nothing+    , _ePort    = Nothing+    }++-- | The DNS hostname of the cache node.+eAddress :: Lens' Endpoint (Maybe Text)+eAddress = lens _eAddress (\s a -> s { _eAddress = a })++-- | The port number that the cache engine is listening on.+ePort :: Lens' Endpoint (Maybe Int)+ePort = lens _ePort (\s a -> s { _ePort = a })++instance FromXML Endpoint where+    parseXML x = Endpoint+        <$> x .@? "Address"+        <*> x .@? "Port"++instance ToQuery Endpoint where+    toQuery Endpoint{..} = mconcat+        [ "Address" =? _eAddress+        , "Port"    =? _ePort+        ]++data PendingModifiedValues = PendingModifiedValues+    { _pmvCacheNodeIdsToRemove :: List "CacheNodeId" Text+    , _pmvEngineVersion        :: Maybe Text+    , _pmvNumCacheNodes        :: Maybe Int+    } deriving (Eq, Ord, Show)++-- | 'PendingModifiedValues' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pmvCacheNodeIdsToRemove' @::@ ['Text']+--+-- * 'pmvEngineVersion' @::@ 'Maybe' 'Text'+--+-- * 'pmvNumCacheNodes' @::@ 'Maybe' 'Int'+--+pendingModifiedValues :: PendingModifiedValues+pendingModifiedValues = PendingModifiedValues+    { _pmvNumCacheNodes        = Nothing+    , _pmvCacheNodeIdsToRemove = mempty+    , _pmvEngineVersion        = Nothing+    }++-- | A list of cache node IDs that are being removed (or will be removed) from+-- the cache cluster. A node ID is a numeric identifier (0001, 0002, etc.).+pmvCacheNodeIdsToRemove :: Lens' PendingModifiedValues [Text]+pmvCacheNodeIdsToRemove =+    lens _pmvCacheNodeIdsToRemove (\s a -> s { _pmvCacheNodeIdsToRemove = a })+        . _List++-- | The new cache engine version that the cache cluster will run.+pmvEngineVersion :: Lens' PendingModifiedValues (Maybe Text)+pmvEngineVersion = lens _pmvEngineVersion (\s a -> s { _pmvEngineVersion = a })++-- | The new number of cache nodes for the cache cluster.+pmvNumCacheNodes :: Lens' PendingModifiedValues (Maybe Int)+pmvNumCacheNodes = lens _pmvNumCacheNodes (\s a -> s { _pmvNumCacheNodes = a })++instance FromXML PendingModifiedValues where+    parseXML x = PendingModifiedValues+        <$> x .@  "CacheNodeIdsToRemove"+        <*> x .@? "EngineVersion"+        <*> x .@? "NumCacheNodes"++instance ToQuery PendingModifiedValues where+    toQuery PendingModifiedValues{..} = mconcat+        [ "CacheNodeIdsToRemove" =? _pmvCacheNodeIdsToRemove+        , "EngineVersion"        =? _pmvEngineVersion+        , "NumCacheNodes"        =? _pmvNumCacheNodes+        ]++newtype CacheParameterGroupNameMessage = CacheParameterGroupNameMessage+    { _cpgnmCacheParameterGroupName :: Maybe Text+    } deriving (Eq, Ord, Show, Monoid)++-- | 'CacheParameterGroupNameMessage' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cpgnmCacheParameterGroupName' @::@ 'Maybe' 'Text'+--+cacheParameterGroupNameMessage :: CacheParameterGroupNameMessage+cacheParameterGroupNameMessage = CacheParameterGroupNameMessage+    { _cpgnmCacheParameterGroupName = Nothing+    }++-- | The name of the cache parameter group.+cpgnmCacheParameterGroupName :: Lens' CacheParameterGroupNameMessage (Maybe Text)+cpgnmCacheParameterGroupName =+    lens _cpgnmCacheParameterGroupName+        (\s a -> s { _cpgnmCacheParameterGroupName = a })++instance FromXML CacheParameterGroupNameMessage where+    parseXML x = CacheParameterGroupNameMessage+        <$> x .@? "CacheParameterGroupName"++instance ToQuery CacheParameterGroupNameMessage where+    toQuery CacheParameterGroupNameMessage{..} = mconcat+        [ "CacheParameterGroupName" =? _cpgnmCacheParameterGroupName+        ]++data Parameter = Parameter+    { _pAllowedValues        :: Maybe Text+    , _pDataType             :: Maybe Text+    , _pDescription          :: Maybe Text+    , _pIsModifiable         :: Maybe Bool+    , _pMinimumEngineVersion :: Maybe Text+    , _pParameterName        :: Maybe Text+    , _pParameterValue       :: Maybe Text+    , _pSource               :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'Parameter' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pAllowedValues' @::@ 'Maybe' 'Text'+--+-- * 'pDataType' @::@ 'Maybe' 'Text'+--+-- * 'pDescription' @::@ 'Maybe' 'Text'+--+-- * 'pIsModifiable' @::@ 'Maybe' 'Bool'+--+-- * 'pMinimumEngineVersion' @::@ 'Maybe' 'Text'+--+-- * 'pParameterName' @::@ 'Maybe' 'Text'+--+-- * 'pParameterValue' @::@ 'Maybe' 'Text'+--+-- * 'pSource' @::@ 'Maybe' 'Text'+--+parameter :: Parameter+parameter = Parameter+    { _pParameterName        = Nothing+    , _pParameterValue       = Nothing+    , _pDescription          = Nothing+    , _pSource               = Nothing+    , _pDataType             = Nothing+    , _pAllowedValues        = Nothing+    , _pIsModifiable         = Nothing+    , _pMinimumEngineVersion = Nothing+    }++-- | The valid range of values for the parameter.+pAllowedValues :: Lens' Parameter (Maybe Text)+pAllowedValues = lens _pAllowedValues (\s a -> s { _pAllowedValues = a })++-- | The valid data type for the parameter.+pDataType :: Lens' Parameter (Maybe Text)+pDataType = lens _pDataType (\s a -> s { _pDataType = a })++-- | A description of the parameter.+pDescription :: Lens' Parameter (Maybe Text)+pDescription = lens _pDescription (\s a -> s { _pDescription = a })++-- | Indicates whether (true) or not (false) the parameter can be modified.+-- Some parameters have security or operational implications that prevent+-- them from being changed.+pIsModifiable :: Lens' Parameter (Maybe Bool)+pIsModifiable = lens _pIsModifiable (\s a -> s { _pIsModifiable = a })++-- | The earliest cache engine version to which the parameter can apply.+pMinimumEngineVersion :: Lens' Parameter (Maybe Text)+pMinimumEngineVersion =+    lens _pMinimumEngineVersion (\s a -> s { _pMinimumEngineVersion = a })++-- | The name of the parameter.+pParameterName :: Lens' Parameter (Maybe Text)+pParameterName = lens _pParameterName (\s a -> s { _pParameterName = a })++-- | The value of the parameter.+pParameterValue :: Lens' Parameter (Maybe Text)+pParameterValue = lens _pParameterValue (\s a -> s { _pParameterValue = a })++-- | The source of the parameter.+pSource :: Lens' Parameter (Maybe Text)+pSource = lens _pSource (\s a -> s { _pSource = a })++instance FromXML Parameter where+    parseXML x = Parameter+        <$> x .@? "AllowedValues"+        <*> x .@? "DataType"+        <*> x .@? "Description"+        <*> x .@? "IsModifiable"+        <*> x .@? "MinimumEngineVersion"+        <*> x .@? "ParameterName"+        <*> x .@? "ParameterValue"+        <*> x .@? "Source"++instance ToQuery Parameter where+    toQuery Parameter{..} = mconcat+        [ "AllowedValues"        =? _pAllowedValues+        , "DataType"             =? _pDataType+        , "Description"          =? _pDescription+        , "IsModifiable"         =? _pIsModifiable+        , "MinimumEngineVersion" =? _pMinimumEngineVersion+        , "ParameterName"        =? _pParameterName+        , "ParameterValue"       =? _pParameterValue+        , "Source"               =? _pSource+        ]