packages feed

amazonka-redshift (empty) → 0.0.0

raw patch · 62 files changed

+13322/−0 lines, 62 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 Redshift 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++Amazon Redshift is a fast, fully managed, petabyte-scale data warehouse service that makes it simple and cost-effective to efficiently analyze all your data using your existing business intelligence tools. You can start small for just $0.25 per hour with no commitments or upfront costs and scale to a petabyte or more for $1,000 per terabyte per year, less than a tenth of most other data warehousing solutions.++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-redshift)+and [AWS API Reference](http://docs.aws.amazon.com/redshift/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-redshift` 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-redshift.cabal view
@@ -0,0 +1,102 @@+name:                  amazonka-redshift+version:               0.0.0+synopsis:              Amazon Redshift 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:+    Amazon Redshift is a fast, fully managed, petabyte-scale data warehouse+    service that makes it simple and cost-effective to efficiently analyze+    all your data using your existing business intelligence tools. You can+    start small for just $0.25 per hour with no commitments or upfront+    costs and scale to a petabyte or more for $1,000 per terabyte per year,+    less than a tenth of most other data warehousing solutions.+    .+    /See:/ <http://docs.aws.amazon.com/redshift/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.Redshift+        , Network.AWS.Redshift.AuthorizeClusterSecurityGroupIngress+        , Network.AWS.Redshift.AuthorizeSnapshotAccess+        , Network.AWS.Redshift.CopyClusterSnapshot+        , Network.AWS.Redshift.CreateCluster+        , Network.AWS.Redshift.CreateClusterParameterGroup+        , Network.AWS.Redshift.CreateClusterSecurityGroup+        , Network.AWS.Redshift.CreateClusterSnapshot+        , Network.AWS.Redshift.CreateClusterSubnetGroup+        , Network.AWS.Redshift.CreateEventSubscription+        , Network.AWS.Redshift.CreateHsmClientCertificate+        , Network.AWS.Redshift.CreateHsmConfiguration+        , Network.AWS.Redshift.CreateTags+        , Network.AWS.Redshift.DeleteCluster+        , Network.AWS.Redshift.DeleteClusterParameterGroup+        , Network.AWS.Redshift.DeleteClusterSecurityGroup+        , Network.AWS.Redshift.DeleteClusterSnapshot+        , Network.AWS.Redshift.DeleteClusterSubnetGroup+        , Network.AWS.Redshift.DeleteEventSubscription+        , Network.AWS.Redshift.DeleteHsmClientCertificate+        , Network.AWS.Redshift.DeleteHsmConfiguration+        , Network.AWS.Redshift.DeleteTags+        , Network.AWS.Redshift.DescribeClusterParameterGroups+        , Network.AWS.Redshift.DescribeClusterParameters+        , Network.AWS.Redshift.DescribeClusterSecurityGroups+        , Network.AWS.Redshift.DescribeClusterSnapshots+        , Network.AWS.Redshift.DescribeClusterSubnetGroups+        , Network.AWS.Redshift.DescribeClusterVersions+        , Network.AWS.Redshift.DescribeClusters+        , Network.AWS.Redshift.DescribeDefaultClusterParameters+        , Network.AWS.Redshift.DescribeEventCategories+        , Network.AWS.Redshift.DescribeEventSubscriptions+        , Network.AWS.Redshift.DescribeEvents+        , Network.AWS.Redshift.DescribeHsmClientCertificates+        , Network.AWS.Redshift.DescribeHsmConfigurations+        , Network.AWS.Redshift.DescribeLoggingStatus+        , Network.AWS.Redshift.DescribeOrderableClusterOptions+        , Network.AWS.Redshift.DescribeReservedNodeOfferings+        , Network.AWS.Redshift.DescribeReservedNodes+        , Network.AWS.Redshift.DescribeResize+        , Network.AWS.Redshift.DescribeTags+        , Network.AWS.Redshift.DisableLogging+        , Network.AWS.Redshift.DisableSnapshotCopy+        , Network.AWS.Redshift.EnableLogging+        , Network.AWS.Redshift.EnableSnapshotCopy+        , Network.AWS.Redshift.ModifyCluster+        , Network.AWS.Redshift.ModifyClusterParameterGroup+        , Network.AWS.Redshift.ModifyClusterSubnetGroup+        , Network.AWS.Redshift.ModifyEventSubscription+        , Network.AWS.Redshift.ModifySnapshotCopyRetentionPeriod+        , Network.AWS.Redshift.PurchaseReservedNodeOffering+        , Network.AWS.Redshift.RebootCluster+        , Network.AWS.Redshift.ResetClusterParameterGroup+        , Network.AWS.Redshift.RestoreFromClusterSnapshot+        , Network.AWS.Redshift.RevokeClusterSecurityGroupIngress+        , Network.AWS.Redshift.RevokeSnapshotAccess+        , Network.AWS.Redshift.RotateEncryptionKey+        , Network.AWS.Redshift.Types++    other-modules:++    build-depends:+          amazonka-core+        , base          >= 4.7 && < 5
+ gen/Network/AWS/Redshift.hs view
@@ -0,0 +1,133 @@+-- Module      : Network.AWS.Redshift+-- 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)++-- | Amazon Redshift is a fast, fully managed, petabyte-scale data warehouse+-- service that makes it simple and cost-effective to efficiently analyze all+-- your data using your existing business intelligence tools. You can start+-- small for just $0.25 per hour with no commitments or upfront costs and+-- scale to a petabyte or more for $1,000 per terabyte per year, less than a+-- tenth of most other data warehousing solutions.+module Network.AWS.Redshift+    ( module Network.AWS.Redshift.AuthorizeClusterSecurityGroupIngress+    , module Network.AWS.Redshift.AuthorizeSnapshotAccess+    , module Network.AWS.Redshift.CopyClusterSnapshot+    , module Network.AWS.Redshift.CreateCluster+    , module Network.AWS.Redshift.CreateClusterParameterGroup+    , module Network.AWS.Redshift.CreateClusterSecurityGroup+    , module Network.AWS.Redshift.CreateClusterSnapshot+    , module Network.AWS.Redshift.CreateClusterSubnetGroup+    , module Network.AWS.Redshift.CreateEventSubscription+    , module Network.AWS.Redshift.CreateHsmClientCertificate+    , module Network.AWS.Redshift.CreateHsmConfiguration+    , module Network.AWS.Redshift.CreateTags+    , module Network.AWS.Redshift.DeleteCluster+    , module Network.AWS.Redshift.DeleteClusterParameterGroup+    , module Network.AWS.Redshift.DeleteClusterSecurityGroup+    , module Network.AWS.Redshift.DeleteClusterSnapshot+    , module Network.AWS.Redshift.DeleteClusterSubnetGroup+    , module Network.AWS.Redshift.DeleteEventSubscription+    , module Network.AWS.Redshift.DeleteHsmClientCertificate+    , module Network.AWS.Redshift.DeleteHsmConfiguration+    , module Network.AWS.Redshift.DeleteTags+    , module Network.AWS.Redshift.DescribeClusterParameterGroups+    , module Network.AWS.Redshift.DescribeClusterParameters+    , module Network.AWS.Redshift.DescribeClusterSecurityGroups+    , module Network.AWS.Redshift.DescribeClusterSnapshots+    , module Network.AWS.Redshift.DescribeClusterSubnetGroups+    , module Network.AWS.Redshift.DescribeClusterVersions+    , module Network.AWS.Redshift.DescribeClusters+    , module Network.AWS.Redshift.DescribeDefaultClusterParameters+    , module Network.AWS.Redshift.DescribeEventCategories+    , module Network.AWS.Redshift.DescribeEventSubscriptions+    , module Network.AWS.Redshift.DescribeEvents+    , module Network.AWS.Redshift.DescribeHsmClientCertificates+    , module Network.AWS.Redshift.DescribeHsmConfigurations+    , module Network.AWS.Redshift.DescribeLoggingStatus+    , module Network.AWS.Redshift.DescribeOrderableClusterOptions+    , module Network.AWS.Redshift.DescribeReservedNodeOfferings+    , module Network.AWS.Redshift.DescribeReservedNodes+    , module Network.AWS.Redshift.DescribeResize+    , module Network.AWS.Redshift.DescribeTags+    , module Network.AWS.Redshift.DisableLogging+    , module Network.AWS.Redshift.DisableSnapshotCopy+    , module Network.AWS.Redshift.EnableLogging+    , module Network.AWS.Redshift.EnableSnapshotCopy+    , module Network.AWS.Redshift.ModifyCluster+    , module Network.AWS.Redshift.ModifyClusterParameterGroup+    , module Network.AWS.Redshift.ModifyClusterSubnetGroup+    , module Network.AWS.Redshift.ModifyEventSubscription+    , module Network.AWS.Redshift.ModifySnapshotCopyRetentionPeriod+    , module Network.AWS.Redshift.PurchaseReservedNodeOffering+    , module Network.AWS.Redshift.RebootCluster+    , module Network.AWS.Redshift.ResetClusterParameterGroup+    , module Network.AWS.Redshift.RestoreFromClusterSnapshot+    , module Network.AWS.Redshift.RevokeClusterSecurityGroupIngress+    , module Network.AWS.Redshift.RevokeSnapshotAccess+    , module Network.AWS.Redshift.RotateEncryptionKey+    , module Network.AWS.Redshift.Types+    ) where++import Network.AWS.Redshift.AuthorizeClusterSecurityGroupIngress+import Network.AWS.Redshift.AuthorizeSnapshotAccess+import Network.AWS.Redshift.CopyClusterSnapshot+import Network.AWS.Redshift.CreateCluster+import Network.AWS.Redshift.CreateClusterParameterGroup+import Network.AWS.Redshift.CreateClusterSecurityGroup+import Network.AWS.Redshift.CreateClusterSnapshot+import Network.AWS.Redshift.CreateClusterSubnetGroup+import Network.AWS.Redshift.CreateEventSubscription+import Network.AWS.Redshift.CreateHsmClientCertificate+import Network.AWS.Redshift.CreateHsmConfiguration+import Network.AWS.Redshift.CreateTags+import Network.AWS.Redshift.DeleteCluster+import Network.AWS.Redshift.DeleteClusterParameterGroup+import Network.AWS.Redshift.DeleteClusterSecurityGroup+import Network.AWS.Redshift.DeleteClusterSnapshot+import Network.AWS.Redshift.DeleteClusterSubnetGroup+import Network.AWS.Redshift.DeleteEventSubscription+import Network.AWS.Redshift.DeleteHsmClientCertificate+import Network.AWS.Redshift.DeleteHsmConfiguration+import Network.AWS.Redshift.DeleteTags+import Network.AWS.Redshift.DescribeClusterParameterGroups+import Network.AWS.Redshift.DescribeClusterParameters+import Network.AWS.Redshift.DescribeClusterSecurityGroups+import Network.AWS.Redshift.DescribeClusterSnapshots+import Network.AWS.Redshift.DescribeClusterSubnetGroups+import Network.AWS.Redshift.DescribeClusterVersions+import Network.AWS.Redshift.DescribeClusters+import Network.AWS.Redshift.DescribeDefaultClusterParameters+import Network.AWS.Redshift.DescribeEventCategories+import Network.AWS.Redshift.DescribeEventSubscriptions+import Network.AWS.Redshift.DescribeEvents+import Network.AWS.Redshift.DescribeHsmClientCertificates+import Network.AWS.Redshift.DescribeHsmConfigurations+import Network.AWS.Redshift.DescribeLoggingStatus+import Network.AWS.Redshift.DescribeOrderableClusterOptions+import Network.AWS.Redshift.DescribeReservedNodeOfferings+import Network.AWS.Redshift.DescribeReservedNodes+import Network.AWS.Redshift.DescribeResize+import Network.AWS.Redshift.DescribeTags+import Network.AWS.Redshift.DisableLogging+import Network.AWS.Redshift.DisableSnapshotCopy+import Network.AWS.Redshift.EnableLogging+import Network.AWS.Redshift.EnableSnapshotCopy+import Network.AWS.Redshift.ModifyCluster+import Network.AWS.Redshift.ModifyClusterParameterGroup+import Network.AWS.Redshift.ModifyClusterSubnetGroup+import Network.AWS.Redshift.ModifyEventSubscription+import Network.AWS.Redshift.ModifySnapshotCopyRetentionPeriod+import Network.AWS.Redshift.PurchaseReservedNodeOffering+import Network.AWS.Redshift.RebootCluster+import Network.AWS.Redshift.ResetClusterParameterGroup+import Network.AWS.Redshift.RestoreFromClusterSnapshot+import Network.AWS.Redshift.RevokeClusterSecurityGroupIngress+import Network.AWS.Redshift.RevokeSnapshotAccess+import Network.AWS.Redshift.RotateEncryptionKey+import Network.AWS.Redshift.Types
+ gen/Network/AWS/Redshift/AuthorizeClusterSecurityGroupIngress.hs view
@@ -0,0 +1,156 @@+{-# 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.Redshift.AuthorizeClusterSecurityGroupIngress+-- 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)++-- | Adds an inbound (ingress) rule to an Amazon Redshift security group.+-- Depending on whether the application accessing your cluster is running on+-- the Internet or an EC2 instance, you can authorize inbound access to either+-- a Classless Interdomain Routing (CIDR) IP address range or an EC2 security+-- group. You can add as many as 20 ingress rules to an Amazon Redshift+-- security group. The EC2 security group must be defined in the AWS region+-- where the cluster resides. For an overview of CIDR blocks, see the+-- Wikipedia article on Classless Inter-Domain Routing. You must also+-- associate the security group with a cluster so that clients running on+-- these IP addresses or the EC2 instance are authorized to connect to the+-- cluster. For information about managing security groups, go to Working with+-- Security Groups in the Amazon Redshift Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_AuthorizeClusterSecurityGroupIngress.html>+module Network.AWS.Redshift.AuthorizeClusterSecurityGroupIngress+    (+    -- * Request+      AuthorizeClusterSecurityGroupIngress+    -- ** Request constructor+    , authorizeClusterSecurityGroupIngress+    -- ** Request lenses+    , acsgiCIDRIP+    , acsgiClusterSecurityGroupName+    , acsgiEC2SecurityGroupName+    , acsgiEC2SecurityGroupOwnerId++    -- * Response+    , AuthorizeClusterSecurityGroupIngressResponse+    -- ** Response constructor+    , authorizeClusterSecurityGroupIngressResponse+    -- ** Response lenses+    , acsgirClusterSecurityGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data AuthorizeClusterSecurityGroupIngress = AuthorizeClusterSecurityGroupIngress+    { _acsgiCIDRIP                   :: Maybe Text+    , _acsgiClusterSecurityGroupName :: Text+    , _acsgiEC2SecurityGroupName     :: Maybe Text+    , _acsgiEC2SecurityGroupOwnerId  :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'AuthorizeClusterSecurityGroupIngress' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'acsgiCIDRIP' @::@ 'Maybe' 'Text'+--+-- * 'acsgiClusterSecurityGroupName' @::@ 'Text'+--+-- * 'acsgiEC2SecurityGroupName' @::@ 'Maybe' 'Text'+--+-- * 'acsgiEC2SecurityGroupOwnerId' @::@ 'Maybe' 'Text'+--+authorizeClusterSecurityGroupIngress :: Text -- ^ 'acsgiClusterSecurityGroupName'+                                     -> AuthorizeClusterSecurityGroupIngress+authorizeClusterSecurityGroupIngress p1 = AuthorizeClusterSecurityGroupIngress+    { _acsgiClusterSecurityGroupName = p1+    , _acsgiCIDRIP                   = Nothing+    , _acsgiEC2SecurityGroupName     = Nothing+    , _acsgiEC2SecurityGroupOwnerId  = Nothing+    }++-- | The IP range to be added the Amazon Redshift security group.+acsgiCIDRIP :: Lens' AuthorizeClusterSecurityGroupIngress (Maybe Text)+acsgiCIDRIP = lens _acsgiCIDRIP (\s a -> s { _acsgiCIDRIP = a })++-- | The name of the security group to which the ingress rule is added.+acsgiClusterSecurityGroupName :: Lens' AuthorizeClusterSecurityGroupIngress Text+acsgiClusterSecurityGroupName =+    lens _acsgiClusterSecurityGroupName+        (\s a -> s { _acsgiClusterSecurityGroupName = a })++-- | The EC2 security group to be added the Amazon Redshift security group.+acsgiEC2SecurityGroupName :: Lens' AuthorizeClusterSecurityGroupIngress (Maybe Text)+acsgiEC2SecurityGroupName =+    lens _acsgiEC2SecurityGroupName+        (\s a -> s { _acsgiEC2SecurityGroupName = a })++-- | The AWS account number of the owner of the security group specified by+-- the EC2SecurityGroupName parameter. The AWS Access Key ID is not an+-- acceptable value. Example: 111122223333.+acsgiEC2SecurityGroupOwnerId :: Lens' AuthorizeClusterSecurityGroupIngress (Maybe Text)+acsgiEC2SecurityGroupOwnerId =+    lens _acsgiEC2SecurityGroupOwnerId+        (\s a -> s { _acsgiEC2SecurityGroupOwnerId = a })++newtype AuthorizeClusterSecurityGroupIngressResponse = AuthorizeClusterSecurityGroupIngressResponse+    { _acsgirClusterSecurityGroup :: Maybe ClusterSecurityGroup+    } deriving (Eq, Show)++-- | 'AuthorizeClusterSecurityGroupIngressResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'acsgirClusterSecurityGroup' @::@ 'Maybe' 'ClusterSecurityGroup'+--+authorizeClusterSecurityGroupIngressResponse :: AuthorizeClusterSecurityGroupIngressResponse+authorizeClusterSecurityGroupIngressResponse = AuthorizeClusterSecurityGroupIngressResponse+    { _acsgirClusterSecurityGroup = Nothing+    }++acsgirClusterSecurityGroup :: Lens' AuthorizeClusterSecurityGroupIngressResponse (Maybe ClusterSecurityGroup)+acsgirClusterSecurityGroup =+    lens _acsgirClusterSecurityGroup+        (\s a -> s { _acsgirClusterSecurityGroup = a })++instance ToPath AuthorizeClusterSecurityGroupIngress where+    toPath = const "/"++instance ToQuery AuthorizeClusterSecurityGroupIngress where+    toQuery AuthorizeClusterSecurityGroupIngress{..} = mconcat+        [ "CIDRIP"                   =? _acsgiCIDRIP+        , "ClusterSecurityGroupName" =? _acsgiClusterSecurityGroupName+        , "EC2SecurityGroupName"     =? _acsgiEC2SecurityGroupName+        , "EC2SecurityGroupOwnerId"  =? _acsgiEC2SecurityGroupOwnerId+        ]++instance ToHeaders AuthorizeClusterSecurityGroupIngress++instance AWSRequest AuthorizeClusterSecurityGroupIngress where+    type Sv AuthorizeClusterSecurityGroupIngress = Redshift+    type Rs AuthorizeClusterSecurityGroupIngress = AuthorizeClusterSecurityGroupIngressResponse++    request  = post "AuthorizeClusterSecurityGroupIngress"+    response = xmlResponse++instance FromXML AuthorizeClusterSecurityGroupIngressResponse where+    parseXML = withElement "AuthorizeClusterSecurityGroupIngressResult" $ \x -> AuthorizeClusterSecurityGroupIngressResponse+        <$> x .@? "ClusterSecurityGroup"
+ gen/Network/AWS/Redshift/AuthorizeSnapshotAccess.hs view
@@ -0,0 +1,137 @@+{-# 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.Redshift.AuthorizeSnapshotAccess+-- 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)++-- | Authorizes the specified AWS customer account to restore the specified+-- snapshot. For more information about working with snapshots, go to Amazon+-- Redshift Snapshots in the Amazon Redshift Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_AuthorizeSnapshotAccess.html>+module Network.AWS.Redshift.AuthorizeSnapshotAccess+    (+    -- * Request+      AuthorizeSnapshotAccess+    -- ** Request constructor+    , authorizeSnapshotAccess+    -- ** Request lenses+    , asaAccountWithRestoreAccess+    , asaSnapshotClusterIdentifier+    , asaSnapshotIdentifier++    -- * Response+    , AuthorizeSnapshotAccessResponse+    -- ** Response constructor+    , authorizeSnapshotAccessResponse+    -- ** Response lenses+    , asarSnapshot+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data AuthorizeSnapshotAccess = AuthorizeSnapshotAccess+    { _asaAccountWithRestoreAccess  :: Text+    , _asaSnapshotClusterIdentifier :: Maybe Text+    , _asaSnapshotIdentifier        :: Text+    } deriving (Eq, Ord, Show)++-- | 'AuthorizeSnapshotAccess' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'asaAccountWithRestoreAccess' @::@ 'Text'+--+-- * 'asaSnapshotClusterIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'asaSnapshotIdentifier' @::@ 'Text'+--+authorizeSnapshotAccess :: Text -- ^ 'asaSnapshotIdentifier'+                        -> Text -- ^ 'asaAccountWithRestoreAccess'+                        -> AuthorizeSnapshotAccess+authorizeSnapshotAccess p1 p2 = AuthorizeSnapshotAccess+    { _asaSnapshotIdentifier        = p1+    , _asaAccountWithRestoreAccess  = p2+    , _asaSnapshotClusterIdentifier = Nothing+    }++-- | The identifier of the AWS customer account authorized to restore the+-- specified snapshot.+asaAccountWithRestoreAccess :: Lens' AuthorizeSnapshotAccess Text+asaAccountWithRestoreAccess =+    lens _asaAccountWithRestoreAccess+        (\s a -> s { _asaAccountWithRestoreAccess = a })++-- | The identifier of the cluster the snapshot was created from. This+-- parameter is required if your IAM user has a policy containing a snapshot+-- resource element that specifies anything other than * for the cluster+-- name.+asaSnapshotClusterIdentifier :: Lens' AuthorizeSnapshotAccess (Maybe Text)+asaSnapshotClusterIdentifier =+    lens _asaSnapshotClusterIdentifier+        (\s a -> s { _asaSnapshotClusterIdentifier = a })++-- | The identifier of the snapshot the account is authorized to restore.+asaSnapshotIdentifier :: Lens' AuthorizeSnapshotAccess Text+asaSnapshotIdentifier =+    lens _asaSnapshotIdentifier (\s a -> s { _asaSnapshotIdentifier = a })++newtype AuthorizeSnapshotAccessResponse = AuthorizeSnapshotAccessResponse+    { _asarSnapshot :: Maybe Snapshot+    } deriving (Eq, Show)++-- | 'AuthorizeSnapshotAccessResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'asarSnapshot' @::@ 'Maybe' 'Snapshot'+--+authorizeSnapshotAccessResponse :: AuthorizeSnapshotAccessResponse+authorizeSnapshotAccessResponse = AuthorizeSnapshotAccessResponse+    { _asarSnapshot = Nothing+    }++asarSnapshot :: Lens' AuthorizeSnapshotAccessResponse (Maybe Snapshot)+asarSnapshot = lens _asarSnapshot (\s a -> s { _asarSnapshot = a })++instance ToPath AuthorizeSnapshotAccess where+    toPath = const "/"++instance ToQuery AuthorizeSnapshotAccess where+    toQuery AuthorizeSnapshotAccess{..} = mconcat+        [ "AccountWithRestoreAccess"  =? _asaAccountWithRestoreAccess+        , "SnapshotClusterIdentifier" =? _asaSnapshotClusterIdentifier+        , "SnapshotIdentifier"        =? _asaSnapshotIdentifier+        ]++instance ToHeaders AuthorizeSnapshotAccess++instance AWSRequest AuthorizeSnapshotAccess where+    type Sv AuthorizeSnapshotAccess = Redshift+    type Rs AuthorizeSnapshotAccess = AuthorizeSnapshotAccessResponse++    request  = post "AuthorizeSnapshotAccess"+    response = xmlResponse++instance FromXML AuthorizeSnapshotAccessResponse where+    parseXML = withElement "AuthorizeSnapshotAccessResult" $ \x -> AuthorizeSnapshotAccessResponse+        <$> x .@? "Snapshot"
+ gen/Network/AWS/Redshift/CopyClusterSnapshot.hs view
@@ -0,0 +1,148 @@+{-# 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.Redshift.CopyClusterSnapshot+-- 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)++-- | Copies the specified automated cluster snapshot to a new manual cluster+-- snapshot. The source must be an automated snapshot and it must be in the+-- available state. When you delete a cluster, Amazon Redshift deletes any+-- automated snapshots of the cluster. Also, when the retention period of the+-- snapshot expires, Amazon Redshift automatically deletes it. If you want to+-- keep an automated snapshot for a longer period, you can make a manual copy+-- of the snapshot. Manual snapshots are retained until you delete them. For+-- more information about working with snapshots, go to Amazon Redshift+-- Snapshots in the Amazon Redshift Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_CopyClusterSnapshot.html>+module Network.AWS.Redshift.CopyClusterSnapshot+    (+    -- * Request+      CopyClusterSnapshot+    -- ** Request constructor+    , copyClusterSnapshot+    -- ** Request lenses+    , ccsSourceSnapshotClusterIdentifier+    , ccsSourceSnapshotIdentifier+    , ccsTargetSnapshotIdentifier++    -- * Response+    , CopyClusterSnapshotResponse+    -- ** Response constructor+    , copyClusterSnapshotResponse+    -- ** Response lenses+    , ccsrSnapshot+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data CopyClusterSnapshot = CopyClusterSnapshot+    { _ccsSourceSnapshotClusterIdentifier :: Maybe Text+    , _ccsSourceSnapshotIdentifier        :: Text+    , _ccsTargetSnapshotIdentifier        :: Text+    } deriving (Eq, Ord, Show)++-- | 'CopyClusterSnapshot' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccsSourceSnapshotClusterIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'ccsSourceSnapshotIdentifier' @::@ 'Text'+--+-- * 'ccsTargetSnapshotIdentifier' @::@ 'Text'+--+copyClusterSnapshot :: Text -- ^ 'ccsSourceSnapshotIdentifier'+                    -> Text -- ^ 'ccsTargetSnapshotIdentifier'+                    -> CopyClusterSnapshot+copyClusterSnapshot p1 p2 = CopyClusterSnapshot+    { _ccsSourceSnapshotIdentifier        = p1+    , _ccsTargetSnapshotIdentifier        = p2+    , _ccsSourceSnapshotClusterIdentifier = Nothing+    }++-- | The identifier of the cluster the source snapshot was created from. This+-- parameter is required if your IAM user has a policy containing a snapshot+-- resource element that specifies anything other than * for the cluster+-- name. Constraints: Must be the identifier for a valid cluster.+ccsSourceSnapshotClusterIdentifier :: Lens' CopyClusterSnapshot (Maybe Text)+ccsSourceSnapshotClusterIdentifier =+    lens _ccsSourceSnapshotClusterIdentifier+        (\s a -> s { _ccsSourceSnapshotClusterIdentifier = a })++-- | The identifier for the source snapshot. Constraints: Must be the+-- identifier for a valid automated snapshot whose state is available.+ccsSourceSnapshotIdentifier :: Lens' CopyClusterSnapshot Text+ccsSourceSnapshotIdentifier =+    lens _ccsSourceSnapshotIdentifier+        (\s a -> s { _ccsSourceSnapshotIdentifier = a })++-- | The identifier given to the new manual snapshot. Constraints: Cannot be+-- null, empty, or blank. Must contain from 1 to 255 alphanumeric characters+-- or hyphens. First character must be a letter. Cannot end with a hyphen or+-- contain two consecutive hyphens. Must be unique for the AWS account that+-- is making the request.+ccsTargetSnapshotIdentifier :: Lens' CopyClusterSnapshot Text+ccsTargetSnapshotIdentifier =+    lens _ccsTargetSnapshotIdentifier+        (\s a -> s { _ccsTargetSnapshotIdentifier = a })++newtype CopyClusterSnapshotResponse = CopyClusterSnapshotResponse+    { _ccsrSnapshot :: Maybe Snapshot+    } deriving (Eq, Show)++-- | 'CopyClusterSnapshotResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccsrSnapshot' @::@ 'Maybe' 'Snapshot'+--+copyClusterSnapshotResponse :: CopyClusterSnapshotResponse+copyClusterSnapshotResponse = CopyClusterSnapshotResponse+    { _ccsrSnapshot = Nothing+    }++ccsrSnapshot :: Lens' CopyClusterSnapshotResponse (Maybe Snapshot)+ccsrSnapshot = lens _ccsrSnapshot (\s a -> s { _ccsrSnapshot = a })++instance ToPath CopyClusterSnapshot where+    toPath = const "/"++instance ToQuery CopyClusterSnapshot where+    toQuery CopyClusterSnapshot{..} = mconcat+        [ "SourceSnapshotClusterIdentifier" =? _ccsSourceSnapshotClusterIdentifier+        , "SourceSnapshotIdentifier"        =? _ccsSourceSnapshotIdentifier+        , "TargetSnapshotIdentifier"        =? _ccsTargetSnapshotIdentifier+        ]++instance ToHeaders CopyClusterSnapshot++instance AWSRequest CopyClusterSnapshot where+    type Sv CopyClusterSnapshot = Redshift+    type Rs CopyClusterSnapshot = CopyClusterSnapshotResponse++    request  = post "CopyClusterSnapshot"+    response = xmlResponse++instance FromXML CopyClusterSnapshotResponse where+    parseXML = withElement "CopyClusterSnapshotResult" $ \x -> CopyClusterSnapshotResponse+        <$> x .@? "Snapshot"
+ gen/Network/AWS/Redshift/CreateCluster.hs view
@@ -0,0 +1,445 @@+{-# 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.Redshift.CreateCluster+-- 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)++-- | Creates a new cluster. To create the cluster in virtual private cloud+-- (VPC), you must provide cluster subnet group name. If you don't provide a+-- cluster subnet group name or the cluster security group parameter, Amazon+-- Redshift creates a non-VPC cluster, it associates the default cluster+-- security group with the cluster. For more information about managing+-- clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster+-- Management Guide .+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_CreateCluster.html>+module Network.AWS.Redshift.CreateCluster+    (+    -- * Request+      CreateCluster+    -- ** Request constructor+    , createCluster+    -- ** Request lenses+    , ccAllowVersionUpgrade+    , ccAutomatedSnapshotRetentionPeriod+    , ccAvailabilityZone+    , ccClusterIdentifier+    , ccClusterParameterGroupName+    , ccClusterSecurityGroups+    , ccClusterSubnetGroupName+    , ccClusterType+    , ccClusterVersion+    , ccDBName+    , ccElasticIp+    , ccEncrypted+    , ccHsmClientCertificateIdentifier+    , ccHsmConfigurationIdentifier+    , ccKmsKeyId+    , ccMasterUserPassword+    , ccMasterUsername+    , ccNodeType+    , ccNumberOfNodes+    , ccPort+    , ccPreferredMaintenanceWindow+    , ccPubliclyAccessible+    , ccTags+    , ccVpcSecurityGroupIds++    -- * Response+    , CreateClusterResponse+    -- ** Response constructor+    , createClusterResponse+    -- ** Response lenses+    , ccrCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data CreateCluster = CreateCluster+    { _ccAllowVersionUpgrade              :: Maybe Bool+    , _ccAutomatedSnapshotRetentionPeriod :: Maybe Int+    , _ccAvailabilityZone                 :: Maybe Text+    , _ccClusterIdentifier                :: Text+    , _ccClusterParameterGroupName        :: Maybe Text+    , _ccClusterSecurityGroups            :: List "ClusterSecurityGroupName" Text+    , _ccClusterSubnetGroupName           :: Maybe Text+    , _ccClusterType                      :: Maybe Text+    , _ccClusterVersion                   :: Maybe Text+    , _ccDBName                           :: Maybe Text+    , _ccElasticIp                        :: Maybe Text+    , _ccEncrypted                        :: Maybe Bool+    , _ccHsmClientCertificateIdentifier   :: Maybe Text+    , _ccHsmConfigurationIdentifier       :: Maybe Text+    , _ccKmsKeyId                         :: Maybe Text+    , _ccMasterUserPassword               :: Text+    , _ccMasterUsername                   :: Text+    , _ccNodeType                         :: Text+    , _ccNumberOfNodes                    :: Maybe Int+    , _ccPort                             :: Maybe Int+    , _ccPreferredMaintenanceWindow       :: Maybe Text+    , _ccPubliclyAccessible               :: Maybe Bool+    , _ccTags                             :: List "Tag" Tag+    , _ccVpcSecurityGroupIds              :: List "VpcSecurityGroupId" Text+    } deriving (Eq, Show)++-- | 'CreateCluster' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccAllowVersionUpgrade' @::@ 'Maybe' 'Bool'+--+-- * 'ccAutomatedSnapshotRetentionPeriod' @::@ 'Maybe' 'Int'+--+-- * 'ccAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'ccClusterIdentifier' @::@ 'Text'+--+-- * 'ccClusterParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'ccClusterSecurityGroups' @::@ ['Text']+--+-- * 'ccClusterSubnetGroupName' @::@ 'Maybe' 'Text'+--+-- * 'ccClusterType' @::@ 'Maybe' 'Text'+--+-- * 'ccClusterVersion' @::@ 'Maybe' 'Text'+--+-- * 'ccDBName' @::@ 'Maybe' 'Text'+--+-- * 'ccElasticIp' @::@ 'Maybe' 'Text'+--+-- * 'ccEncrypted' @::@ 'Maybe' 'Bool'+--+-- * 'ccHsmClientCertificateIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'ccHsmConfigurationIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'ccKmsKeyId' @::@ 'Maybe' 'Text'+--+-- * 'ccMasterUserPassword' @::@ 'Text'+--+-- * 'ccMasterUsername' @::@ 'Text'+--+-- * 'ccNodeType' @::@ 'Text'+--+-- * 'ccNumberOfNodes' @::@ 'Maybe' 'Int'+--+-- * 'ccPort' @::@ 'Maybe' 'Int'+--+-- * 'ccPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'+--+-- * 'ccPubliclyAccessible' @::@ 'Maybe' 'Bool'+--+-- * 'ccTags' @::@ ['Tag']+--+-- * 'ccVpcSecurityGroupIds' @::@ ['Text']+--+createCluster :: Text -- ^ 'ccClusterIdentifier'+              -> Text -- ^ 'ccNodeType'+              -> Text -- ^ 'ccMasterUsername'+              -> Text -- ^ 'ccMasterUserPassword'+              -> CreateCluster+createCluster p1 p2 p3 p4 = CreateCluster+    { _ccClusterIdentifier                = p1+    , _ccNodeType                         = p2+    , _ccMasterUsername                   = p3+    , _ccMasterUserPassword               = p4+    , _ccDBName                           = Nothing+    , _ccClusterType                      = Nothing+    , _ccClusterSecurityGroups            = mempty+    , _ccVpcSecurityGroupIds              = mempty+    , _ccClusterSubnetGroupName           = Nothing+    , _ccAvailabilityZone                 = Nothing+    , _ccPreferredMaintenanceWindow       = Nothing+    , _ccClusterParameterGroupName        = Nothing+    , _ccAutomatedSnapshotRetentionPeriod = Nothing+    , _ccPort                             = Nothing+    , _ccClusterVersion                   = Nothing+    , _ccAllowVersionUpgrade              = Nothing+    , _ccNumberOfNodes                    = Nothing+    , _ccPubliclyAccessible               = Nothing+    , _ccEncrypted                        = Nothing+    , _ccHsmClientCertificateIdentifier   = Nothing+    , _ccHsmConfigurationIdentifier       = Nothing+    , _ccElasticIp                        = Nothing+    , _ccTags                             = mempty+    , _ccKmsKeyId                         = Nothing+    }++-- | If true, major version upgrades can be applied during the maintenance+-- window to the Amazon Redshift engine that is running on the cluster. When+-- a new major version of the Amazon Redshift engine is released, you can+-- request that the service automatically apply upgrades during the+-- maintenance window to the Amazon Redshift engine that is running on your+-- cluster. Default: true.+ccAllowVersionUpgrade :: Lens' CreateCluster (Maybe Bool)+ccAllowVersionUpgrade =+    lens _ccAllowVersionUpgrade (\s a -> s { _ccAllowVersionUpgrade = a })++-- | The number of days that automated snapshots are retained. If the value is+-- 0, automated snapshots are disabled. Even if automated snapshots are+-- disabled, you can still create manual snapshots when you want with+-- CreateClusterSnapshot. Default: 1 Constraints: Must be a value from 0 to+-- 35.+ccAutomatedSnapshotRetentionPeriod :: Lens' CreateCluster (Maybe Int)+ccAutomatedSnapshotRetentionPeriod =+    lens _ccAutomatedSnapshotRetentionPeriod+        (\s a -> s { _ccAutomatedSnapshotRetentionPeriod = a })++-- | The EC2 Availability Zone (AZ) in which you want Amazon Redshift to+-- provision the cluster. For example, if you have several EC2 instances+-- running in a specific Availability Zone, then you might want the cluster+-- to be provisioned in the same zone in order to decrease network latency.+-- Default: A random, system-chosen Availability Zone in the region that is+-- specified by the endpoint. Example: us-east-1d Constraint: The specified+-- Availability Zone must be in the same region as the current endpoint.+ccAvailabilityZone :: Lens' CreateCluster (Maybe Text)+ccAvailabilityZone =+    lens _ccAvailabilityZone (\s a -> s { _ccAvailabilityZone = a })++-- | A unique identifier for the cluster. You use this identifier to refer to+-- the cluster for any subsequent cluster operations such as deleting or+-- modifying. The identifier also appears in the Amazon Redshift console.+-- Constraints: Must contain from 1 to 63 alphanumeric characters or+-- hyphens. Alphabetic characters must be lowercase. First character must be+-- a letter. Cannot end with a hyphen or contain two consecutive hyphens.+-- Must be unique for all clusters within an AWS account. Example:+-- myexamplecluster.+ccClusterIdentifier :: Lens' CreateCluster Text+ccClusterIdentifier =+    lens _ccClusterIdentifier (\s a -> s { _ccClusterIdentifier = a })++-- | The name of the parameter group to be associated with this cluster.+-- Default: The default Amazon Redshift cluster parameter group. For+-- information about the default parameter group, go to Working with Amazon+-- Redshift Parameter Groups Constraints: Must be 1 to 255 alphanumeric+-- characters or hyphens. First character must be a letter. Cannot end with+-- a hyphen or contain two consecutive hyphens.+ccClusterParameterGroupName :: Lens' CreateCluster (Maybe Text)+ccClusterParameterGroupName =+    lens _ccClusterParameterGroupName+        (\s a -> s { _ccClusterParameterGroupName = a })++-- | A list of security groups to be associated with this cluster. Default:+-- The default cluster security group for Amazon Redshift.+ccClusterSecurityGroups :: Lens' CreateCluster [Text]+ccClusterSecurityGroups =+    lens _ccClusterSecurityGroups (\s a -> s { _ccClusterSecurityGroups = a })+        . _List++-- | The name of a cluster subnet group to be associated with this cluster. If+-- this parameter is not provided the resulting cluster will be deployed+-- outside virtual private cloud (VPC).+ccClusterSubnetGroupName :: Lens' CreateCluster (Maybe Text)+ccClusterSubnetGroupName =+    lens _ccClusterSubnetGroupName+        (\s a -> s { _ccClusterSubnetGroupName = a })++-- | The type of the cluster. When cluster type is specified as single-node,+-- the NumberOfNodes parameter is not required. multi-node, the+-- NumberOfNodes parameter is required. Valid Values: multi-node |+-- single-node Default: multi-node.+ccClusterType :: Lens' CreateCluster (Maybe Text)+ccClusterType = lens _ccClusterType (\s a -> s { _ccClusterType = a })++-- | The version of the Amazon Redshift engine software that you want to+-- deploy on the cluster. The version selected runs on all the nodes in the+-- cluster. Constraints: Only version 1.0 is currently available. Example:+-- 1.0.+ccClusterVersion :: Lens' CreateCluster (Maybe Text)+ccClusterVersion = lens _ccClusterVersion (\s a -> s { _ccClusterVersion = a })++-- | The name of the first database to be created when the cluster is created.+-- To create additional databases after the cluster is created, connect to+-- the cluster with a SQL client and use SQL commands to create a database.+-- For more information, go to Create a Database in the Amazon Redshift+-- Database Developer Guide. Default: dev Constraints: Must contain 1 to 64+-- alphanumeric characters. Must contain only lowercase letters. Cannot be a+-- word that is reserved by the service. A list of reserved words can be+-- found in Reserved Words in the Amazon Redshift Database Developer Guide.+ccDBName :: Lens' CreateCluster (Maybe Text)+ccDBName = lens _ccDBName (\s a -> s { _ccDBName = a })++-- | The Elastic IP (EIP) address for the cluster. Constraints: The cluster+-- must be provisioned in EC2-VPC and publicly-accessible through an+-- Internet gateway. For more information about provisioning clusters in+-- EC2-VPC, go to Supported Platforms to Launch Your Cluster in the Amazon+-- Redshift Cluster Management Guide.+ccElasticIp :: Lens' CreateCluster (Maybe Text)+ccElasticIp = lens _ccElasticIp (\s a -> s { _ccElasticIp = a })++-- | If true, the data in the cluster is encrypted at rest. Default: false.+ccEncrypted :: Lens' CreateCluster (Maybe Bool)+ccEncrypted = lens _ccEncrypted (\s a -> s { _ccEncrypted = a })++-- | Specifies the name of the HSM client certificate the Amazon Redshift+-- cluster uses to retrieve the data encryption keys stored in an HSM.+ccHsmClientCertificateIdentifier :: Lens' CreateCluster (Maybe Text)+ccHsmClientCertificateIdentifier =+    lens _ccHsmClientCertificateIdentifier+        (\s a -> s { _ccHsmClientCertificateIdentifier = a })++-- | Specifies the name of the HSM configuration that contains the information+-- the Amazon Redshift cluster can use to retrieve and store keys in an HSM.+ccHsmConfigurationIdentifier :: Lens' CreateCluster (Maybe Text)+ccHsmConfigurationIdentifier =+    lens _ccHsmConfigurationIdentifier+        (\s a -> s { _ccHsmConfigurationIdentifier = a })++-- | The AWS Key Management Service (KMS) key ID of the encryption key that+-- you want to use to encrypt data in the cluster.+ccKmsKeyId :: Lens' CreateCluster (Maybe Text)+ccKmsKeyId = lens _ccKmsKeyId (\s a -> s { _ccKmsKeyId = a })++-- | The password associated with the master user account for the cluster that+-- is being created. Constraints: Must be between 8 and 64 characters in+-- length. Must contain at least one uppercase letter. Must contain at least+-- one lowercase letter. Must contain one number. Can be any printable ASCII+-- character (ASCII code 33 to 126) except ' (single quote), " (double+-- quote), \, /, @, or space.+ccMasterUserPassword :: Lens' CreateCluster Text+ccMasterUserPassword =+    lens _ccMasterUserPassword (\s a -> s { _ccMasterUserPassword = a })++-- | The user name associated with the master user account for the cluster+-- that is being created. Constraints: Must be 1 - 128 alphanumeric+-- characters. First character must be a letter. Cannot be a reserved word.+-- A list of reserved words can be found in Reserved Words in the Amazon+-- Redshift Database Developer Guide.+ccMasterUsername :: Lens' CreateCluster Text+ccMasterUsername = lens _ccMasterUsername (\s a -> s { _ccMasterUsername = a })++-- | The node type to be provisioned for the cluster. For information about+-- node types, go to Working with Clusters in the Amazon Redshift Cluster+-- Management Guide. Valid Values: dw1.xlarge | dw1.8xlarge | dw2.large |+-- dw2.8xlarge.+ccNodeType :: Lens' CreateCluster Text+ccNodeType = lens _ccNodeType (\s a -> s { _ccNodeType = a })++-- | The number of compute nodes in the cluster. This parameter is required+-- when the ClusterType parameter is specified as multi-node. For+-- information about determining how many nodes you need, go to Working with+-- Clusters in the Amazon Redshift Cluster Management Guide. If you don't+-- specify this parameter, you get a single-node cluster. When requesting a+-- multi-node cluster, you must specify the number of nodes that you want in+-- the cluster. Default: 1 Constraints: Value must be at least 1 and no more+-- than 100.+ccNumberOfNodes :: Lens' CreateCluster (Maybe Int)+ccNumberOfNodes = lens _ccNumberOfNodes (\s a -> s { _ccNumberOfNodes = a })++-- | The port number on which the cluster accepts incoming connections. The+-- cluster is accessible only via the JDBC and ODBC connection strings. Part+-- of the connection string requires the port on which the cluster will+-- listen for incoming connections. Default: 5439 Valid Values: 1150-65535.+ccPort :: Lens' CreateCluster (Maybe Int)+ccPort = lens _ccPort (\s a -> s { _ccPort = a })++-- | The weekly time range (in UTC) during which automated cluster maintenance+-- can occur. Format: ddd:hh24:mi-ddd:hh24:mi Default: A 30-minute window+-- selected at random from an 8-hour block of time per region, occurring on+-- a random day of the week. For more information about the time blocks for+-- each region, see Maintenance Windows in Amazon Redshift Cluster+-- Management Guide. Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun+-- Constraints: Minimum 30-minute window.+ccPreferredMaintenanceWindow :: Lens' CreateCluster (Maybe Text)+ccPreferredMaintenanceWindow =+    lens _ccPreferredMaintenanceWindow+        (\s a -> s { _ccPreferredMaintenanceWindow = a })++-- | If true, the cluster can be accessed from a public network.+ccPubliclyAccessible :: Lens' CreateCluster (Maybe Bool)+ccPubliclyAccessible =+    lens _ccPubliclyAccessible (\s a -> s { _ccPubliclyAccessible = a })++-- | A list of tag instances.+ccTags :: Lens' CreateCluster [Tag]+ccTags = lens _ccTags (\s a -> s { _ccTags = a }) . _List++-- | A list of Virtual Private Cloud (VPC) security groups to be associated+-- with the cluster. Default: The default VPC security group is associated+-- with the cluster.+ccVpcSecurityGroupIds :: Lens' CreateCluster [Text]+ccVpcSecurityGroupIds =+    lens _ccVpcSecurityGroupIds (\s a -> s { _ccVpcSecurityGroupIds = a })+        . _List++newtype CreateClusterResponse = CreateClusterResponse+    { _ccrCluster :: Maybe Cluster+    } deriving (Eq, Show)++-- | 'CreateClusterResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccrCluster' @::@ 'Maybe' 'Cluster'+--+createClusterResponse :: CreateClusterResponse+createClusterResponse = CreateClusterResponse+    { _ccrCluster = Nothing+    }++ccrCluster :: Lens' CreateClusterResponse (Maybe Cluster)+ccrCluster = lens _ccrCluster (\s a -> s { _ccrCluster = a })++instance ToPath CreateCluster where+    toPath = const "/"++instance ToQuery CreateCluster where+    toQuery CreateCluster{..} = mconcat+        [ "AllowVersionUpgrade"              =? _ccAllowVersionUpgrade+        , "AutomatedSnapshotRetentionPeriod" =? _ccAutomatedSnapshotRetentionPeriod+        , "AvailabilityZone"                 =? _ccAvailabilityZone+        , "ClusterIdentifier"                =? _ccClusterIdentifier+        , "ClusterParameterGroupName"        =? _ccClusterParameterGroupName+        , "ClusterSecurityGroups"            =? _ccClusterSecurityGroups+        , "ClusterSubnetGroupName"           =? _ccClusterSubnetGroupName+        , "ClusterType"                      =? _ccClusterType+        , "ClusterVersion"                   =? _ccClusterVersion+        , "DBName"                           =? _ccDBName+        , "ElasticIp"                        =? _ccElasticIp+        , "Encrypted"                        =? _ccEncrypted+        , "HsmClientCertificateIdentifier"   =? _ccHsmClientCertificateIdentifier+        , "HsmConfigurationIdentifier"       =? _ccHsmConfigurationIdentifier+        , "KmsKeyId"                         =? _ccKmsKeyId+        , "MasterUserPassword"               =? _ccMasterUserPassword+        , "MasterUsername"                   =? _ccMasterUsername+        , "NodeType"                         =? _ccNodeType+        , "NumberOfNodes"                    =? _ccNumberOfNodes+        , "Port"                             =? _ccPort+        , "PreferredMaintenanceWindow"       =? _ccPreferredMaintenanceWindow+        , "PubliclyAccessible"               =? _ccPubliclyAccessible+        , "Tags"                             =? _ccTags+        , "VpcSecurityGroupIds"              =? _ccVpcSecurityGroupIds+        ]++instance ToHeaders CreateCluster++instance AWSRequest CreateCluster where+    type Sv CreateCluster = Redshift+    type Rs CreateCluster = CreateClusterResponse++    request  = post "CreateCluster"+    response = xmlResponse++instance FromXML CreateClusterResponse where+    parseXML = withElement "CreateClusterResult" $ \x -> CreateClusterResponse+        <$> x .@? "Cluster"
+ gen/Network/AWS/Redshift/CreateClusterParameterGroup.hs view
@@ -0,0 +1,161 @@+{-# 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.Redshift.CreateClusterParameterGroup+-- 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)++-- | Creates an Amazon Redshift parameter group. Creating parameter groups is+-- independent of creating clusters. You can associate a cluster with a+-- parameter group when you create the cluster. You can also associate an+-- existing cluster with a parameter group after the cluster is created by+-- using ModifyCluster. Parameters in the parameter group define specific+-- behavior that applies to the databases you create on the cluster. For more+-- information about managing parameter groups, go to Amazon Redshift+-- Parameter Groups in the Amazon Redshift Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_CreateClusterParameterGroup.html>+module Network.AWS.Redshift.CreateClusterParameterGroup+    (+    -- * Request+      CreateClusterParameterGroup+    -- ** Request constructor+    , createClusterParameterGroup+    -- ** Request lenses+    , ccpgDescription+    , ccpgParameterGroupFamily+    , ccpgParameterGroupName+    , ccpgTags++    -- * Response+    , CreateClusterParameterGroupResponse+    -- ** Response constructor+    , createClusterParameterGroupResponse+    -- ** Response lenses+    , ccpgrClusterParameterGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data CreateClusterParameterGroup = CreateClusterParameterGroup+    { _ccpgDescription          :: Text+    , _ccpgParameterGroupFamily :: Text+    , _ccpgParameterGroupName   :: Text+    , _ccpgTags                 :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'CreateClusterParameterGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccpgDescription' @::@ 'Text'+--+-- * 'ccpgParameterGroupFamily' @::@ 'Text'+--+-- * 'ccpgParameterGroupName' @::@ 'Text'+--+-- * 'ccpgTags' @::@ ['Tag']+--+createClusterParameterGroup :: Text -- ^ 'ccpgParameterGroupName'+                            -> Text -- ^ 'ccpgParameterGroupFamily'+                            -> Text -- ^ 'ccpgDescription'+                            -> CreateClusterParameterGroup+createClusterParameterGroup p1 p2 p3 = CreateClusterParameterGroup+    { _ccpgParameterGroupName   = p1+    , _ccpgParameterGroupFamily = p2+    , _ccpgDescription          = p3+    , _ccpgTags                 = mempty+    }++-- | A description of the parameter group.+ccpgDescription :: Lens' CreateClusterParameterGroup Text+ccpgDescription = lens _ccpgDescription (\s a -> s { _ccpgDescription = a })++-- | The Amazon Redshift engine version to which the cluster parameter group+-- applies. The cluster engine version determines the set of parameters. To+-- get a list of valid parameter group family names, you can call+-- DescribeClusterParameterGroups. By default, Amazon Redshift returns a+-- list of all the parameter groups that are owned by your AWS account,+-- including the default parameter groups for each Amazon Redshift engine+-- version. The parameter group family names associated with the default+-- parameter groups provide you the valid values. For example, a valid+-- family name is "redshift-1.0".+ccpgParameterGroupFamily :: Lens' CreateClusterParameterGroup Text+ccpgParameterGroupFamily =+    lens _ccpgParameterGroupFamily+        (\s a -> s { _ccpgParameterGroupFamily = a })++-- | The name of the cluster parameter group. Constraints: Must be 1 to 255+-- alphanumeric characters or hyphens First character must be a letter.+-- Cannot end with a hyphen or contain two consecutive hyphens. Must be+-- unique withing your AWS account. This value is stored as a lower-case+-- string.+ccpgParameterGroupName :: Lens' CreateClusterParameterGroup Text+ccpgParameterGroupName =+    lens _ccpgParameterGroupName (\s a -> s { _ccpgParameterGroupName = a })++-- | A list of tag instances.+ccpgTags :: Lens' CreateClusterParameterGroup [Tag]+ccpgTags = lens _ccpgTags (\s a -> s { _ccpgTags = a }) . _List++newtype CreateClusterParameterGroupResponse = CreateClusterParameterGroupResponse+    { _ccpgrClusterParameterGroup :: Maybe ClusterParameterGroup+    } deriving (Eq, Show)++-- | 'CreateClusterParameterGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccpgrClusterParameterGroup' @::@ 'Maybe' 'ClusterParameterGroup'+--+createClusterParameterGroupResponse :: CreateClusterParameterGroupResponse+createClusterParameterGroupResponse = CreateClusterParameterGroupResponse+    { _ccpgrClusterParameterGroup = Nothing+    }++ccpgrClusterParameterGroup :: Lens' CreateClusterParameterGroupResponse (Maybe ClusterParameterGroup)+ccpgrClusterParameterGroup =+    lens _ccpgrClusterParameterGroup+        (\s a -> s { _ccpgrClusterParameterGroup = a })++instance ToPath CreateClusterParameterGroup where+    toPath = const "/"++instance ToQuery CreateClusterParameterGroup where+    toQuery CreateClusterParameterGroup{..} = mconcat+        [ "Description"          =? _ccpgDescription+        , "ParameterGroupFamily" =? _ccpgParameterGroupFamily+        , "ParameterGroupName"   =? _ccpgParameterGroupName+        , "Tags"                 =? _ccpgTags+        ]++instance ToHeaders CreateClusterParameterGroup++instance AWSRequest CreateClusterParameterGroup where+    type Sv CreateClusterParameterGroup = Redshift+    type Rs CreateClusterParameterGroup = CreateClusterParameterGroupResponse++    request  = post "CreateClusterParameterGroup"+    response = xmlResponse++instance FromXML CreateClusterParameterGroupResponse where+    parseXML = withElement "CreateClusterParameterGroupResult" $ \x -> CreateClusterParameterGroupResponse+        <$> x .@? "ClusterParameterGroup"
+ gen/Network/AWS/Redshift/CreateClusterSecurityGroup.hs view
@@ -0,0 +1,137 @@+{-# 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.Redshift.CreateClusterSecurityGroup+-- 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)++-- | Creates a new Amazon Redshift security group. You use security groups to+-- control access to non-VPC clusters. For information about managing security+-- groups, go to Amazon Redshift Cluster Security Groups in the Amazon+-- Redshift Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_CreateClusterSecurityGroup.html>+module Network.AWS.Redshift.CreateClusterSecurityGroup+    (+    -- * Request+      CreateClusterSecurityGroup+    -- ** Request constructor+    , createClusterSecurityGroup+    -- ** Request lenses+    , ccsg1ClusterSecurityGroupName+    , ccsg1Description+    , ccsg1Tags++    -- * Response+    , CreateClusterSecurityGroupResponse+    -- ** Response constructor+    , createClusterSecurityGroupResponse+    -- ** Response lenses+    , ccsgrClusterSecurityGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data CreateClusterSecurityGroup = CreateClusterSecurityGroup+    { _ccsg1ClusterSecurityGroupName :: Text+    , _ccsg1Description              :: Text+    , _ccsg1Tags                     :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'CreateClusterSecurityGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccsg1ClusterSecurityGroupName' @::@ 'Text'+--+-- * 'ccsg1Description' @::@ 'Text'+--+-- * 'ccsg1Tags' @::@ ['Tag']+--+createClusterSecurityGroup :: Text -- ^ 'ccsg1ClusterSecurityGroupName'+                           -> Text -- ^ 'ccsg1Description'+                           -> CreateClusterSecurityGroup+createClusterSecurityGroup p1 p2 = CreateClusterSecurityGroup+    { _ccsg1ClusterSecurityGroupName = p1+    , _ccsg1Description              = p2+    , _ccsg1Tags                     = mempty+    }++-- | The name for the security group. Amazon Redshift stores the value as a+-- lowercase string. Constraints: Must contain no more than 255 alphanumeric+-- characters or hyphens. Must not be "Default". Must be unique for all+-- security groups that are created by your AWS account. Example:+-- examplesecuritygroup.+ccsg1ClusterSecurityGroupName :: Lens' CreateClusterSecurityGroup Text+ccsg1ClusterSecurityGroupName =+    lens _ccsg1ClusterSecurityGroupName+        (\s a -> s { _ccsg1ClusterSecurityGroupName = a })++-- | A description for the security group.+ccsg1Description :: Lens' CreateClusterSecurityGroup Text+ccsg1Description = lens _ccsg1Description (\s a -> s { _ccsg1Description = a })++-- | A list of tag instances.+ccsg1Tags :: Lens' CreateClusterSecurityGroup [Tag]+ccsg1Tags = lens _ccsg1Tags (\s a -> s { _ccsg1Tags = a }) . _List++newtype CreateClusterSecurityGroupResponse = CreateClusterSecurityGroupResponse+    { _ccsgrClusterSecurityGroup :: Maybe ClusterSecurityGroup+    } deriving (Eq, Show)++-- | 'CreateClusterSecurityGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccsgrClusterSecurityGroup' @::@ 'Maybe' 'ClusterSecurityGroup'+--+createClusterSecurityGroupResponse :: CreateClusterSecurityGroupResponse+createClusterSecurityGroupResponse = CreateClusterSecurityGroupResponse+    { _ccsgrClusterSecurityGroup = Nothing+    }++ccsgrClusterSecurityGroup :: Lens' CreateClusterSecurityGroupResponse (Maybe ClusterSecurityGroup)+ccsgrClusterSecurityGroup =+    lens _ccsgrClusterSecurityGroup+        (\s a -> s { _ccsgrClusterSecurityGroup = a })++instance ToPath CreateClusterSecurityGroup where+    toPath = const "/"++instance ToQuery CreateClusterSecurityGroup where+    toQuery CreateClusterSecurityGroup{..} = mconcat+        [ "ClusterSecurityGroupName" =? _ccsg1ClusterSecurityGroupName+        , "Description"              =? _ccsg1Description+        , "Tags"                     =? _ccsg1Tags+        ]++instance ToHeaders CreateClusterSecurityGroup++instance AWSRequest CreateClusterSecurityGroup where+    type Sv CreateClusterSecurityGroup = Redshift+    type Rs CreateClusterSecurityGroup = CreateClusterSecurityGroupResponse++    request  = post "CreateClusterSecurityGroup"+    response = xmlResponse++instance FromXML CreateClusterSecurityGroupResponse where+    parseXML = withElement "CreateClusterSecurityGroupResult" $ \x -> CreateClusterSecurityGroupResponse+        <$> x .@? "ClusterSecurityGroup"
+ gen/Network/AWS/Redshift/CreateClusterSnapshot.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.Redshift.CreateClusterSnapshot+-- 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)++-- | Creates a manual snapshot of the specified cluster. The cluster must be in+-- the available state. For more information about working with snapshots, go+-- to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management+-- Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_CreateClusterSnapshot.html>+module Network.AWS.Redshift.CreateClusterSnapshot+    (+    -- * Request+      CreateClusterSnapshot+    -- ** Request constructor+    , createClusterSnapshot+    -- ** Request lenses+    , ccsClusterIdentifier+    , ccsSnapshotIdentifier+    , ccsTags++    -- * Response+    , CreateClusterSnapshotResponse+    -- ** Response constructor+    , createClusterSnapshotResponse+    -- ** Response lenses+    , ccsr1Snapshot+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data CreateClusterSnapshot = CreateClusterSnapshot+    { _ccsClusterIdentifier  :: Text+    , _ccsSnapshotIdentifier :: Text+    , _ccsTags               :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'CreateClusterSnapshot' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccsClusterIdentifier' @::@ 'Text'+--+-- * 'ccsSnapshotIdentifier' @::@ 'Text'+--+-- * 'ccsTags' @::@ ['Tag']+--+createClusterSnapshot :: Text -- ^ 'ccsSnapshotIdentifier'+                      -> Text -- ^ 'ccsClusterIdentifier'+                      -> CreateClusterSnapshot+createClusterSnapshot p1 p2 = CreateClusterSnapshot+    { _ccsSnapshotIdentifier = p1+    , _ccsClusterIdentifier  = p2+    , _ccsTags               = mempty+    }++-- | The cluster identifier for which you want a snapshot.+ccsClusterIdentifier :: Lens' CreateClusterSnapshot Text+ccsClusterIdentifier =+    lens _ccsClusterIdentifier (\s a -> s { _ccsClusterIdentifier = a })++-- | A unique identifier for the snapshot that you are requesting. This+-- identifier must be unique for all snapshots within the AWS account.+-- Constraints: Cannot be null, empty, or blank Must contain from 1 to 255+-- alphanumeric characters or hyphens First character must be a letter+-- Cannot end with a hyphen or contain two consecutive hyphens Example:+-- my-snapshot-id.+ccsSnapshotIdentifier :: Lens' CreateClusterSnapshot Text+ccsSnapshotIdentifier =+    lens _ccsSnapshotIdentifier (\s a -> s { _ccsSnapshotIdentifier = a })++-- | A list of tag instances.+ccsTags :: Lens' CreateClusterSnapshot [Tag]+ccsTags = lens _ccsTags (\s a -> s { _ccsTags = a }) . _List++newtype CreateClusterSnapshotResponse = CreateClusterSnapshotResponse+    { _ccsr1Snapshot :: Maybe Snapshot+    } deriving (Eq, Show)++-- | 'CreateClusterSnapshotResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccsr1Snapshot' @::@ 'Maybe' 'Snapshot'+--+createClusterSnapshotResponse :: CreateClusterSnapshotResponse+createClusterSnapshotResponse = CreateClusterSnapshotResponse+    { _ccsr1Snapshot = Nothing+    }++ccsr1Snapshot :: Lens' CreateClusterSnapshotResponse (Maybe Snapshot)+ccsr1Snapshot = lens _ccsr1Snapshot (\s a -> s { _ccsr1Snapshot = a })++instance ToPath CreateClusterSnapshot where+    toPath = const "/"++instance ToQuery CreateClusterSnapshot where+    toQuery CreateClusterSnapshot{..} = mconcat+        [ "ClusterIdentifier"  =? _ccsClusterIdentifier+        , "SnapshotIdentifier" =? _ccsSnapshotIdentifier+        , "Tags"               =? _ccsTags+        ]++instance ToHeaders CreateClusterSnapshot++instance AWSRequest CreateClusterSnapshot where+    type Sv CreateClusterSnapshot = Redshift+    type Rs CreateClusterSnapshot = CreateClusterSnapshotResponse++    request  = post "CreateClusterSnapshot"+    response = xmlResponse++instance FromXML CreateClusterSnapshotResponse where+    parseXML = withElement "CreateClusterSnapshotResult" $ \x -> CreateClusterSnapshotResponse+        <$> x .@? "Snapshot"
+ gen/Network/AWS/Redshift/CreateClusterSubnetGroup.hs view
@@ -0,0 +1,148 @@+{-# 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.Redshift.CreateClusterSubnetGroup+-- 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)++-- | Creates a new Amazon Redshift subnet group. You must provide a list of one+-- or more subnets in your existing Amazon Virtual Private Cloud (Amazon VPC)+-- when creating Amazon Redshift subnet group. For information about subnet+-- groups, go to Amazon Redshift Cluster Subnet Groups in the Amazon Redshift+-- Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_CreateClusterSubnetGroup.html>+module Network.AWS.Redshift.CreateClusterSubnetGroup+    (+    -- * Request+      CreateClusterSubnetGroup+    -- ** Request constructor+    , createClusterSubnetGroup+    -- ** Request lenses+    , ccsgClusterSubnetGroupName+    , ccsgDescription+    , ccsgSubnetIds+    , ccsgTags++    -- * Response+    , CreateClusterSubnetGroupResponse+    -- ** Response constructor+    , createClusterSubnetGroupResponse+    -- ** Response lenses+    , ccsgrClusterSubnetGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data CreateClusterSubnetGroup = CreateClusterSubnetGroup+    { _ccsgClusterSubnetGroupName :: Text+    , _ccsgDescription            :: Text+    , _ccsgSubnetIds              :: List "SubnetIdentifier" Text+    , _ccsgTags                   :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'CreateClusterSubnetGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccsgClusterSubnetGroupName' @::@ 'Text'+--+-- * 'ccsgDescription' @::@ 'Text'+--+-- * 'ccsgSubnetIds' @::@ ['Text']+--+-- * 'ccsgTags' @::@ ['Tag']+--+createClusterSubnetGroup :: Text -- ^ 'ccsgClusterSubnetGroupName'+                         -> Text -- ^ 'ccsgDescription'+                         -> CreateClusterSubnetGroup+createClusterSubnetGroup p1 p2 = CreateClusterSubnetGroup+    { _ccsgClusterSubnetGroupName = p1+    , _ccsgDescription            = p2+    , _ccsgSubnetIds              = mempty+    , _ccsgTags                   = mempty+    }++-- | The name for the subnet group. Amazon Redshift stores the value as a+-- lowercase string. Constraints: Must contain no more than 255 alphanumeric+-- characters or hyphens. Must not be "Default". Must be unique for all+-- subnet groups that are created by your AWS account. Example:+-- examplesubnetgroup.+ccsgClusterSubnetGroupName :: Lens' CreateClusterSubnetGroup Text+ccsgClusterSubnetGroupName =+    lens _ccsgClusterSubnetGroupName+        (\s a -> s { _ccsgClusterSubnetGroupName = a })++-- | A description for the subnet group.+ccsgDescription :: Lens' CreateClusterSubnetGroup Text+ccsgDescription = lens _ccsgDescription (\s a -> s { _ccsgDescription = a })++-- | An array of VPC subnet IDs. A maximum of 20 subnets can be modified in a+-- single request.+ccsgSubnetIds :: Lens' CreateClusterSubnetGroup [Text]+ccsgSubnetIds = lens _ccsgSubnetIds (\s a -> s { _ccsgSubnetIds = a }) . _List++-- | A list of tag instances.+ccsgTags :: Lens' CreateClusterSubnetGroup [Tag]+ccsgTags = lens _ccsgTags (\s a -> s { _ccsgTags = a }) . _List++newtype CreateClusterSubnetGroupResponse = CreateClusterSubnetGroupResponse+    { _ccsgrClusterSubnetGroup :: Maybe ClusterSubnetGroup+    } deriving (Eq, Show)++-- | 'CreateClusterSubnetGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccsgrClusterSubnetGroup' @::@ 'Maybe' 'ClusterSubnetGroup'+--+createClusterSubnetGroupResponse :: CreateClusterSubnetGroupResponse+createClusterSubnetGroupResponse = CreateClusterSubnetGroupResponse+    { _ccsgrClusterSubnetGroup = Nothing+    }++ccsgrClusterSubnetGroup :: Lens' CreateClusterSubnetGroupResponse (Maybe ClusterSubnetGroup)+ccsgrClusterSubnetGroup =+    lens _ccsgrClusterSubnetGroup (\s a -> s { _ccsgrClusterSubnetGroup = a })++instance ToPath CreateClusterSubnetGroup where+    toPath = const "/"++instance ToQuery CreateClusterSubnetGroup where+    toQuery CreateClusterSubnetGroup{..} = mconcat+        [ "ClusterSubnetGroupName" =? _ccsgClusterSubnetGroupName+        , "Description"            =? _ccsgDescription+        , "SubnetIds"              =? _ccsgSubnetIds+        , "Tags"                   =? _ccsgTags+        ]++instance ToHeaders CreateClusterSubnetGroup++instance AWSRequest CreateClusterSubnetGroup where+    type Sv CreateClusterSubnetGroup = Redshift+    type Rs CreateClusterSubnetGroup = CreateClusterSubnetGroupResponse++    request  = post "CreateClusterSubnetGroup"+    response = xmlResponse++instance FromXML CreateClusterSubnetGroupResponse where+    parseXML = withElement "CreateClusterSubnetGroupResult" $ \x -> CreateClusterSubnetGroupResponse+        <$> x .@? "ClusterSubnetGroup"
+ gen/Network/AWS/Redshift/CreateEventSubscription.hs view
@@ -0,0 +1,219 @@+{-# 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.Redshift.CreateEventSubscription+-- 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)++-- | Creates an Amazon Redshift event notification subscription. This action+-- requires an ARN (Amazon Resource Name) of an Amazon SNS topic created by+-- either the Amazon Redshift console, the Amazon SNS console, or the Amazon+-- SNS API. To obtain an ARN with Amazon SNS, you must create a topic in+-- Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS+-- console. You can specify the source type, and lists of Amazon Redshift+-- source IDs, event categories, and event severities. Notifications will be+-- sent for all events you want that match those criteria. For example, you+-- can specify source type = cluster, source ID = my-cluster-1 and mycluster2,+-- event categories = Availability, Backup, and severity = ERROR. The+-- subscription will only send notifications for those ERROR events in the+-- Availability and Backup categories for the specified clusters. If you+-- specify both the source type and source IDs, such as source type = cluster+-- and source identifier = my-cluster-1, notifications will be sent for all+-- the cluster events for my-cluster-1. If you specify a source type but do+-- not specify a source identifier, you will receive notice of the events for+-- the objects of that type in your AWS account. If you do not specify either+-- the SourceType nor the SourceIdentifier, you will be notified of events+-- generated from all Amazon Redshift sources belonging to your AWS account.+-- You must specify a source type if you specify a source ID.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_CreateEventSubscription.html>+module Network.AWS.Redshift.CreateEventSubscription+    (+    -- * Request+      CreateEventSubscription+    -- ** Request constructor+    , createEventSubscription+    -- ** Request lenses+    , cesEnabled+    , cesEventCategories+    , cesSeverity+    , cesSnsTopicArn+    , cesSourceIds+    , cesSourceType+    , cesSubscriptionName+    , cesTags++    -- * Response+    , CreateEventSubscriptionResponse+    -- ** Response constructor+    , createEventSubscriptionResponse+    -- ** Response lenses+    , cesrEventSubscription+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data CreateEventSubscription = CreateEventSubscription+    { _cesEnabled          :: Maybe Bool+    , _cesEventCategories  :: List "EventCategory" Text+    , _cesSeverity         :: Maybe Text+    , _cesSnsTopicArn      :: Text+    , _cesSourceIds        :: List "SourceId" Text+    , _cesSourceType       :: Maybe Text+    , _cesSubscriptionName :: Text+    , _cesTags             :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'CreateEventSubscription' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cesEnabled' @::@ 'Maybe' 'Bool'+--+-- * 'cesEventCategories' @::@ ['Text']+--+-- * 'cesSeverity' @::@ 'Maybe' 'Text'+--+-- * 'cesSnsTopicArn' @::@ 'Text'+--+-- * 'cesSourceIds' @::@ ['Text']+--+-- * 'cesSourceType' @::@ 'Maybe' 'Text'+--+-- * 'cesSubscriptionName' @::@ 'Text'+--+-- * 'cesTags' @::@ ['Tag']+--+createEventSubscription :: Text -- ^ 'cesSubscriptionName'+                        -> Text -- ^ 'cesSnsTopicArn'+                        -> CreateEventSubscription+createEventSubscription p1 p2 = CreateEventSubscription+    { _cesSubscriptionName = p1+    , _cesSnsTopicArn      = p2+    , _cesSourceType       = Nothing+    , _cesSourceIds        = mempty+    , _cesEventCategories  = mempty+    , _cesSeverity         = Nothing+    , _cesEnabled          = Nothing+    , _cesTags             = mempty+    }++-- | A Boolean value; set to true to activate the subscription, set to false+-- to create the subscription but not active it.+cesEnabled :: Lens' CreateEventSubscription (Maybe Bool)+cesEnabled = lens _cesEnabled (\s a -> s { _cesEnabled = a })++-- | Specifies the Amazon Redshift event categories to be published by the+-- event notification subscription. Values: Configuration, Management,+-- Monitoring, Security.+cesEventCategories :: Lens' CreateEventSubscription [Text]+cesEventCategories =+    lens _cesEventCategories (\s a -> s { _cesEventCategories = a })+        . _List++-- | Specifies the Amazon Redshift event severity to be published by the event+-- notification subscription. Values: ERROR, INFO.+cesSeverity :: Lens' CreateEventSubscription (Maybe Text)+cesSeverity = lens _cesSeverity (\s a -> s { _cesSeverity = a })++-- | The Amazon Resource Name (ARN) of the Amazon SNS topic used to transmit+-- the event notifications. The ARN is created by Amazon SNS when you create+-- a topic and subscribe to it.+cesSnsTopicArn :: Lens' CreateEventSubscription Text+cesSnsTopicArn = lens _cesSnsTopicArn (\s a -> s { _cesSnsTopicArn = a })++-- | A list of one or more identifiers of Amazon Redshift source objects. All+-- of the objects must be of the same type as was specified in the source+-- type parameter. The event subscription will return only events generated+-- by the specified objects. If not specified, then events are returned for+-- all objects within the source type specified. Example: my-cluster-1,+-- my-cluster-2 Example: my-snapshot-20131010.+cesSourceIds :: Lens' CreateEventSubscription [Text]+cesSourceIds = lens _cesSourceIds (\s a -> s { _cesSourceIds = a }) . _List++-- | The type of source that will be generating the events. For example, if+-- you want to be notified of events generated by a cluster, you would set+-- this parameter to cluster. If this value is not specified, events are+-- returned for all Amazon Redshift objects in your AWS account. You must+-- specify a source type in order to specify source IDs. Valid values:+-- cluster, cluster-parameter-group, cluster-security-group, and+-- cluster-snapshot.+cesSourceType :: Lens' CreateEventSubscription (Maybe Text)+cesSourceType = lens _cesSourceType (\s a -> s { _cesSourceType = a })++-- | The name of the event subscription to be created. Constraints: Cannot be+-- null, empty, or blank. Must contain from 1 to 255 alphanumeric characters+-- or hyphens. First character must be a letter. Cannot end with a hyphen or+-- contain two consecutive hyphens.+cesSubscriptionName :: Lens' CreateEventSubscription Text+cesSubscriptionName =+    lens _cesSubscriptionName (\s a -> s { _cesSubscriptionName = a })++-- | A list of tag instances.+cesTags :: Lens' CreateEventSubscription [Tag]+cesTags = lens _cesTags (\s a -> s { _cesTags = a }) . _List++newtype CreateEventSubscriptionResponse = CreateEventSubscriptionResponse+    { _cesrEventSubscription :: Maybe EventSubscription+    } deriving (Eq, Show)++-- | 'CreateEventSubscriptionResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cesrEventSubscription' @::@ 'Maybe' 'EventSubscription'+--+createEventSubscriptionResponse :: CreateEventSubscriptionResponse+createEventSubscriptionResponse = CreateEventSubscriptionResponse+    { _cesrEventSubscription = Nothing+    }++cesrEventSubscription :: Lens' CreateEventSubscriptionResponse (Maybe EventSubscription)+cesrEventSubscription =+    lens _cesrEventSubscription (\s a -> s { _cesrEventSubscription = a })++instance ToPath CreateEventSubscription where+    toPath = const "/"++instance ToQuery CreateEventSubscription where+    toQuery CreateEventSubscription{..} = mconcat+        [ "Enabled"          =? _cesEnabled+        , "EventCategories"  =? _cesEventCategories+        , "Severity"         =? _cesSeverity+        , "SnsTopicArn"      =? _cesSnsTopicArn+        , "SourceIds"        =? _cesSourceIds+        , "SourceType"       =? _cesSourceType+        , "SubscriptionName" =? _cesSubscriptionName+        , "Tags"             =? _cesTags+        ]++instance ToHeaders CreateEventSubscription++instance AWSRequest CreateEventSubscription where+    type Sv CreateEventSubscription = Redshift+    type Rs CreateEventSubscription = CreateEventSubscriptionResponse++    request  = post "CreateEventSubscription"+    response = xmlResponse++instance FromXML CreateEventSubscriptionResponse where+    parseXML = withElement "CreateEventSubscriptionResult" $ \x -> CreateEventSubscriptionResponse+        <$> x .@? "EventSubscription"
+ gen/Network/AWS/Redshift/CreateHsmClientCertificate.hs view
@@ -0,0 +1,128 @@+{-# 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.Redshift.CreateHsmClientCertificate+-- 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)++-- | Creates an HSM client certificate that an Amazon Redshift cluster will use+-- to connect to the client's HSM in order to store and retrieve the keys used+-- to encrypt the cluster databases. The command returns a public key, which+-- you must store in the HSM. In addition to creating the HSM certificate, you+-- must create an Amazon Redshift HSM configuration that provides a cluster+-- the information needed to store and use encryption keys in the HSM. For+-- more information, go to Hardware Security Modules in the Amazon Redshift+-- Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_CreateHsmClientCertificate.html>+module Network.AWS.Redshift.CreateHsmClientCertificate+    (+    -- * Request+      CreateHsmClientCertificate+    -- ** Request constructor+    , createHsmClientCertificate+    -- ** Request lenses+    , chccHsmClientCertificateIdentifier+    , chccTags++    -- * Response+    , CreateHsmClientCertificateResponse+    -- ** Response constructor+    , createHsmClientCertificateResponse+    -- ** Response lenses+    , chccrHsmClientCertificate+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data CreateHsmClientCertificate = CreateHsmClientCertificate+    { _chccHsmClientCertificateIdentifier :: Text+    , _chccTags                           :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'CreateHsmClientCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'chccHsmClientCertificateIdentifier' @::@ 'Text'+--+-- * 'chccTags' @::@ ['Tag']+--+createHsmClientCertificate :: Text -- ^ 'chccHsmClientCertificateIdentifier'+                           -> CreateHsmClientCertificate+createHsmClientCertificate p1 = CreateHsmClientCertificate+    { _chccHsmClientCertificateIdentifier = p1+    , _chccTags                           = mempty+    }++-- | The identifier to be assigned to the new HSM client certificate that the+-- cluster will use to connect to the HSM to use the database encryption+-- keys.+chccHsmClientCertificateIdentifier :: Lens' CreateHsmClientCertificate Text+chccHsmClientCertificateIdentifier =+    lens _chccHsmClientCertificateIdentifier+        (\s a -> s { _chccHsmClientCertificateIdentifier = a })++-- | A list of tag instances.+chccTags :: Lens' CreateHsmClientCertificate [Tag]+chccTags = lens _chccTags (\s a -> s { _chccTags = a }) . _List++newtype CreateHsmClientCertificateResponse = CreateHsmClientCertificateResponse+    { _chccrHsmClientCertificate :: Maybe HsmClientCertificate+    } deriving (Eq, Show)++-- | 'CreateHsmClientCertificateResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'chccrHsmClientCertificate' @::@ 'Maybe' 'HsmClientCertificate'+--+createHsmClientCertificateResponse :: CreateHsmClientCertificateResponse+createHsmClientCertificateResponse = CreateHsmClientCertificateResponse+    { _chccrHsmClientCertificate = Nothing+    }++chccrHsmClientCertificate :: Lens' CreateHsmClientCertificateResponse (Maybe HsmClientCertificate)+chccrHsmClientCertificate =+    lens _chccrHsmClientCertificate+        (\s a -> s { _chccrHsmClientCertificate = a })++instance ToPath CreateHsmClientCertificate where+    toPath = const "/"++instance ToQuery CreateHsmClientCertificate where+    toQuery CreateHsmClientCertificate{..} = mconcat+        [ "HsmClientCertificateIdentifier" =? _chccHsmClientCertificateIdentifier+        , "Tags"                           =? _chccTags+        ]++instance ToHeaders CreateHsmClientCertificate++instance AWSRequest CreateHsmClientCertificate where+    type Sv CreateHsmClientCertificate = Redshift+    type Rs CreateHsmClientCertificate = CreateHsmClientCertificateResponse++    request  = post "CreateHsmClientCertificate"+    response = xmlResponse++instance FromXML CreateHsmClientCertificateResponse where+    parseXML = withElement "CreateHsmClientCertificateResult" $ \x -> CreateHsmClientCertificateResponse+        <$> x .@? "HsmClientCertificate"
+ gen/Network/AWS/Redshift/CreateHsmConfiguration.hs view
@@ -0,0 +1,188 @@+{-# 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.Redshift.CreateHsmConfiguration+-- 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)++-- | Creates an HSM configuration that contains the information required by an+-- Amazon Redshift cluster to store and use database encryption keys in a+-- Hardware Security Module (HSM). After creating the HSM configuration, you+-- can specify it as a parameter when creating a cluster. The cluster will+-- then store its encryption keys in the HSM. In addition to creating an HSM+-- configuration, you must also create an HSM client certificate. For more+-- information, go to Hardware Security Modules in the Amazon Redshift Cluster+-- Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_CreateHsmConfiguration.html>+module Network.AWS.Redshift.CreateHsmConfiguration+    (+    -- * Request+      CreateHsmConfiguration+    -- ** Request constructor+    , createHsmConfiguration+    -- ** Request lenses+    , chcDescription+    , chcHsmConfigurationIdentifier+    , chcHsmIpAddress+    , chcHsmPartitionName+    , chcHsmPartitionPassword+    , chcHsmServerPublicCertificate+    , chcTags++    -- * Response+    , CreateHsmConfigurationResponse+    -- ** Response constructor+    , createHsmConfigurationResponse+    -- ** Response lenses+    , chcrHsmConfiguration+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data CreateHsmConfiguration = CreateHsmConfiguration+    { _chcDescription                :: Text+    , _chcHsmConfigurationIdentifier :: Text+    , _chcHsmIpAddress               :: Text+    , _chcHsmPartitionName           :: Text+    , _chcHsmPartitionPassword       :: Text+    , _chcHsmServerPublicCertificate :: Text+    , _chcTags                       :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'CreateHsmConfiguration' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'chcDescription' @::@ 'Text'+--+-- * 'chcHsmConfigurationIdentifier' @::@ 'Text'+--+-- * 'chcHsmIpAddress' @::@ 'Text'+--+-- * 'chcHsmPartitionName' @::@ 'Text'+--+-- * 'chcHsmPartitionPassword' @::@ 'Text'+--+-- * 'chcHsmServerPublicCertificate' @::@ 'Text'+--+-- * 'chcTags' @::@ ['Tag']+--+createHsmConfiguration :: Text -- ^ 'chcHsmConfigurationIdentifier'+                       -> Text -- ^ 'chcDescription'+                       -> Text -- ^ 'chcHsmIpAddress'+                       -> Text -- ^ 'chcHsmPartitionName'+                       -> Text -- ^ 'chcHsmPartitionPassword'+                       -> Text -- ^ 'chcHsmServerPublicCertificate'+                       -> CreateHsmConfiguration+createHsmConfiguration p1 p2 p3 p4 p5 p6 = CreateHsmConfiguration+    { _chcHsmConfigurationIdentifier = p1+    , _chcDescription                = p2+    , _chcHsmIpAddress               = p3+    , _chcHsmPartitionName           = p4+    , _chcHsmPartitionPassword       = p5+    , _chcHsmServerPublicCertificate = p6+    , _chcTags                       = mempty+    }++-- | A text description of the HSM configuration to be created.+chcDescription :: Lens' CreateHsmConfiguration Text+chcDescription = lens _chcDescription (\s a -> s { _chcDescription = a })++-- | The identifier to be assigned to the new Amazon Redshift HSM+-- configuration.+chcHsmConfigurationIdentifier :: Lens' CreateHsmConfiguration Text+chcHsmConfigurationIdentifier =+    lens _chcHsmConfigurationIdentifier+        (\s a -> s { _chcHsmConfigurationIdentifier = a })++-- | The IP address that the Amazon Redshift cluster must use to access the+-- HSM.+chcHsmIpAddress :: Lens' CreateHsmConfiguration Text+chcHsmIpAddress = lens _chcHsmIpAddress (\s a -> s { _chcHsmIpAddress = a })++-- | The name of the partition in the HSM where the Amazon Redshift clusters+-- will store their database encryption keys.+chcHsmPartitionName :: Lens' CreateHsmConfiguration Text+chcHsmPartitionName =+    lens _chcHsmPartitionName (\s a -> s { _chcHsmPartitionName = a })++-- | The password required to access the HSM partition.+chcHsmPartitionPassword :: Lens' CreateHsmConfiguration Text+chcHsmPartitionPassword =+    lens _chcHsmPartitionPassword (\s a -> s { _chcHsmPartitionPassword = a })++-- | The HSMs public certificate file. When using Cloud HSM, the file name is+-- server.pem.+chcHsmServerPublicCertificate :: Lens' CreateHsmConfiguration Text+chcHsmServerPublicCertificate =+    lens _chcHsmServerPublicCertificate+        (\s a -> s { _chcHsmServerPublicCertificate = a })++-- | A list of tag instances.+chcTags :: Lens' CreateHsmConfiguration [Tag]+chcTags = lens _chcTags (\s a -> s { _chcTags = a }) . _List++newtype CreateHsmConfigurationResponse = CreateHsmConfigurationResponse+    { _chcrHsmConfiguration :: Maybe HsmConfiguration+    } deriving (Eq, Show)++-- | 'CreateHsmConfigurationResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'chcrHsmConfiguration' @::@ 'Maybe' 'HsmConfiguration'+--+createHsmConfigurationResponse :: CreateHsmConfigurationResponse+createHsmConfigurationResponse = CreateHsmConfigurationResponse+    { _chcrHsmConfiguration = Nothing+    }++chcrHsmConfiguration :: Lens' CreateHsmConfigurationResponse (Maybe HsmConfiguration)+chcrHsmConfiguration =+    lens _chcrHsmConfiguration (\s a -> s { _chcrHsmConfiguration = a })++instance ToPath CreateHsmConfiguration where+    toPath = const "/"++instance ToQuery CreateHsmConfiguration where+    toQuery CreateHsmConfiguration{..} = mconcat+        [ "Description"                =? _chcDescription+        , "HsmConfigurationIdentifier" =? _chcHsmConfigurationIdentifier+        , "HsmIpAddress"               =? _chcHsmIpAddress+        , "HsmPartitionName"           =? _chcHsmPartitionName+        , "HsmPartitionPassword"       =? _chcHsmPartitionPassword+        , "HsmServerPublicCertificate" =? _chcHsmServerPublicCertificate+        , "Tags"                       =? _chcTags+        ]++instance ToHeaders CreateHsmConfiguration++instance AWSRequest CreateHsmConfiguration where+    type Sv CreateHsmConfiguration = Redshift+    type Rs CreateHsmConfiguration = CreateHsmConfigurationResponse++    request  = post "CreateHsmConfiguration"+    response = xmlResponse++instance FromXML CreateHsmConfigurationResponse where+    parseXML = withElement "CreateHsmConfigurationResult" $ \x -> CreateHsmConfigurationResponse+        <$> x .@? "HsmConfiguration"
+ gen/Network/AWS/Redshift/CreateTags.hs view
@@ -0,0 +1,110 @@+{-# 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.Redshift.CreateTags+-- 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)++-- | Adds one or more tags to a specified resource. A resource can have up to 10+-- tags. If you try to create more than 10 tags for a resource, you will+-- receive an error and the attempt will fail. If you specify a key that+-- already exists for the resource, the value for that key will be updated+-- with the new value.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_CreateTags.html>+module Network.AWS.Redshift.CreateTags+    (+    -- * Request+      CreateTags+    -- ** Request constructor+    , createTags+    -- ** Request lenses+    , ctResourceName+    , ctTags++    -- * Response+    , CreateTagsResponse+    -- ** Response constructor+    , createTagsResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data CreateTags = CreateTags+    { _ctResourceName :: Text+    , _ctTags         :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'CreateTags' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ctResourceName' @::@ 'Text'+--+-- * 'ctTags' @::@ ['Tag']+--+createTags :: Text -- ^ 'ctResourceName'+           -> CreateTags+createTags p1 = CreateTags+    { _ctResourceName = p1+    , _ctTags         = mempty+    }++-- | The Amazon Resource Name (ARN) to which you want to add the tag or tags.+-- For example, arn:aws:redshift:us-east-1:123456789:cluster:t1.+ctResourceName :: Lens' CreateTags Text+ctResourceName = lens _ctResourceName (\s a -> s { _ctResourceName = a })++-- | One or more name/value pairs to add as tags to the specified resource.+-- Each tag name is passed in with the parameter tag-key and the+-- corresponding value is passed in with the parameter tag-value. The+-- tag-key and tag-value parameters are separated by a colon (:). Separate+-- multiple tags with a space. For example, --tags+-- "tag-key"="owner":"tag-value"="admin"+-- "tag-key"="environment":"tag-value"="test"+-- "tag-key"="version":"tag-value"="1.0".+ctTags :: Lens' CreateTags [Tag]+ctTags = lens _ctTags (\s a -> s { _ctTags = a }) . _List++data CreateTagsResponse = CreateTagsResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'CreateTagsResponse' constructor.+createTagsResponse :: CreateTagsResponse+createTagsResponse = CreateTagsResponse++instance ToPath CreateTags where+    toPath = const "/"++instance ToQuery CreateTags where+    toQuery CreateTags{..} = mconcat+        [ "ResourceName" =? _ctResourceName+        , "Tags"         =? _ctTags+        ]++instance ToHeaders CreateTags++instance AWSRequest CreateTags where+    type Sv CreateTags = Redshift+    type Rs CreateTags = CreateTagsResponse++    request  = post "CreateTags"+    response = nullResponse CreateTagsResponse
+ gen/Network/AWS/Redshift/DeleteCluster.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.Redshift.DeleteCluster+-- 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)++-- | Deletes a previously provisioned cluster. A successful response from the+-- web service indicates that the request was received correctly. Use+-- DescribeClusters to monitor the status of the deletion. The delete+-- operation cannot be canceled or reverted once submitted. For more+-- information about managing clusters, go to Amazon Redshift Clusters in the+-- Amazon Redshift Cluster Management Guide . If you want to shut down the+-- cluster and retain it for future use, set SkipFinalClusterSnapshot to false+-- and specify a name for FinalClusterSnapshotIdentifier. You can later+-- restore this snapshot to resume using the cluster. If a final cluster+-- snapshot is requested, the status of the cluster will be "final-snapshot"+-- while the snapshot is being taken, then it's "deleting" once Amazon+-- Redshift begins deleting the cluster. For more information about managing+-- clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster+-- Management Guide .+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DeleteCluster.html>+module Network.AWS.Redshift.DeleteCluster+    (+    -- * Request+      DeleteCluster+    -- ** Request constructor+    , deleteCluster+    -- ** Request lenses+    , dc1ClusterIdentifier+    , dc1FinalClusterSnapshotIdentifier+    , dc1SkipFinalClusterSnapshot++    -- * Response+    , DeleteClusterResponse+    -- ** Response constructor+    , deleteClusterResponse+    -- ** Response lenses+    , dcrCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DeleteCluster = DeleteCluster+    { _dc1ClusterIdentifier              :: Text+    , _dc1FinalClusterSnapshotIdentifier :: Maybe Text+    , _dc1SkipFinalClusterSnapshot       :: Maybe Bool+    } deriving (Eq, Ord, Show)++-- | 'DeleteCluster' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dc1ClusterIdentifier' @::@ 'Text'+--+-- * 'dc1FinalClusterSnapshotIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'dc1SkipFinalClusterSnapshot' @::@ 'Maybe' 'Bool'+--+deleteCluster :: Text -- ^ 'dc1ClusterIdentifier'+              -> DeleteCluster+deleteCluster p1 = DeleteCluster+    { _dc1ClusterIdentifier              = p1+    , _dc1SkipFinalClusterSnapshot       = Nothing+    , _dc1FinalClusterSnapshotIdentifier = Nothing+    }++-- | The identifier of the cluster to be deleted. Constraints: Must contain+-- lowercase characters. Must contain from 1 to 63 alphanumeric characters+-- or hyphens. First character must be a letter. Cannot end with a hyphen or+-- contain two consecutive hyphens.+dc1ClusterIdentifier :: Lens' DeleteCluster Text+dc1ClusterIdentifier =+    lens _dc1ClusterIdentifier (\s a -> s { _dc1ClusterIdentifier = a })++-- | The identifier of the final snapshot that is to be created immediately+-- before deleting the cluster. If this parameter is provided,+-- SkipFinalClusterSnapshot must be false. Constraints: Must be 1 to 255+-- alphanumeric characters. First character must be a letter. Cannot end+-- with a hyphen or contain two consecutive hyphens.+dc1FinalClusterSnapshotIdentifier :: Lens' DeleteCluster (Maybe Text)+dc1FinalClusterSnapshotIdentifier =+    lens _dc1FinalClusterSnapshotIdentifier+        (\s a -> s { _dc1FinalClusterSnapshotIdentifier = a })++-- | Determines whether a final snapshot of the cluster is created before+-- Amazon Redshift deletes the cluster. If true, a final cluster snapshot is+-- not created. If false, a final cluster snapshot is created before the+-- cluster is deleted. The FinalClusterSnapshotIdentifier parameter must be+-- specified if SkipFinalClusterSnapshot is false. Default: false.+dc1SkipFinalClusterSnapshot :: Lens' DeleteCluster (Maybe Bool)+dc1SkipFinalClusterSnapshot =+    lens _dc1SkipFinalClusterSnapshot+        (\s a -> s { _dc1SkipFinalClusterSnapshot = a })++newtype DeleteClusterResponse = DeleteClusterResponse+    { _dcrCluster :: Maybe Cluster+    } deriving (Eq, Show)++-- | 'DeleteClusterResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcrCluster' @::@ 'Maybe' 'Cluster'+--+deleteClusterResponse :: DeleteClusterResponse+deleteClusterResponse = DeleteClusterResponse+    { _dcrCluster = Nothing+    }++dcrCluster :: Lens' DeleteClusterResponse (Maybe Cluster)+dcrCluster = lens _dcrCluster (\s a -> s { _dcrCluster = a })++instance ToPath DeleteCluster where+    toPath = const "/"++instance ToQuery DeleteCluster where+    toQuery DeleteCluster{..} = mconcat+        [ "ClusterIdentifier"              =? _dc1ClusterIdentifier+        , "FinalClusterSnapshotIdentifier" =? _dc1FinalClusterSnapshotIdentifier+        , "SkipFinalClusterSnapshot"       =? _dc1SkipFinalClusterSnapshot+        ]++instance ToHeaders DeleteCluster++instance AWSRequest DeleteCluster where+    type Sv DeleteCluster = Redshift+    type Rs DeleteCluster = DeleteClusterResponse++    request  = post "DeleteCluster"+    response = xmlResponse++instance FromXML DeleteClusterResponse where+    parseXML = withElement "DeleteClusterResult" $ \x -> DeleteClusterResponse+        <$> x .@? "Cluster"
+ gen/Network/AWS/Redshift/DeleteClusterParameterGroup.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.Redshift.DeleteClusterParameterGroup+-- 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)++-- | Deletes a specified Amazon Redshift parameter group. You cannot delete a+-- parameter group if it is associated with a cluster.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DeleteClusterParameterGroup.html>+module Network.AWS.Redshift.DeleteClusterParameterGroup+    (+    -- * Request+      DeleteClusterParameterGroup+    -- ** Request constructor+    , deleteClusterParameterGroup+    -- ** Request lenses+    , dcpg1ParameterGroupName++    -- * Response+    , DeleteClusterParameterGroupResponse+    -- ** Response constructor+    , deleteClusterParameterGroupResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype DeleteClusterParameterGroup = DeleteClusterParameterGroup+    { _dcpg1ParameterGroupName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteClusterParameterGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcpg1ParameterGroupName' @::@ 'Text'+--+deleteClusterParameterGroup :: Text -- ^ 'dcpg1ParameterGroupName'+                            -> DeleteClusterParameterGroup+deleteClusterParameterGroup p1 = DeleteClusterParameterGroup+    { _dcpg1ParameterGroupName = p1+    }++-- | The name of the parameter group to be deleted. Constraints: Must be the+-- name of an existing cluster parameter group. Cannot delete a default+-- cluster parameter group.+dcpg1ParameterGroupName :: Lens' DeleteClusterParameterGroup Text+dcpg1ParameterGroupName =+    lens _dcpg1ParameterGroupName (\s a -> s { _dcpg1ParameterGroupName = a })++data DeleteClusterParameterGroupResponse = DeleteClusterParameterGroupResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteClusterParameterGroupResponse' constructor.+deleteClusterParameterGroupResponse :: DeleteClusterParameterGroupResponse+deleteClusterParameterGroupResponse = DeleteClusterParameterGroupResponse++instance ToPath DeleteClusterParameterGroup where+    toPath = const "/"++instance ToQuery DeleteClusterParameterGroup where+    toQuery DeleteClusterParameterGroup{..} = mconcat+        [ "ParameterGroupName" =? _dcpg1ParameterGroupName+        ]++instance ToHeaders DeleteClusterParameterGroup++instance AWSRequest DeleteClusterParameterGroup where+    type Sv DeleteClusterParameterGroup = Redshift+    type Rs DeleteClusterParameterGroup = DeleteClusterParameterGroupResponse++    request  = post "DeleteClusterParameterGroup"+    response = nullResponse DeleteClusterParameterGroupResponse
+ gen/Network/AWS/Redshift/DeleteClusterSecurityGroup.hs view
@@ -0,0 +1,94 @@+{-# 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.Redshift.DeleteClusterSecurityGroup+-- 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)++-- | Deletes an Amazon Redshift security group. You cannot delete a security+-- group that is associated with any clusters. You cannot delete the default+-- security group. For information about managing security groups, go to+-- Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster+-- Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DeleteClusterSecurityGroup.html>+module Network.AWS.Redshift.DeleteClusterSecurityGroup+    (+    -- * Request+      DeleteClusterSecurityGroup+    -- ** Request constructor+    , deleteClusterSecurityGroup+    -- ** Request lenses+    , dcsg1ClusterSecurityGroupName++    -- * Response+    , DeleteClusterSecurityGroupResponse+    -- ** Response constructor+    , deleteClusterSecurityGroupResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype DeleteClusterSecurityGroup = DeleteClusterSecurityGroup+    { _dcsg1ClusterSecurityGroupName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteClusterSecurityGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsg1ClusterSecurityGroupName' @::@ 'Text'+--+deleteClusterSecurityGroup :: Text -- ^ 'dcsg1ClusterSecurityGroupName'+                           -> DeleteClusterSecurityGroup+deleteClusterSecurityGroup p1 = DeleteClusterSecurityGroup+    { _dcsg1ClusterSecurityGroupName = p1+    }++-- | The name of the cluster security group to be deleted.+dcsg1ClusterSecurityGroupName :: Lens' DeleteClusterSecurityGroup Text+dcsg1ClusterSecurityGroupName =+    lens _dcsg1ClusterSecurityGroupName+        (\s a -> s { _dcsg1ClusterSecurityGroupName = a })++data DeleteClusterSecurityGroupResponse = DeleteClusterSecurityGroupResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteClusterSecurityGroupResponse' constructor.+deleteClusterSecurityGroupResponse :: DeleteClusterSecurityGroupResponse+deleteClusterSecurityGroupResponse = DeleteClusterSecurityGroupResponse++instance ToPath DeleteClusterSecurityGroup where+    toPath = const "/"++instance ToQuery DeleteClusterSecurityGroup where+    toQuery DeleteClusterSecurityGroup{..} = mconcat+        [ "ClusterSecurityGroupName" =? _dcsg1ClusterSecurityGroupName+        ]++instance ToHeaders DeleteClusterSecurityGroup++instance AWSRequest DeleteClusterSecurityGroup where+    type Sv DeleteClusterSecurityGroup = Redshift+    type Rs DeleteClusterSecurityGroup = DeleteClusterSecurityGroupResponse++    request  = post "DeleteClusterSecurityGroup"+    response = nullResponse DeleteClusterSecurityGroupResponse
+ gen/Network/AWS/Redshift/DeleteClusterSnapshot.hs view
@@ -0,0 +1,128 @@+{-# 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.Redshift.DeleteClusterSnapshot+-- 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)++-- | Deletes the specified manual snapshot. The snapshot must be in the+-- available state, with no other users authorized to access the snapshot.+-- Unlike automated snapshots, manual snapshots are retained even after you+-- delete your cluster. Amazon Redshift does not delete your manual snapshots.+-- You must delete manual snapshot explicitly to avoid getting charged. If+-- other accounts are authorized to access the snapshot, you must revoke all+-- of the authorizations before you can delete the snapshot.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DeleteClusterSnapshot.html>+module Network.AWS.Redshift.DeleteClusterSnapshot+    (+    -- * Request+      DeleteClusterSnapshot+    -- ** Request constructor+    , deleteClusterSnapshot+    -- ** Request lenses+    , dcsSnapshotClusterIdentifier+    , dcsSnapshotIdentifier++    -- * Response+    , DeleteClusterSnapshotResponse+    -- ** Response constructor+    , deleteClusterSnapshotResponse+    -- ** Response lenses+    , dcsrSnapshot+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DeleteClusterSnapshot = DeleteClusterSnapshot+    { _dcsSnapshotClusterIdentifier :: Maybe Text+    , _dcsSnapshotIdentifier        :: Text+    } deriving (Eq, Ord, Show)++-- | 'DeleteClusterSnapshot' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsSnapshotClusterIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'dcsSnapshotIdentifier' @::@ 'Text'+--+deleteClusterSnapshot :: Text -- ^ 'dcsSnapshotIdentifier'+                      -> DeleteClusterSnapshot+deleteClusterSnapshot p1 = DeleteClusterSnapshot+    { _dcsSnapshotIdentifier        = p1+    , _dcsSnapshotClusterIdentifier = Nothing+    }++-- | The unique identifier of the cluster the snapshot was created from. This+-- parameter is required if your IAM user has a policy containing a snapshot+-- resource element that specifies anything other than * for the cluster+-- name. Constraints: Must be the name of valid cluster.+dcsSnapshotClusterIdentifier :: Lens' DeleteClusterSnapshot (Maybe Text)+dcsSnapshotClusterIdentifier =+    lens _dcsSnapshotClusterIdentifier+        (\s a -> s { _dcsSnapshotClusterIdentifier = a })++-- | The unique identifier of the manual snapshot to be deleted. Constraints:+-- Must be the name of an existing snapshot that is in the available state.+dcsSnapshotIdentifier :: Lens' DeleteClusterSnapshot Text+dcsSnapshotIdentifier =+    lens _dcsSnapshotIdentifier (\s a -> s { _dcsSnapshotIdentifier = a })++newtype DeleteClusterSnapshotResponse = DeleteClusterSnapshotResponse+    { _dcsrSnapshot :: Maybe Snapshot+    } deriving (Eq, Show)++-- | 'DeleteClusterSnapshotResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsrSnapshot' @::@ 'Maybe' 'Snapshot'+--+deleteClusterSnapshotResponse :: DeleteClusterSnapshotResponse+deleteClusterSnapshotResponse = DeleteClusterSnapshotResponse+    { _dcsrSnapshot = Nothing+    }++dcsrSnapshot :: Lens' DeleteClusterSnapshotResponse (Maybe Snapshot)+dcsrSnapshot = lens _dcsrSnapshot (\s a -> s { _dcsrSnapshot = a })++instance ToPath DeleteClusterSnapshot where+    toPath = const "/"++instance ToQuery DeleteClusterSnapshot where+    toQuery DeleteClusterSnapshot{..} = mconcat+        [ "SnapshotClusterIdentifier" =? _dcsSnapshotClusterIdentifier+        , "SnapshotIdentifier"        =? _dcsSnapshotIdentifier+        ]++instance ToHeaders DeleteClusterSnapshot++instance AWSRequest DeleteClusterSnapshot where+    type Sv DeleteClusterSnapshot = Redshift+    type Rs DeleteClusterSnapshot = DeleteClusterSnapshotResponse++    request  = post "DeleteClusterSnapshot"+    response = xmlResponse++instance FromXML DeleteClusterSnapshotResponse where+    parseXML = withElement "DeleteClusterSnapshotResult" $ \x -> DeleteClusterSnapshotResponse+        <$> x .@? "Snapshot"
+ gen/Network/AWS/Redshift/DeleteClusterSubnetGroup.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.Redshift.DeleteClusterSubnetGroup+-- 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)++-- | Deletes the specified cluster subnet group.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DeleteClusterSubnetGroup.html>+module Network.AWS.Redshift.DeleteClusterSubnetGroup+    (+    -- * Request+      DeleteClusterSubnetGroup+    -- ** Request constructor+    , deleteClusterSubnetGroup+    -- ** Request lenses+    , dcsgClusterSubnetGroupName++    -- * Response+    , DeleteClusterSubnetGroupResponse+    -- ** Response constructor+    , deleteClusterSubnetGroupResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype DeleteClusterSubnetGroup = DeleteClusterSubnetGroup+    { _dcsgClusterSubnetGroupName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteClusterSubnetGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsgClusterSubnetGroupName' @::@ 'Text'+--+deleteClusterSubnetGroup :: Text -- ^ 'dcsgClusterSubnetGroupName'+                         -> DeleteClusterSubnetGroup+deleteClusterSubnetGroup p1 = DeleteClusterSubnetGroup+    { _dcsgClusterSubnetGroupName = p1+    }++-- | The name of the cluster subnet group name to be deleted.+dcsgClusterSubnetGroupName :: Lens' DeleteClusterSubnetGroup Text+dcsgClusterSubnetGroupName =+    lens _dcsgClusterSubnetGroupName+        (\s a -> s { _dcsgClusterSubnetGroupName = a })++data DeleteClusterSubnetGroupResponse = DeleteClusterSubnetGroupResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteClusterSubnetGroupResponse' constructor.+deleteClusterSubnetGroupResponse :: DeleteClusterSubnetGroupResponse+deleteClusterSubnetGroupResponse = DeleteClusterSubnetGroupResponse++instance ToPath DeleteClusterSubnetGroup where+    toPath = const "/"++instance ToQuery DeleteClusterSubnetGroup where+    toQuery DeleteClusterSubnetGroup{..} = mconcat+        [ "ClusterSubnetGroupName" =? _dcsgClusterSubnetGroupName+        ]++instance ToHeaders DeleteClusterSubnetGroup++instance AWSRequest DeleteClusterSubnetGroup where+    type Sv DeleteClusterSubnetGroup = Redshift+    type Rs DeleteClusterSubnetGroup = DeleteClusterSubnetGroupResponse++    request  = post "DeleteClusterSubnetGroup"+    response = nullResponse DeleteClusterSubnetGroupResponse
+ gen/Network/AWS/Redshift/DeleteEventSubscription.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.Redshift.DeleteEventSubscription+-- 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)++-- | Deletes an Amazon Redshift event notification subscription.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DeleteEventSubscription.html>+module Network.AWS.Redshift.DeleteEventSubscription+    (+    -- * Request+      DeleteEventSubscription+    -- ** Request constructor+    , deleteEventSubscription+    -- ** Request lenses+    , desSubscriptionName++    -- * Response+    , DeleteEventSubscriptionResponse+    -- ** Response constructor+    , deleteEventSubscriptionResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype DeleteEventSubscription = DeleteEventSubscription+    { _desSubscriptionName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteEventSubscription' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'desSubscriptionName' @::@ 'Text'+--+deleteEventSubscription :: Text -- ^ 'desSubscriptionName'+                        -> DeleteEventSubscription+deleteEventSubscription p1 = DeleteEventSubscription+    { _desSubscriptionName = p1+    }++-- | The name of the Amazon Redshift event notification subscription to be+-- deleted.+desSubscriptionName :: Lens' DeleteEventSubscription Text+desSubscriptionName =+    lens _desSubscriptionName (\s a -> s { _desSubscriptionName = a })++data DeleteEventSubscriptionResponse = DeleteEventSubscriptionResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteEventSubscriptionResponse' constructor.+deleteEventSubscriptionResponse :: DeleteEventSubscriptionResponse+deleteEventSubscriptionResponse = DeleteEventSubscriptionResponse++instance ToPath DeleteEventSubscription where+    toPath = const "/"++instance ToQuery DeleteEventSubscription where+    toQuery DeleteEventSubscription{..} = mconcat+        [ "SubscriptionName" =? _desSubscriptionName+        ]++instance ToHeaders DeleteEventSubscription++instance AWSRequest DeleteEventSubscription where+    type Sv DeleteEventSubscription = Redshift+    type Rs DeleteEventSubscription = DeleteEventSubscriptionResponse++    request  = post "DeleteEventSubscription"+    response = nullResponse DeleteEventSubscriptionResponse
+ gen/Network/AWS/Redshift/DeleteHsmClientCertificate.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.Redshift.DeleteHsmClientCertificate+-- 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)++-- | Deletes the specified HSM client certificate.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DeleteHsmClientCertificate.html>+module Network.AWS.Redshift.DeleteHsmClientCertificate+    (+    -- * Request+      DeleteHsmClientCertificate+    -- ** Request constructor+    , deleteHsmClientCertificate+    -- ** Request lenses+    , dhcc1HsmClientCertificateIdentifier++    -- * Response+    , DeleteHsmClientCertificateResponse+    -- ** Response constructor+    , deleteHsmClientCertificateResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype DeleteHsmClientCertificate = DeleteHsmClientCertificate+    { _dhcc1HsmClientCertificateIdentifier :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteHsmClientCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dhcc1HsmClientCertificateIdentifier' @::@ 'Text'+--+deleteHsmClientCertificate :: Text -- ^ 'dhcc1HsmClientCertificateIdentifier'+                           -> DeleteHsmClientCertificate+deleteHsmClientCertificate p1 = DeleteHsmClientCertificate+    { _dhcc1HsmClientCertificateIdentifier = p1+    }++-- | The identifier of the HSM client certificate to be deleted.+dhcc1HsmClientCertificateIdentifier :: Lens' DeleteHsmClientCertificate Text+dhcc1HsmClientCertificateIdentifier =+    lens _dhcc1HsmClientCertificateIdentifier+        (\s a -> s { _dhcc1HsmClientCertificateIdentifier = a })++data DeleteHsmClientCertificateResponse = DeleteHsmClientCertificateResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteHsmClientCertificateResponse' constructor.+deleteHsmClientCertificateResponse :: DeleteHsmClientCertificateResponse+deleteHsmClientCertificateResponse = DeleteHsmClientCertificateResponse++instance ToPath DeleteHsmClientCertificate where+    toPath = const "/"++instance ToQuery DeleteHsmClientCertificate where+    toQuery DeleteHsmClientCertificate{..} = mconcat+        [ "HsmClientCertificateIdentifier" =? _dhcc1HsmClientCertificateIdentifier+        ]++instance ToHeaders DeleteHsmClientCertificate++instance AWSRequest DeleteHsmClientCertificate where+    type Sv DeleteHsmClientCertificate = Redshift+    type Rs DeleteHsmClientCertificate = DeleteHsmClientCertificateResponse++    request  = post "DeleteHsmClientCertificate"+    response = nullResponse DeleteHsmClientCertificateResponse
+ gen/Network/AWS/Redshift/DeleteHsmConfiguration.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.Redshift.DeleteHsmConfiguration+-- 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)++-- | Deletes the specified Amazon Redshift HSM configuration.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DeleteHsmConfiguration.html>+module Network.AWS.Redshift.DeleteHsmConfiguration+    (+    -- * Request+      DeleteHsmConfiguration+    -- ** Request constructor+    , deleteHsmConfiguration+    -- ** Request lenses+    , dhcHsmConfigurationIdentifier++    -- * Response+    , DeleteHsmConfigurationResponse+    -- ** Response constructor+    , deleteHsmConfigurationResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype DeleteHsmConfiguration = DeleteHsmConfiguration+    { _dhcHsmConfigurationIdentifier :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteHsmConfiguration' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dhcHsmConfigurationIdentifier' @::@ 'Text'+--+deleteHsmConfiguration :: Text -- ^ 'dhcHsmConfigurationIdentifier'+                       -> DeleteHsmConfiguration+deleteHsmConfiguration p1 = DeleteHsmConfiguration+    { _dhcHsmConfigurationIdentifier = p1+    }++-- | The identifier of the Amazon Redshift HSM configuration to be deleted.+dhcHsmConfigurationIdentifier :: Lens' DeleteHsmConfiguration Text+dhcHsmConfigurationIdentifier =+    lens _dhcHsmConfigurationIdentifier+        (\s a -> s { _dhcHsmConfigurationIdentifier = a })++data DeleteHsmConfigurationResponse = DeleteHsmConfigurationResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteHsmConfigurationResponse' constructor.+deleteHsmConfigurationResponse :: DeleteHsmConfigurationResponse+deleteHsmConfigurationResponse = DeleteHsmConfigurationResponse++instance ToPath DeleteHsmConfiguration where+    toPath = const "/"++instance ToQuery DeleteHsmConfiguration where+    toQuery DeleteHsmConfiguration{..} = mconcat+        [ "HsmConfigurationIdentifier" =? _dhcHsmConfigurationIdentifier+        ]++instance ToHeaders DeleteHsmConfiguration++instance AWSRequest DeleteHsmConfiguration where+    type Sv DeleteHsmConfiguration = Redshift+    type Rs DeleteHsmConfiguration = DeleteHsmConfigurationResponse++    request  = post "DeleteHsmConfiguration"+    response = nullResponse DeleteHsmConfigurationResponse
+ gen/Network/AWS/Redshift/DeleteTags.hs view
@@ -0,0 +1,100 @@+{-# 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.Redshift.DeleteTags+-- 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)++-- | Deletes a tag or tags from a resource. You must provide the ARN of the+-- resource from which you want to delete the tag or tags.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DeleteTags.html>+module Network.AWS.Redshift.DeleteTags+    (+    -- * Request+      DeleteTags+    -- ** Request constructor+    , deleteTags+    -- ** Request lenses+    , dt1ResourceName+    , dt1TagKeys++    -- * Response+    , DeleteTagsResponse+    -- ** Response constructor+    , deleteTagsResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DeleteTags = DeleteTags+    { _dt1ResourceName :: Text+    , _dt1TagKeys      :: List "TagKey" Text+    } deriving (Eq, Ord, Show)++-- | 'DeleteTags' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dt1ResourceName' @::@ 'Text'+--+-- * 'dt1TagKeys' @::@ ['Text']+--+deleteTags :: Text -- ^ 'dt1ResourceName'+           -> DeleteTags+deleteTags p1 = DeleteTags+    { _dt1ResourceName = p1+    , _dt1TagKeys      = mempty+    }++-- | The Amazon Resource Name (ARN) from which you want to remove the tag or+-- tags. For example, arn:aws:redshift:us-east-1:123456789:cluster:t1.+dt1ResourceName :: Lens' DeleteTags Text+dt1ResourceName = lens _dt1ResourceName (\s a -> s { _dt1ResourceName = a })++-- | The tag key that you want to delete.+dt1TagKeys :: Lens' DeleteTags [Text]+dt1TagKeys = lens _dt1TagKeys (\s a -> s { _dt1TagKeys = a }) . _List++data DeleteTagsResponse = DeleteTagsResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteTagsResponse' constructor.+deleteTagsResponse :: DeleteTagsResponse+deleteTagsResponse = DeleteTagsResponse++instance ToPath DeleteTags where+    toPath = const "/"++instance ToQuery DeleteTags where+    toQuery DeleteTags{..} = mconcat+        [ "ResourceName" =? _dt1ResourceName+        , "TagKeys"      =? _dt1TagKeys+        ]++instance ToHeaders DeleteTags++instance AWSRequest DeleteTags where+    type Sv DeleteTags = Redshift+    type Rs DeleteTags = DeleteTagsResponse++    request  = post "DeleteTags"+    response = nullResponse DeleteTagsResponse
+ gen/Network/AWS/Redshift/DescribeClusterParameterGroups.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.Redshift.DescribeClusterParameterGroups+-- 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)++-- | Returns a list of Amazon Redshift parameter groups, including parameter+-- groups you created and the default parameter group. For each parameter+-- group, the response includes the parameter group name, description, and+-- parameter group family name. You can optionally specify a name to retrieve+-- the description of a specific parameter group. For more information about+-- managing parameter groups, go to Amazon Redshift Parameter Groups in the+-- Amazon Redshift Cluster Management Guide. If you specify both tag keys and+-- tag values in the same request, Amazon Redshift returns all parameter+-- groups that match any combination of the specified keys and values. For+-- example, if you have owner and environment for tag keys, and admin and test+-- for tag values, all parameter groups that have any combination of those+-- values are returned. If both tag keys and values are omitted from the+-- request, parameter groups are returned regardless of whether they have tag+-- keys or values associated with them.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusterParameterGroups.html>+module Network.AWS.Redshift.DescribeClusterParameterGroups+    (+    -- * Request+      DescribeClusterParameterGroups+    -- ** Request constructor+    , describeClusterParameterGroups+    -- ** Request lenses+    , dcpgMarker+    , dcpgMaxRecords+    , dcpgParameterGroupName+    , dcpgTagKeys+    , dcpgTagValues++    -- * Response+    , DescribeClusterParameterGroupsResponse+    -- ** Response constructor+    , describeClusterParameterGroupsResponse+    -- ** Response lenses+    , dcpgrMarker+    , dcpgrParameterGroups+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeClusterParameterGroups = DescribeClusterParameterGroups+    { _dcpgMarker             :: Maybe Text+    , _dcpgMaxRecords         :: Maybe Int+    , _dcpgParameterGroupName :: Maybe Text+    , _dcpgTagKeys            :: List "TagKey" Text+    , _dcpgTagValues          :: List "TagValue" Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeClusterParameterGroups' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcpgMarker' @::@ 'Maybe' 'Text'+--+-- * 'dcpgMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'dcpgParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'dcpgTagKeys' @::@ ['Text']+--+-- * 'dcpgTagValues' @::@ ['Text']+--+describeClusterParameterGroups :: DescribeClusterParameterGroups+describeClusterParameterGroups = DescribeClusterParameterGroups+    { _dcpgParameterGroupName = Nothing+    , _dcpgMaxRecords         = Nothing+    , _dcpgMarker             = Nothing+    , _dcpgTagKeys            = mempty+    , _dcpgTagValues          = mempty+    }++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeClusterParameterGroups+-- request exceed the value specified in MaxRecords, AWS returns a value in+-- the Marker field of the response. You can retrieve the next set of+-- response records by providing the returned marker value in the Marker+-- parameter and retrying the request.+dcpgMarker :: Lens' DescribeClusterParameterGroups (Maybe Text)+dcpgMarker = lens _dcpgMarker (\s a -> s { _dcpgMarker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+dcpgMaxRecords :: Lens' DescribeClusterParameterGroups (Maybe Int)+dcpgMaxRecords = lens _dcpgMaxRecords (\s a -> s { _dcpgMaxRecords = a })++-- | The name of a specific parameter group for which to return details. By+-- default, details about all parameter groups and the default parameter+-- group are returned.+dcpgParameterGroupName :: Lens' DescribeClusterParameterGroups (Maybe Text)+dcpgParameterGroupName =+    lens _dcpgParameterGroupName (\s a -> s { _dcpgParameterGroupName = a })++-- | A tag key or keys for which you want to return all matching cluster+-- parameter groups that are associated with the specified key or keys. For+-- example, suppose that you have parameter groups that are tagged with keys+-- called owner and environment. If you specify both of these tag keys in+-- the request, Amazon Redshift returns a response with the parameter groups+-- that have either or both of these tag keys associated with them.+dcpgTagKeys :: Lens' DescribeClusterParameterGroups [Text]+dcpgTagKeys = lens _dcpgTagKeys (\s a -> s { _dcpgTagKeys = a }) . _List++-- | A tag value or values for which you want to return all matching cluster+-- parameter groups that are associated with the specified tag value or+-- values. For example, suppose that you have parameter groups that are+-- tagged with values called admin and test. If you specify both of these+-- tag values in the request, Amazon Redshift returns a response with the+-- parameter groups that have either or both of these tag values associated+-- with them.+dcpgTagValues :: Lens' DescribeClusterParameterGroups [Text]+dcpgTagValues = lens _dcpgTagValues (\s a -> s { _dcpgTagValues = a }) . _List++data DescribeClusterParameterGroupsResponse = DescribeClusterParameterGroupsResponse+    { _dcpgrMarker          :: Maybe Text+    , _dcpgrParameterGroups :: List "ClusterParameterGroup" ClusterParameterGroup+    } deriving (Eq, Show)++-- | 'DescribeClusterParameterGroupsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcpgrMarker' @::@ 'Maybe' 'Text'+--+-- * 'dcpgrParameterGroups' @::@ ['ClusterParameterGroup']+--+describeClusterParameterGroupsResponse :: DescribeClusterParameterGroupsResponse+describeClusterParameterGroupsResponse = DescribeClusterParameterGroupsResponse+    { _dcpgrMarker          = Nothing+    , _dcpgrParameterGroups = mempty+    }++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+dcpgrMarker :: Lens' DescribeClusterParameterGroupsResponse (Maybe Text)+dcpgrMarker = lens _dcpgrMarker (\s a -> s { _dcpgrMarker = a })++-- | A list of ClusterParameterGroup instances. Each instance describes one+-- cluster parameter group.+dcpgrParameterGroups :: Lens' DescribeClusterParameterGroupsResponse [ClusterParameterGroup]+dcpgrParameterGroups =+    lens _dcpgrParameterGroups (\s a -> s { _dcpgrParameterGroups = a })+        . _List++instance ToPath DescribeClusterParameterGroups where+    toPath = const "/"++instance ToQuery DescribeClusterParameterGroups where+    toQuery DescribeClusterParameterGroups{..} = mconcat+        [ "Marker"             =? _dcpgMarker+        , "MaxRecords"         =? _dcpgMaxRecords+        , "ParameterGroupName" =? _dcpgParameterGroupName+        , "TagKeys"            =? _dcpgTagKeys+        , "TagValues"          =? _dcpgTagValues+        ]++instance ToHeaders DescribeClusterParameterGroups++instance AWSRequest DescribeClusterParameterGroups where+    type Sv DescribeClusterParameterGroups = Redshift+    type Rs DescribeClusterParameterGroups = DescribeClusterParameterGroupsResponse++    request  = post "DescribeClusterParameterGroups"+    response = xmlResponse++instance FromXML DescribeClusterParameterGroupsResponse where+    parseXML = withElement "DescribeClusterParameterGroupsResult" $ \x -> DescribeClusterParameterGroupsResponse+        <$> x .@? "Marker"+        <*> x .@  "ParameterGroups"++instance AWSPager DescribeClusterParameterGroups where+    page rq rs+        | stop (rq ^. dcpgMarker) = Nothing+        | otherwise = (\x -> rq & dcpgMarker ?~ x)+            <$> (rs ^. dcpgrMarker)
+ gen/Network/AWS/Redshift/DescribeClusterParameters.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.Redshift.DescribeClusterParameters+-- 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)++-- | Returns a detailed list of parameters contained within the specified Amazon+-- Redshift parameter group. For each parameter the response includes+-- information such as parameter name, description, data type, value, whether+-- the parameter value is modifiable, and so on. You can specify source filter+-- to retrieve parameters of only specific type. For example, to retrieve+-- parameters that were modified by a user action such as from+-- ModifyClusterParameterGroup, you can specify source equal to user. For more+-- information about managing parameter groups, go to Amazon Redshift+-- Parameter Groups in the Amazon Redshift Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusterParameters.html>+module Network.AWS.Redshift.DescribeClusterParameters+    (+    -- * Request+      DescribeClusterParameters+    -- ** Request constructor+    , describeClusterParameters+    -- ** Request lenses+    , dcp1Marker+    , dcp1MaxRecords+    , dcp1ParameterGroupName+    , dcp1Source++    -- * Response+    , DescribeClusterParametersResponse+    -- ** Response constructor+    , describeClusterParametersResponse+    -- ** Response lenses+    , dcprMarker+    , dcprParameters+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeClusterParameters = DescribeClusterParameters+    { _dcp1Marker             :: Maybe Text+    , _dcp1MaxRecords         :: Maybe Int+    , _dcp1ParameterGroupName :: Text+    , _dcp1Source             :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeClusterParameters' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcp1Marker' @::@ 'Maybe' 'Text'+--+-- * 'dcp1MaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'dcp1ParameterGroupName' @::@ 'Text'+--+-- * 'dcp1Source' @::@ 'Maybe' 'Text'+--+describeClusterParameters :: Text -- ^ 'dcp1ParameterGroupName'+                          -> DescribeClusterParameters+describeClusterParameters p1 = DescribeClusterParameters+    { _dcp1ParameterGroupName = p1+    , _dcp1Source             = Nothing+    , _dcp1MaxRecords         = Nothing+    , _dcp1Marker             = Nothing+    }++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeClusterParameters+-- request exceed the value specified in MaxRecords, AWS returns a value in+-- the Marker field of the response. You can retrieve the next set of+-- response records by providing the returned marker value in the Marker+-- parameter and retrying the request.+dcp1Marker :: Lens' DescribeClusterParameters (Maybe Text)+dcp1Marker = lens _dcp1Marker (\s a -> s { _dcp1Marker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+dcp1MaxRecords :: Lens' DescribeClusterParameters (Maybe Int)+dcp1MaxRecords = lens _dcp1MaxRecords (\s a -> s { _dcp1MaxRecords = a })++-- | The name of a cluster parameter group for which to return details.+dcp1ParameterGroupName :: Lens' DescribeClusterParameters Text+dcp1ParameterGroupName =+    lens _dcp1ParameterGroupName (\s a -> s { _dcp1ParameterGroupName = a })++-- | The parameter types to return. Specify user to show parameters that are+-- different form the default. Similarly, specify engine-default to show+-- parameters that are the same as the default parameter group. Default: All+-- parameter types returned. Valid Values: user | engine-default.+dcp1Source :: Lens' DescribeClusterParameters (Maybe Text)+dcp1Source = lens _dcp1Source (\s a -> s { _dcp1Source = a })++data DescribeClusterParametersResponse = DescribeClusterParametersResponse+    { _dcprMarker     :: Maybe Text+    , _dcprParameters :: List "Parameter" Parameter+    } deriving (Eq, Show)++-- | 'DescribeClusterParametersResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcprMarker' @::@ 'Maybe' 'Text'+--+-- * 'dcprParameters' @::@ ['Parameter']+--+describeClusterParametersResponse :: DescribeClusterParametersResponse+describeClusterParametersResponse = DescribeClusterParametersResponse+    { _dcprParameters = mempty+    , _dcprMarker     = Nothing+    }++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+dcprMarker :: Lens' DescribeClusterParametersResponse (Maybe Text)+dcprMarker = lens _dcprMarker (\s a -> s { _dcprMarker = a })++-- | A list of Parameter instances. Each instance lists the parameters of one+-- cluster parameter group.+dcprParameters :: Lens' DescribeClusterParametersResponse [Parameter]+dcprParameters = lens _dcprParameters (\s a -> s { _dcprParameters = a }) . _List++instance ToPath DescribeClusterParameters where+    toPath = const "/"++instance ToQuery DescribeClusterParameters where+    toQuery DescribeClusterParameters{..} = mconcat+        [ "Marker"             =? _dcp1Marker+        , "MaxRecords"         =? _dcp1MaxRecords+        , "ParameterGroupName" =? _dcp1ParameterGroupName+        , "Source"             =? _dcp1Source+        ]++instance ToHeaders DescribeClusterParameters++instance AWSRequest DescribeClusterParameters where+    type Sv DescribeClusterParameters = Redshift+    type Rs DescribeClusterParameters = DescribeClusterParametersResponse++    request  = post "DescribeClusterParameters"+    response = xmlResponse++instance FromXML DescribeClusterParametersResponse where+    parseXML = withElement "DescribeClusterParametersResult" $ \x -> DescribeClusterParametersResponse+        <$> x .@? "Marker"+        <*> x .@  "Parameters"++instance AWSPager DescribeClusterParameters where+    page rq rs+        | stop (rq ^. dcp1Marker) = Nothing+        | otherwise = (\x -> rq & dcp1Marker ?~ x)+            <$> (rs ^. dcprMarker)
+ gen/Network/AWS/Redshift/DescribeClusterSecurityGroups.hs view
@@ -0,0 +1,207 @@+{-# 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.Redshift.DescribeClusterSecurityGroups+-- 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)++-- | Returns information about Amazon Redshift security groups. If the name of a+-- security group is specified, the response will contain only information+-- about only that security group. For information about managing security+-- groups, go to Amazon Redshift Cluster Security Groups in the Amazon+-- Redshift Cluster Management Guide. If you specify both tag keys and tag+-- values in the same request, Amazon Redshift returns all security groups+-- that match any combination of the specified keys and values. For example,+-- if you have owner and environment for tag keys, and admin and test for tag+-- values, all security groups that have any combination of those values are+-- returned. If both tag keys and values are omitted from the request,+-- security groups are returned regardless of whether they have tag keys or+-- values associated with them.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusterSecurityGroups.html>+module Network.AWS.Redshift.DescribeClusterSecurityGroups+    (+    -- * Request+      DescribeClusterSecurityGroups+    -- ** Request constructor+    , describeClusterSecurityGroups+    -- ** Request lenses+    , dcsgClusterSecurityGroupName+    , dcsgMarker+    , dcsgMaxRecords+    , dcsgTagKeys+    , dcsgTagValues++    -- * Response+    , DescribeClusterSecurityGroupsResponse+    -- ** Response constructor+    , describeClusterSecurityGroupsResponse+    -- ** Response lenses+    , dcsgr1ClusterSecurityGroups+    , dcsgr1Marker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeClusterSecurityGroups = DescribeClusterSecurityGroups+    { _dcsgClusterSecurityGroupName :: Maybe Text+    , _dcsgMarker                   :: Maybe Text+    , _dcsgMaxRecords               :: Maybe Int+    , _dcsgTagKeys                  :: List "TagKey" Text+    , _dcsgTagValues                :: List "TagValue" Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeClusterSecurityGroups' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsgClusterSecurityGroupName' @::@ 'Maybe' 'Text'+--+-- * 'dcsgMarker' @::@ 'Maybe' 'Text'+--+-- * 'dcsgMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'dcsgTagKeys' @::@ ['Text']+--+-- * 'dcsgTagValues' @::@ ['Text']+--+describeClusterSecurityGroups :: DescribeClusterSecurityGroups+describeClusterSecurityGroups = DescribeClusterSecurityGroups+    { _dcsgClusterSecurityGroupName = Nothing+    , _dcsgMaxRecords               = Nothing+    , _dcsgMarker                   = Nothing+    , _dcsgTagKeys                  = mempty+    , _dcsgTagValues                = mempty+    }++-- | The name of a cluster security group for which you are requesting+-- details. You can specify either the Marker parameter or a+-- ClusterSecurityGroupName parameter, but not both. Example:+-- securitygroup1.+dcsgClusterSecurityGroupName :: Lens' DescribeClusterSecurityGroups (Maybe Text)+dcsgClusterSecurityGroupName =+    lens _dcsgClusterSecurityGroupName+        (\s a -> s { _dcsgClusterSecurityGroupName = a })++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeClusterSecurityGroups+-- request exceed the value specified in MaxRecords, AWS returns a value in+-- the Marker field of the response. You can retrieve the next set of+-- response records by providing the returned marker value in the Marker+-- parameter and retrying the request. Constraints: You can specify either+-- the ClusterSecurityGroupName parameter or the Marker parameter, but not+-- both.+dcsgMarker :: Lens' DescribeClusterSecurityGroups (Maybe Text)+dcsgMarker = lens _dcsgMarker (\s a -> s { _dcsgMarker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+dcsgMaxRecords :: Lens' DescribeClusterSecurityGroups (Maybe Int)+dcsgMaxRecords = lens _dcsgMaxRecords (\s a -> s { _dcsgMaxRecords = a })++-- | A tag key or keys for which you want to return all matching cluster+-- security groups that are associated with the specified key or keys. For+-- example, suppose that you have security groups that are tagged with keys+-- called owner and environment. If you specify both of these tag keys in+-- the request, Amazon Redshift returns a response with the security groups+-- that have either or both of these tag keys associated with them.+dcsgTagKeys :: Lens' DescribeClusterSecurityGroups [Text]+dcsgTagKeys = lens _dcsgTagKeys (\s a -> s { _dcsgTagKeys = a }) . _List++-- | A tag value or values for which you want to return all matching cluster+-- security groups that are associated with the specified tag value or+-- values. For example, suppose that you have security groups that are+-- tagged with values called admin and test. If you specify both of these+-- tag values in the request, Amazon Redshift returns a response with the+-- security groups that have either or both of these tag values associated+-- with them.+dcsgTagValues :: Lens' DescribeClusterSecurityGroups [Text]+dcsgTagValues = lens _dcsgTagValues (\s a -> s { _dcsgTagValues = a }) . _List++data DescribeClusterSecurityGroupsResponse = DescribeClusterSecurityGroupsResponse+    { _dcsgr1ClusterSecurityGroups :: List "ClusterSecurityGroup" ClusterSecurityGroup+    , _dcsgr1Marker                :: Maybe Text+    } deriving (Eq, Show)++-- | 'DescribeClusterSecurityGroupsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsgr1ClusterSecurityGroups' @::@ ['ClusterSecurityGroup']+--+-- * 'dcsgr1Marker' @::@ 'Maybe' 'Text'+--+describeClusterSecurityGroupsResponse :: DescribeClusterSecurityGroupsResponse+describeClusterSecurityGroupsResponse = DescribeClusterSecurityGroupsResponse+    { _dcsgr1Marker                = Nothing+    , _dcsgr1ClusterSecurityGroups = mempty+    }++-- | A list of ClusterSecurityGroup instances.+dcsgr1ClusterSecurityGroups :: Lens' DescribeClusterSecurityGroupsResponse [ClusterSecurityGroup]+dcsgr1ClusterSecurityGroups =+    lens _dcsgr1ClusterSecurityGroups+        (\s a -> s { _dcsgr1ClusterSecurityGroups = a })+            . _List++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+dcsgr1Marker :: Lens' DescribeClusterSecurityGroupsResponse (Maybe Text)+dcsgr1Marker = lens _dcsgr1Marker (\s a -> s { _dcsgr1Marker = a })++instance ToPath DescribeClusterSecurityGroups where+    toPath = const "/"++instance ToQuery DescribeClusterSecurityGroups where+    toQuery DescribeClusterSecurityGroups{..} = mconcat+        [ "ClusterSecurityGroupName" =? _dcsgClusterSecurityGroupName+        , "Marker"                   =? _dcsgMarker+        , "MaxRecords"               =? _dcsgMaxRecords+        , "TagKeys"                  =? _dcsgTagKeys+        , "TagValues"                =? _dcsgTagValues+        ]++instance ToHeaders DescribeClusterSecurityGroups++instance AWSRequest DescribeClusterSecurityGroups where+    type Sv DescribeClusterSecurityGroups = Redshift+    type Rs DescribeClusterSecurityGroups = DescribeClusterSecurityGroupsResponse++    request  = post "DescribeClusterSecurityGroups"+    response = xmlResponse++instance FromXML DescribeClusterSecurityGroupsResponse where+    parseXML = withElement "DescribeClusterSecurityGroupsResult" $ \x -> DescribeClusterSecurityGroupsResponse+        <$> x .@  "ClusterSecurityGroups"+        <*> x .@? "Marker"++instance AWSPager DescribeClusterSecurityGroups where+    page rq rs+        | stop (rq ^. dcsgMarker) = Nothing+        | otherwise = (\x -> rq & dcsgMarker ?~ x)+            <$> (rs ^. dcsgr1Marker)
+ gen/Network/AWS/Redshift/DescribeClusterSnapshots.hs view
@@ -0,0 +1,262 @@+{-# 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.Redshift.DescribeClusterSnapshots+-- 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)++-- | Returns one or more snapshot objects, which contain metadata about your+-- cluster snapshots. By default, this operation returns information about all+-- snapshots of all clusters that are owned by you AWS customer account. No+-- information is returned for snapshots owned by inactive AWS customer+-- accounts. If you specify both tag keys and tag values in the same request,+-- Amazon Redshift returns all snapshots that match any combination of the+-- specified keys and values. For example, if you have owner and environment+-- for tag keys, and admin and test for tag values, all snapshots that have+-- any combination of those values are returned. Only snapshots that you own+-- are returned in the response; shared snapshots are not returned with the+-- tag key and tag value request parameters. If both tag keys and values are+-- omitted from the request, snapshots are returned regardless of whether they+-- have tag keys or values associated with them.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusterSnapshots.html>+module Network.AWS.Redshift.DescribeClusterSnapshots+    (+    -- * Request+      DescribeClusterSnapshots+    -- ** Request constructor+    , describeClusterSnapshots+    -- ** Request lenses+    , dcs1ClusterIdentifier+    , dcs1EndTime+    , dcs1Marker+    , dcs1MaxRecords+    , dcs1OwnerAccount+    , dcs1SnapshotIdentifier+    , dcs1SnapshotType+    , dcs1StartTime+    , dcs1TagKeys+    , dcs1TagValues++    -- * Response+    , DescribeClusterSnapshotsResponse+    -- ** Response constructor+    , describeClusterSnapshotsResponse+    -- ** Response lenses+    , dcsrMarker+    , dcsrSnapshots+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeClusterSnapshots = DescribeClusterSnapshots+    { _dcs1ClusterIdentifier  :: Maybe Text+    , _dcs1EndTime            :: Maybe RFC822+    , _dcs1Marker             :: Maybe Text+    , _dcs1MaxRecords         :: Maybe Int+    , _dcs1OwnerAccount       :: Maybe Text+    , _dcs1SnapshotIdentifier :: Maybe Text+    , _dcs1SnapshotType       :: Maybe Text+    , _dcs1StartTime          :: Maybe RFC822+    , _dcs1TagKeys            :: List "TagKey" Text+    , _dcs1TagValues          :: List "TagValue" Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeClusterSnapshots' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcs1ClusterIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'dcs1EndTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'dcs1Marker' @::@ 'Maybe' 'Text'+--+-- * 'dcs1MaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'dcs1OwnerAccount' @::@ 'Maybe' 'Text'+--+-- * 'dcs1SnapshotIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'dcs1SnapshotType' @::@ 'Maybe' 'Text'+--+-- * 'dcs1StartTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'dcs1TagKeys' @::@ ['Text']+--+-- * 'dcs1TagValues' @::@ ['Text']+--+describeClusterSnapshots :: DescribeClusterSnapshots+describeClusterSnapshots = DescribeClusterSnapshots+    { _dcs1ClusterIdentifier  = Nothing+    , _dcs1SnapshotIdentifier = Nothing+    , _dcs1SnapshotType       = Nothing+    , _dcs1StartTime          = Nothing+    , _dcs1EndTime            = Nothing+    , _dcs1MaxRecords         = Nothing+    , _dcs1Marker             = Nothing+    , _dcs1OwnerAccount       = Nothing+    , _dcs1TagKeys            = mempty+    , _dcs1TagValues          = mempty+    }++-- | The identifier of the cluster for which information about snapshots is+-- requested.+dcs1ClusterIdentifier :: Lens' DescribeClusterSnapshots (Maybe Text)+dcs1ClusterIdentifier =+    lens _dcs1ClusterIdentifier (\s a -> s { _dcs1ClusterIdentifier = a })++-- | A time value that requests only snapshots created at or before the+-- specified time. The time value is specified in ISO 8601 format. For more+-- information about ISO 8601, go to the ISO8601 Wikipedia page. Example:+-- 2012-07-16T18:00:00Z.+dcs1EndTime :: Lens' DescribeClusterSnapshots (Maybe UTCTime)+dcs1EndTime = lens _dcs1EndTime (\s a -> s { _dcs1EndTime = a }) . mapping _Time++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeClusterSnapshots+-- request exceed the value specified in MaxRecords, AWS returns a value in+-- the Marker field of the response. You can retrieve the next set of+-- response records by providing the returned marker value in the Marker+-- parameter and retrying the request.+dcs1Marker :: Lens' DescribeClusterSnapshots (Maybe Text)+dcs1Marker = lens _dcs1Marker (\s a -> s { _dcs1Marker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+dcs1MaxRecords :: Lens' DescribeClusterSnapshots (Maybe Int)+dcs1MaxRecords = lens _dcs1MaxRecords (\s a -> s { _dcs1MaxRecords = a })++-- | The AWS customer account used to create or copy the snapshot. Use this+-- field to filter the results to snapshots owned by a particular account.+-- To describe snapshots you own, either specify your AWS customer account,+-- or do not specify the parameter.+dcs1OwnerAccount :: Lens' DescribeClusterSnapshots (Maybe Text)+dcs1OwnerAccount = lens _dcs1OwnerAccount (\s a -> s { _dcs1OwnerAccount = a })++-- | The snapshot identifier of the snapshot about which to return+-- information.+dcs1SnapshotIdentifier :: Lens' DescribeClusterSnapshots (Maybe Text)+dcs1SnapshotIdentifier =+    lens _dcs1SnapshotIdentifier (\s a -> s { _dcs1SnapshotIdentifier = a })++-- | The type of snapshots for which you are requesting information. By+-- default, snapshots of all types are returned. Valid Values: automated |+-- manual.+dcs1SnapshotType :: Lens' DescribeClusterSnapshots (Maybe Text)+dcs1SnapshotType = lens _dcs1SnapshotType (\s a -> s { _dcs1SnapshotType = a })++-- | A value that requests only snapshots created at or after the specified+-- time. The time value is specified in ISO 8601 format. For more+-- information about ISO 8601, go to the ISO8601 Wikipedia page. Example:+-- 2012-07-16T18:00:00Z.+dcs1StartTime :: Lens' DescribeClusterSnapshots (Maybe UTCTime)+dcs1StartTime = lens _dcs1StartTime (\s a -> s { _dcs1StartTime = a }) . mapping _Time++-- | A tag key or keys for which you want to return all matching cluster+-- snapshots that are associated with the specified key or keys. For+-- example, suppose that you have snapshots that are tagged with keys called+-- owner and environment. If you specify both of these tag keys in the+-- request, Amazon Redshift returns a response with the snapshots that have+-- either or both of these tag keys associated with them.+dcs1TagKeys :: Lens' DescribeClusterSnapshots [Text]+dcs1TagKeys = lens _dcs1TagKeys (\s a -> s { _dcs1TagKeys = a }) . _List++-- | A tag value or values for which you want to return all matching cluster+-- snapshots that are associated with the specified tag value or values. For+-- example, suppose that you have snapshots that are tagged with values+-- called admin and test. If you specify both of these tag values in the+-- request, Amazon Redshift returns a response with the snapshots that have+-- either or both of these tag values associated with them.+dcs1TagValues :: Lens' DescribeClusterSnapshots [Text]+dcs1TagValues = lens _dcs1TagValues (\s a -> s { _dcs1TagValues = a }) . _List++data DescribeClusterSnapshotsResponse = DescribeClusterSnapshotsResponse+    { _dcsrMarker    :: Maybe Text+    , _dcsrSnapshots :: List "Snapshot" Snapshot+    } deriving (Eq, Show)++-- | 'DescribeClusterSnapshotsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsrMarker' @::@ 'Maybe' 'Text'+--+-- * 'dcsrSnapshots' @::@ ['Snapshot']+--+describeClusterSnapshotsResponse :: DescribeClusterSnapshotsResponse+describeClusterSnapshotsResponse = DescribeClusterSnapshotsResponse+    { _dcsrMarker    = Nothing+    , _dcsrSnapshots = mempty+    }++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+dcsrMarker :: Lens' DescribeClusterSnapshotsResponse (Maybe Text)+dcsrMarker = lens _dcsrMarker (\s a -> s { _dcsrMarker = a })++-- | A list of Snapshot instances.+dcsrSnapshots :: Lens' DescribeClusterSnapshotsResponse [Snapshot]+dcsrSnapshots = lens _dcsrSnapshots (\s a -> s { _dcsrSnapshots = a }) . _List++instance ToPath DescribeClusterSnapshots where+    toPath = const "/"++instance ToQuery DescribeClusterSnapshots where+    toQuery DescribeClusterSnapshots{..} = mconcat+        [ "ClusterIdentifier"  =? _dcs1ClusterIdentifier+        , "EndTime"            =? _dcs1EndTime+        , "Marker"             =? _dcs1Marker+        , "MaxRecords"         =? _dcs1MaxRecords+        , "OwnerAccount"       =? _dcs1OwnerAccount+        , "SnapshotIdentifier" =? _dcs1SnapshotIdentifier+        , "SnapshotType"       =? _dcs1SnapshotType+        , "StartTime"          =? _dcs1StartTime+        , "TagKeys"            =? _dcs1TagKeys+        , "TagValues"          =? _dcs1TagValues+        ]++instance ToHeaders DescribeClusterSnapshots++instance AWSRequest DescribeClusterSnapshots where+    type Sv DescribeClusterSnapshots = Redshift+    type Rs DescribeClusterSnapshots = DescribeClusterSnapshotsResponse++    request  = post "DescribeClusterSnapshots"+    response = xmlResponse++instance FromXML DescribeClusterSnapshotsResponse where+    parseXML = withElement "DescribeClusterSnapshotsResult" $ \x -> DescribeClusterSnapshotsResponse+        <$> x .@? "Marker"+        <*> x .@  "Snapshots"++instance AWSPager DescribeClusterSnapshots where+    page rq rs+        | stop (rq ^. dcs1Marker) = Nothing+        | otherwise = (\x -> rq & dcs1Marker ?~ x)+            <$> (rs ^. dcsrMarker)
+ gen/Network/AWS/Redshift/DescribeClusterSubnetGroups.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.Redshift.DescribeClusterSubnetGroups+-- 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)++-- | Returns one or more cluster subnet group objects, which contain metadata+-- about your cluster subnet groups. By default, this operation returns+-- information about all cluster subnet groups that are defined in you AWS+-- account. If you specify both tag keys and tag values in the same request,+-- Amazon Redshift returns all subnet groups that match any combination of the+-- specified keys and values. For example, if you have owner and environment+-- for tag keys, and admin and test for tag values, all subnet groups that+-- have any combination of those values are returned. If both tag keys and+-- values are omitted from the request, subnet groups are returned regardless+-- of whether they have tag keys or values associated with them.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusterSubnetGroups.html>+module Network.AWS.Redshift.DescribeClusterSubnetGroups+    (+    -- * Request+      DescribeClusterSubnetGroups+    -- ** Request constructor+    , describeClusterSubnetGroups+    -- ** Request lenses+    , dcsg1ClusterSubnetGroupName+    , dcsg1Marker+    , dcsg1MaxRecords+    , dcsg1TagKeys+    , dcsg1TagValues++    -- * Response+    , DescribeClusterSubnetGroupsResponse+    -- ** Response constructor+    , describeClusterSubnetGroupsResponse+    -- ** Response lenses+    , dcsgrClusterSubnetGroups+    , dcsgrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeClusterSubnetGroups = DescribeClusterSubnetGroups+    { _dcsg1ClusterSubnetGroupName :: Maybe Text+    , _dcsg1Marker                 :: Maybe Text+    , _dcsg1MaxRecords             :: Maybe Int+    , _dcsg1TagKeys                :: List "TagKey" Text+    , _dcsg1TagValues              :: List "TagValue" Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeClusterSubnetGroups' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsg1ClusterSubnetGroupName' @::@ 'Maybe' 'Text'+--+-- * 'dcsg1Marker' @::@ 'Maybe' 'Text'+--+-- * 'dcsg1MaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'dcsg1TagKeys' @::@ ['Text']+--+-- * 'dcsg1TagValues' @::@ ['Text']+--+describeClusterSubnetGroups :: DescribeClusterSubnetGroups+describeClusterSubnetGroups = DescribeClusterSubnetGroups+    { _dcsg1ClusterSubnetGroupName = Nothing+    , _dcsg1MaxRecords             = Nothing+    , _dcsg1Marker                 = Nothing+    , _dcsg1TagKeys                = mempty+    , _dcsg1TagValues              = mempty+    }++-- | The name of the cluster subnet group for which information is requested.+dcsg1ClusterSubnetGroupName :: Lens' DescribeClusterSubnetGroups (Maybe Text)+dcsg1ClusterSubnetGroupName =+    lens _dcsg1ClusterSubnetGroupName+        (\s a -> s { _dcsg1ClusterSubnetGroupName = a })++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeClusterSubnetGroups+-- request exceed the value specified in MaxRecords, AWS returns a value in+-- the Marker field of the response. You can retrieve the next set of+-- response records by providing the returned marker value in the Marker+-- parameter and retrying the request.+dcsg1Marker :: Lens' DescribeClusterSubnetGroups (Maybe Text)+dcsg1Marker = lens _dcsg1Marker (\s a -> s { _dcsg1Marker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+dcsg1MaxRecords :: Lens' DescribeClusterSubnetGroups (Maybe Int)+dcsg1MaxRecords = lens _dcsg1MaxRecords (\s a -> s { _dcsg1MaxRecords = a })++-- | A tag key or keys for which you want to return all matching cluster+-- subnet groups that are associated with the specified key or keys. For+-- example, suppose that you have subnet groups that are tagged with keys+-- called owner and environment. If you specify both of these tag keys in+-- the request, Amazon Redshift returns a response with the subnet groups+-- that have either or both of these tag keys associated with them.+dcsg1TagKeys :: Lens' DescribeClusterSubnetGroups [Text]+dcsg1TagKeys = lens _dcsg1TagKeys (\s a -> s { _dcsg1TagKeys = a }) . _List++-- | A tag value or values for which you want to return all matching cluster+-- subnet groups that are associated with the specified tag value or values.+-- For example, suppose that you have subnet groups that are tagged with+-- values called admin and test. If you specify both of these tag values in+-- the request, Amazon Redshift returns a response with the subnet groups+-- that have either or both of these tag values associated with them.+dcsg1TagValues :: Lens' DescribeClusterSubnetGroups [Text]+dcsg1TagValues = lens _dcsg1TagValues (\s a -> s { _dcsg1TagValues = a }) . _List++data DescribeClusterSubnetGroupsResponse = DescribeClusterSubnetGroupsResponse+    { _dcsgrClusterSubnetGroups :: List "ClusterSubnetGroup" ClusterSubnetGroup+    , _dcsgrMarker              :: Maybe Text+    } deriving (Eq, Show)++-- | 'DescribeClusterSubnetGroupsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcsgrClusterSubnetGroups' @::@ ['ClusterSubnetGroup']+--+-- * 'dcsgrMarker' @::@ 'Maybe' 'Text'+--+describeClusterSubnetGroupsResponse :: DescribeClusterSubnetGroupsResponse+describeClusterSubnetGroupsResponse = DescribeClusterSubnetGroupsResponse+    { _dcsgrMarker              = Nothing+    , _dcsgrClusterSubnetGroups = mempty+    }++-- | A list of ClusterSubnetGroup instances.+dcsgrClusterSubnetGroups :: Lens' DescribeClusterSubnetGroupsResponse [ClusterSubnetGroup]+dcsgrClusterSubnetGroups =+    lens _dcsgrClusterSubnetGroups+        (\s a -> s { _dcsgrClusterSubnetGroups = a })+            . _List++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+dcsgrMarker :: Lens' DescribeClusterSubnetGroupsResponse (Maybe Text)+dcsgrMarker = lens _dcsgrMarker (\s a -> s { _dcsgrMarker = a })++instance ToPath DescribeClusterSubnetGroups where+    toPath = const "/"++instance ToQuery DescribeClusterSubnetGroups where+    toQuery DescribeClusterSubnetGroups{..} = mconcat+        [ "ClusterSubnetGroupName" =? _dcsg1ClusterSubnetGroupName+        , "Marker"                 =? _dcsg1Marker+        , "MaxRecords"             =? _dcsg1MaxRecords+        , "TagKeys"                =? _dcsg1TagKeys+        , "TagValues"              =? _dcsg1TagValues+        ]++instance ToHeaders DescribeClusterSubnetGroups++instance AWSRequest DescribeClusterSubnetGroups where+    type Sv DescribeClusterSubnetGroups = Redshift+    type Rs DescribeClusterSubnetGroups = DescribeClusterSubnetGroupsResponse++    request  = post "DescribeClusterSubnetGroups"+    response = xmlResponse++instance FromXML DescribeClusterSubnetGroupsResponse where+    parseXML = withElement "DescribeClusterSubnetGroupsResult" $ \x -> DescribeClusterSubnetGroupsResponse+        <$> x .@  "ClusterSubnetGroups"+        <*> x .@? "Marker"++instance AWSPager DescribeClusterSubnetGroups where+    page rq rs+        | stop (rq ^. dcsg1Marker) = Nothing+        | otherwise = (\x -> rq & dcsg1Marker ?~ x)+            <$> (rs ^. dcsgrMarker)
+ gen/Network/AWS/Redshift/DescribeClusterVersions.hs view
@@ -0,0 +1,177 @@+{-# 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.Redshift.DescribeClusterVersions+-- 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)++-- | Returns descriptions of the available Amazon Redshift cluster versions. You+-- can call this operation even before creating any clusters to learn more+-- about the Amazon Redshift versions. For more information about managing+-- clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster+-- Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusterVersions.html>+module Network.AWS.Redshift.DescribeClusterVersions+    (+    -- * Request+      DescribeClusterVersions+    -- ** Request constructor+    , describeClusterVersions+    -- ** Request lenses+    , dcvClusterParameterGroupFamily+    , dcvClusterVersion+    , dcvMarker+    , dcvMaxRecords++    -- * Response+    , DescribeClusterVersionsResponse+    -- ** Response constructor+    , describeClusterVersionsResponse+    -- ** Response lenses+    , dcvrClusterVersions+    , dcvrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeClusterVersions = DescribeClusterVersions+    { _dcvClusterParameterGroupFamily :: Maybe Text+    , _dcvClusterVersion              :: Maybe Text+    , _dcvMarker                      :: Maybe Text+    , _dcvMaxRecords                  :: Maybe Int+    } deriving (Eq, Ord, Show)++-- | 'DescribeClusterVersions' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcvClusterParameterGroupFamily' @::@ 'Maybe' 'Text'+--+-- * 'dcvClusterVersion' @::@ 'Maybe' 'Text'+--+-- * 'dcvMarker' @::@ 'Maybe' 'Text'+--+-- * 'dcvMaxRecords' @::@ 'Maybe' 'Int'+--+describeClusterVersions :: DescribeClusterVersions+describeClusterVersions = DescribeClusterVersions+    { _dcvClusterVersion              = Nothing+    , _dcvClusterParameterGroupFamily = Nothing+    , _dcvMaxRecords                  = Nothing+    , _dcvMarker                      = Nothing+    }++-- | The name of a specific cluster 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.+dcvClusterParameterGroupFamily :: Lens' DescribeClusterVersions (Maybe Text)+dcvClusterParameterGroupFamily =+    lens _dcvClusterParameterGroupFamily+        (\s a -> s { _dcvClusterParameterGroupFamily = a })++-- | The specific cluster version to return. Example: 1.0.+dcvClusterVersion :: Lens' DescribeClusterVersions (Maybe Text)+dcvClusterVersion =+    lens _dcvClusterVersion (\s a -> s { _dcvClusterVersion = a })++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeClusterVersions+-- request exceed the value specified in MaxRecords, AWS returns a value in+-- the Marker field of the response. You can retrieve the next set of+-- response records by providing the returned marker value in the Marker+-- parameter and retrying the request.+dcvMarker :: Lens' DescribeClusterVersions (Maybe Text)+dcvMarker = lens _dcvMarker (\s a -> s { _dcvMarker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+dcvMaxRecords :: Lens' DescribeClusterVersions (Maybe Int)+dcvMaxRecords = lens _dcvMaxRecords (\s a -> s { _dcvMaxRecords = a })++data DescribeClusterVersionsResponse = DescribeClusterVersionsResponse+    { _dcvrClusterVersions :: List "ClusterVersion" ClusterVersion+    , _dcvrMarker          :: Maybe Text+    } deriving (Eq, Show)++-- | 'DescribeClusterVersionsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcvrClusterVersions' @::@ ['ClusterVersion']+--+-- * 'dcvrMarker' @::@ 'Maybe' 'Text'+--+describeClusterVersionsResponse :: DescribeClusterVersionsResponse+describeClusterVersionsResponse = DescribeClusterVersionsResponse+    { _dcvrMarker          = Nothing+    , _dcvrClusterVersions = mempty+    }++-- | A list of Version elements.+dcvrClusterVersions :: Lens' DescribeClusterVersionsResponse [ClusterVersion]+dcvrClusterVersions =+    lens _dcvrClusterVersions (\s a -> s { _dcvrClusterVersions = a })+        . _List++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+dcvrMarker :: Lens' DescribeClusterVersionsResponse (Maybe Text)+dcvrMarker = lens _dcvrMarker (\s a -> s { _dcvrMarker = a })++instance ToPath DescribeClusterVersions where+    toPath = const "/"++instance ToQuery DescribeClusterVersions where+    toQuery DescribeClusterVersions{..} = mconcat+        [ "ClusterParameterGroupFamily" =? _dcvClusterParameterGroupFamily+        , "ClusterVersion"              =? _dcvClusterVersion+        , "Marker"                      =? _dcvMarker+        , "MaxRecords"                  =? _dcvMaxRecords+        ]++instance ToHeaders DescribeClusterVersions++instance AWSRequest DescribeClusterVersions where+    type Sv DescribeClusterVersions = Redshift+    type Rs DescribeClusterVersions = DescribeClusterVersionsResponse++    request  = post "DescribeClusterVersions"+    response = xmlResponse++instance FromXML DescribeClusterVersionsResponse where+    parseXML = withElement "DescribeClusterVersionsResult" $ \x -> DescribeClusterVersionsResponse+        <$> x .@  "ClusterVersions"+        <*> x .@? "Marker"++instance AWSPager DescribeClusterVersions where+    page rq rs+        | stop (rq ^. dcvMarker) = Nothing+        | otherwise = (\x -> rq & dcvMarker ?~ x)+            <$> (rs ^. dcvrMarker)
+ gen/Network/AWS/Redshift/DescribeClusters.hs view
@@ -0,0 +1,200 @@+{-# 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.Redshift.DescribeClusters+-- 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)++-- | Returns properties of provisioned clusters including general cluster+-- properties, cluster database properties, maintenance and backup properties,+-- and security and access properties. This operation supports pagination. For+-- more information about managing clusters, go to Amazon Redshift Clusters in+-- the Amazon Redshift Cluster Management Guide . If you specify both tag keys+-- and tag values in the same request, Amazon Redshift returns all clusters+-- that match any combination of the specified keys and values. For example,+-- if you have owner and environment for tag keys, and admin and test for tag+-- values, all clusters that have any combination of those values are+-- returned. If both tag keys and values are omitted from the request,+-- clusters are returned regardless of whether they have tag keys or values+-- associated with them.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusters.html>+module Network.AWS.Redshift.DescribeClusters+    (+    -- * Request+      DescribeClusters+    -- ** Request constructor+    , describeClusters+    -- ** Request lenses+    , dcClusterIdentifier+    , dcMarker+    , dcMaxRecords+    , dcTagKeys+    , dcTagValues++    -- * Response+    , DescribeClustersResponse+    -- ** Response constructor+    , describeClustersResponse+    -- ** Response lenses+    , dcrClusters+    , dcrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeClusters = DescribeClusters+    { _dcClusterIdentifier :: Maybe Text+    , _dcMarker            :: Maybe Text+    , _dcMaxRecords        :: Maybe Int+    , _dcTagKeys           :: List "TagKey" Text+    , _dcTagValues         :: List "TagValue" Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeClusters' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcClusterIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'dcMarker' @::@ 'Maybe' 'Text'+--+-- * 'dcMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'dcTagKeys' @::@ ['Text']+--+-- * 'dcTagValues' @::@ ['Text']+--+describeClusters :: DescribeClusters+describeClusters = DescribeClusters+    { _dcClusterIdentifier = Nothing+    , _dcMaxRecords        = Nothing+    , _dcMarker            = Nothing+    , _dcTagKeys           = mempty+    , _dcTagValues         = mempty+    }++-- | The unique identifier of a cluster whose properties you are requesting.+-- This parameter is case sensitive. The default is that all clusters+-- defined for an account are returned.+dcClusterIdentifier :: Lens' DescribeClusters (Maybe Text)+dcClusterIdentifier =+    lens _dcClusterIdentifier (\s a -> s { _dcClusterIdentifier = a })++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeClusters request+-- exceed the value specified in MaxRecords, AWS returns a value in the+-- Marker field of the response. You can retrieve the next set of response+-- records by providing the returned marker value in the Marker parameter+-- and retrying the request. Constraints: You can specify either the+-- ClusterIdentifier parameter or the Marker parameter, but not both.+dcMarker :: Lens' DescribeClusters (Maybe Text)+dcMarker = lens _dcMarker (\s a -> s { _dcMarker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+dcMaxRecords :: Lens' DescribeClusters (Maybe Int)+dcMaxRecords = lens _dcMaxRecords (\s a -> s { _dcMaxRecords = a })++-- | A tag key or keys for which you want to return all matching clusters that+-- are associated with the specified key or keys. For example, suppose that+-- you have clusters that are tagged with keys called owner and environment.+-- If you specify both of these tag keys in the request, Amazon Redshift+-- returns a response with the clusters that have either or both of these+-- tag keys associated with them.+dcTagKeys :: Lens' DescribeClusters [Text]+dcTagKeys = lens _dcTagKeys (\s a -> s { _dcTagKeys = a }) . _List++-- | A tag value or values for which you want to return all matching clusters+-- that are associated with the specified tag value or values. For example,+-- suppose that you have clusters that are tagged with values called admin+-- and test. If you specify both of these tag values in the request, Amazon+-- Redshift returns a response with the clusters that have either or both of+-- these tag values associated with them.+dcTagValues :: Lens' DescribeClusters [Text]+dcTagValues = lens _dcTagValues (\s a -> s { _dcTagValues = a }) . _List++data DescribeClustersResponse = DescribeClustersResponse+    { _dcrClusters :: List "Cluster" Cluster+    , _dcrMarker   :: Maybe Text+    } deriving (Eq, Show)++-- | 'DescribeClustersResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcrClusters' @::@ ['Cluster']+--+-- * 'dcrMarker' @::@ 'Maybe' 'Text'+--+describeClustersResponse :: DescribeClustersResponse+describeClustersResponse = DescribeClustersResponse+    { _dcrMarker   = Nothing+    , _dcrClusters = mempty+    }++-- | A list of Cluster objects, where each object describes one cluster.+dcrClusters :: Lens' DescribeClustersResponse [Cluster]+dcrClusters = lens _dcrClusters (\s a -> s { _dcrClusters = a }) . _List++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+dcrMarker :: Lens' DescribeClustersResponse (Maybe Text)+dcrMarker = lens _dcrMarker (\s a -> s { _dcrMarker = a })++instance ToPath DescribeClusters where+    toPath = const "/"++instance ToQuery DescribeClusters where+    toQuery DescribeClusters{..} = mconcat+        [ "ClusterIdentifier" =? _dcClusterIdentifier+        , "Marker"            =? _dcMarker+        , "MaxRecords"        =? _dcMaxRecords+        , "TagKeys"           =? _dcTagKeys+        , "TagValues"         =? _dcTagValues+        ]++instance ToHeaders DescribeClusters++instance AWSRequest DescribeClusters where+    type Sv DescribeClusters = Redshift+    type Rs DescribeClusters = DescribeClustersResponse++    request  = post "DescribeClusters"+    response = xmlResponse++instance FromXML DescribeClustersResponse where+    parseXML = withElement "DescribeClustersResult" $ \x -> DescribeClustersResponse+        <$> x .@  "Clusters"+        <*> x .@? "Marker"++instance AWSPager DescribeClusters where+    page rq rs+        | stop (rq ^. dcMarker) = Nothing+        | otherwise = (\x -> rq & dcMarker ?~ x)+            <$> (rs ^. dcrMarker)
+ gen/Network/AWS/Redshift/DescribeDefaultClusterParameters.hs view
@@ -0,0 +1,147 @@+{-# 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.Redshift.DescribeDefaultClusterParameters+-- 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)++-- | Returns a list of parameter settings for the specified parameter group+-- family. For more information about managing parameter groups, go to Amazon+-- Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeDefaultClusterParameters.html>+module Network.AWS.Redshift.DescribeDefaultClusterParameters+    (+    -- * Request+      DescribeDefaultClusterParameters+    -- ** Request constructor+    , describeDefaultClusterParameters+    -- ** Request lenses+    , ddcpMarker+    , ddcpMaxRecords+    , ddcpParameterGroupFamily++    -- * Response+    , DescribeDefaultClusterParametersResponse+    -- ** Response constructor+    , describeDefaultClusterParametersResponse+    -- ** Response lenses+    , ddcprDefaultClusterParameters+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeDefaultClusterParameters = DescribeDefaultClusterParameters+    { _ddcpMarker               :: Maybe Text+    , _ddcpMaxRecords           :: Maybe Int+    , _ddcpParameterGroupFamily :: Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeDefaultClusterParameters' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ddcpMarker' @::@ 'Maybe' 'Text'+--+-- * 'ddcpMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'ddcpParameterGroupFamily' @::@ 'Text'+--+describeDefaultClusterParameters :: Text -- ^ 'ddcpParameterGroupFamily'+                                 -> DescribeDefaultClusterParameters+describeDefaultClusterParameters p1 = DescribeDefaultClusterParameters+    { _ddcpParameterGroupFamily = p1+    , _ddcpMaxRecords           = Nothing+    , _ddcpMarker               = Nothing+    }++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a+-- DescribeDefaultClusterParameters request exceed the value specified in+-- MaxRecords, AWS returns a value in the Marker field of the response. You+-- can retrieve the next set of response records by providing the returned+-- marker value in the Marker parameter and retrying the request.+ddcpMarker :: Lens' DescribeDefaultClusterParameters (Maybe Text)+ddcpMarker = lens _ddcpMarker (\s a -> s { _ddcpMarker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+ddcpMaxRecords :: Lens' DescribeDefaultClusterParameters (Maybe Int)+ddcpMaxRecords = lens _ddcpMaxRecords (\s a -> s { _ddcpMaxRecords = a })++-- | The name of the cluster parameter group family.+ddcpParameterGroupFamily :: Lens' DescribeDefaultClusterParameters Text+ddcpParameterGroupFamily =+    lens _ddcpParameterGroupFamily+        (\s a -> s { _ddcpParameterGroupFamily = a })++newtype DescribeDefaultClusterParametersResponse = DescribeDefaultClusterParametersResponse+    { _ddcprDefaultClusterParameters :: DefaultClusterParameters+    } deriving (Eq, Show)++-- | 'DescribeDefaultClusterParametersResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ddcprDefaultClusterParameters' @::@ 'DefaultClusterParameters'+--+describeDefaultClusterParametersResponse :: DefaultClusterParameters -- ^ 'ddcprDefaultClusterParameters'+                                         -> DescribeDefaultClusterParametersResponse+describeDefaultClusterParametersResponse p1 = DescribeDefaultClusterParametersResponse+    { _ddcprDefaultClusterParameters = p1+    }++ddcprDefaultClusterParameters :: Lens' DescribeDefaultClusterParametersResponse DefaultClusterParameters+ddcprDefaultClusterParameters =+    lens _ddcprDefaultClusterParameters+        (\s a -> s { _ddcprDefaultClusterParameters = a })++instance ToPath DescribeDefaultClusterParameters where+    toPath = const "/"++instance ToQuery DescribeDefaultClusterParameters where+    toQuery DescribeDefaultClusterParameters{..} = mconcat+        [ "Marker"               =? _ddcpMarker+        , "MaxRecords"           =? _ddcpMaxRecords+        , "ParameterGroupFamily" =? _ddcpParameterGroupFamily+        ]++instance ToHeaders DescribeDefaultClusterParameters++instance AWSRequest DescribeDefaultClusterParameters where+    type Sv DescribeDefaultClusterParameters = Redshift+    type Rs DescribeDefaultClusterParameters = DescribeDefaultClusterParametersResponse++    request  = post "DescribeDefaultClusterParameters"+    response = xmlResponse++instance FromXML DescribeDefaultClusterParametersResponse where+    parseXML = withElement "DescribeDefaultClusterParametersResult" $ \x -> DescribeDefaultClusterParametersResponse+        <$> x .@  "DefaultClusterParameters"++instance AWSPager DescribeDefaultClusterParameters where+    page rq rs+        | stop (rq ^. ddcpMarker) = Nothing+        | otherwise = (\x -> rq & ddcpMarker ?~ x)+            <$> (rs ^. ddcprDefaultClusterParameters . dcpMarker)
+ gen/Network/AWS/Redshift/DescribeEventCategories.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.Redshift.DescribeEventCategories+-- 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)++-- | Displays a list of event categories for all event source types, or for a+-- specified source type. For a list of the event categories and source types,+-- go to Amazon Redshift Event Notifications.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeEventCategories.html>+module Network.AWS.Redshift.DescribeEventCategories+    (+    -- * Request+      DescribeEventCategories+    -- ** Request constructor+    , describeEventCategories+    -- ** Request lenses+    , decSourceType++    -- * Response+    , DescribeEventCategoriesResponse+    -- ** Response constructor+    , describeEventCategoriesResponse+    -- ** Response lenses+    , decrEventCategoriesMapList+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype DescribeEventCategories = DescribeEventCategories+    { _decSourceType :: Maybe Text+    } deriving (Eq, Ord, Show, Monoid)++-- | 'DescribeEventCategories' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'decSourceType' @::@ 'Maybe' 'Text'+--+describeEventCategories :: DescribeEventCategories+describeEventCategories = DescribeEventCategories+    { _decSourceType = Nothing+    }++-- | The source type, such as cluster or parameter group, to which the+-- described event categories apply. Valid values: cluster, snapshot,+-- parameter group, and security group.+decSourceType :: Lens' DescribeEventCategories (Maybe Text)+decSourceType = lens _decSourceType (\s a -> s { _decSourceType = a })++newtype DescribeEventCategoriesResponse = DescribeEventCategoriesResponse+    { _decrEventCategoriesMapList :: List "EventCategoriesMap" EventCategoriesMap+    } deriving (Eq, Show, Monoid, Semigroup)++instance GHC.Exts.IsList DescribeEventCategoriesResponse where+    type Item DescribeEventCategoriesResponse = EventCategoriesMap++    fromList = DescribeEventCategoriesResponse . GHC.Exts.fromList+    toList   = GHC.Exts.toList . _decrEventCategoriesMapList++-- | 'DescribeEventCategoriesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'decrEventCategoriesMapList' @::@ ['EventCategoriesMap']+--+describeEventCategoriesResponse :: DescribeEventCategoriesResponse+describeEventCategoriesResponse = DescribeEventCategoriesResponse+    { _decrEventCategoriesMapList = mempty+    }++-- | A list of event categories descriptions.+decrEventCategoriesMapList :: Lens' DescribeEventCategoriesResponse [EventCategoriesMap]+decrEventCategoriesMapList =+    lens _decrEventCategoriesMapList+        (\s a -> s { _decrEventCategoriesMapList = a })+            . _List++instance ToPath DescribeEventCategories where+    toPath = const "/"++instance ToQuery DescribeEventCategories where+    toQuery DescribeEventCategories{..} = mconcat+        [ "SourceType" =? _decSourceType+        ]++instance ToHeaders DescribeEventCategories++instance AWSRequest DescribeEventCategories where+    type Sv DescribeEventCategories = Redshift+    type Rs DescribeEventCategories = DescribeEventCategoriesResponse++    request  = post "DescribeEventCategories"+    response = xmlResponse++instance FromXML DescribeEventCategoriesResponse where+    parseXML = withElement "DescribeEventCategoriesResult" $ \x -> DescribeEventCategoriesResponse+        <$> x .@  "EventCategoriesMapList"
+ gen/Network/AWS/Redshift/DescribeEventSubscriptions.hs view
@@ -0,0 +1,162 @@+{-# 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.Redshift.DescribeEventSubscriptions+-- 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)++-- | Lists descriptions of all the Amazon Redshift event notifications+-- subscription for a customer account. If you specify a subscription name,+-- lists the description for that subscription.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeEventSubscriptions.html>+module Network.AWS.Redshift.DescribeEventSubscriptions+    (+    -- * Request+      DescribeEventSubscriptions+    -- ** Request constructor+    , describeEventSubscriptions+    -- ** Request lenses+    , des1Marker+    , des1MaxRecords+    , des1SubscriptionName++    -- * Response+    , DescribeEventSubscriptionsResponse+    -- ** Response constructor+    , describeEventSubscriptionsResponse+    -- ** Response lenses+    , desrEventSubscriptionsList+    , desrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeEventSubscriptions = DescribeEventSubscriptions+    { _des1Marker           :: Maybe Text+    , _des1MaxRecords       :: Maybe Int+    , _des1SubscriptionName :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeEventSubscriptions' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'des1Marker' @::@ 'Maybe' 'Text'+--+-- * 'des1MaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'des1SubscriptionName' @::@ 'Maybe' 'Text'+--+describeEventSubscriptions :: DescribeEventSubscriptions+describeEventSubscriptions = DescribeEventSubscriptions+    { _des1SubscriptionName = Nothing+    , _des1MaxRecords       = Nothing+    , _des1Marker           = Nothing+    }++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeEventSubscriptions+-- request exceed the value specified in MaxRecords, AWS returns a value in+-- the Marker field of the response. You can retrieve the next set of+-- response records by providing the returned marker value in the Marker+-- parameter and retrying the request.+des1Marker :: Lens' DescribeEventSubscriptions (Maybe Text)+des1Marker = lens _des1Marker (\s a -> s { _des1Marker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+des1MaxRecords :: Lens' DescribeEventSubscriptions (Maybe Int)+des1MaxRecords = lens _des1MaxRecords (\s a -> s { _des1MaxRecords = a })++-- | The name of the Amazon Redshift event notification subscription to be+-- described.+des1SubscriptionName :: Lens' DescribeEventSubscriptions (Maybe Text)+des1SubscriptionName =+    lens _des1SubscriptionName (\s a -> s { _des1SubscriptionName = a })++data DescribeEventSubscriptionsResponse = DescribeEventSubscriptionsResponse+    { _desrEventSubscriptionsList :: List "EventSubscription" EventSubscription+    , _desrMarker                 :: Maybe Text+    } deriving (Eq, Show)++-- | 'DescribeEventSubscriptionsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'desrEventSubscriptionsList' @::@ ['EventSubscription']+--+-- * 'desrMarker' @::@ 'Maybe' 'Text'+--+describeEventSubscriptionsResponse :: DescribeEventSubscriptionsResponse+describeEventSubscriptionsResponse = DescribeEventSubscriptionsResponse+    { _desrMarker                 = Nothing+    , _desrEventSubscriptionsList = mempty+    }++-- | A list of event subscriptions.+desrEventSubscriptionsList :: Lens' DescribeEventSubscriptionsResponse [EventSubscription]+desrEventSubscriptionsList =+    lens _desrEventSubscriptionsList+        (\s a -> s { _desrEventSubscriptionsList = a })+            . _List++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+desrMarker :: Lens' DescribeEventSubscriptionsResponse (Maybe Text)+desrMarker = lens _desrMarker (\s a -> s { _desrMarker = a })++instance ToPath DescribeEventSubscriptions where+    toPath = const "/"++instance ToQuery DescribeEventSubscriptions where+    toQuery DescribeEventSubscriptions{..} = mconcat+        [ "Marker"           =? _des1Marker+        , "MaxRecords"       =? _des1MaxRecords+        , "SubscriptionName" =? _des1SubscriptionName+        ]++instance ToHeaders DescribeEventSubscriptions++instance AWSRequest DescribeEventSubscriptions where+    type Sv DescribeEventSubscriptions = Redshift+    type Rs DescribeEventSubscriptions = DescribeEventSubscriptionsResponse++    request  = post "DescribeEventSubscriptions"+    response = xmlResponse++instance FromXML DescribeEventSubscriptionsResponse where+    parseXML = withElement "DescribeEventSubscriptionsResult" $ \x -> DescribeEventSubscriptionsResponse+        <$> x .@  "EventSubscriptionsList"+        <*> x .@? "Marker"++instance AWSPager DescribeEventSubscriptions where+    page rq rs+        | stop (rq ^. des1Marker) = Nothing+        | otherwise = (\x -> rq & des1Marker ?~ x)+            <$> (rs ^. desrMarker)
+ gen/Network/AWS/Redshift/DescribeEvents.hs view
@@ -0,0 +1,221 @@+{-# 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.Redshift.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)++-- | Returns events related to clusters, security groups, snapshots, and+-- parameter groups for the past 14 days. Events specific to a particular+-- cluster, security group, snapshot or parameter group can be obtained by+-- providing the name as a parameter. By default, the past hour of events are+-- returned.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeEvents.html>+module Network.AWS.Redshift.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.Redshift.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 prior to the time of the request for which to+-- retrieve events. For example, if the request is sent at 18:00 and you+-- specify a duration of 60, then only events which have occurred after+-- 17:00 will be returned. Default: 60.+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. For more information about ISO 8601, go to the ISO8601+-- Wikipedia page. Example: 2009-07-08T18:00Z.+deEndTime :: Lens' DescribeEvents (Maybe UTCTime)+deEndTime = lens _deEndTime (\s a -> s { _deEndTime = a }) . mapping _Time++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeEvents request exceed+-- the value specified in MaxRecords, AWS returns a value in the Marker+-- field of the response. You can retrieve the next set of response records+-- by providing the returned marker value in the Marker parameter and+-- retrying the request.+deMarker :: Lens' DescribeEvents (Maybe Text)+deMarker = lens _deMarker (\s a -> s { _deMarker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. 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+-- this parameter is not specified, then all sources are included in the+-- response. Constraints: If SourceIdentifier is supplied, SourceType must+-- also be provided. Specify a cluster identifier when SourceType is+-- cluster. Specify a cluster security group name when SourceType is+-- cluster-security-group. Specify a cluster parameter group name when+-- SourceType is cluster-parameter-group. Specify a cluster snapshot+-- identifier when SourceType is cluster-snapshot.+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. Constraints: If SourceType is supplied,+-- SourceIdentifier must also be provided. Specify cluster when+-- SourceIdentifier is a cluster identifier. Specify cluster-security-group+-- when SourceIdentifier is a cluster security group name. Specify+-- cluster-parameter-group when SourceIdentifier is a cluster parameter+-- group name. Specify cluster-snapshot when SourceIdentifier is a cluster+-- snapshot identifier.+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. For more information about ISO 8601, go to the ISO8601+-- Wikipedia page. Example: 2009-07-08T18:00Z.+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 Event instances.+derEvents :: Lens' DescribeEventsResponse [Event]+derEvents = lens _derEvents (\s a -> s { _derEvents = a }) . _List++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+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 = Redshift+    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/Redshift/DescribeHsmClientCertificates.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.Redshift.DescribeHsmClientCertificates+-- 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)++-- | Returns information about the specified HSM client certificate. If no+-- certificate ID is specified, returns information about all the HSM+-- certificates owned by your AWS customer account. If you specify both tag+-- keys and tag values in the same request, Amazon Redshift returns all HSM+-- client certificates that match any combination of the specified keys and+-- values. For example, if you have owner and environment for tag keys, and+-- admin and test for tag values, all HSM client certificates that have any+-- combination of those values are returned. If both tag keys and values are+-- omitted from the request, HSM client certificates are returned regardless+-- of whether they have tag keys or values associated with them.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeHsmClientCertificates.html>+module Network.AWS.Redshift.DescribeHsmClientCertificates+    (+    -- * Request+      DescribeHsmClientCertificates+    -- ** Request constructor+    , describeHsmClientCertificates+    -- ** Request lenses+    , dhccHsmClientCertificateIdentifier+    , dhccMarker+    , dhccMaxRecords+    , dhccTagKeys+    , dhccTagValues++    -- * Response+    , DescribeHsmClientCertificatesResponse+    -- ** Response constructor+    , describeHsmClientCertificatesResponse+    -- ** Response lenses+    , dhccrHsmClientCertificates+    , dhccrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeHsmClientCertificates = DescribeHsmClientCertificates+    { _dhccHsmClientCertificateIdentifier :: Maybe Text+    , _dhccMarker                         :: Maybe Text+    , _dhccMaxRecords                     :: Maybe Int+    , _dhccTagKeys                        :: List "TagKey" Text+    , _dhccTagValues                      :: List "TagValue" Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeHsmClientCertificates' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dhccHsmClientCertificateIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'dhccMarker' @::@ 'Maybe' 'Text'+--+-- * 'dhccMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'dhccTagKeys' @::@ ['Text']+--+-- * 'dhccTagValues' @::@ ['Text']+--+describeHsmClientCertificates :: DescribeHsmClientCertificates+describeHsmClientCertificates = DescribeHsmClientCertificates+    { _dhccHsmClientCertificateIdentifier = Nothing+    , _dhccMaxRecords                     = Nothing+    , _dhccMarker                         = Nothing+    , _dhccTagKeys                        = mempty+    , _dhccTagValues                      = mempty+    }++-- | The identifier of a specific HSM client certificate for which you want+-- information. If no identifier is specified, information is returned for+-- all HSM client certificates owned by your AWS customer account.+dhccHsmClientCertificateIdentifier :: Lens' DescribeHsmClientCertificates (Maybe Text)+dhccHsmClientCertificateIdentifier =+    lens _dhccHsmClientCertificateIdentifier+        (\s a -> s { _dhccHsmClientCertificateIdentifier = a })++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeHsmClientCertificates+-- request exceed the value specified in MaxRecords, AWS returns a value in+-- the Marker field of the response. You can retrieve the next set of+-- response records by providing the returned marker value in the Marker+-- parameter and retrying the request.+dhccMarker :: Lens' DescribeHsmClientCertificates (Maybe Text)+dhccMarker = lens _dhccMarker (\s a -> s { _dhccMarker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+dhccMaxRecords :: Lens' DescribeHsmClientCertificates (Maybe Int)+dhccMaxRecords = lens _dhccMaxRecords (\s a -> s { _dhccMaxRecords = a })++-- | A tag key or keys for which you want to return all matching HSM client+-- certificates that are associated with the specified key or keys. For+-- example, suppose that you have HSM client certificates that are tagged+-- with keys called owner and environment. If you specify both of these tag+-- keys in the request, Amazon Redshift returns a response with the HSM+-- client certificates that have either or both of these tag keys associated+-- with them.+dhccTagKeys :: Lens' DescribeHsmClientCertificates [Text]+dhccTagKeys = lens _dhccTagKeys (\s a -> s { _dhccTagKeys = a }) . _List++-- | A tag value or values for which you want to return all matching HSM+-- client certificates that are associated with the specified tag value or+-- values. For example, suppose that you have HSM client certificates that+-- are tagged with values called admin and test. If you specify both of+-- these tag values in the request, Amazon Redshift returns a response with+-- the HSM client certificates that have either or both of these tag values+-- associated with them.+dhccTagValues :: Lens' DescribeHsmClientCertificates [Text]+dhccTagValues = lens _dhccTagValues (\s a -> s { _dhccTagValues = a }) . _List++data DescribeHsmClientCertificatesResponse = DescribeHsmClientCertificatesResponse+    { _dhccrHsmClientCertificates :: List "HsmClientCertificate" HsmClientCertificate+    , _dhccrMarker                :: Maybe Text+    } deriving (Eq, Show)++-- | 'DescribeHsmClientCertificatesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dhccrHsmClientCertificates' @::@ ['HsmClientCertificate']+--+-- * 'dhccrMarker' @::@ 'Maybe' 'Text'+--+describeHsmClientCertificatesResponse :: DescribeHsmClientCertificatesResponse+describeHsmClientCertificatesResponse = DescribeHsmClientCertificatesResponse+    { _dhccrMarker                = Nothing+    , _dhccrHsmClientCertificates = mempty+    }++-- | A list of the identifiers for one or more HSM client certificates used by+-- Amazon Redshift clusters to store and retrieve database encryption keys+-- in an HSM.+dhccrHsmClientCertificates :: Lens' DescribeHsmClientCertificatesResponse [HsmClientCertificate]+dhccrHsmClientCertificates =+    lens _dhccrHsmClientCertificates+        (\s a -> s { _dhccrHsmClientCertificates = a })+            . _List++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+dhccrMarker :: Lens' DescribeHsmClientCertificatesResponse (Maybe Text)+dhccrMarker = lens _dhccrMarker (\s a -> s { _dhccrMarker = a })++instance ToPath DescribeHsmClientCertificates where+    toPath = const "/"++instance ToQuery DescribeHsmClientCertificates where+    toQuery DescribeHsmClientCertificates{..} = mconcat+        [ "HsmClientCertificateIdentifier" =? _dhccHsmClientCertificateIdentifier+        , "Marker"                         =? _dhccMarker+        , "MaxRecords"                     =? _dhccMaxRecords+        , "TagKeys"                        =? _dhccTagKeys+        , "TagValues"                      =? _dhccTagValues+        ]++instance ToHeaders DescribeHsmClientCertificates++instance AWSRequest DescribeHsmClientCertificates where+    type Sv DescribeHsmClientCertificates = Redshift+    type Rs DescribeHsmClientCertificates = DescribeHsmClientCertificatesResponse++    request  = post "DescribeHsmClientCertificates"+    response = xmlResponse++instance FromXML DescribeHsmClientCertificatesResponse where+    parseXML = withElement "DescribeHsmClientCertificatesResult" $ \x -> DescribeHsmClientCertificatesResponse+        <$> x .@  "HsmClientCertificates"+        <*> x .@? "Marker"++instance AWSPager DescribeHsmClientCertificates where+    page rq rs+        | stop (rq ^. dhccMarker) = Nothing+        | otherwise = (\x -> rq & dhccMarker ?~ x)+            <$> (rs ^. dhccrMarker)
+ gen/Network/AWS/Redshift/DescribeHsmConfigurations.hs view
@@ -0,0 +1,202 @@+{-# 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.Redshift.DescribeHsmConfigurations+-- 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)++-- | Returns information about the specified Amazon Redshift HSM configuration.+-- If no configuration ID is specified, returns information about all the HSM+-- configurations owned by your AWS customer account. If you specify both tag+-- keys and tag values in the same request, Amazon Redshift returns all HSM+-- connections that match any combination of the specified keys and values.+-- For example, if you have owner and environment for tag keys, and admin and+-- test for tag values, all HSM connections that have any combination of those+-- values are returned. If both tag keys and values are omitted from the+-- request, HSM connections are returned regardless of whether they have tag+-- keys or values associated with them.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeHsmConfigurations.html>+module Network.AWS.Redshift.DescribeHsmConfigurations+    (+    -- * Request+      DescribeHsmConfigurations+    -- ** Request constructor+    , describeHsmConfigurations+    -- ** Request lenses+    , dhc1HsmConfigurationIdentifier+    , dhc1Marker+    , dhc1MaxRecords+    , dhc1TagKeys+    , dhc1TagValues++    -- * Response+    , DescribeHsmConfigurationsResponse+    -- ** Response constructor+    , describeHsmConfigurationsResponse+    -- ** Response lenses+    , dhcrHsmConfigurations+    , dhcrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeHsmConfigurations = DescribeHsmConfigurations+    { _dhc1HsmConfigurationIdentifier :: Maybe Text+    , _dhc1Marker                     :: Maybe Text+    , _dhc1MaxRecords                 :: Maybe Int+    , _dhc1TagKeys                    :: List "TagKey" Text+    , _dhc1TagValues                  :: List "TagValue" Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeHsmConfigurations' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dhc1HsmConfigurationIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'dhc1Marker' @::@ 'Maybe' 'Text'+--+-- * 'dhc1MaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'dhc1TagKeys' @::@ ['Text']+--+-- * 'dhc1TagValues' @::@ ['Text']+--+describeHsmConfigurations :: DescribeHsmConfigurations+describeHsmConfigurations = DescribeHsmConfigurations+    { _dhc1HsmConfigurationIdentifier = Nothing+    , _dhc1MaxRecords                 = Nothing+    , _dhc1Marker                     = Nothing+    , _dhc1TagKeys                    = mempty+    , _dhc1TagValues                  = mempty+    }++-- | The identifier of a specific Amazon Redshift HSM configuration to be+-- described. If no identifier is specified, information is returned for all+-- HSM configurations owned by your AWS customer account.+dhc1HsmConfigurationIdentifier :: Lens' DescribeHsmConfigurations (Maybe Text)+dhc1HsmConfigurationIdentifier =+    lens _dhc1HsmConfigurationIdentifier+        (\s a -> s { _dhc1HsmConfigurationIdentifier = a })++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeHsmConfigurations+-- request exceed the value specified in MaxRecords, AWS returns a value in+-- the Marker field of the response. You can retrieve the next set of+-- response records by providing the returned marker value in the Marker+-- parameter and retrying the request.+dhc1Marker :: Lens' DescribeHsmConfigurations (Maybe Text)+dhc1Marker = lens _dhc1Marker (\s a -> s { _dhc1Marker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+dhc1MaxRecords :: Lens' DescribeHsmConfigurations (Maybe Int)+dhc1MaxRecords = lens _dhc1MaxRecords (\s a -> s { _dhc1MaxRecords = a })++-- | A tag key or keys for which you want to return all matching HSM+-- configurations that are associated with the specified key or keys. For+-- example, suppose that you have HSM configurations that are tagged with+-- keys called owner and environment. If you specify both of these tag keys+-- in the request, Amazon Redshift returns a response with the HSM+-- configurations that have either or both of these tag keys associated with+-- them.+dhc1TagKeys :: Lens' DescribeHsmConfigurations [Text]+dhc1TagKeys = lens _dhc1TagKeys (\s a -> s { _dhc1TagKeys = a }) . _List++-- | A tag value or values for which you want to return all matching HSM+-- configurations that are associated with the specified tag value or+-- values. For example, suppose that you have HSM configurations that are+-- tagged with values called admin and test. If you specify both of these+-- tag values in the request, Amazon Redshift returns a response with the+-- HSM configurations that have either or both of these tag values+-- associated with them.+dhc1TagValues :: Lens' DescribeHsmConfigurations [Text]+dhc1TagValues = lens _dhc1TagValues (\s a -> s { _dhc1TagValues = a }) . _List++data DescribeHsmConfigurationsResponse = DescribeHsmConfigurationsResponse+    { _dhcrHsmConfigurations :: List "HsmConfiguration" HsmConfiguration+    , _dhcrMarker            :: Maybe Text+    } deriving (Eq, Show)++-- | 'DescribeHsmConfigurationsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dhcrHsmConfigurations' @::@ ['HsmConfiguration']+--+-- * 'dhcrMarker' @::@ 'Maybe' 'Text'+--+describeHsmConfigurationsResponse :: DescribeHsmConfigurationsResponse+describeHsmConfigurationsResponse = DescribeHsmConfigurationsResponse+    { _dhcrMarker            = Nothing+    , _dhcrHsmConfigurations = mempty+    }++-- | A list of Amazon Redshift HSM configurations.+dhcrHsmConfigurations :: Lens' DescribeHsmConfigurationsResponse [HsmConfiguration]+dhcrHsmConfigurations =+    lens _dhcrHsmConfigurations (\s a -> s { _dhcrHsmConfigurations = a })+        . _List++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+dhcrMarker :: Lens' DescribeHsmConfigurationsResponse (Maybe Text)+dhcrMarker = lens _dhcrMarker (\s a -> s { _dhcrMarker = a })++instance ToPath DescribeHsmConfigurations where+    toPath = const "/"++instance ToQuery DescribeHsmConfigurations where+    toQuery DescribeHsmConfigurations{..} = mconcat+        [ "HsmConfigurationIdentifier" =? _dhc1HsmConfigurationIdentifier+        , "Marker"                     =? _dhc1Marker+        , "MaxRecords"                 =? _dhc1MaxRecords+        , "TagKeys"                    =? _dhc1TagKeys+        , "TagValues"                  =? _dhc1TagValues+        ]++instance ToHeaders DescribeHsmConfigurations++instance AWSRequest DescribeHsmConfigurations where+    type Sv DescribeHsmConfigurations = Redshift+    type Rs DescribeHsmConfigurations = DescribeHsmConfigurationsResponse++    request  = post "DescribeHsmConfigurations"+    response = xmlResponse++instance FromXML DescribeHsmConfigurationsResponse where+    parseXML = withElement "DescribeHsmConfigurationsResult" $ \x -> DescribeHsmConfigurationsResponse+        <$> x .@  "HsmConfigurations"+        <*> x .@? "Marker"++instance AWSPager DescribeHsmConfigurations where+    page rq rs+        | stop (rq ^. dhc1Marker) = Nothing+        | otherwise = (\x -> rq & dhc1Marker ?~ x)+            <$> (rs ^. dhcrMarker)
+ gen/Network/AWS/Redshift/DescribeLoggingStatus.hs view
@@ -0,0 +1,166 @@+{-# 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.Redshift.DescribeLoggingStatus+-- 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)++-- | Describes whether information, such as queries and connection attempts, is+-- being logged for the specified Amazon Redshift cluster.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeLoggingStatus.html>+module Network.AWS.Redshift.DescribeLoggingStatus+    (+    -- * Request+      DescribeLoggingStatus+    -- ** Request constructor+    , describeLoggingStatus+    -- ** Request lenses+    , dlsClusterIdentifier++    -- * Response+    , DescribeLoggingStatusResponse+    -- ** Response constructor+    , describeLoggingStatusResponse+    -- ** Response lenses+    , dlsrBucketName+    , dlsrLastFailureMessage+    , dlsrLastFailureTime+    , dlsrLastSuccessfulDeliveryTime+    , dlsrLoggingEnabled+    , dlsrS3KeyPrefix+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype DescribeLoggingStatus = DescribeLoggingStatus+    { _dlsClusterIdentifier :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DescribeLoggingStatus' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dlsClusterIdentifier' @::@ 'Text'+--+describeLoggingStatus :: Text -- ^ 'dlsClusterIdentifier'+                      -> DescribeLoggingStatus+describeLoggingStatus p1 = DescribeLoggingStatus+    { _dlsClusterIdentifier = p1+    }++-- | The identifier of the cluster to get the logging status from. Example:+-- examplecluster.+dlsClusterIdentifier :: Lens' DescribeLoggingStatus Text+dlsClusterIdentifier =+    lens _dlsClusterIdentifier (\s a -> s { _dlsClusterIdentifier = a })++data DescribeLoggingStatusResponse = DescribeLoggingStatusResponse+    { _dlsrBucketName                 :: Maybe Text+    , _dlsrLastFailureMessage         :: Maybe Text+    , _dlsrLastFailureTime            :: Maybe RFC822+    , _dlsrLastSuccessfulDeliveryTime :: Maybe RFC822+    , _dlsrLoggingEnabled             :: Maybe Bool+    , _dlsrS3KeyPrefix                :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeLoggingStatusResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dlsrBucketName' @::@ 'Maybe' 'Text'+--+-- * 'dlsrLastFailureMessage' @::@ 'Maybe' 'Text'+--+-- * 'dlsrLastFailureTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'dlsrLastSuccessfulDeliveryTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'dlsrLoggingEnabled' @::@ 'Maybe' 'Bool'+--+-- * 'dlsrS3KeyPrefix' @::@ 'Maybe' 'Text'+--+describeLoggingStatusResponse :: DescribeLoggingStatusResponse+describeLoggingStatusResponse = DescribeLoggingStatusResponse+    { _dlsrLoggingEnabled             = Nothing+    , _dlsrBucketName                 = Nothing+    , _dlsrS3KeyPrefix                = Nothing+    , _dlsrLastSuccessfulDeliveryTime = Nothing+    , _dlsrLastFailureTime            = Nothing+    , _dlsrLastFailureMessage         = Nothing+    }++-- | The name of the S3 bucket where the log files are stored.+dlsrBucketName :: Lens' DescribeLoggingStatusResponse (Maybe Text)+dlsrBucketName = lens _dlsrBucketName (\s a -> s { _dlsrBucketName = a })++-- | The message indicating that logs failed to be delivered.+dlsrLastFailureMessage :: Lens' DescribeLoggingStatusResponse (Maybe Text)+dlsrLastFailureMessage =+    lens _dlsrLastFailureMessage (\s a -> s { _dlsrLastFailureMessage = a })++-- | The last time when logs failed to be delivered.+dlsrLastFailureTime :: Lens' DescribeLoggingStatusResponse (Maybe UTCTime)+dlsrLastFailureTime =+    lens _dlsrLastFailureTime (\s a -> s { _dlsrLastFailureTime = a })+        . mapping _Time++-- | The last time when logs were delivered.+dlsrLastSuccessfulDeliveryTime :: Lens' DescribeLoggingStatusResponse (Maybe UTCTime)+dlsrLastSuccessfulDeliveryTime =+    lens _dlsrLastSuccessfulDeliveryTime+        (\s a -> s { _dlsrLastSuccessfulDeliveryTime = a })+            . mapping _Time++-- | true if logging is on, false if logging is off.+dlsrLoggingEnabled :: Lens' DescribeLoggingStatusResponse (Maybe Bool)+dlsrLoggingEnabled =+    lens _dlsrLoggingEnabled (\s a -> s { _dlsrLoggingEnabled = a })++-- | The prefix applied to the log file names.+dlsrS3KeyPrefix :: Lens' DescribeLoggingStatusResponse (Maybe Text)+dlsrS3KeyPrefix = lens _dlsrS3KeyPrefix (\s a -> s { _dlsrS3KeyPrefix = a })++instance ToPath DescribeLoggingStatus where+    toPath = const "/"++instance ToQuery DescribeLoggingStatus where+    toQuery DescribeLoggingStatus{..} = mconcat+        [ "ClusterIdentifier" =? _dlsClusterIdentifier+        ]++instance ToHeaders DescribeLoggingStatus++instance AWSRequest DescribeLoggingStatus where+    type Sv DescribeLoggingStatus = Redshift+    type Rs DescribeLoggingStatus = DescribeLoggingStatusResponse++    request  = post "DescribeLoggingStatus"+    response = xmlResponse++instance FromXML DescribeLoggingStatusResponse where+    parseXML = withElement "DescribeLoggingStatusResult" $ \x -> DescribeLoggingStatusResponse+        <$> x .@? "BucketName"+        <*> x .@? "LastFailureMessage"+        <*> x .@? "LastFailureTime"+        <*> x .@? "LastSuccessfulDeliveryTime"+        <*> x .@? "LoggingEnabled"+        <*> x .@? "S3KeyPrefix"
+ gen/Network/AWS/Redshift/DescribeOrderableClusterOptions.hs view
@@ -0,0 +1,182 @@+{-# 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.Redshift.DescribeOrderableClusterOptions+-- 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)++-- | Returns a list of orderable cluster options. Before you create a new+-- cluster you can use this operation to find what options are available, such+-- as the EC2 Availability Zones (AZ) in the specific AWS region that you can+-- specify, and the node types you can request. The node types differ by+-- available storage, memory, CPU and price. With the cost involved you might+-- want to obtain a list of cluster options in the specific region and specify+-- values when creating a cluster. For more information about managing+-- clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster+-- Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeOrderableClusterOptions.html>+module Network.AWS.Redshift.DescribeOrderableClusterOptions+    (+    -- * Request+      DescribeOrderableClusterOptions+    -- ** Request constructor+    , describeOrderableClusterOptions+    -- ** Request lenses+    , docoClusterVersion+    , docoMarker+    , docoMaxRecords+    , docoNodeType++    -- * Response+    , DescribeOrderableClusterOptionsResponse+    -- ** Response constructor+    , describeOrderableClusterOptionsResponse+    -- ** Response lenses+    , docorMarker+    , docorOrderableClusterOptions+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeOrderableClusterOptions = DescribeOrderableClusterOptions+    { _docoClusterVersion :: Maybe Text+    , _docoMarker         :: Maybe Text+    , _docoMaxRecords     :: Maybe Int+    , _docoNodeType       :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeOrderableClusterOptions' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'docoClusterVersion' @::@ 'Maybe' 'Text'+--+-- * 'docoMarker' @::@ 'Maybe' 'Text'+--+-- * 'docoMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'docoNodeType' @::@ 'Maybe' 'Text'+--+describeOrderableClusterOptions :: DescribeOrderableClusterOptions+describeOrderableClusterOptions = DescribeOrderableClusterOptions+    { _docoClusterVersion = Nothing+    , _docoNodeType       = Nothing+    , _docoMaxRecords     = Nothing+    , _docoMarker         = Nothing+    }++-- | The version filter value. Specify this parameter to show only the+-- available offerings matching the specified version. Default: All+-- versions. Constraints: Must be one of the version returned from+-- DescribeClusterVersions.+docoClusterVersion :: Lens' DescribeOrderableClusterOptions (Maybe Text)+docoClusterVersion =+    lens _docoClusterVersion (\s a -> s { _docoClusterVersion = a })++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a+-- DescribeOrderableClusterOptions request exceed the value specified in+-- MaxRecords, AWS returns a value in the Marker field of the response. You+-- can retrieve the next set of response records by providing the returned+-- marker value in the Marker parameter and retrying the request.+docoMarker :: Lens' DescribeOrderableClusterOptions (Maybe Text)+docoMarker = lens _docoMarker (\s a -> s { _docoMarker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+docoMaxRecords :: Lens' DescribeOrderableClusterOptions (Maybe Int)+docoMaxRecords = lens _docoMaxRecords (\s a -> s { _docoMaxRecords = a })++-- | The node type filter value. Specify this parameter to show only the+-- available offerings matching the specified node type.+docoNodeType :: Lens' DescribeOrderableClusterOptions (Maybe Text)+docoNodeType = lens _docoNodeType (\s a -> s { _docoNodeType = a })++data DescribeOrderableClusterOptionsResponse = DescribeOrderableClusterOptionsResponse+    { _docorMarker                  :: Maybe Text+    , _docorOrderableClusterOptions :: List "OrderableClusterOption" OrderableClusterOption+    } deriving (Eq, Show)++-- | 'DescribeOrderableClusterOptionsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'docorMarker' @::@ 'Maybe' 'Text'+--+-- * 'docorOrderableClusterOptions' @::@ ['OrderableClusterOption']+--+describeOrderableClusterOptionsResponse :: DescribeOrderableClusterOptionsResponse+describeOrderableClusterOptionsResponse = DescribeOrderableClusterOptionsResponse+    { _docorOrderableClusterOptions = mempty+    , _docorMarker                  = Nothing+    }++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+docorMarker :: Lens' DescribeOrderableClusterOptionsResponse (Maybe Text)+docorMarker = lens _docorMarker (\s a -> s { _docorMarker = a })++-- | An OrderableClusterOption structure containing information about+-- orderable options for the Cluster.+docorOrderableClusterOptions :: Lens' DescribeOrderableClusterOptionsResponse [OrderableClusterOption]+docorOrderableClusterOptions =+    lens _docorOrderableClusterOptions+        (\s a -> s { _docorOrderableClusterOptions = a })+            . _List++instance ToPath DescribeOrderableClusterOptions where+    toPath = const "/"++instance ToQuery DescribeOrderableClusterOptions where+    toQuery DescribeOrderableClusterOptions{..} = mconcat+        [ "ClusterVersion" =? _docoClusterVersion+        , "Marker"         =? _docoMarker+        , "MaxRecords"     =? _docoMaxRecords+        , "NodeType"       =? _docoNodeType+        ]++instance ToHeaders DescribeOrderableClusterOptions++instance AWSRequest DescribeOrderableClusterOptions where+    type Sv DescribeOrderableClusterOptions = Redshift+    type Rs DescribeOrderableClusterOptions = DescribeOrderableClusterOptionsResponse++    request  = post "DescribeOrderableClusterOptions"+    response = xmlResponse++instance FromXML DescribeOrderableClusterOptionsResponse where+    parseXML = withElement "DescribeOrderableClusterOptionsResult" $ \x -> DescribeOrderableClusterOptionsResponse+        <$> x .@? "Marker"+        <*> x .@  "OrderableClusterOptions"++instance AWSPager DescribeOrderableClusterOptions where+    page rq rs+        | stop (rq ^. docoMarker) = Nothing+        | otherwise = (\x -> rq & docoMarker ?~ x)+            <$> (rs ^. docorMarker)
+ gen/Network/AWS/Redshift/DescribeReservedNodeOfferings.hs view
@@ -0,0 +1,168 @@+{-# 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.Redshift.DescribeReservedNodeOfferings+-- 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)++-- | Returns a list of the available reserved node offerings by Amazon Redshift+-- with their descriptions including the node type, the fixed and recurring+-- costs of reserving the node and duration the node will be reserved for you.+-- These descriptions help you determine which reserve node offering you want+-- to purchase. You then use the unique offering ID in you call to+-- PurchaseReservedNodeOffering to reserve one or more nodes for your Amazon+-- Redshift cluster. For more information about managing parameter groups, go+-- to Purchasing Reserved Nodes in the Amazon Redshift Cluster Management+-- Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeReservedNodeOfferings.html>+module Network.AWS.Redshift.DescribeReservedNodeOfferings+    (+    -- * Request+      DescribeReservedNodeOfferings+    -- ** Request constructor+    , describeReservedNodeOfferings+    -- ** Request lenses+    , drnoMarker+    , drnoMaxRecords+    , drnoReservedNodeOfferingId++    -- * Response+    , DescribeReservedNodeOfferingsResponse+    -- ** Response constructor+    , describeReservedNodeOfferingsResponse+    -- ** Response lenses+    , drnorMarker+    , drnorReservedNodeOfferings+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeReservedNodeOfferings = DescribeReservedNodeOfferings+    { _drnoMarker                 :: Maybe Text+    , _drnoMaxRecords             :: Maybe Int+    , _drnoReservedNodeOfferingId :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeReservedNodeOfferings' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drnoMarker' @::@ 'Maybe' 'Text'+--+-- * 'drnoMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'drnoReservedNodeOfferingId' @::@ 'Maybe' 'Text'+--+describeReservedNodeOfferings :: DescribeReservedNodeOfferings+describeReservedNodeOfferings = DescribeReservedNodeOfferings+    { _drnoReservedNodeOfferingId = Nothing+    , _drnoMaxRecords             = Nothing+    , _drnoMarker                 = Nothing+    }++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeReservedNodeOfferings+-- request exceed the value specified in MaxRecords, AWS returns a value in+-- the Marker field of the response. You can retrieve the next set of+-- response records by providing the returned marker value in the Marker+-- parameter and retrying the request.+drnoMarker :: Lens' DescribeReservedNodeOfferings (Maybe Text)+drnoMarker = lens _drnoMarker (\s a -> s { _drnoMarker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+drnoMaxRecords :: Lens' DescribeReservedNodeOfferings (Maybe Int)+drnoMaxRecords = lens _drnoMaxRecords (\s a -> s { _drnoMaxRecords = a })++-- | The unique identifier for the offering.+drnoReservedNodeOfferingId :: Lens' DescribeReservedNodeOfferings (Maybe Text)+drnoReservedNodeOfferingId =+    lens _drnoReservedNodeOfferingId+        (\s a -> s { _drnoReservedNodeOfferingId = a })++data DescribeReservedNodeOfferingsResponse = DescribeReservedNodeOfferingsResponse+    { _drnorMarker                :: Maybe Text+    , _drnorReservedNodeOfferings :: List "ReservedNodeOffering" ReservedNodeOffering+    } deriving (Eq, Show)++-- | 'DescribeReservedNodeOfferingsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drnorMarker' @::@ 'Maybe' 'Text'+--+-- * 'drnorReservedNodeOfferings' @::@ ['ReservedNodeOffering']+--+describeReservedNodeOfferingsResponse :: DescribeReservedNodeOfferingsResponse+describeReservedNodeOfferingsResponse = DescribeReservedNodeOfferingsResponse+    { _drnorMarker                = Nothing+    , _drnorReservedNodeOfferings = mempty+    }++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+drnorMarker :: Lens' DescribeReservedNodeOfferingsResponse (Maybe Text)+drnorMarker = lens _drnorMarker (\s a -> s { _drnorMarker = a })++-- | A list of reserved node offerings.+drnorReservedNodeOfferings :: Lens' DescribeReservedNodeOfferingsResponse [ReservedNodeOffering]+drnorReservedNodeOfferings =+    lens _drnorReservedNodeOfferings+        (\s a -> s { _drnorReservedNodeOfferings = a })+            . _List++instance ToPath DescribeReservedNodeOfferings where+    toPath = const "/"++instance ToQuery DescribeReservedNodeOfferings where+    toQuery DescribeReservedNodeOfferings{..} = mconcat+        [ "Marker"                 =? _drnoMarker+        , "MaxRecords"             =? _drnoMaxRecords+        , "ReservedNodeOfferingId" =? _drnoReservedNodeOfferingId+        ]++instance ToHeaders DescribeReservedNodeOfferings++instance AWSRequest DescribeReservedNodeOfferings where+    type Sv DescribeReservedNodeOfferings = Redshift+    type Rs DescribeReservedNodeOfferings = DescribeReservedNodeOfferingsResponse++    request  = post "DescribeReservedNodeOfferings"+    response = xmlResponse++instance FromXML DescribeReservedNodeOfferingsResponse where+    parseXML = withElement "DescribeReservedNodeOfferingsResult" $ \x -> DescribeReservedNodeOfferingsResponse+        <$> x .@? "Marker"+        <*> x .@  "ReservedNodeOfferings"++instance AWSPager DescribeReservedNodeOfferings where+    page rq rs+        | stop (rq ^. drnoMarker) = Nothing+        | otherwise = (\x -> rq & drnoMarker ?~ x)+            <$> (rs ^. drnorMarker)
+ gen/Network/AWS/Redshift/DescribeReservedNodes.hs view
@@ -0,0 +1,158 @@+{-# 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.Redshift.DescribeReservedNodes+-- 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)++-- | Returns the descriptions of the reserved nodes.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeReservedNodes.html>+module Network.AWS.Redshift.DescribeReservedNodes+    (+    -- * Request+      DescribeReservedNodes+    -- ** Request constructor+    , describeReservedNodes+    -- ** Request lenses+    , drnMarker+    , drnMaxRecords+    , drnReservedNodeId++    -- * Response+    , DescribeReservedNodesResponse+    -- ** Response constructor+    , describeReservedNodesResponse+    -- ** Response lenses+    , drnrMarker+    , drnrReservedNodes+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeReservedNodes = DescribeReservedNodes+    { _drnMarker         :: Maybe Text+    , _drnMaxRecords     :: Maybe Int+    , _drnReservedNodeId :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeReservedNodes' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drnMarker' @::@ 'Maybe' 'Text'+--+-- * 'drnMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'drnReservedNodeId' @::@ 'Maybe' 'Text'+--+describeReservedNodes :: DescribeReservedNodes+describeReservedNodes = DescribeReservedNodes+    { _drnReservedNodeId = Nothing+    , _drnMaxRecords     = Nothing+    , _drnMarker         = Nothing+    }++-- | An optional parameter that specifies the starting point to return a set+-- of response records. When the results of a DescribeReservedNodes request+-- exceed the value specified in MaxRecords, AWS returns a value in the+-- Marker field of the response. You can retrieve the next set of response+-- records by providing the returned marker value in the Marker parameter+-- and retrying the request.+drnMarker :: Lens' DescribeReservedNodes (Maybe Text)+drnMarker = lens _drnMarker (\s a -> s { _drnMarker = a })++-- | The maximum number of response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value. Default: 100 Constraints: minimum 20, maximum 100.+drnMaxRecords :: Lens' DescribeReservedNodes (Maybe Int)+drnMaxRecords = lens _drnMaxRecords (\s a -> s { _drnMaxRecords = a })++-- | Identifier for the node reservation.+drnReservedNodeId :: Lens' DescribeReservedNodes (Maybe Text)+drnReservedNodeId =+    lens _drnReservedNodeId (\s a -> s { _drnReservedNodeId = a })++data DescribeReservedNodesResponse = DescribeReservedNodesResponse+    { _drnrMarker        :: Maybe Text+    , _drnrReservedNodes :: List "ReservedNode" ReservedNode+    } deriving (Eq, Show)++-- | 'DescribeReservedNodesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drnrMarker' @::@ 'Maybe' 'Text'+--+-- * 'drnrReservedNodes' @::@ ['ReservedNode']+--+describeReservedNodesResponse :: DescribeReservedNodesResponse+describeReservedNodesResponse = DescribeReservedNodesResponse+    { _drnrMarker        = Nothing+    , _drnrReservedNodes = mempty+    }++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+drnrMarker :: Lens' DescribeReservedNodesResponse (Maybe Text)+drnrMarker = lens _drnrMarker (\s a -> s { _drnrMarker = a })++-- | The list of reserved nodes.+drnrReservedNodes :: Lens' DescribeReservedNodesResponse [ReservedNode]+drnrReservedNodes =+    lens _drnrReservedNodes (\s a -> s { _drnrReservedNodes = a })+        . _List++instance ToPath DescribeReservedNodes where+    toPath = const "/"++instance ToQuery DescribeReservedNodes where+    toQuery DescribeReservedNodes{..} = mconcat+        [ "Marker"         =? _drnMarker+        , "MaxRecords"     =? _drnMaxRecords+        , "ReservedNodeId" =? _drnReservedNodeId+        ]++instance ToHeaders DescribeReservedNodes++instance AWSRequest DescribeReservedNodes where+    type Sv DescribeReservedNodes = Redshift+    type Rs DescribeReservedNodes = DescribeReservedNodesResponse++    request  = post "DescribeReservedNodes"+    response = xmlResponse++instance FromXML DescribeReservedNodesResponse where+    parseXML = withElement "DescribeReservedNodesResult" $ \x -> DescribeReservedNodesResponse+        <$> x .@? "Marker"+        <*> x .@  "ReservedNodes"++instance AWSPager DescribeReservedNodes where+    page rq rs+        | stop (rq ^. drnMarker) = Nothing+        | otherwise = (\x -> rq & drnMarker ?~ x)+            <$> (rs ^. drnrMarker)
+ gen/Network/AWS/Redshift/DescribeResize.hs view
@@ -0,0 +1,264 @@+{-# 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.Redshift.DescribeResize+-- 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)++-- | Returns information about the last resize operation for the specified+-- cluster. If no resize operation has ever been initiated for the specified+-- cluster, a HTTP 404 error is returned. If a resize operation was initiated+-- and completed, the status of the resize remains as SUCCEEDED until the next+-- resize. A resize operation can be requested using ModifyCluster and+-- specifying a different number or type of nodes for the cluster.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeResize.html>+module Network.AWS.Redshift.DescribeResize+    (+    -- * Request+      DescribeResize+    -- ** Request constructor+    , describeResize+    -- ** Request lenses+    , drClusterIdentifier++    -- * Response+    , DescribeResizeResponse+    -- ** Response constructor+    , describeResizeResponse+    -- ** Response lenses+    , drrAvgResizeRateInMegaBytesPerSecond+    , drrElapsedTimeInSeconds+    , drrEstimatedTimeToCompletionInSeconds+    , drrImportTablesCompleted+    , drrImportTablesInProgress+    , drrImportTablesNotStarted+    , drrProgressInMegaBytes+    , drrStatus+    , drrTargetClusterType+    , drrTargetNodeType+    , drrTargetNumberOfNodes+    , drrTotalResizeDataInMegaBytes+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype DescribeResize = DescribeResize+    { _drClusterIdentifier :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DescribeResize' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drClusterIdentifier' @::@ 'Text'+--+describeResize :: Text -- ^ 'drClusterIdentifier'+               -> DescribeResize+describeResize p1 = DescribeResize+    { _drClusterIdentifier = p1+    }++-- | The unique identifier of a cluster whose resize progress you are+-- requesting. This parameter is case-sensitive. By default, resize+-- operations for all clusters defined for an AWS account are returned.+drClusterIdentifier :: Lens' DescribeResize Text+drClusterIdentifier =+    lens _drClusterIdentifier (\s a -> s { _drClusterIdentifier = a })++data DescribeResizeResponse = DescribeResizeResponse+    { _drrAvgResizeRateInMegaBytesPerSecond  :: Maybe Double+    , _drrElapsedTimeInSeconds               :: Maybe Integer+    , _drrEstimatedTimeToCompletionInSeconds :: Maybe Integer+    , _drrImportTablesCompleted              :: List "ImportTablesCompleted" Text+    , _drrImportTablesInProgress             :: List "ImportTablesInProgress" Text+    , _drrImportTablesNotStarted             :: List "ImportTablesNotStarted" Text+    , _drrProgressInMegaBytes                :: Maybe Integer+    , _drrStatus                             :: Maybe Text+    , _drrTargetClusterType                  :: Maybe Text+    , _drrTargetNodeType                     :: Maybe Text+    , _drrTargetNumberOfNodes                :: Maybe Int+    , _drrTotalResizeDataInMegaBytes         :: Maybe Integer+    } deriving (Eq, Ord, Show)++-- | 'DescribeResizeResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drrAvgResizeRateInMegaBytesPerSecond' @::@ 'Maybe' 'Double'+--+-- * 'drrElapsedTimeInSeconds' @::@ 'Maybe' 'Integer'+--+-- * 'drrEstimatedTimeToCompletionInSeconds' @::@ 'Maybe' 'Integer'+--+-- * 'drrImportTablesCompleted' @::@ ['Text']+--+-- * 'drrImportTablesInProgress' @::@ ['Text']+--+-- * 'drrImportTablesNotStarted' @::@ ['Text']+--+-- * 'drrProgressInMegaBytes' @::@ 'Maybe' 'Integer'+--+-- * 'drrStatus' @::@ 'Maybe' 'Text'+--+-- * 'drrTargetClusterType' @::@ 'Maybe' 'Text'+--+-- * 'drrTargetNodeType' @::@ 'Maybe' 'Text'+--+-- * 'drrTargetNumberOfNodes' @::@ 'Maybe' 'Int'+--+-- * 'drrTotalResizeDataInMegaBytes' @::@ 'Maybe' 'Integer'+--+describeResizeResponse :: DescribeResizeResponse+describeResizeResponse = DescribeResizeResponse+    { _drrTargetNodeType                     = Nothing+    , _drrTargetNumberOfNodes                = Nothing+    , _drrTargetClusterType                  = Nothing+    , _drrStatus                             = Nothing+    , _drrImportTablesCompleted              = mempty+    , _drrImportTablesInProgress             = mempty+    , _drrImportTablesNotStarted             = mempty+    , _drrAvgResizeRateInMegaBytesPerSecond  = Nothing+    , _drrTotalResizeDataInMegaBytes         = Nothing+    , _drrProgressInMegaBytes                = Nothing+    , _drrElapsedTimeInSeconds               = Nothing+    , _drrEstimatedTimeToCompletionInSeconds = Nothing+    }++-- | The average rate of the resize operation over the last few minutes,+-- measured in megabytes per second. After the resize operation completes,+-- this value shows the average rate of the entire resize operation.+drrAvgResizeRateInMegaBytesPerSecond :: Lens' DescribeResizeResponse (Maybe Double)+drrAvgResizeRateInMegaBytesPerSecond =+    lens _drrAvgResizeRateInMegaBytesPerSecond+        (\s a -> s { _drrAvgResizeRateInMegaBytesPerSecond = a })++-- | The amount of seconds that have elapsed since the resize operation began.+-- After the resize operation completes, this value shows the total actual+-- time, in seconds, for the resize operation.+drrElapsedTimeInSeconds :: Lens' DescribeResizeResponse (Maybe Integer)+drrElapsedTimeInSeconds =+    lens _drrElapsedTimeInSeconds (\s a -> s { _drrElapsedTimeInSeconds = a })++-- | The estimated time remaining, in seconds, until the resize operation is+-- complete. This value is calculated based on the average resize rate and+-- the estimated amount of data remaining to be processed. Once the resize+-- operation is complete, this value will be 0.+drrEstimatedTimeToCompletionInSeconds :: Lens' DescribeResizeResponse (Maybe Integer)+drrEstimatedTimeToCompletionInSeconds =+    lens _drrEstimatedTimeToCompletionInSeconds+        (\s a -> s { _drrEstimatedTimeToCompletionInSeconds = a })++-- | The names of tables that have been completely imported . Valid Values:+-- List of table names.+drrImportTablesCompleted :: Lens' DescribeResizeResponse [Text]+drrImportTablesCompleted =+    lens _drrImportTablesCompleted+        (\s a -> s { _drrImportTablesCompleted = a })+            . _List++-- | The names of tables that are being currently imported. Valid Values: List+-- of table names.+drrImportTablesInProgress :: Lens' DescribeResizeResponse [Text]+drrImportTablesInProgress =+    lens _drrImportTablesInProgress+        (\s a -> s { _drrImportTablesInProgress = a })+            . _List++-- | The names of tables that have not been yet imported. Valid Values: List+-- of table names.+drrImportTablesNotStarted :: Lens' DescribeResizeResponse [Text]+drrImportTablesNotStarted =+    lens _drrImportTablesNotStarted+        (\s a -> s { _drrImportTablesNotStarted = a })+            . _List++-- | While the resize operation is in progress, this value shows the current+-- amount of data, in megabytes, that has been processed so far. When the+-- resize operation is complete, this value shows the total amount of data,+-- in megabytes, on the cluster, which may be more or less than+-- TotalResizeDataInMegaBytes (the estimated total amount of data before+-- resize).+drrProgressInMegaBytes :: Lens' DescribeResizeResponse (Maybe Integer)+drrProgressInMegaBytes =+    lens _drrProgressInMegaBytes (\s a -> s { _drrProgressInMegaBytes = a })++-- | The status of the resize operation. Valid Values: NONE | IN_PROGRESS |+-- FAILED | SUCCEEDED.+drrStatus :: Lens' DescribeResizeResponse (Maybe Text)+drrStatus = lens _drrStatus (\s a -> s { _drrStatus = a })++-- | The cluster type after the resize operation is complete. Valid Values:+-- multi-node | single-node.+drrTargetClusterType :: Lens' DescribeResizeResponse (Maybe Text)+drrTargetClusterType =+    lens _drrTargetClusterType (\s a -> s { _drrTargetClusterType = a })++-- | The node type that the cluster will have after the resize operation is+-- complete.+drrTargetNodeType :: Lens' DescribeResizeResponse (Maybe Text)+drrTargetNodeType =+    lens _drrTargetNodeType (\s a -> s { _drrTargetNodeType = a })++-- | The number of nodes that the cluster will have after the resize operation+-- is complete.+drrTargetNumberOfNodes :: Lens' DescribeResizeResponse (Maybe Int)+drrTargetNumberOfNodes =+    lens _drrTargetNumberOfNodes (\s a -> s { _drrTargetNumberOfNodes = a })++-- | The estimated total amount of data, in megabytes, on the cluster before+-- the resize operation began.+drrTotalResizeDataInMegaBytes :: Lens' DescribeResizeResponse (Maybe Integer)+drrTotalResizeDataInMegaBytes =+    lens _drrTotalResizeDataInMegaBytes+        (\s a -> s { _drrTotalResizeDataInMegaBytes = a })++instance ToPath DescribeResize where+    toPath = const "/"++instance ToQuery DescribeResize where+    toQuery DescribeResize{..} = mconcat+        [ "ClusterIdentifier" =? _drClusterIdentifier+        ]++instance ToHeaders DescribeResize++instance AWSRequest DescribeResize where+    type Sv DescribeResize = Redshift+    type Rs DescribeResize = DescribeResizeResponse++    request  = post "DescribeResize"+    response = xmlResponse++instance FromXML DescribeResizeResponse where+    parseXML = withElement "DescribeResizeResult" $ \x -> DescribeResizeResponse+        <$> x .@? "AvgResizeRateInMegaBytesPerSecond"+        <*> x .@? "ElapsedTimeInSeconds"+        <*> x .@? "EstimatedTimeToCompletionInSeconds"+        <*> x .@  "ImportTablesCompleted"+        <*> x .@  "ImportTablesInProgress"+        <*> x .@  "ImportTablesNotStarted"+        <*> x .@? "ProgressInMegaBytes"+        <*> x .@? "Status"+        <*> x .@? "TargetClusterType"+        <*> x .@? "TargetNodeType"+        <*> x .@? "TargetNumberOfNodes"+        <*> x .@? "TotalResizeDataInMegaBytes"
+ gen/Network/AWS/Redshift/DescribeTags.hs view
@@ -0,0 +1,210 @@+{-# 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.Redshift.DescribeTags+-- 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)++-- | Returns a list of tags. You can return tags from a specific resource by+-- specifying an ARN, or you can return all tags for a given type of resource,+-- such as clusters, snapshots, and so on. The following are limitations for+-- DescribeTags: You cannot specify an ARN and a resource-type value together+-- in the same request. You cannot use the MaxRecords and Marker parameters+-- together with the ARN parameter. The MaxRecords parameter can be a range+-- from 10 to 50 results to return in a request. If you specify both tag keys+-- and tag values in the same request, Amazon Redshift returns all resources+-- that match any combination of the specified keys and values. For example,+-- if you have owner and environment for tag keys, and admin and test for tag+-- values, all resources that have any combination of those values are+-- returned. If both tag keys and values are omitted from the request,+-- resources are returned regardless of whether they have tag keys or values+-- associated with them.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeTags.html>+module Network.AWS.Redshift.DescribeTags+    (+    -- * Request+      DescribeTags+    -- ** Request constructor+    , describeTags+    -- ** Request lenses+    , dtMarker+    , dtMaxRecords+    , dtResourceName+    , dtResourceType+    , dtTagKeys+    , dtTagValues++    -- * Response+    , DescribeTagsResponse+    -- ** Response constructor+    , describeTagsResponse+    -- ** Response lenses+    , dtrMarker+    , dtrTaggedResources+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data DescribeTags = DescribeTags+    { _dtMarker       :: Maybe Text+    , _dtMaxRecords   :: Maybe Int+    , _dtResourceName :: Maybe Text+    , _dtResourceType :: Maybe Text+    , _dtTagKeys      :: List "TagKey" Text+    , _dtTagValues    :: List "TagValue" Text+    } deriving (Eq, Ord, Show)++-- | 'DescribeTags' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dtMarker' @::@ 'Maybe' 'Text'+--+-- * 'dtMaxRecords' @::@ 'Maybe' 'Int'+--+-- * 'dtResourceName' @::@ 'Maybe' 'Text'+--+-- * 'dtResourceType' @::@ 'Maybe' 'Text'+--+-- * 'dtTagKeys' @::@ ['Text']+--+-- * 'dtTagValues' @::@ ['Text']+--+describeTags :: DescribeTags+describeTags = DescribeTags+    { _dtResourceName = Nothing+    , _dtResourceType = Nothing+    , _dtMaxRecords   = Nothing+    , _dtMarker       = Nothing+    , _dtTagKeys      = mempty+    , _dtTagValues    = mempty+    }++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the marker parameter and retrying the command. If the+-- marker field is empty, all response records have been retrieved for the+-- request.+dtMarker :: Lens' DescribeTags (Maybe Text)+dtMarker = lens _dtMarker (\s a -> s { _dtMarker = a })++-- | The maximum number or response records to return in each call. If the+-- number of remaining response records exceeds the specified MaxRecords+-- value, a value is returned in a marker field of the response. You can+-- retrieve the next set of records by retrying the command with the+-- returned marker value.+dtMaxRecords :: Lens' DescribeTags (Maybe Int)+dtMaxRecords = lens _dtMaxRecords (\s a -> s { _dtMaxRecords = a })++-- | The Amazon Resource Name (ARN) for which you want to describe the tag or+-- tags. For example, arn:aws:redshift:us-east-1:123456789:cluster:t1.+dtResourceName :: Lens' DescribeTags (Maybe Text)+dtResourceName = lens _dtResourceName (\s a -> s { _dtResourceName = a })++-- | The type of resource with which you want to view tags. Valid resource+-- types are: Cluster CIDR/IP EC2 security group Snapshot Cluster security+-- group Subnet group HSM connection HSM certificate Parameter group For+-- more information about Amazon Redshift resource types and constructing+-- ARNs, go to Constructing an Amazon Redshift Amazon Resource Name (ARN) in+-- the Amazon Redshift Cluster Management Guide.+dtResourceType :: Lens' DescribeTags (Maybe Text)+dtResourceType = lens _dtResourceType (\s a -> s { _dtResourceType = a })++-- | A tag key or keys for which you want to return all matching resources+-- that are associated with the specified key or keys. For example, suppose+-- that you have resources tagged with keys called owner and environment. If+-- you specify both of these tag keys in the request, Amazon Redshift+-- returns a response with all resources that have either or both of these+-- tag keys associated with them.+dtTagKeys :: Lens' DescribeTags [Text]+dtTagKeys = lens _dtTagKeys (\s a -> s { _dtTagKeys = a }) . _List++-- | A tag value or values for which you want to return all matching resources+-- that are associated with the specified value or values. For example,+-- suppose that you have resources tagged with values called admin and test.+-- If you specify both of these tag values in the request, Amazon Redshift+-- returns a response with all resources that have either or both of these+-- tag values associated with them.+dtTagValues :: Lens' DescribeTags [Text]+dtTagValues = lens _dtTagValues (\s a -> s { _dtTagValues = a }) . _List++data DescribeTagsResponse = DescribeTagsResponse+    { _dtrMarker          :: Maybe Text+    , _dtrTaggedResources :: List "TaggedResource" TaggedResource+    } deriving (Eq, Show)++-- | 'DescribeTagsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dtrMarker' @::@ 'Maybe' 'Text'+--+-- * 'dtrTaggedResources' @::@ ['TaggedResource']+--+describeTagsResponse :: DescribeTagsResponse+describeTagsResponse = DescribeTagsResponse+    { _dtrTaggedResources = mempty+    , _dtrMarker          = Nothing+    }++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+dtrMarker :: Lens' DescribeTagsResponse (Maybe Text)+dtrMarker = lens _dtrMarker (\s a -> s { _dtrMarker = a })++-- | A list of tags with their associated resources.+dtrTaggedResources :: Lens' DescribeTagsResponse [TaggedResource]+dtrTaggedResources =+    lens _dtrTaggedResources (\s a -> s { _dtrTaggedResources = a })+        . _List++instance ToPath DescribeTags where+    toPath = const "/"++instance ToQuery DescribeTags where+    toQuery DescribeTags{..} = mconcat+        [ "Marker"       =? _dtMarker+        , "MaxRecords"   =? _dtMaxRecords+        , "ResourceName" =? _dtResourceName+        , "ResourceType" =? _dtResourceType+        , "TagKeys"      =? _dtTagKeys+        , "TagValues"    =? _dtTagValues+        ]++instance ToHeaders DescribeTags++instance AWSRequest DescribeTags where+    type Sv DescribeTags = Redshift+    type Rs DescribeTags = DescribeTagsResponse++    request  = post "DescribeTags"+    response = xmlResponse++instance FromXML DescribeTagsResponse where+    parseXML = withElement "DescribeTagsResult" $ \x -> DescribeTagsResponse+        <$> x .@? "Marker"+        <*> x .@  "TaggedResources"
+ gen/Network/AWS/Redshift/DisableLogging.hs view
@@ -0,0 +1,166 @@+{-# 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.Redshift.DisableLogging+-- 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)++-- | Stops logging information, such as queries and connection attempts, for the+-- specified Amazon Redshift cluster.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DisableLogging.html>+module Network.AWS.Redshift.DisableLogging+    (+    -- * Request+      DisableLogging+    -- ** Request constructor+    , disableLogging+    -- ** Request lenses+    , dlClusterIdentifier++    -- * Response+    , DisableLoggingResponse+    -- ** Response constructor+    , disableLoggingResponse+    -- ** Response lenses+    , dlrBucketName+    , dlrLastFailureMessage+    , dlrLastFailureTime+    , dlrLastSuccessfulDeliveryTime+    , dlrLoggingEnabled+    , dlrS3KeyPrefix+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype DisableLogging = DisableLogging+    { _dlClusterIdentifier :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DisableLogging' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dlClusterIdentifier' @::@ 'Text'+--+disableLogging :: Text -- ^ 'dlClusterIdentifier'+               -> DisableLogging+disableLogging p1 = DisableLogging+    { _dlClusterIdentifier = p1+    }++-- | The identifier of the cluster on which logging is to be stopped. Example:+-- examplecluster.+dlClusterIdentifier :: Lens' DisableLogging Text+dlClusterIdentifier =+    lens _dlClusterIdentifier (\s a -> s { _dlClusterIdentifier = a })++data DisableLoggingResponse = DisableLoggingResponse+    { _dlrBucketName                 :: Maybe Text+    , _dlrLastFailureMessage         :: Maybe Text+    , _dlrLastFailureTime            :: Maybe RFC822+    , _dlrLastSuccessfulDeliveryTime :: Maybe RFC822+    , _dlrLoggingEnabled             :: Maybe Bool+    , _dlrS3KeyPrefix                :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DisableLoggingResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dlrBucketName' @::@ 'Maybe' 'Text'+--+-- * 'dlrLastFailureMessage' @::@ 'Maybe' 'Text'+--+-- * 'dlrLastFailureTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'dlrLastSuccessfulDeliveryTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'dlrLoggingEnabled' @::@ 'Maybe' 'Bool'+--+-- * 'dlrS3KeyPrefix' @::@ 'Maybe' 'Text'+--+disableLoggingResponse :: DisableLoggingResponse+disableLoggingResponse = DisableLoggingResponse+    { _dlrLoggingEnabled             = Nothing+    , _dlrBucketName                 = Nothing+    , _dlrS3KeyPrefix                = Nothing+    , _dlrLastSuccessfulDeliveryTime = Nothing+    , _dlrLastFailureTime            = Nothing+    , _dlrLastFailureMessage         = Nothing+    }++-- | The name of the S3 bucket where the log files are stored.+dlrBucketName :: Lens' DisableLoggingResponse (Maybe Text)+dlrBucketName = lens _dlrBucketName (\s a -> s { _dlrBucketName = a })++-- | The message indicating that logs failed to be delivered.+dlrLastFailureMessage :: Lens' DisableLoggingResponse (Maybe Text)+dlrLastFailureMessage =+    lens _dlrLastFailureMessage (\s a -> s { _dlrLastFailureMessage = a })++-- | The last time when logs failed to be delivered.+dlrLastFailureTime :: Lens' DisableLoggingResponse (Maybe UTCTime)+dlrLastFailureTime =+    lens _dlrLastFailureTime (\s a -> s { _dlrLastFailureTime = a })+        . mapping _Time++-- | The last time when logs were delivered.+dlrLastSuccessfulDeliveryTime :: Lens' DisableLoggingResponse (Maybe UTCTime)+dlrLastSuccessfulDeliveryTime =+    lens _dlrLastSuccessfulDeliveryTime+        (\s a -> s { _dlrLastSuccessfulDeliveryTime = a })+            . mapping _Time++-- | true if logging is on, false if logging is off.+dlrLoggingEnabled :: Lens' DisableLoggingResponse (Maybe Bool)+dlrLoggingEnabled =+    lens _dlrLoggingEnabled (\s a -> s { _dlrLoggingEnabled = a })++-- | The prefix applied to the log file names.+dlrS3KeyPrefix :: Lens' DisableLoggingResponse (Maybe Text)+dlrS3KeyPrefix = lens _dlrS3KeyPrefix (\s a -> s { _dlrS3KeyPrefix = a })++instance ToPath DisableLogging where+    toPath = const "/"++instance ToQuery DisableLogging where+    toQuery DisableLogging{..} = mconcat+        [ "ClusterIdentifier" =? _dlClusterIdentifier+        ]++instance ToHeaders DisableLogging++instance AWSRequest DisableLogging where+    type Sv DisableLogging = Redshift+    type Rs DisableLogging = DisableLoggingResponse++    request  = post "DisableLogging"+    response = xmlResponse++instance FromXML DisableLoggingResponse where+    parseXML = withElement "DisableLoggingResult" $ \x -> DisableLoggingResponse+        <$> x .@? "BucketName"+        <*> x .@? "LastFailureMessage"+        <*> x .@? "LastFailureTime"+        <*> x .@? "LastSuccessfulDeliveryTime"+        <*> x .@? "LoggingEnabled"+        <*> x .@? "S3KeyPrefix"
+ gen/Network/AWS/Redshift/DisableSnapshotCopy.hs view
@@ -0,0 +1,110 @@+{-# 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.Redshift.DisableSnapshotCopy+-- 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)++-- | Disables the automatic copying of snapshots from one region to another+-- region for a specified cluster.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_DisableSnapshotCopy.html>+module Network.AWS.Redshift.DisableSnapshotCopy+    (+    -- * Request+      DisableSnapshotCopy+    -- ** Request constructor+    , disableSnapshotCopy+    -- ** Request lenses+    , dscClusterIdentifier++    -- * Response+    , DisableSnapshotCopyResponse+    -- ** Response constructor+    , disableSnapshotCopyResponse+    -- ** Response lenses+    , dscrCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype DisableSnapshotCopy = DisableSnapshotCopy+    { _dscClusterIdentifier :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DisableSnapshotCopy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dscClusterIdentifier' @::@ 'Text'+--+disableSnapshotCopy :: Text -- ^ 'dscClusterIdentifier'+                    -> DisableSnapshotCopy+disableSnapshotCopy p1 = DisableSnapshotCopy+    { _dscClusterIdentifier = p1+    }++-- | The unique identifier of the source cluster that you want to disable+-- copying of snapshots to a destination region. Constraints: Must be the+-- valid name of an existing cluster that has cross-region snapshot copy+-- enabled.+dscClusterIdentifier :: Lens' DisableSnapshotCopy Text+dscClusterIdentifier =+    lens _dscClusterIdentifier (\s a -> s { _dscClusterIdentifier = a })++newtype DisableSnapshotCopyResponse = DisableSnapshotCopyResponse+    { _dscrCluster :: Maybe Cluster+    } deriving (Eq, Show)++-- | 'DisableSnapshotCopyResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dscrCluster' @::@ 'Maybe' 'Cluster'+--+disableSnapshotCopyResponse :: DisableSnapshotCopyResponse+disableSnapshotCopyResponse = DisableSnapshotCopyResponse+    { _dscrCluster = Nothing+    }++dscrCluster :: Lens' DisableSnapshotCopyResponse (Maybe Cluster)+dscrCluster = lens _dscrCluster (\s a -> s { _dscrCluster = a })++instance ToPath DisableSnapshotCopy where+    toPath = const "/"++instance ToQuery DisableSnapshotCopy where+    toQuery DisableSnapshotCopy{..} = mconcat+        [ "ClusterIdentifier" =? _dscClusterIdentifier+        ]++instance ToHeaders DisableSnapshotCopy++instance AWSRequest DisableSnapshotCopy where+    type Sv DisableSnapshotCopy = Redshift+    type Rs DisableSnapshotCopy = DisableSnapshotCopyResponse++    request  = post "DisableSnapshotCopy"+    response = xmlResponse++instance FromXML DisableSnapshotCopyResponse where+    parseXML = withElement "DisableSnapshotCopyResult" $ \x -> DisableSnapshotCopyResponse+        <$> x .@? "Cluster"
+ gen/Network/AWS/Redshift/EnableLogging.hs view
@@ -0,0 +1,192 @@+{-# 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.Redshift.EnableLogging+-- 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)++-- | Starts logging information, such as queries and connection attempts, for+-- the specified Amazon Redshift cluster.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_EnableLogging.html>+module Network.AWS.Redshift.EnableLogging+    (+    -- * Request+      EnableLogging+    -- ** Request constructor+    , enableLogging+    -- ** Request lenses+    , elBucketName+    , elClusterIdentifier+    , elS3KeyPrefix++    -- * Response+    , EnableLoggingResponse+    -- ** Response constructor+    , enableLoggingResponse+    -- ** Response lenses+    , elrBucketName+    , elrLastFailureMessage+    , elrLastFailureTime+    , elrLastSuccessfulDeliveryTime+    , elrLoggingEnabled+    , elrS3KeyPrefix+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data EnableLogging = EnableLogging+    { _elBucketName        :: Text+    , _elClusterIdentifier :: Text+    , _elS3KeyPrefix       :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'EnableLogging' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'elBucketName' @::@ 'Text'+--+-- * 'elClusterIdentifier' @::@ 'Text'+--+-- * 'elS3KeyPrefix' @::@ 'Maybe' 'Text'+--+enableLogging :: Text -- ^ 'elClusterIdentifier'+              -> Text -- ^ 'elBucketName'+              -> EnableLogging+enableLogging p1 p2 = EnableLogging+    { _elClusterIdentifier = p1+    , _elBucketName        = p2+    , _elS3KeyPrefix       = Nothing+    }++-- | The name of an existing S3 bucket where the log files are to be stored.+-- Constraints: Must be in the same region as the cluster The cluster must+-- have read bucket and put object permissions.+elBucketName :: Lens' EnableLogging Text+elBucketName = lens _elBucketName (\s a -> s { _elBucketName = a })++-- | The identifier of the cluster on which logging is to be started. Example:+-- examplecluster.+elClusterIdentifier :: Lens' EnableLogging Text+elClusterIdentifier =+    lens _elClusterIdentifier (\s a -> s { _elClusterIdentifier = a })++-- | The prefix applied to the log file names. Constraints: Cannot exceed 512+-- characters Cannot contain spaces( ), double quotes ("), single quotes+-- ('), a backslash (\), or control characters. The hexadecimal codes for+-- invalid characters are: x00 to x20 x22 x27 x5c x7f or larger.+elS3KeyPrefix :: Lens' EnableLogging (Maybe Text)+elS3KeyPrefix = lens _elS3KeyPrefix (\s a -> s { _elS3KeyPrefix = a })++data EnableLoggingResponse = EnableLoggingResponse+    { _elrBucketName                 :: Maybe Text+    , _elrLastFailureMessage         :: Maybe Text+    , _elrLastFailureTime            :: Maybe RFC822+    , _elrLastSuccessfulDeliveryTime :: Maybe RFC822+    , _elrLoggingEnabled             :: Maybe Bool+    , _elrS3KeyPrefix                :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'EnableLoggingResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'elrBucketName' @::@ 'Maybe' 'Text'+--+-- * 'elrLastFailureMessage' @::@ 'Maybe' 'Text'+--+-- * 'elrLastFailureTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'elrLastSuccessfulDeliveryTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'elrLoggingEnabled' @::@ 'Maybe' 'Bool'+--+-- * 'elrS3KeyPrefix' @::@ 'Maybe' 'Text'+--+enableLoggingResponse :: EnableLoggingResponse+enableLoggingResponse = EnableLoggingResponse+    { _elrLoggingEnabled             = Nothing+    , _elrBucketName                 = Nothing+    , _elrS3KeyPrefix                = Nothing+    , _elrLastSuccessfulDeliveryTime = Nothing+    , _elrLastFailureTime            = Nothing+    , _elrLastFailureMessage         = Nothing+    }++-- | The name of the S3 bucket where the log files are stored.+elrBucketName :: Lens' EnableLoggingResponse (Maybe Text)+elrBucketName = lens _elrBucketName (\s a -> s { _elrBucketName = a })++-- | The message indicating that logs failed to be delivered.+elrLastFailureMessage :: Lens' EnableLoggingResponse (Maybe Text)+elrLastFailureMessage =+    lens _elrLastFailureMessage (\s a -> s { _elrLastFailureMessage = a })++-- | The last time when logs failed to be delivered.+elrLastFailureTime :: Lens' EnableLoggingResponse (Maybe UTCTime)+elrLastFailureTime =+    lens _elrLastFailureTime (\s a -> s { _elrLastFailureTime = a })+        . mapping _Time++-- | The last time when logs were delivered.+elrLastSuccessfulDeliveryTime :: Lens' EnableLoggingResponse (Maybe UTCTime)+elrLastSuccessfulDeliveryTime =+    lens _elrLastSuccessfulDeliveryTime+        (\s a -> s { _elrLastSuccessfulDeliveryTime = a })+            . mapping _Time++-- | true if logging is on, false if logging is off.+elrLoggingEnabled :: Lens' EnableLoggingResponse (Maybe Bool)+elrLoggingEnabled =+    lens _elrLoggingEnabled (\s a -> s { _elrLoggingEnabled = a })++-- | The prefix applied to the log file names.+elrS3KeyPrefix :: Lens' EnableLoggingResponse (Maybe Text)+elrS3KeyPrefix = lens _elrS3KeyPrefix (\s a -> s { _elrS3KeyPrefix = a })++instance ToPath EnableLogging where+    toPath = const "/"++instance ToQuery EnableLogging where+    toQuery EnableLogging{..} = mconcat+        [ "BucketName"        =? _elBucketName+        , "ClusterIdentifier" =? _elClusterIdentifier+        , "S3KeyPrefix"       =? _elS3KeyPrefix+        ]++instance ToHeaders EnableLogging++instance AWSRequest EnableLogging where+    type Sv EnableLogging = Redshift+    type Rs EnableLogging = EnableLoggingResponse++    request  = post "EnableLogging"+    response = xmlResponse++instance FromXML EnableLoggingResponse where+    parseXML = withElement "EnableLoggingResult" $ \x -> EnableLoggingResponse+        <$> x .@? "BucketName"+        <*> x .@? "LastFailureMessage"+        <*> x .@? "LastFailureTime"+        <*> x .@? "LastSuccessfulDeliveryTime"+        <*> x .@? "LoggingEnabled"+        <*> x .@? "S3KeyPrefix"
+ gen/Network/AWS/Redshift/EnableSnapshotCopy.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.Redshift.EnableSnapshotCopy+-- 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)++-- | Enables the automatic copy of snapshots from one region to another region+-- for a specified cluster.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_EnableSnapshotCopy.html>+module Network.AWS.Redshift.EnableSnapshotCopy+    (+    -- * Request+      EnableSnapshotCopy+    -- ** Request constructor+    , enableSnapshotCopy+    -- ** Request lenses+    , escClusterIdentifier+    , escDestinationRegion+    , escRetentionPeriod++    -- * Response+    , EnableSnapshotCopyResponse+    -- ** Response constructor+    , enableSnapshotCopyResponse+    -- ** Response lenses+    , escrCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data EnableSnapshotCopy = EnableSnapshotCopy+    { _escClusterIdentifier :: Text+    , _escDestinationRegion :: Text+    , _escRetentionPeriod   :: Maybe Int+    } deriving (Eq, Ord, Show)++-- | 'EnableSnapshotCopy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'escClusterIdentifier' @::@ 'Text'+--+-- * 'escDestinationRegion' @::@ 'Text'+--+-- * 'escRetentionPeriod' @::@ 'Maybe' 'Int'+--+enableSnapshotCopy :: Text -- ^ 'escClusterIdentifier'+                   -> Text -- ^ 'escDestinationRegion'+                   -> EnableSnapshotCopy+enableSnapshotCopy p1 p2 = EnableSnapshotCopy+    { _escClusterIdentifier = p1+    , _escDestinationRegion = p2+    , _escRetentionPeriod   = Nothing+    }++-- | The unique identifier of the source cluster to copy snapshots from.+-- Constraints: Must be the valid name of an existing cluster that does not+-- already have cross-region snapshot copy enabled.+escClusterIdentifier :: Lens' EnableSnapshotCopy Text+escClusterIdentifier =+    lens _escClusterIdentifier (\s a -> s { _escClusterIdentifier = a })++-- | The destination region that you want to copy snapshots to. Constraints:+-- Must be the name of a valid region. For more information, see Regions and+-- Endpoints in the Amazon Web Services General Reference.+escDestinationRegion :: Lens' EnableSnapshotCopy Text+escDestinationRegion =+    lens _escDestinationRegion (\s a -> s { _escDestinationRegion = a })++-- | The number of days to retain automated snapshots in the destination+-- region after they are copied from the source region. Default: 7.+-- Constraints: Must be at least 1 and no more than 35.+escRetentionPeriod :: Lens' EnableSnapshotCopy (Maybe Int)+escRetentionPeriod =+    lens _escRetentionPeriod (\s a -> s { _escRetentionPeriod = a })++newtype EnableSnapshotCopyResponse = EnableSnapshotCopyResponse+    { _escrCluster :: Maybe Cluster+    } deriving (Eq, Show)++-- | 'EnableSnapshotCopyResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'escrCluster' @::@ 'Maybe' 'Cluster'+--+enableSnapshotCopyResponse :: EnableSnapshotCopyResponse+enableSnapshotCopyResponse = EnableSnapshotCopyResponse+    { _escrCluster = Nothing+    }++escrCluster :: Lens' EnableSnapshotCopyResponse (Maybe Cluster)+escrCluster = lens _escrCluster (\s a -> s { _escrCluster = a })++instance ToPath EnableSnapshotCopy where+    toPath = const "/"++instance ToQuery EnableSnapshotCopy where+    toQuery EnableSnapshotCopy{..} = mconcat+        [ "ClusterIdentifier" =? _escClusterIdentifier+        , "DestinationRegion" =? _escDestinationRegion+        , "RetentionPeriod"   =? _escRetentionPeriod+        ]++instance ToHeaders EnableSnapshotCopy++instance AWSRequest EnableSnapshotCopy where+    type Sv EnableSnapshotCopy = Redshift+    type Rs EnableSnapshotCopy = EnableSnapshotCopyResponse++    request  = post "EnableSnapshotCopy"+    response = xmlResponse++instance FromXML EnableSnapshotCopyResponse where+    parseXML = withElement "EnableSnapshotCopyResult" $ \x -> EnableSnapshotCopyResponse+        <$> x .@? "Cluster"
+ gen/Network/AWS/Redshift/ModifyCluster.hs view
@@ -0,0 +1,344 @@+{-# 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.Redshift.ModifyCluster+-- 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)++-- | Modifies the settings for a cluster. For example, you can add another+-- security or parameter group, update the preferred maintenance window, or+-- change the master user password. Resetting a cluster password or modifying+-- the security groups associated with a cluster do not need a reboot.+-- However, modifying a parameter group requires a reboot for parameters to+-- take effect. For more information about managing clusters, go to Amazon+-- Redshift Clusters in the Amazon Redshift Cluster Management Guide . You can+-- also change node type and the number of nodes to scale up or down the+-- cluster. When resizing a cluster, you must specify both the number of nodes+-- and the node type even if one of the parameters does not change.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_ModifyCluster.html>+module Network.AWS.Redshift.ModifyCluster+    (+    -- * Request+      ModifyCluster+    -- ** Request constructor+    , modifyCluster+    -- ** Request lenses+    , mcAllowVersionUpgrade+    , mcAutomatedSnapshotRetentionPeriod+    , mcClusterIdentifier+    , mcClusterParameterGroupName+    , mcClusterSecurityGroups+    , mcClusterType+    , mcClusterVersion+    , mcHsmClientCertificateIdentifier+    , mcHsmConfigurationIdentifier+    , mcMasterUserPassword+    , mcNewClusterIdentifier+    , mcNodeType+    , mcNumberOfNodes+    , mcPreferredMaintenanceWindow+    , mcVpcSecurityGroupIds++    -- * Response+    , ModifyClusterResponse+    -- ** Response constructor+    , modifyClusterResponse+    -- ** Response lenses+    , mcrCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data ModifyCluster = ModifyCluster+    { _mcAllowVersionUpgrade              :: Maybe Bool+    , _mcAutomatedSnapshotRetentionPeriod :: Maybe Int+    , _mcClusterIdentifier                :: Text+    , _mcClusterParameterGroupName        :: Maybe Text+    , _mcClusterSecurityGroups            :: List "ClusterSecurityGroupName" Text+    , _mcClusterType                      :: Maybe Text+    , _mcClusterVersion                   :: Maybe Text+    , _mcHsmClientCertificateIdentifier   :: Maybe Text+    , _mcHsmConfigurationIdentifier       :: Maybe Text+    , _mcMasterUserPassword               :: Maybe Text+    , _mcNewClusterIdentifier             :: Maybe Text+    , _mcNodeType                         :: Maybe Text+    , _mcNumberOfNodes                    :: Maybe Int+    , _mcPreferredMaintenanceWindow       :: Maybe Text+    , _mcVpcSecurityGroupIds              :: List "VpcSecurityGroupId" Text+    } deriving (Eq, Ord, Show)++-- | 'ModifyCluster' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mcAllowVersionUpgrade' @::@ 'Maybe' 'Bool'+--+-- * 'mcAutomatedSnapshotRetentionPeriod' @::@ 'Maybe' 'Int'+--+-- * 'mcClusterIdentifier' @::@ 'Text'+--+-- * 'mcClusterParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'mcClusterSecurityGroups' @::@ ['Text']+--+-- * 'mcClusterType' @::@ 'Maybe' 'Text'+--+-- * 'mcClusterVersion' @::@ 'Maybe' 'Text'+--+-- * 'mcHsmClientCertificateIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'mcHsmConfigurationIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'mcMasterUserPassword' @::@ 'Maybe' 'Text'+--+-- * 'mcNewClusterIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'mcNodeType' @::@ 'Maybe' 'Text'+--+-- * 'mcNumberOfNodes' @::@ 'Maybe' 'Int'+--+-- * 'mcPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'+--+-- * 'mcVpcSecurityGroupIds' @::@ ['Text']+--+modifyCluster :: Text -- ^ 'mcClusterIdentifier'+              -> ModifyCluster+modifyCluster p1 = ModifyCluster+    { _mcClusterIdentifier                = p1+    , _mcClusterType                      = Nothing+    , _mcNodeType                         = Nothing+    , _mcNumberOfNodes                    = Nothing+    , _mcClusterSecurityGroups            = mempty+    , _mcVpcSecurityGroupIds              = mempty+    , _mcMasterUserPassword               = Nothing+    , _mcClusterParameterGroupName        = Nothing+    , _mcAutomatedSnapshotRetentionPeriod = Nothing+    , _mcPreferredMaintenanceWindow       = Nothing+    , _mcClusterVersion                   = Nothing+    , _mcAllowVersionUpgrade              = Nothing+    , _mcHsmClientCertificateIdentifier   = Nothing+    , _mcHsmConfigurationIdentifier       = Nothing+    , _mcNewClusterIdentifier             = Nothing+    }++-- | If true, major version upgrades will be applied automatically to the+-- cluster during the maintenance window. Default: false.+mcAllowVersionUpgrade :: Lens' ModifyCluster (Maybe Bool)+mcAllowVersionUpgrade =+    lens _mcAllowVersionUpgrade (\s a -> s { _mcAllowVersionUpgrade = a })++-- | The number of days that automated snapshots are retained. If the value is+-- 0, automated snapshots are disabled. Even if automated snapshots are+-- disabled, you can still create manual snapshots when you want with+-- CreateClusterSnapshot. If you decrease the automated snapshot retention+-- period from its current value, existing automated snapshots that fall+-- outside of the new retention period will be immediately deleted. Default:+-- Uses existing setting. Constraints: Must be a value from 0 to 35.+mcAutomatedSnapshotRetentionPeriod :: Lens' ModifyCluster (Maybe Int)+mcAutomatedSnapshotRetentionPeriod =+    lens _mcAutomatedSnapshotRetentionPeriod+        (\s a -> s { _mcAutomatedSnapshotRetentionPeriod = a })++-- | The unique identifier of the cluster to be modified. Example:+-- examplecluster.+mcClusterIdentifier :: Lens' ModifyCluster Text+mcClusterIdentifier =+    lens _mcClusterIdentifier (\s a -> s { _mcClusterIdentifier = a })++-- | The name of the cluster parameter group to apply to this cluster. This+-- change is applied only after the cluster is rebooted. To reboot a cluster+-- use RebootCluster. Default: Uses existing setting. Constraints: The+-- cluster parameter group must be in the same parameter group family that+-- matches the cluster version.+mcClusterParameterGroupName :: Lens' ModifyCluster (Maybe Text)+mcClusterParameterGroupName =+    lens _mcClusterParameterGroupName+        (\s a -> s { _mcClusterParameterGroupName = a })++-- | A list of cluster security groups to be authorized on this cluster. This+-- change is asynchronously applied as soon as possible. Security groups+-- currently associated with the cluster, and not in the list of groups to+-- apply, will be revoked from the cluster. Constraints: Must be 1 to 255+-- alphanumeric characters or hyphens First character must be a letter+-- Cannot end with a hyphen or contain two consecutive hyphens.+mcClusterSecurityGroups :: Lens' ModifyCluster [Text]+mcClusterSecurityGroups =+    lens _mcClusterSecurityGroups (\s a -> s { _mcClusterSecurityGroups = a })+        . _List++-- | The new cluster type. When you submit your cluster resize request, your+-- existing cluster goes into a read-only mode. After Amazon Redshift+-- provisions a new cluster based on your resize requirements, there will be+-- outage for a period while the old cluster is deleted and your connection+-- is switched to the new cluster. You can use DescribeResize to track the+-- progress of the resize request. Valid Values: multi-node | single-node.+mcClusterType :: Lens' ModifyCluster (Maybe Text)+mcClusterType = lens _mcClusterType (\s a -> s { _mcClusterType = a })++-- | The new version number of the Amazon Redshift engine to upgrade to. For+-- major version upgrades, if a non-default cluster parameter group is+-- currently in use, a new cluster parameter group in the cluster parameter+-- group family for the new version must be specified. The new cluster+-- parameter group can be the default for that cluster parameter group+-- family. For more information about managing parameter groups, go to+-- Amazon Redshift Parameter Groups in the Amazon Redshift Cluster+-- Management Guide. Example: 1.0.+mcClusterVersion :: Lens' ModifyCluster (Maybe Text)+mcClusterVersion = lens _mcClusterVersion (\s a -> s { _mcClusterVersion = a })++-- | Specifies the name of the HSM client certificate the Amazon Redshift+-- cluster uses to retrieve the data encryption keys stored in an HSM.+mcHsmClientCertificateIdentifier :: Lens' ModifyCluster (Maybe Text)+mcHsmClientCertificateIdentifier =+    lens _mcHsmClientCertificateIdentifier+        (\s a -> s { _mcHsmClientCertificateIdentifier = a })++-- | Specifies the name of the HSM configuration that contains the information+-- the Amazon Redshift cluster can use to retrieve and store keys in an HSM.+mcHsmConfigurationIdentifier :: Lens' ModifyCluster (Maybe Text)+mcHsmConfigurationIdentifier =+    lens _mcHsmConfigurationIdentifier+        (\s a -> s { _mcHsmConfigurationIdentifier = a })++-- | The new password for the cluster master user. This change is+-- asynchronously applied as soon as possible. Between the time of the+-- request and the completion of the request, the MasterUserPassword element+-- exists in the PendingModifiedValues element of the operation response.+-- Operations never return the password, so this operation provides a way to+-- regain access to the master user account for a cluster if the password is+-- lost. Default: Uses existing setting. Constraints: Must be between 8 and+-- 64 characters in length. Must contain at least one uppercase letter. Must+-- contain at least one lowercase letter. Must contain one number. Can be+-- any printable ASCII character (ASCII code 33 to 126) except ' (single+-- quote), " (double quote), \, /, @, or space.+mcMasterUserPassword :: Lens' ModifyCluster (Maybe Text)+mcMasterUserPassword =+    lens _mcMasterUserPassword (\s a -> s { _mcMasterUserPassword = a })++-- | The new identifier for the cluster. Constraints: Must contain from 1 to+-- 63 alphanumeric characters or hyphens. Alphabetic characters must be+-- lowercase. First character must be a letter. Cannot end with a hyphen or+-- contain two consecutive hyphens. Must be unique for all clusters within+-- an AWS account. Example: examplecluster.+mcNewClusterIdentifier :: Lens' ModifyCluster (Maybe Text)+mcNewClusterIdentifier =+    lens _mcNewClusterIdentifier (\s a -> s { _mcNewClusterIdentifier = a })++-- | The new node type of the cluster. If you specify a new node type, you+-- must also specify the number of nodes parameter. When you submit your+-- request to resize a cluster, Amazon Redshift sets access permissions for+-- the cluster to read-only. After Amazon Redshift provisions a new cluster+-- according to your resize requirements, there will be a temporary outage+-- while the old cluster is deleted and your connection is switched to the+-- new cluster. When the new connection is complete, the original access+-- permissions for the cluster are restored. You can use DescribeResize to+-- track the progress of the resize request. Valid Values: dw1.xlarge |+-- dw1.8xlarge | dw2.large | dw2.8xlarge.+mcNodeType :: Lens' ModifyCluster (Maybe Text)+mcNodeType = lens _mcNodeType (\s a -> s { _mcNodeType = a })++-- | The new number of nodes of the cluster. If you specify a new number of+-- nodes, you must also specify the node type parameter. When you submit+-- your request to resize a cluster, Amazon Redshift sets access permissions+-- for the cluster to read-only. After Amazon Redshift provisions a new+-- cluster according to your resize requirements, there will be a temporary+-- outage while the old cluster is deleted and your connection is switched+-- to the new cluster. When the new connection is complete, the original+-- access permissions for the cluster are restored. You can use+-- DescribeResize to track the progress of the resize request. Valid Values:+-- Integer greater than 0.+mcNumberOfNodes :: Lens' ModifyCluster (Maybe Int)+mcNumberOfNodes = lens _mcNumberOfNodes (\s a -> s { _mcNumberOfNodes = a })++-- | The weekly time range (in UTC) during which system maintenance can occur,+-- if necessary. If system maintenance is necessary during the window, it+-- may result in an outage. This maintenance window change is made+-- immediately. If the new maintenance window indicates the current time,+-- there must be at least 120 minutes between the current time and end of+-- the window in order to ensure that pending changes are applied. Default:+-- Uses existing setting. Format: ddd:hh24:mi-ddd:hh24:mi, for example+-- wed:07:30-wed:08:00. Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun+-- Constraints: Must be at least 30 minutes.+mcPreferredMaintenanceWindow :: Lens' ModifyCluster (Maybe Text)+mcPreferredMaintenanceWindow =+    lens _mcPreferredMaintenanceWindow+        (\s a -> s { _mcPreferredMaintenanceWindow = a })++-- | A list of virtual private cloud (VPC) security groups to be associated+-- with the cluster.+mcVpcSecurityGroupIds :: Lens' ModifyCluster [Text]+mcVpcSecurityGroupIds =+    lens _mcVpcSecurityGroupIds (\s a -> s { _mcVpcSecurityGroupIds = a })+        . _List++newtype ModifyClusterResponse = ModifyClusterResponse+    { _mcrCluster :: Maybe Cluster+    } deriving (Eq, Show)++-- | 'ModifyClusterResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mcrCluster' @::@ 'Maybe' 'Cluster'+--+modifyClusterResponse :: ModifyClusterResponse+modifyClusterResponse = ModifyClusterResponse+    { _mcrCluster = Nothing+    }++mcrCluster :: Lens' ModifyClusterResponse (Maybe Cluster)+mcrCluster = lens _mcrCluster (\s a -> s { _mcrCluster = a })++instance ToPath ModifyCluster where+    toPath = const "/"++instance ToQuery ModifyCluster where+    toQuery ModifyCluster{..} = mconcat+        [ "AllowVersionUpgrade"              =? _mcAllowVersionUpgrade+        , "AutomatedSnapshotRetentionPeriod" =? _mcAutomatedSnapshotRetentionPeriod+        , "ClusterIdentifier"                =? _mcClusterIdentifier+        , "ClusterParameterGroupName"        =? _mcClusterParameterGroupName+        , "ClusterSecurityGroups"            =? _mcClusterSecurityGroups+        , "ClusterType"                      =? _mcClusterType+        , "ClusterVersion"                   =? _mcClusterVersion+        , "HsmClientCertificateIdentifier"   =? _mcHsmClientCertificateIdentifier+        , "HsmConfigurationIdentifier"       =? _mcHsmConfigurationIdentifier+        , "MasterUserPassword"               =? _mcMasterUserPassword+        , "NewClusterIdentifier"             =? _mcNewClusterIdentifier+        , "NodeType"                         =? _mcNodeType+        , "NumberOfNodes"                    =? _mcNumberOfNodes+        , "PreferredMaintenanceWindow"       =? _mcPreferredMaintenanceWindow+        , "VpcSecurityGroupIds"              =? _mcVpcSecurityGroupIds+        ]++instance ToHeaders ModifyCluster++instance AWSRequest ModifyCluster where+    type Sv ModifyCluster = Redshift+    type Rs ModifyCluster = ModifyClusterResponse++    request  = post "ModifyCluster"+    response = xmlResponse++instance FromXML ModifyClusterResponse where+    parseXML = withElement "ModifyClusterResult" $ \x -> ModifyClusterResponse+        <$> x .@? "Cluster"
+ gen/Network/AWS/Redshift/ModifyClusterParameterGroup.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.Redshift.ModifyClusterParameterGroup+-- 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)++-- | Modifies the parameters of a parameter group. For more information about+-- managing parameter groups, go to Amazon Redshift Parameter Groups in the+-- Amazon Redshift Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_ModifyClusterParameterGroup.html>+module Network.AWS.Redshift.ModifyClusterParameterGroup+    (+    -- * Request+      ModifyClusterParameterGroup+    -- ** Request constructor+    , modifyClusterParameterGroup+    -- ** Request lenses+    , mcpgParameterGroupName+    , mcpgParameters++    -- * Response+    , ModifyClusterParameterGroupResponse+    -- ** Response constructor+    , modifyClusterParameterGroupResponse+    -- ** Response lenses+    , mcpgrParameterGroupName+    , mcpgrParameterGroupStatus+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data ModifyClusterParameterGroup = ModifyClusterParameterGroup+    { _mcpgParameterGroupName :: Text+    , _mcpgParameters         :: List "Parameter" Parameter+    } deriving (Eq, Show)++-- | 'ModifyClusterParameterGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mcpgParameterGroupName' @::@ 'Text'+--+-- * 'mcpgParameters' @::@ ['Parameter']+--+modifyClusterParameterGroup :: Text -- ^ 'mcpgParameterGroupName'+                            -> ModifyClusterParameterGroup+modifyClusterParameterGroup p1 = ModifyClusterParameterGroup+    { _mcpgParameterGroupName = p1+    , _mcpgParameters         = mempty+    }++-- | The name of the parameter group to be modified.+mcpgParameterGroupName :: Lens' ModifyClusterParameterGroup Text+mcpgParameterGroupName =+    lens _mcpgParameterGroupName (\s a -> s { _mcpgParameterGroupName = a })++-- | An array of parameters to be modified. A maximum of 20 parameters can be+-- modified in a single request. For each parameter to be modified, you must+-- supply at least the parameter name and parameter value; other name-value+-- pairs of the parameter are optional. For the workload management (WLM)+-- configuration, you must supply all the name-value pairs in the+-- wlm_json_configuration parameter.+mcpgParameters :: Lens' ModifyClusterParameterGroup [Parameter]+mcpgParameters = lens _mcpgParameters (\s a -> s { _mcpgParameters = a }) . _List++data ModifyClusterParameterGroupResponse = ModifyClusterParameterGroupResponse+    { _mcpgrParameterGroupName   :: Maybe Text+    , _mcpgrParameterGroupStatus :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ModifyClusterParameterGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mcpgrParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'mcpgrParameterGroupStatus' @::@ 'Maybe' 'Text'+--+modifyClusterParameterGroupResponse :: ModifyClusterParameterGroupResponse+modifyClusterParameterGroupResponse = ModifyClusterParameterGroupResponse+    { _mcpgrParameterGroupName   = Nothing+    , _mcpgrParameterGroupStatus = Nothing+    }++-- | The name of the cluster parameter group.+mcpgrParameterGroupName :: Lens' ModifyClusterParameterGroupResponse (Maybe Text)+mcpgrParameterGroupName =+    lens _mcpgrParameterGroupName (\s a -> s { _mcpgrParameterGroupName = a })++-- | The status of the parameter group. For example, if you made a change to a+-- parameter group name-value pair, then the change could be pending a+-- reboot of an associated cluster.+mcpgrParameterGroupStatus :: Lens' ModifyClusterParameterGroupResponse (Maybe Text)+mcpgrParameterGroupStatus =+    lens _mcpgrParameterGroupStatus+        (\s a -> s { _mcpgrParameterGroupStatus = a })++instance ToPath ModifyClusterParameterGroup where+    toPath = const "/"++instance ToQuery ModifyClusterParameterGroup where+    toQuery ModifyClusterParameterGroup{..} = mconcat+        [ "ParameterGroupName" =? _mcpgParameterGroupName+        , "Parameters"         =? _mcpgParameters+        ]++instance ToHeaders ModifyClusterParameterGroup++instance AWSRequest ModifyClusterParameterGroup where+    type Sv ModifyClusterParameterGroup = Redshift+    type Rs ModifyClusterParameterGroup = ModifyClusterParameterGroupResponse++    request  = post "ModifyClusterParameterGroup"+    response = xmlResponse++instance FromXML ModifyClusterParameterGroupResponse where+    parseXML = withElement "ModifyClusterParameterGroupResult" $ \x -> ModifyClusterParameterGroupResponse+        <$> x .@? "ParameterGroupName"+        <*> x .@? "ParameterGroupStatus"
+ gen/Network/AWS/Redshift/ModifyClusterSubnetGroup.hs view
@@ -0,0 +1,131 @@+{-# 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.Redshift.ModifyClusterSubnetGroup+-- 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)++-- | Modifies a cluster subnet group to include the specified list of VPC+-- subnets. The operation replaces the existing list of subnets with the new+-- list of subnets.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_ModifyClusterSubnetGroup.html>+module Network.AWS.Redshift.ModifyClusterSubnetGroup+    (+    -- * Request+      ModifyClusterSubnetGroup+    -- ** Request constructor+    , modifyClusterSubnetGroup+    -- ** Request lenses+    , mcsgClusterSubnetGroupName+    , mcsgDescription+    , mcsgSubnetIds++    -- * Response+    , ModifyClusterSubnetGroupResponse+    -- ** Response constructor+    , modifyClusterSubnetGroupResponse+    -- ** Response lenses+    , mcsgrClusterSubnetGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data ModifyClusterSubnetGroup = ModifyClusterSubnetGroup+    { _mcsgClusterSubnetGroupName :: Text+    , _mcsgDescription            :: Maybe Text+    , _mcsgSubnetIds              :: List "SubnetIdentifier" Text+    } deriving (Eq, Ord, Show)++-- | 'ModifyClusterSubnetGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mcsgClusterSubnetGroupName' @::@ 'Text'+--+-- * 'mcsgDescription' @::@ 'Maybe' 'Text'+--+-- * 'mcsgSubnetIds' @::@ ['Text']+--+modifyClusterSubnetGroup :: Text -- ^ 'mcsgClusterSubnetGroupName'+                         -> ModifyClusterSubnetGroup+modifyClusterSubnetGroup p1 = ModifyClusterSubnetGroup+    { _mcsgClusterSubnetGroupName = p1+    , _mcsgDescription            = Nothing+    , _mcsgSubnetIds              = mempty+    }++-- | The name of the subnet group to be modified.+mcsgClusterSubnetGroupName :: Lens' ModifyClusterSubnetGroup Text+mcsgClusterSubnetGroupName =+    lens _mcsgClusterSubnetGroupName+        (\s a -> s { _mcsgClusterSubnetGroupName = a })++-- | A text description of the subnet group to be modified.+mcsgDescription :: Lens' ModifyClusterSubnetGroup (Maybe Text)+mcsgDescription = lens _mcsgDescription (\s a -> s { _mcsgDescription = a })++-- | An array of VPC subnet IDs. A maximum of 20 subnets can be modified in a+-- single request.+mcsgSubnetIds :: Lens' ModifyClusterSubnetGroup [Text]+mcsgSubnetIds = lens _mcsgSubnetIds (\s a -> s { _mcsgSubnetIds = a }) . _List++newtype ModifyClusterSubnetGroupResponse = ModifyClusterSubnetGroupResponse+    { _mcsgrClusterSubnetGroup :: Maybe ClusterSubnetGroup+    } deriving (Eq, Show)++-- | 'ModifyClusterSubnetGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mcsgrClusterSubnetGroup' @::@ 'Maybe' 'ClusterSubnetGroup'+--+modifyClusterSubnetGroupResponse :: ModifyClusterSubnetGroupResponse+modifyClusterSubnetGroupResponse = ModifyClusterSubnetGroupResponse+    { _mcsgrClusterSubnetGroup = Nothing+    }++mcsgrClusterSubnetGroup :: Lens' ModifyClusterSubnetGroupResponse (Maybe ClusterSubnetGroup)+mcsgrClusterSubnetGroup =+    lens _mcsgrClusterSubnetGroup (\s a -> s { _mcsgrClusterSubnetGroup = a })++instance ToPath ModifyClusterSubnetGroup where+    toPath = const "/"++instance ToQuery ModifyClusterSubnetGroup where+    toQuery ModifyClusterSubnetGroup{..} = mconcat+        [ "ClusterSubnetGroupName" =? _mcsgClusterSubnetGroupName+        , "Description"            =? _mcsgDescription+        , "SubnetIds"              =? _mcsgSubnetIds+        ]++instance ToHeaders ModifyClusterSubnetGroup++instance AWSRequest ModifyClusterSubnetGroup where+    type Sv ModifyClusterSubnetGroup = Redshift+    type Rs ModifyClusterSubnetGroup = ModifyClusterSubnetGroupResponse++    request  = post "ModifyClusterSubnetGroup"+    response = xmlResponse++instance FromXML ModifyClusterSubnetGroupResponse where+    parseXML = withElement "ModifyClusterSubnetGroupResult" $ \x -> ModifyClusterSubnetGroupResponse+        <$> x .@? "ClusterSubnetGroup"
+ gen/Network/AWS/Redshift/ModifyEventSubscription.hs view
@@ -0,0 +1,185 @@+{-# 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.Redshift.ModifyEventSubscription+-- 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)++-- | Modifies an existing Amazon Redshift event notification subscription.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_ModifyEventSubscription.html>+module Network.AWS.Redshift.ModifyEventSubscription+    (+    -- * Request+      ModifyEventSubscription+    -- ** Request constructor+    , modifyEventSubscription+    -- ** Request lenses+    , mesEnabled+    , mesEventCategories+    , mesSeverity+    , mesSnsTopicArn+    , mesSourceIds+    , mesSourceType+    , mesSubscriptionName++    -- * Response+    , ModifyEventSubscriptionResponse+    -- ** Response constructor+    , modifyEventSubscriptionResponse+    -- ** Response lenses+    , mesrEventSubscription+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data ModifyEventSubscription = ModifyEventSubscription+    { _mesEnabled          :: Maybe Bool+    , _mesEventCategories  :: List "EventCategory" Text+    , _mesSeverity         :: Maybe Text+    , _mesSnsTopicArn      :: Maybe Text+    , _mesSourceIds        :: List "SourceId" Text+    , _mesSourceType       :: Maybe Text+    , _mesSubscriptionName :: Text+    } deriving (Eq, Ord, Show)++-- | 'ModifyEventSubscription' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mesEnabled' @::@ 'Maybe' 'Bool'+--+-- * 'mesEventCategories' @::@ ['Text']+--+-- * 'mesSeverity' @::@ 'Maybe' 'Text'+--+-- * 'mesSnsTopicArn' @::@ 'Maybe' 'Text'+--+-- * 'mesSourceIds' @::@ ['Text']+--+-- * 'mesSourceType' @::@ 'Maybe' 'Text'+--+-- * 'mesSubscriptionName' @::@ 'Text'+--+modifyEventSubscription :: Text -- ^ 'mesSubscriptionName'+                        -> ModifyEventSubscription+modifyEventSubscription p1 = ModifyEventSubscription+    { _mesSubscriptionName = p1+    , _mesSnsTopicArn      = Nothing+    , _mesSourceType       = Nothing+    , _mesSourceIds        = mempty+    , _mesEventCategories  = mempty+    , _mesSeverity         = Nothing+    , _mesEnabled          = Nothing+    }++-- | A Boolean value indicating if the subscription is enabled. true indicates+-- the subscription is enabled.+mesEnabled :: Lens' ModifyEventSubscription (Maybe Bool)+mesEnabled = lens _mesEnabled (\s a -> s { _mesEnabled = a })++-- | Specifies the Amazon Redshift event categories to be published by the+-- event notification subscription. Values: Configuration, Management,+-- Monitoring, Security.+mesEventCategories :: Lens' ModifyEventSubscription [Text]+mesEventCategories =+    lens _mesEventCategories (\s a -> s { _mesEventCategories = a })+        . _List++-- | Specifies the Amazon Redshift event severity to be published by the event+-- notification subscription. Values: ERROR, INFO.+mesSeverity :: Lens' ModifyEventSubscription (Maybe Text)+mesSeverity = lens _mesSeverity (\s a -> s { _mesSeverity = a })++-- | The Amazon Resource Name (ARN) of the SNS topic to be used by the event+-- notification subscription.+mesSnsTopicArn :: Lens' ModifyEventSubscription (Maybe Text)+mesSnsTopicArn = lens _mesSnsTopicArn (\s a -> s { _mesSnsTopicArn = a })++-- | A list of one or more identifiers of Amazon Redshift source objects. All+-- of the objects must be of the same type as was specified in the source+-- type parameter. The event subscription will return only events generated+-- by the specified objects. If not specified, then events are returned for+-- all objects within the source type specified. Example: my-cluster-1,+-- my-cluster-2 Example: my-snapshot-20131010.+mesSourceIds :: Lens' ModifyEventSubscription [Text]+mesSourceIds = lens _mesSourceIds (\s a -> s { _mesSourceIds = a }) . _List++-- | The type of source that will be generating the events. For example, if+-- you want to be notified of events generated by a cluster, you would set+-- this parameter to cluster. If this value is not specified, events are+-- returned for all Amazon Redshift objects in your AWS account. You must+-- specify a source type in order to specify source IDs. Valid values:+-- cluster, cluster-parameter-group, cluster-security-group, and+-- cluster-snapshot.+mesSourceType :: Lens' ModifyEventSubscription (Maybe Text)+mesSourceType = lens _mesSourceType (\s a -> s { _mesSourceType = a })++-- | The name of the modified Amazon Redshift event notification subscription.+mesSubscriptionName :: Lens' ModifyEventSubscription Text+mesSubscriptionName =+    lens _mesSubscriptionName (\s a -> s { _mesSubscriptionName = a })++newtype ModifyEventSubscriptionResponse = ModifyEventSubscriptionResponse+    { _mesrEventSubscription :: Maybe EventSubscription+    } deriving (Eq, Show)++-- | 'ModifyEventSubscriptionResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mesrEventSubscription' @::@ 'Maybe' 'EventSubscription'+--+modifyEventSubscriptionResponse :: ModifyEventSubscriptionResponse+modifyEventSubscriptionResponse = ModifyEventSubscriptionResponse+    { _mesrEventSubscription = Nothing+    }++mesrEventSubscription :: Lens' ModifyEventSubscriptionResponse (Maybe EventSubscription)+mesrEventSubscription =+    lens _mesrEventSubscription (\s a -> s { _mesrEventSubscription = a })++instance ToPath ModifyEventSubscription where+    toPath = const "/"++instance ToQuery ModifyEventSubscription where+    toQuery ModifyEventSubscription{..} = mconcat+        [ "Enabled"          =? _mesEnabled+        , "EventCategories"  =? _mesEventCategories+        , "Severity"         =? _mesSeverity+        , "SnsTopicArn"      =? _mesSnsTopicArn+        , "SourceIds"        =? _mesSourceIds+        , "SourceType"       =? _mesSourceType+        , "SubscriptionName" =? _mesSubscriptionName+        ]++instance ToHeaders ModifyEventSubscription++instance AWSRequest ModifyEventSubscription where+    type Sv ModifyEventSubscription = Redshift+    type Rs ModifyEventSubscription = ModifyEventSubscriptionResponse++    request  = post "ModifyEventSubscription"+    response = xmlResponse++instance FromXML ModifyEventSubscriptionResponse where+    parseXML = withElement "ModifyEventSubscriptionResult" $ \x -> ModifyEventSubscriptionResponse+        <$> x .@? "EventSubscription"
+ gen/Network/AWS/Redshift/ModifySnapshotCopyRetentionPeriod.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.Redshift.ModifySnapshotCopyRetentionPeriod+-- 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)++-- | Modifies the number of days to retain automated snapshots in the+-- destination region after they are copied from the source region.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_ModifySnapshotCopyRetentionPeriod.html>+module Network.AWS.Redshift.ModifySnapshotCopyRetentionPeriod+    (+    -- * Request+      ModifySnapshotCopyRetentionPeriod+    -- ** Request constructor+    , modifySnapshotCopyRetentionPeriod+    -- ** Request lenses+    , mscrpClusterIdentifier+    , mscrpRetentionPeriod++    -- * Response+    , ModifySnapshotCopyRetentionPeriodResponse+    -- ** Response constructor+    , modifySnapshotCopyRetentionPeriodResponse+    -- ** Response lenses+    , mscrprCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data ModifySnapshotCopyRetentionPeriod = ModifySnapshotCopyRetentionPeriod+    { _mscrpClusterIdentifier :: Text+    , _mscrpRetentionPeriod   :: Int+    } deriving (Eq, Ord, Show)++-- | 'ModifySnapshotCopyRetentionPeriod' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mscrpClusterIdentifier' @::@ 'Text'+--+-- * 'mscrpRetentionPeriod' @::@ 'Int'+--+modifySnapshotCopyRetentionPeriod :: Text -- ^ 'mscrpClusterIdentifier'+                                  -> Int -- ^ 'mscrpRetentionPeriod'+                                  -> ModifySnapshotCopyRetentionPeriod+modifySnapshotCopyRetentionPeriod p1 p2 = ModifySnapshotCopyRetentionPeriod+    { _mscrpClusterIdentifier = p1+    , _mscrpRetentionPeriod   = p2+    }++-- | The unique identifier of the cluster for which you want to change the+-- retention period for automated snapshots that are copied to a destination+-- region. Constraints: Must be the valid name of an existing cluster that+-- has cross-region snapshot copy enabled.+mscrpClusterIdentifier :: Lens' ModifySnapshotCopyRetentionPeriod Text+mscrpClusterIdentifier =+    lens _mscrpClusterIdentifier (\s a -> s { _mscrpClusterIdentifier = a })++-- | The number of days to retain automated snapshots in the destination+-- region after they are copied from the source region. If you decrease the+-- retention period for automated snapshots that are copied to a destination+-- region, Amazon Redshift will delete any existing automated snapshots that+-- were copied to the destination region and that fall outside of the new+-- retention period. Constraints: Must be at least 1 and no more than 35.+mscrpRetentionPeriod :: Lens' ModifySnapshotCopyRetentionPeriod Int+mscrpRetentionPeriod =+    lens _mscrpRetentionPeriod (\s a -> s { _mscrpRetentionPeriod = a })++newtype ModifySnapshotCopyRetentionPeriodResponse = ModifySnapshotCopyRetentionPeriodResponse+    { _mscrprCluster :: Maybe Cluster+    } deriving (Eq, Show)++-- | 'ModifySnapshotCopyRetentionPeriodResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mscrprCluster' @::@ 'Maybe' 'Cluster'+--+modifySnapshotCopyRetentionPeriodResponse :: ModifySnapshotCopyRetentionPeriodResponse+modifySnapshotCopyRetentionPeriodResponse = ModifySnapshotCopyRetentionPeriodResponse+    { _mscrprCluster = Nothing+    }++mscrprCluster :: Lens' ModifySnapshotCopyRetentionPeriodResponse (Maybe Cluster)+mscrprCluster = lens _mscrprCluster (\s a -> s { _mscrprCluster = a })++instance ToPath ModifySnapshotCopyRetentionPeriod where+    toPath = const "/"++instance ToQuery ModifySnapshotCopyRetentionPeriod where+    toQuery ModifySnapshotCopyRetentionPeriod{..} = mconcat+        [ "ClusterIdentifier" =? _mscrpClusterIdentifier+        , "RetentionPeriod"   =? _mscrpRetentionPeriod+        ]++instance ToHeaders ModifySnapshotCopyRetentionPeriod++instance AWSRequest ModifySnapshotCopyRetentionPeriod where+    type Sv ModifySnapshotCopyRetentionPeriod = Redshift+    type Rs ModifySnapshotCopyRetentionPeriod = ModifySnapshotCopyRetentionPeriodResponse++    request  = post "ModifySnapshotCopyRetentionPeriod"+    response = xmlResponse++instance FromXML ModifySnapshotCopyRetentionPeriodResponse where+    parseXML = withElement "ModifySnapshotCopyRetentionPeriodResult" $ \x -> ModifySnapshotCopyRetentionPeriodResponse+        <$> x .@? "Cluster"
+ gen/Network/AWS/Redshift/PurchaseReservedNodeOffering.hs view
@@ -0,0 +1,124 @@+{-# 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.Redshift.PurchaseReservedNodeOffering+-- 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)++-- | Allows you to purchase reserved nodes. Amazon Redshift offers a predefined+-- set of reserved node offerings. You can purchase one of the offerings. You+-- can call the DescribeReservedNodeOfferings API to obtain the available+-- reserved node offerings. You can call this API by providing a specific+-- reserved node offering and the number of nodes you want to reserve. For+-- more information about managing parameter groups, go to Purchasing Reserved+-- Nodes in the Amazon Redshift Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_PurchaseReservedNodeOffering.html>+module Network.AWS.Redshift.PurchaseReservedNodeOffering+    (+    -- * Request+      PurchaseReservedNodeOffering+    -- ** Request constructor+    , purchaseReservedNodeOffering+    -- ** Request lenses+    , prnoNodeCount+    , prnoReservedNodeOfferingId++    -- * Response+    , PurchaseReservedNodeOfferingResponse+    -- ** Response constructor+    , purchaseReservedNodeOfferingResponse+    -- ** Response lenses+    , prnorReservedNode+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data PurchaseReservedNodeOffering = PurchaseReservedNodeOffering+    { _prnoNodeCount              :: Maybe Int+    , _prnoReservedNodeOfferingId :: Text+    } deriving (Eq, Ord, Show)++-- | 'PurchaseReservedNodeOffering' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'prnoNodeCount' @::@ 'Maybe' 'Int'+--+-- * 'prnoReservedNodeOfferingId' @::@ 'Text'+--+purchaseReservedNodeOffering :: Text -- ^ 'prnoReservedNodeOfferingId'+                             -> PurchaseReservedNodeOffering+purchaseReservedNodeOffering p1 = PurchaseReservedNodeOffering+    { _prnoReservedNodeOfferingId = p1+    , _prnoNodeCount              = Nothing+    }++-- | The number of reserved nodes you want to purchase. Default: 1.+prnoNodeCount :: Lens' PurchaseReservedNodeOffering (Maybe Int)+prnoNodeCount = lens _prnoNodeCount (\s a -> s { _prnoNodeCount = a })++-- | The unique identifier of the reserved node offering you want to purchase.+prnoReservedNodeOfferingId :: Lens' PurchaseReservedNodeOffering Text+prnoReservedNodeOfferingId =+    lens _prnoReservedNodeOfferingId+        (\s a -> s { _prnoReservedNodeOfferingId = a })++newtype PurchaseReservedNodeOfferingResponse = PurchaseReservedNodeOfferingResponse+    { _prnorReservedNode :: Maybe ReservedNode+    } deriving (Eq, Show)++-- | 'PurchaseReservedNodeOfferingResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'prnorReservedNode' @::@ 'Maybe' 'ReservedNode'+--+purchaseReservedNodeOfferingResponse :: PurchaseReservedNodeOfferingResponse+purchaseReservedNodeOfferingResponse = PurchaseReservedNodeOfferingResponse+    { _prnorReservedNode = Nothing+    }++prnorReservedNode :: Lens' PurchaseReservedNodeOfferingResponse (Maybe ReservedNode)+prnorReservedNode =+    lens _prnorReservedNode (\s a -> s { _prnorReservedNode = a })++instance ToPath PurchaseReservedNodeOffering where+    toPath = const "/"++instance ToQuery PurchaseReservedNodeOffering where+    toQuery PurchaseReservedNodeOffering{..} = mconcat+        [ "NodeCount"              =? _prnoNodeCount+        , "ReservedNodeOfferingId" =? _prnoReservedNodeOfferingId+        ]++instance ToHeaders PurchaseReservedNodeOffering++instance AWSRequest PurchaseReservedNodeOffering where+    type Sv PurchaseReservedNodeOffering = Redshift+    type Rs PurchaseReservedNodeOffering = PurchaseReservedNodeOfferingResponse++    request  = post "PurchaseReservedNodeOffering"+    response = xmlResponse++instance FromXML PurchaseReservedNodeOfferingResponse where+    parseXML = withElement "PurchaseReservedNodeOfferingResult" $ \x -> PurchaseReservedNodeOfferingResponse+        <$> x .@? "ReservedNode"
+ gen/Network/AWS/Redshift/RebootCluster.hs view
@@ -0,0 +1,111 @@+{-# 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.Redshift.RebootCluster+-- 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)++-- | Reboots a cluster. This action is taken as soon as possible. It results in+-- a momentary outage to the cluster, during which the cluster status is set+-- to rebooting. A cluster event is created when the reboot is completed. Any+-- pending cluster modifications (see ModifyCluster) are applied at this+-- reboot. For more information about managing clusters, go to Amazon Redshift+-- Clusters in the Amazon Redshift Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_RebootCluster.html>+module Network.AWS.Redshift.RebootCluster+    (+    -- * Request+      RebootCluster+    -- ** Request constructor+    , rebootCluster+    -- ** Request lenses+    , rcClusterIdentifier++    -- * Response+    , RebootClusterResponse+    -- ** Response constructor+    , rebootClusterResponse+    -- ** Response lenses+    , rcrCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype RebootCluster = RebootCluster+    { _rcClusterIdentifier :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'RebootCluster' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcClusterIdentifier' @::@ 'Text'+--+rebootCluster :: Text -- ^ 'rcClusterIdentifier'+              -> RebootCluster+rebootCluster p1 = RebootCluster+    { _rcClusterIdentifier = p1+    }++-- | The cluster identifier.+rcClusterIdentifier :: Lens' RebootCluster Text+rcClusterIdentifier =+    lens _rcClusterIdentifier (\s a -> s { _rcClusterIdentifier = a })++newtype RebootClusterResponse = RebootClusterResponse+    { _rcrCluster :: Maybe Cluster+    } deriving (Eq, Show)++-- | 'RebootClusterResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcrCluster' @::@ 'Maybe' 'Cluster'+--+rebootClusterResponse :: RebootClusterResponse+rebootClusterResponse = RebootClusterResponse+    { _rcrCluster = Nothing+    }++rcrCluster :: Lens' RebootClusterResponse (Maybe Cluster)+rcrCluster = lens _rcrCluster (\s a -> s { _rcrCluster = a })++instance ToPath RebootCluster where+    toPath = const "/"++instance ToQuery RebootCluster where+    toQuery RebootCluster{..} = mconcat+        [ "ClusterIdentifier" =? _rcClusterIdentifier+        ]++instance ToHeaders RebootCluster++instance AWSRequest RebootCluster where+    type Sv RebootCluster = Redshift+    type Rs RebootCluster = RebootClusterResponse++    request  = post "RebootCluster"+    response = xmlResponse++instance FromXML RebootClusterResponse where+    parseXML = withElement "RebootClusterResult" $ \x -> RebootClusterResponse+        <$> x .@? "Cluster"
+ gen/Network/AWS/Redshift/ResetClusterParameterGroup.hs view
@@ -0,0 +1,150 @@+{-# 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.Redshift.ResetClusterParameterGroup+-- 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)++-- | Sets one or more parameters of the specified parameter group to their+-- default values and sets the source values of the parameters to+-- "engine-default". To reset the entire parameter group specify the+-- ResetAllParameters parameter. For parameter changes to take effect you must+-- reboot any associated clusters.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_ResetClusterParameterGroup.html>+module Network.AWS.Redshift.ResetClusterParameterGroup+    (+    -- * Request+      ResetClusterParameterGroup+    -- ** Request constructor+    , resetClusterParameterGroup+    -- ** Request lenses+    , rcpgParameterGroupName+    , rcpgParameters+    , rcpgResetAllParameters++    -- * Response+    , ResetClusterParameterGroupResponse+    -- ** Response constructor+    , resetClusterParameterGroupResponse+    -- ** Response lenses+    , rcpgrParameterGroupName+    , rcpgrParameterGroupStatus+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data ResetClusterParameterGroup = ResetClusterParameterGroup+    { _rcpgParameterGroupName :: Text+    , _rcpgParameters         :: List "Parameter" Parameter+    , _rcpgResetAllParameters :: Maybe Bool+    } deriving (Eq, Show)++-- | 'ResetClusterParameterGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcpgParameterGroupName' @::@ 'Text'+--+-- * 'rcpgParameters' @::@ ['Parameter']+--+-- * 'rcpgResetAllParameters' @::@ 'Maybe' 'Bool'+--+resetClusterParameterGroup :: Text -- ^ 'rcpgParameterGroupName'+                           -> ResetClusterParameterGroup+resetClusterParameterGroup p1 = ResetClusterParameterGroup+    { _rcpgParameterGroupName = p1+    , _rcpgResetAllParameters = Nothing+    , _rcpgParameters         = mempty+    }++-- | The name of the cluster parameter group to be reset.+rcpgParameterGroupName :: Lens' ResetClusterParameterGroup Text+rcpgParameterGroupName =+    lens _rcpgParameterGroupName (\s a -> s { _rcpgParameterGroupName = a })++-- | An array of names of parameters to be reset. If ResetAllParameters option+-- is not used, then at least one parameter name must be supplied.+-- Constraints: A maximum of 20 parameters can be reset in a single request.+rcpgParameters :: Lens' ResetClusterParameterGroup [Parameter]+rcpgParameters = lens _rcpgParameters (\s a -> s { _rcpgParameters = a }) . _List++-- | If true, all parameters in the specified parameter group will be reset to+-- their default values. Default: true.+rcpgResetAllParameters :: Lens' ResetClusterParameterGroup (Maybe Bool)+rcpgResetAllParameters =+    lens _rcpgResetAllParameters (\s a -> s { _rcpgResetAllParameters = a })++data ResetClusterParameterGroupResponse = ResetClusterParameterGroupResponse+    { _rcpgrParameterGroupName   :: Maybe Text+    , _rcpgrParameterGroupStatus :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ResetClusterParameterGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcpgrParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'rcpgrParameterGroupStatus' @::@ 'Maybe' 'Text'+--+resetClusterParameterGroupResponse :: ResetClusterParameterGroupResponse+resetClusterParameterGroupResponse = ResetClusterParameterGroupResponse+    { _rcpgrParameterGroupName   = Nothing+    , _rcpgrParameterGroupStatus = Nothing+    }++-- | The name of the cluster parameter group.+rcpgrParameterGroupName :: Lens' ResetClusterParameterGroupResponse (Maybe Text)+rcpgrParameterGroupName =+    lens _rcpgrParameterGroupName (\s a -> s { _rcpgrParameterGroupName = a })++-- | The status of the parameter group. For example, if you made a change to a+-- parameter group name-value pair, then the change could be pending a+-- reboot of an associated cluster.+rcpgrParameterGroupStatus :: Lens' ResetClusterParameterGroupResponse (Maybe Text)+rcpgrParameterGroupStatus =+    lens _rcpgrParameterGroupStatus+        (\s a -> s { _rcpgrParameterGroupStatus = a })++instance ToPath ResetClusterParameterGroup where+    toPath = const "/"++instance ToQuery ResetClusterParameterGroup where+    toQuery ResetClusterParameterGroup{..} = mconcat+        [ "ParameterGroupName" =? _rcpgParameterGroupName+        , "Parameters"         =? _rcpgParameters+        , "ResetAllParameters" =? _rcpgResetAllParameters+        ]++instance ToHeaders ResetClusterParameterGroup++instance AWSRequest ResetClusterParameterGroup where+    type Sv ResetClusterParameterGroup = Redshift+    type Rs ResetClusterParameterGroup = ResetClusterParameterGroupResponse++    request  = post "ResetClusterParameterGroup"+    response = xmlResponse++instance FromXML ResetClusterParameterGroupResponse where+    parseXML = withElement "ResetClusterParameterGroupResult" $ \x -> ResetClusterParameterGroupResponse+        <$> x .@? "ParameterGroupName"+        <*> x .@? "ParameterGroupStatus"
+ gen/Network/AWS/Redshift/RestoreFromClusterSnapshot.hs view
@@ -0,0 +1,348 @@+{-# 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.Redshift.RestoreFromClusterSnapshot+-- 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)++-- | Creates a new cluster from a snapshot. Amazon Redshift creates the+-- resulting cluster with the same configuration as the original cluster from+-- which the snapshot was created, except that the new cluster is created with+-- the default cluster security and parameter group. After Amazon Redshift+-- creates the cluster you can use the ModifyCluster API to associate a+-- different security group and different parameter group with the restored+-- cluster. If you restore a cluster into a VPC, you must provide a cluster+-- subnet group where you want the cluster restored. For more information+-- about working with snapshots, go to Amazon Redshift Snapshots in the Amazon+-- Redshift Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_RestoreFromClusterSnapshot.html>+module Network.AWS.Redshift.RestoreFromClusterSnapshot+    (+    -- * Request+      RestoreFromClusterSnapshot+    -- ** Request constructor+    , restoreFromClusterSnapshot+    -- ** Request lenses+    , rfcsAllowVersionUpgrade+    , rfcsAutomatedSnapshotRetentionPeriod+    , rfcsAvailabilityZone+    , rfcsClusterIdentifier+    , rfcsClusterParameterGroupName+    , rfcsClusterSecurityGroups+    , rfcsClusterSubnetGroupName+    , rfcsElasticIp+    , rfcsHsmClientCertificateIdentifier+    , rfcsHsmConfigurationIdentifier+    , rfcsKmsKeyId+    , rfcsOwnerAccount+    , rfcsPort+    , rfcsPreferredMaintenanceWindow+    , rfcsPubliclyAccessible+    , rfcsSnapshotClusterIdentifier+    , rfcsSnapshotIdentifier+    , rfcsVpcSecurityGroupIds++    -- * Response+    , RestoreFromClusterSnapshotResponse+    -- ** Response constructor+    , restoreFromClusterSnapshotResponse+    -- ** Response lenses+    , rfcsrCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data RestoreFromClusterSnapshot = RestoreFromClusterSnapshot+    { _rfcsAllowVersionUpgrade              :: Maybe Bool+    , _rfcsAutomatedSnapshotRetentionPeriod :: Maybe Int+    , _rfcsAvailabilityZone                 :: Maybe Text+    , _rfcsClusterIdentifier                :: Text+    , _rfcsClusterParameterGroupName        :: Maybe Text+    , _rfcsClusterSecurityGroups            :: List "ClusterSecurityGroupName" Text+    , _rfcsClusterSubnetGroupName           :: Maybe Text+    , _rfcsElasticIp                        :: Maybe Text+    , _rfcsHsmClientCertificateIdentifier   :: Maybe Text+    , _rfcsHsmConfigurationIdentifier       :: Maybe Text+    , _rfcsKmsKeyId                         :: Maybe Text+    , _rfcsOwnerAccount                     :: Maybe Text+    , _rfcsPort                             :: Maybe Int+    , _rfcsPreferredMaintenanceWindow       :: Maybe Text+    , _rfcsPubliclyAccessible               :: Maybe Bool+    , _rfcsSnapshotClusterIdentifier        :: Maybe Text+    , _rfcsSnapshotIdentifier               :: Text+    , _rfcsVpcSecurityGroupIds              :: List "VpcSecurityGroupId" Text+    } deriving (Eq, Ord, Show)++-- | 'RestoreFromClusterSnapshot' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rfcsAllowVersionUpgrade' @::@ 'Maybe' 'Bool'+--+-- * 'rfcsAutomatedSnapshotRetentionPeriod' @::@ 'Maybe' 'Int'+--+-- * 'rfcsAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'rfcsClusterIdentifier' @::@ 'Text'+--+-- * 'rfcsClusterParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'rfcsClusterSecurityGroups' @::@ ['Text']+--+-- * 'rfcsClusterSubnetGroupName' @::@ 'Maybe' 'Text'+--+-- * 'rfcsElasticIp' @::@ 'Maybe' 'Text'+--+-- * 'rfcsHsmClientCertificateIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'rfcsHsmConfigurationIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'rfcsKmsKeyId' @::@ 'Maybe' 'Text'+--+-- * 'rfcsOwnerAccount' @::@ 'Maybe' 'Text'+--+-- * 'rfcsPort' @::@ 'Maybe' 'Int'+--+-- * 'rfcsPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'+--+-- * 'rfcsPubliclyAccessible' @::@ 'Maybe' 'Bool'+--+-- * 'rfcsSnapshotClusterIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'rfcsSnapshotIdentifier' @::@ 'Text'+--+-- * 'rfcsVpcSecurityGroupIds' @::@ ['Text']+--+restoreFromClusterSnapshot :: Text -- ^ 'rfcsClusterIdentifier'+                           -> Text -- ^ 'rfcsSnapshotIdentifier'+                           -> RestoreFromClusterSnapshot+restoreFromClusterSnapshot p1 p2 = RestoreFromClusterSnapshot+    { _rfcsClusterIdentifier                = p1+    , _rfcsSnapshotIdentifier               = p2+    , _rfcsSnapshotClusterIdentifier        = Nothing+    , _rfcsPort                             = Nothing+    , _rfcsAvailabilityZone                 = Nothing+    , _rfcsAllowVersionUpgrade              = Nothing+    , _rfcsClusterSubnetGroupName           = Nothing+    , _rfcsPubliclyAccessible               = Nothing+    , _rfcsOwnerAccount                     = Nothing+    , _rfcsHsmClientCertificateIdentifier   = Nothing+    , _rfcsHsmConfigurationIdentifier       = Nothing+    , _rfcsElasticIp                        = Nothing+    , _rfcsClusterParameterGroupName        = Nothing+    , _rfcsClusterSecurityGroups            = mempty+    , _rfcsVpcSecurityGroupIds              = mempty+    , _rfcsPreferredMaintenanceWindow       = Nothing+    , _rfcsAutomatedSnapshotRetentionPeriod = Nothing+    , _rfcsKmsKeyId                         = Nothing+    }++-- | If true, major version upgrades can be applied during the maintenance+-- window to the Amazon Redshift engine that is running on the cluster.+-- Default: true.+rfcsAllowVersionUpgrade :: Lens' RestoreFromClusterSnapshot (Maybe Bool)+rfcsAllowVersionUpgrade =+    lens _rfcsAllowVersionUpgrade (\s a -> s { _rfcsAllowVersionUpgrade = a })++-- | The number of days that automated snapshots are retained. If the value is+-- 0, automated snapshots are disabled. Even if automated snapshots are+-- disabled, you can still create manual snapshots when you want with+-- CreateClusterSnapshot. Default: The value selected for the cluster from+-- which the snapshot was taken. Constraints: Must be a value from 0 to 35.+rfcsAutomatedSnapshotRetentionPeriod :: Lens' RestoreFromClusterSnapshot (Maybe Int)+rfcsAutomatedSnapshotRetentionPeriod =+    lens _rfcsAutomatedSnapshotRetentionPeriod+        (\s a -> s { _rfcsAutomatedSnapshotRetentionPeriod = a })++-- | The Amazon EC2 Availability Zone in which to restore the cluster.+-- Default: A random, system-chosen Availability Zone. Example: us-east-1a.+rfcsAvailabilityZone :: Lens' RestoreFromClusterSnapshot (Maybe Text)+rfcsAvailabilityZone =+    lens _rfcsAvailabilityZone (\s a -> s { _rfcsAvailabilityZone = a })++-- | The identifier of the cluster that will be created from restoring the+-- snapshot. Constraints: Must contain from 1 to 63 alphanumeric characters+-- or hyphens. Alphabetic characters must be lowercase. First character must+-- be a letter. Cannot end with a hyphen or contain two consecutive hyphens.+-- Must be unique for all clusters within an AWS account.+rfcsClusterIdentifier :: Lens' RestoreFromClusterSnapshot Text+rfcsClusterIdentifier =+    lens _rfcsClusterIdentifier (\s a -> s { _rfcsClusterIdentifier = a })++-- | The name of the parameter group to be associated with this cluster.+-- Default: The default Amazon Redshift cluster parameter group. For+-- information about the default parameter group, go to Working with Amazon+-- Redshift Parameter Groups. Constraints: Must be 1 to 255 alphanumeric+-- characters or hyphens. First character must be a letter. Cannot end with+-- a hyphen or contain two consecutive hyphens.+rfcsClusterParameterGroupName :: Lens' RestoreFromClusterSnapshot (Maybe Text)+rfcsClusterParameterGroupName =+    lens _rfcsClusterParameterGroupName+        (\s a -> s { _rfcsClusterParameterGroupName = a })++-- | A list of security groups to be associated with this cluster. Default:+-- The default cluster security group for Amazon Redshift. Cluster security+-- groups only apply to clusters outside of VPCs.+rfcsClusterSecurityGroups :: Lens' RestoreFromClusterSnapshot [Text]+rfcsClusterSecurityGroups =+    lens _rfcsClusterSecurityGroups+        (\s a -> s { _rfcsClusterSecurityGroups = a })+            . _List++-- | The name of the subnet group where you want to cluster restored. A+-- snapshot of cluster in VPC can be restored only in VPC. Therefore, you+-- must provide subnet group name where you want the cluster restored.+rfcsClusterSubnetGroupName :: Lens' RestoreFromClusterSnapshot (Maybe Text)+rfcsClusterSubnetGroupName =+    lens _rfcsClusterSubnetGroupName+        (\s a -> s { _rfcsClusterSubnetGroupName = a })++-- | The elastic IP (EIP) address for the cluster.+rfcsElasticIp :: Lens' RestoreFromClusterSnapshot (Maybe Text)+rfcsElasticIp = lens _rfcsElasticIp (\s a -> s { _rfcsElasticIp = a })++-- | Specifies the name of the HSM client certificate the Amazon Redshift+-- cluster uses to retrieve the data encryption keys stored in an HSM.+rfcsHsmClientCertificateIdentifier :: Lens' RestoreFromClusterSnapshot (Maybe Text)+rfcsHsmClientCertificateIdentifier =+    lens _rfcsHsmClientCertificateIdentifier+        (\s a -> s { _rfcsHsmClientCertificateIdentifier = a })++-- | Specifies the name of the HSM configuration that contains the information+-- the Amazon Redshift cluster can use to retrieve and store keys in an HSM.+rfcsHsmConfigurationIdentifier :: Lens' RestoreFromClusterSnapshot (Maybe Text)+rfcsHsmConfigurationIdentifier =+    lens _rfcsHsmConfigurationIdentifier+        (\s a -> s { _rfcsHsmConfigurationIdentifier = a })++-- | The AWS Key Management Service (KMS) key ID of the encryption key that+-- you want to use to encrypt data in the cluster that you restore from a+-- shared snapshot.+rfcsKmsKeyId :: Lens' RestoreFromClusterSnapshot (Maybe Text)+rfcsKmsKeyId = lens _rfcsKmsKeyId (\s a -> s { _rfcsKmsKeyId = a })++-- | The AWS customer account used to create or copy the snapshot. Required if+-- you are restoring a snapshot you do not own, optional if you own the+-- snapshot.+rfcsOwnerAccount :: Lens' RestoreFromClusterSnapshot (Maybe Text)+rfcsOwnerAccount = lens _rfcsOwnerAccount (\s a -> s { _rfcsOwnerAccount = a })++-- | The port number on which the cluster accepts connections. Default: The+-- same port as the original cluster. Constraints: Must be between 1115 and+-- 65535.+rfcsPort :: Lens' RestoreFromClusterSnapshot (Maybe Int)+rfcsPort = lens _rfcsPort (\s a -> s { _rfcsPort = a })++-- | The weekly time range (in UTC) during which automated cluster maintenance+-- can occur. Format: ddd:hh24:mi-ddd:hh24:mi Default: The value selected+-- for the cluster from which the snapshot was taken. For more information+-- about the time blocks for each region, see Maintenance Windows in Amazon+-- Redshift Cluster Management Guide. Valid Days: Mon | Tue | Wed | Thu |+-- Fri | Sat | Sun Constraints: Minimum 30-minute window.+rfcsPreferredMaintenanceWindow :: Lens' RestoreFromClusterSnapshot (Maybe Text)+rfcsPreferredMaintenanceWindow =+    lens _rfcsPreferredMaintenanceWindow+        (\s a -> s { _rfcsPreferredMaintenanceWindow = a })++-- | If true, the cluster can be accessed from a public network.+rfcsPubliclyAccessible :: Lens' RestoreFromClusterSnapshot (Maybe Bool)+rfcsPubliclyAccessible =+    lens _rfcsPubliclyAccessible (\s a -> s { _rfcsPubliclyAccessible = a })++-- | The name of the cluster the source snapshot was created from. This+-- parameter is required if your IAM user has a policy containing a snapshot+-- resource element that specifies anything other than * for the cluster+-- name.+rfcsSnapshotClusterIdentifier :: Lens' RestoreFromClusterSnapshot (Maybe Text)+rfcsSnapshotClusterIdentifier =+    lens _rfcsSnapshotClusterIdentifier+        (\s a -> s { _rfcsSnapshotClusterIdentifier = a })++-- | The name of the snapshot from which to create the new cluster. This+-- parameter isn't case sensitive. Example: my-snapshot-id.+rfcsSnapshotIdentifier :: Lens' RestoreFromClusterSnapshot Text+rfcsSnapshotIdentifier =+    lens _rfcsSnapshotIdentifier (\s a -> s { _rfcsSnapshotIdentifier = a })++-- | A list of Virtual Private Cloud (VPC) security groups to be associated+-- with the cluster. Default: The default VPC security group is associated+-- with the cluster. VPC security groups only apply to clusters in VPCs.+rfcsVpcSecurityGroupIds :: Lens' RestoreFromClusterSnapshot [Text]+rfcsVpcSecurityGroupIds =+    lens _rfcsVpcSecurityGroupIds (\s a -> s { _rfcsVpcSecurityGroupIds = a })+        . _List++newtype RestoreFromClusterSnapshotResponse = RestoreFromClusterSnapshotResponse+    { _rfcsrCluster :: Maybe Cluster+    } deriving (Eq, Show)++-- | 'RestoreFromClusterSnapshotResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rfcsrCluster' @::@ 'Maybe' 'Cluster'+--+restoreFromClusterSnapshotResponse :: RestoreFromClusterSnapshotResponse+restoreFromClusterSnapshotResponse = RestoreFromClusterSnapshotResponse+    { _rfcsrCluster = Nothing+    }++rfcsrCluster :: Lens' RestoreFromClusterSnapshotResponse (Maybe Cluster)+rfcsrCluster = lens _rfcsrCluster (\s a -> s { _rfcsrCluster = a })++instance ToPath RestoreFromClusterSnapshot where+    toPath = const "/"++instance ToQuery RestoreFromClusterSnapshot where+    toQuery RestoreFromClusterSnapshot{..} = mconcat+        [ "AllowVersionUpgrade"              =? _rfcsAllowVersionUpgrade+        , "AutomatedSnapshotRetentionPeriod" =? _rfcsAutomatedSnapshotRetentionPeriod+        , "AvailabilityZone"                 =? _rfcsAvailabilityZone+        , "ClusterIdentifier"                =? _rfcsClusterIdentifier+        , "ClusterParameterGroupName"        =? _rfcsClusterParameterGroupName+        , "ClusterSecurityGroups"            =? _rfcsClusterSecurityGroups+        , "ClusterSubnetGroupName"           =? _rfcsClusterSubnetGroupName+        , "ElasticIp"                        =? _rfcsElasticIp+        , "HsmClientCertificateIdentifier"   =? _rfcsHsmClientCertificateIdentifier+        , "HsmConfigurationIdentifier"       =? _rfcsHsmConfigurationIdentifier+        , "KmsKeyId"                         =? _rfcsKmsKeyId+        , "OwnerAccount"                     =? _rfcsOwnerAccount+        , "Port"                             =? _rfcsPort+        , "PreferredMaintenanceWindow"       =? _rfcsPreferredMaintenanceWindow+        , "PubliclyAccessible"               =? _rfcsPubliclyAccessible+        , "SnapshotClusterIdentifier"        =? _rfcsSnapshotClusterIdentifier+        , "SnapshotIdentifier"               =? _rfcsSnapshotIdentifier+        , "VpcSecurityGroupIds"              =? _rfcsVpcSecurityGroupIds+        ]++instance ToHeaders RestoreFromClusterSnapshot++instance AWSRequest RestoreFromClusterSnapshot where+    type Sv RestoreFromClusterSnapshot = Redshift+    type Rs RestoreFromClusterSnapshot = RestoreFromClusterSnapshotResponse++    request  = post "RestoreFromClusterSnapshot"+    response = xmlResponse++instance FromXML RestoreFromClusterSnapshotResponse where+    parseXML = withElement "RestoreFromClusterSnapshotResult" $ \x -> RestoreFromClusterSnapshotResponse+        <$> x .@? "Cluster"
+ gen/Network/AWS/Redshift/RevokeClusterSecurityGroupIngress.hs view
@@ -0,0 +1,156 @@+{-# 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.Redshift.RevokeClusterSecurityGroupIngress+-- 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)++-- | Revokes an ingress rule in an Amazon Redshift security group for a+-- previously authorized IP range or Amazon EC2 security group. To add an+-- ingress rule, see AuthorizeClusterSecurityGroupIngress. For information+-- about managing security groups, go to Amazon Redshift Cluster Security+-- Groups in the Amazon Redshift Cluster Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_RevokeClusterSecurityGroupIngress.html>+module Network.AWS.Redshift.RevokeClusterSecurityGroupIngress+    (+    -- * Request+      RevokeClusterSecurityGroupIngress+    -- ** Request constructor+    , revokeClusterSecurityGroupIngress+    -- ** Request lenses+    , rcsgiCIDRIP+    , rcsgiClusterSecurityGroupName+    , rcsgiEC2SecurityGroupName+    , rcsgiEC2SecurityGroupOwnerId++    -- * Response+    , RevokeClusterSecurityGroupIngressResponse+    -- ** Response constructor+    , revokeClusterSecurityGroupIngressResponse+    -- ** Response lenses+    , rcsgirClusterSecurityGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data RevokeClusterSecurityGroupIngress = RevokeClusterSecurityGroupIngress+    { _rcsgiCIDRIP                   :: Maybe Text+    , _rcsgiClusterSecurityGroupName :: Text+    , _rcsgiEC2SecurityGroupName     :: Maybe Text+    , _rcsgiEC2SecurityGroupOwnerId  :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'RevokeClusterSecurityGroupIngress' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcsgiCIDRIP' @::@ 'Maybe' 'Text'+--+-- * 'rcsgiClusterSecurityGroupName' @::@ 'Text'+--+-- * 'rcsgiEC2SecurityGroupName' @::@ 'Maybe' 'Text'+--+-- * 'rcsgiEC2SecurityGroupOwnerId' @::@ 'Maybe' 'Text'+--+revokeClusterSecurityGroupIngress :: Text -- ^ 'rcsgiClusterSecurityGroupName'+                                  -> RevokeClusterSecurityGroupIngress+revokeClusterSecurityGroupIngress p1 = RevokeClusterSecurityGroupIngress+    { _rcsgiClusterSecurityGroupName = p1+    , _rcsgiCIDRIP                   = Nothing+    , _rcsgiEC2SecurityGroupName     = Nothing+    , _rcsgiEC2SecurityGroupOwnerId  = Nothing+    }++-- | The IP range for which to revoke access. This range must be a valid+-- Classless Inter-Domain Routing (CIDR) block of IP addresses. If CIDRIP is+-- specified, EC2SecurityGroupName and EC2SecurityGroupOwnerId cannot be+-- provided.+rcsgiCIDRIP :: Lens' RevokeClusterSecurityGroupIngress (Maybe Text)+rcsgiCIDRIP = lens _rcsgiCIDRIP (\s a -> s { _rcsgiCIDRIP = a })++-- | The name of the security Group from which to revoke the ingress rule.+rcsgiClusterSecurityGroupName :: Lens' RevokeClusterSecurityGroupIngress Text+rcsgiClusterSecurityGroupName =+    lens _rcsgiClusterSecurityGroupName+        (\s a -> s { _rcsgiClusterSecurityGroupName = a })++-- | The name of the EC2 Security Group whose access is to be revoked. If+-- EC2SecurityGroupName is specified, EC2SecurityGroupOwnerId must also be+-- provided and CIDRIP cannot be provided.+rcsgiEC2SecurityGroupName :: Lens' RevokeClusterSecurityGroupIngress (Maybe Text)+rcsgiEC2SecurityGroupName =+    lens _rcsgiEC2SecurityGroupName+        (\s a -> s { _rcsgiEC2SecurityGroupName = a })++-- | The AWS account number of the owner of the security group specified in+-- the EC2SecurityGroupName parameter. The AWS access key ID is not an+-- acceptable value. If EC2SecurityGroupOwnerId is specified,+-- EC2SecurityGroupName must also be provided. and CIDRIP cannot be+-- provided. Example: 111122223333.+rcsgiEC2SecurityGroupOwnerId :: Lens' RevokeClusterSecurityGroupIngress (Maybe Text)+rcsgiEC2SecurityGroupOwnerId =+    lens _rcsgiEC2SecurityGroupOwnerId+        (\s a -> s { _rcsgiEC2SecurityGroupOwnerId = a })++newtype RevokeClusterSecurityGroupIngressResponse = RevokeClusterSecurityGroupIngressResponse+    { _rcsgirClusterSecurityGroup :: Maybe ClusterSecurityGroup+    } deriving (Eq, Show)++-- | 'RevokeClusterSecurityGroupIngressResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcsgirClusterSecurityGroup' @::@ 'Maybe' 'ClusterSecurityGroup'+--+revokeClusterSecurityGroupIngressResponse :: RevokeClusterSecurityGroupIngressResponse+revokeClusterSecurityGroupIngressResponse = RevokeClusterSecurityGroupIngressResponse+    { _rcsgirClusterSecurityGroup = Nothing+    }++rcsgirClusterSecurityGroup :: Lens' RevokeClusterSecurityGroupIngressResponse (Maybe ClusterSecurityGroup)+rcsgirClusterSecurityGroup =+    lens _rcsgirClusterSecurityGroup+        (\s a -> s { _rcsgirClusterSecurityGroup = a })++instance ToPath RevokeClusterSecurityGroupIngress where+    toPath = const "/"++instance ToQuery RevokeClusterSecurityGroupIngress where+    toQuery RevokeClusterSecurityGroupIngress{..} = mconcat+        [ "CIDRIP"                   =? _rcsgiCIDRIP+        , "ClusterSecurityGroupName" =? _rcsgiClusterSecurityGroupName+        , "EC2SecurityGroupName"     =? _rcsgiEC2SecurityGroupName+        , "EC2SecurityGroupOwnerId"  =? _rcsgiEC2SecurityGroupOwnerId+        ]++instance ToHeaders RevokeClusterSecurityGroupIngress++instance AWSRequest RevokeClusterSecurityGroupIngress where+    type Sv RevokeClusterSecurityGroupIngress = Redshift+    type Rs RevokeClusterSecurityGroupIngress = RevokeClusterSecurityGroupIngressResponse++    request  = post "RevokeClusterSecurityGroupIngress"+    response = xmlResponse++instance FromXML RevokeClusterSecurityGroupIngressResponse where+    parseXML = withElement "RevokeClusterSecurityGroupIngressResult" $ \x -> RevokeClusterSecurityGroupIngressResponse+        <$> x .@? "ClusterSecurityGroup"
+ gen/Network/AWS/Redshift/RevokeSnapshotAccess.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.Redshift.RevokeSnapshotAccess+-- 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)++-- | Removes the ability of the specified AWS customer account to restore the+-- specified snapshot. If the account is currently restoring the snapshot, the+-- restore will run to completion. For more information about working with+-- snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster+-- Management Guide.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_RevokeSnapshotAccess.html>+module Network.AWS.Redshift.RevokeSnapshotAccess+    (+    -- * Request+      RevokeSnapshotAccess+    -- ** Request constructor+    , revokeSnapshotAccess+    -- ** Request lenses+    , rsaAccountWithRestoreAccess+    , rsaSnapshotClusterIdentifier+    , rsaSnapshotIdentifier++    -- * Response+    , RevokeSnapshotAccessResponse+    -- ** Response constructor+    , revokeSnapshotAccessResponse+    -- ** Response lenses+    , rsarSnapshot+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++data RevokeSnapshotAccess = RevokeSnapshotAccess+    { _rsaAccountWithRestoreAccess  :: Text+    , _rsaSnapshotClusterIdentifier :: Maybe Text+    , _rsaSnapshotIdentifier        :: Text+    } deriving (Eq, Ord, Show)++-- | 'RevokeSnapshotAccess' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rsaAccountWithRestoreAccess' @::@ 'Text'+--+-- * 'rsaSnapshotClusterIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'rsaSnapshotIdentifier' @::@ 'Text'+--+revokeSnapshotAccess :: Text -- ^ 'rsaSnapshotIdentifier'+                     -> Text -- ^ 'rsaAccountWithRestoreAccess'+                     -> RevokeSnapshotAccess+revokeSnapshotAccess p1 p2 = RevokeSnapshotAccess+    { _rsaSnapshotIdentifier        = p1+    , _rsaAccountWithRestoreAccess  = p2+    , _rsaSnapshotClusterIdentifier = Nothing+    }++-- | The identifier of the AWS customer account that can no longer restore the+-- specified snapshot.+rsaAccountWithRestoreAccess :: Lens' RevokeSnapshotAccess Text+rsaAccountWithRestoreAccess =+    lens _rsaAccountWithRestoreAccess+        (\s a -> s { _rsaAccountWithRestoreAccess = a })++-- | The identifier of the cluster the snapshot was created from. This+-- parameter is required if your IAM user has a policy containing a snapshot+-- resource element that specifies anything other than * for the cluster+-- name.+rsaSnapshotClusterIdentifier :: Lens' RevokeSnapshotAccess (Maybe Text)+rsaSnapshotClusterIdentifier =+    lens _rsaSnapshotClusterIdentifier+        (\s a -> s { _rsaSnapshotClusterIdentifier = a })++-- | The identifier of the snapshot that the account can no longer access.+rsaSnapshotIdentifier :: Lens' RevokeSnapshotAccess Text+rsaSnapshotIdentifier =+    lens _rsaSnapshotIdentifier (\s a -> s { _rsaSnapshotIdentifier = a })++newtype RevokeSnapshotAccessResponse = RevokeSnapshotAccessResponse+    { _rsarSnapshot :: Maybe Snapshot+    } deriving (Eq, Show)++-- | 'RevokeSnapshotAccessResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rsarSnapshot' @::@ 'Maybe' 'Snapshot'+--+revokeSnapshotAccessResponse :: RevokeSnapshotAccessResponse+revokeSnapshotAccessResponse = RevokeSnapshotAccessResponse+    { _rsarSnapshot = Nothing+    }++rsarSnapshot :: Lens' RevokeSnapshotAccessResponse (Maybe Snapshot)+rsarSnapshot = lens _rsarSnapshot (\s a -> s { _rsarSnapshot = a })++instance ToPath RevokeSnapshotAccess where+    toPath = const "/"++instance ToQuery RevokeSnapshotAccess where+    toQuery RevokeSnapshotAccess{..} = mconcat+        [ "AccountWithRestoreAccess"  =? _rsaAccountWithRestoreAccess+        , "SnapshotClusterIdentifier" =? _rsaSnapshotClusterIdentifier+        , "SnapshotIdentifier"        =? _rsaSnapshotIdentifier+        ]++instance ToHeaders RevokeSnapshotAccess++instance AWSRequest RevokeSnapshotAccess where+    type Sv RevokeSnapshotAccess = Redshift+    type Rs RevokeSnapshotAccess = RevokeSnapshotAccessResponse++    request  = post "RevokeSnapshotAccess"+    response = xmlResponse++instance FromXML RevokeSnapshotAccessResponse where+    parseXML = withElement "RevokeSnapshotAccessResult" $ \x -> RevokeSnapshotAccessResponse+        <$> x .@? "Snapshot"
+ gen/Network/AWS/Redshift/RotateEncryptionKey.hs view
@@ -0,0 +1,108 @@+{-# 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.Redshift.RotateEncryptionKey+-- 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)++-- | Rotates the encryption keys for a cluster.+--+-- <http://docs.aws.amazon.com/redshift/latest/APIReference/API_RotateEncryptionKey.html>+module Network.AWS.Redshift.RotateEncryptionKey+    (+    -- * Request+      RotateEncryptionKey+    -- ** Request constructor+    , rotateEncryptionKey+    -- ** Request lenses+    , rekClusterIdentifier++    -- * Response+    , RotateEncryptionKeyResponse+    -- ** Response constructor+    , rotateEncryptionKeyResponse+    -- ** Response lenses+    , rekrCluster+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.Redshift.Types+import qualified GHC.Exts++newtype RotateEncryptionKey = RotateEncryptionKey+    { _rekClusterIdentifier :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'RotateEncryptionKey' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rekClusterIdentifier' @::@ 'Text'+--+rotateEncryptionKey :: Text -- ^ 'rekClusterIdentifier'+                    -> RotateEncryptionKey+rotateEncryptionKey p1 = RotateEncryptionKey+    { _rekClusterIdentifier = p1+    }++-- | The unique identifier of the cluster that you want to rotate the+-- encryption keys for. Constraints: Must be the name of valid cluster that+-- has encryption enabled.+rekClusterIdentifier :: Lens' RotateEncryptionKey Text+rekClusterIdentifier =+    lens _rekClusterIdentifier (\s a -> s { _rekClusterIdentifier = a })++newtype RotateEncryptionKeyResponse = RotateEncryptionKeyResponse+    { _rekrCluster :: Maybe Cluster+    } deriving (Eq, Show)++-- | 'RotateEncryptionKeyResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rekrCluster' @::@ 'Maybe' 'Cluster'+--+rotateEncryptionKeyResponse :: RotateEncryptionKeyResponse+rotateEncryptionKeyResponse = RotateEncryptionKeyResponse+    { _rekrCluster = Nothing+    }++rekrCluster :: Lens' RotateEncryptionKeyResponse (Maybe Cluster)+rekrCluster = lens _rekrCluster (\s a -> s { _rekrCluster = a })++instance ToPath RotateEncryptionKey where+    toPath = const "/"++instance ToQuery RotateEncryptionKey where+    toQuery RotateEncryptionKey{..} = mconcat+        [ "ClusterIdentifier" =? _rekClusterIdentifier+        ]++instance ToHeaders RotateEncryptionKey++instance AWSRequest RotateEncryptionKey where+    type Sv RotateEncryptionKey = Redshift+    type Rs RotateEncryptionKey = RotateEncryptionKeyResponse++    request  = post "RotateEncryptionKey"+    response = xmlResponse++instance FromXML RotateEncryptionKeyResponse where+    parseXML = withElement "RotateEncryptionKeyResult" $ \x -> RotateEncryptionKeyResponse+        <$> x .@? "Cluster"
+ gen/Network/AWS/Redshift/Types.hs view
@@ -0,0 +1,3347 @@+{-# 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.Redshift.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.Redshift.Types+    (+    -- * Service+      Redshift+    -- ** Error+    , RESTError+    -- ** XML+    , ns++    -- * Snapshot+    , Snapshot+    , snapshot+    , sAccountsWithRestoreAccess+    , sActualIncrementalBackupSizeInMegaBytes+    , sAvailabilityZone+    , sBackupProgressInMegaBytes+    , sClusterCreateTime+    , sClusterIdentifier+    , sClusterVersion+    , sCurrentBackupRateInMegaBytesPerSecond+    , sDBName+    , sElapsedTimeInSeconds+    , sEncrypted+    , sEncryptedWithHSM+    , sEstimatedSecondsToCompletion+    , sKmsKeyId+    , sMasterUsername+    , sNodeType+    , sNumberOfNodes+    , sOwnerAccount+    , sPort+    , sSnapshotCreateTime+    , sSnapshotIdentifier+    , sSnapshotType+    , sSourceRegion+    , sStatus+    , sTags+    , sTotalBackupSizeInMegaBytes+    , sVpcId++    -- * ClusterParameterGroup+    , ClusterParameterGroup+    , clusterParameterGroup+    , cpgDescription+    , cpgParameterGroupFamily+    , cpgParameterGroupName+    , cpgTags++    -- * RestoreStatus+    , RestoreStatus+    , restoreStatus+    , rsCurrentRestoreRateInMegaBytesPerSecond+    , rsElapsedTimeInSeconds+    , rsEstimatedTimeToCompletionInSeconds+    , rsProgressInMegaBytes+    , rsSnapshotSizeInMegaBytes+    , rsStatus++    -- * Event+    , Event+    , event+    , eDate+    , eEventCategories+    , eEventId+    , eMessage+    , eSeverity+    , eSourceIdentifier+    , eSourceType++    -- * ClusterSnapshotCopyStatus+    , ClusterSnapshotCopyStatus+    , clusterSnapshotCopyStatus+    , cscsDestinationRegion+    , cscsRetentionPeriod++    -- * Tag+    , Tag+    , tag+    , tagKey+    , tagValue++    -- * HsmClientCertificate+    , HsmClientCertificate+    , hsmClientCertificate+    , hccHsmClientCertificateIdentifier+    , hccHsmClientCertificatePublicKey+    , hccTags++    -- * Cluster+    , Cluster+    , cluster+    , cAllowVersionUpgrade+    , cAutomatedSnapshotRetentionPeriod+    , cAvailabilityZone+    , cClusterCreateTime+    , cClusterIdentifier+    , cClusterNodes+    , cClusterParameterGroups+    , cClusterPublicKey+    , cClusterRevisionNumber+    , cClusterSecurityGroups+    , cClusterSnapshotCopyStatus+    , cClusterStatus+    , cClusterSubnetGroupName+    , cClusterVersion+    , cDBName+    , cElasticIpStatus+    , cEncrypted+    , cEndpoint+    , cHsmStatus+    , cKmsKeyId+    , cMasterUsername+    , cModifyStatus+    , cNodeType+    , cNumberOfNodes+    , cPendingModifiedValues+    , cPreferredMaintenanceWindow+    , cPubliclyAccessible+    , cRestoreStatus+    , cTags+    , cVpcId+    , cVpcSecurityGroups++    -- * ClusterNode+    , ClusterNode+    , clusterNode+    , cnNodeRole+    , cnPrivateIPAddress+    , cnPublicIPAddress++    -- * EC2SecurityGroup+    , EC2SecurityGroup+    , ec2SecurityGroup+    , ecsgEC2SecurityGroupName+    , ecsgEC2SecurityGroupOwnerId+    , ecsgStatus+    , ecsgTags++    -- * OrderableClusterOption+    , OrderableClusterOption+    , orderableClusterOption+    , ocoAvailabilityZones+    , ocoClusterType+    , ocoClusterVersion+    , ocoNodeType++    -- * SourceType+    , SourceType (..)++    -- * ClusterParameterGroupStatus+    , ClusterParameterGroupStatus+    , clusterParameterGroupStatus+    , cpgsParameterApplyStatus+    , cpgsParameterGroupName++    -- * Subnet+    , Subnet+    , subnet+    , sSubnetAvailabilityZone+    , sSubnetIdentifier+    , sSubnetStatus++    -- * ClusterSecurityGroup+    , ClusterSecurityGroup+    , clusterSecurityGroup+    , csgClusterSecurityGroupName+    , csgDescription+    , csgEC2SecurityGroups+    , csgIPRanges+    , csgTags++    -- * DefaultClusterParameters+    , DefaultClusterParameters+    , defaultClusterParameters+    , dcpMarker+    , dcpParameterGroupFamily+    , dcpParameters++    -- * ClusterSubnetGroup+    , ClusterSubnetGroup+    , clusterSubnetGroup+    , csg1ClusterSubnetGroupName+    , csg1Description+    , csg1SubnetGroupStatus+    , csg1Subnets+    , csg1Tags+    , csg1VpcId++    -- * EventInfoMap+    , EventInfoMap+    , eventInfoMap+    , eimEventCategories+    , eimEventDescription+    , eimEventId+    , eimSeverity++    -- * ClusterSecurityGroupMembership+    , ClusterSecurityGroupMembership+    , clusterSecurityGroupMembership+    , csgmClusterSecurityGroupName+    , csgmStatus++    -- * ReservedNodeOffering+    , ReservedNodeOffering+    , reservedNodeOffering+    , rnoCurrencyCode+    , rnoDuration+    , rnoFixedPrice+    , rnoNodeType+    , rnoOfferingType+    , rnoRecurringCharges+    , rnoReservedNodeOfferingId+    , rnoUsagePrice++    -- * ReservedNode+    , ReservedNode+    , reservedNode+    , rnCurrencyCode+    , rnDuration+    , rnFixedPrice+    , rnNodeCount+    , rnNodeType+    , rnOfferingType+    , rnRecurringCharges+    , rnReservedNodeId+    , rnReservedNodeOfferingId+    , rnStartTime+    , rnState+    , rnUsagePrice++    -- * LoggingStatus+    , LoggingStatus+    , loggingStatus+    , lsBucketName+    , lsLastFailureMessage+    , lsLastFailureTime+    , lsLastSuccessfulDeliveryTime+    , lsLoggingEnabled+    , lsS3KeyPrefix++    -- * AccountWithRestoreAccess+    , AccountWithRestoreAccess+    , accountWithRestoreAccess+    , awraAccountId++    -- * AvailabilityZone+    , AvailabilityZone+    , availabilityZone+    , azName++    -- * EventSubscription+    , EventSubscription+    , eventSubscription+    , esCustSubscriptionId+    , esCustomerAwsId+    , esEnabled+    , esEventCategoriesList+    , esSeverity+    , esSnsTopicArn+    , esSourceIdsList+    , esSourceType+    , esStatus+    , esSubscriptionCreationTime+    , esTags++    -- * HsmStatus+    , HsmStatus+    , hsmStatus+    , hsHsmClientCertificateIdentifier+    , hsHsmConfigurationIdentifier+    , hsStatus++    -- * ClusterParameterGroupNameMessage+    , ClusterParameterGroupNameMessage+    , clusterParameterGroupNameMessage+    , cpgnmParameterGroupName+    , cpgnmParameterGroupStatus++    -- * ElasticIpStatus+    , ElasticIpStatus+    , elasticIpStatus+    , eisElasticIp+    , eisStatus++    -- * ClusterVersion+    , ClusterVersion+    , clusterVersion+    , cvClusterParameterGroupFamily+    , cvClusterVersion+    , cvDescription++    -- * RecurringCharge+    , RecurringCharge+    , recurringCharge+    , rcRecurringChargeAmount+    , rcRecurringChargeFrequency++    -- * Endpoint+    , Endpoint+    , endpoint+    , eAddress+    , ePort++    -- * IPRange+    , IPRange+    , iprange+    , iprCIDRIP+    , iprStatus+    , iprTags++    -- * TaggedResource+    , TaggedResource+    , taggedResource+    , trResourceName+    , trResourceType+    , trTag++    -- * EventCategoriesMap+    , EventCategoriesMap+    , eventCategoriesMap+    , ecmEvents+    , ecmSourceType++    -- * HsmConfiguration+    , HsmConfiguration+    , hsmConfiguration+    , hcDescription+    , hcHsmConfigurationIdentifier+    , hcHsmIpAddress+    , hcHsmPartitionName+    , hcTags++    -- * PendingModifiedValues+    , PendingModifiedValues+    , pendingModifiedValues+    , pmvAutomatedSnapshotRetentionPeriod+    , pmvClusterIdentifier+    , pmvClusterType+    , pmvClusterVersion+    , pmvMasterUserPassword+    , pmvNodeType+    , pmvNumberOfNodes++    -- * VpcSecurityGroupMembership+    , VpcSecurityGroupMembership+    , vpcSecurityGroupMembership+    , vsgmStatus+    , vsgmVpcSecurityGroupId++    -- * 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 @2012-12-01@ of the Amazon Redshift service.+data Redshift++instance AWSService Redshift where+    type Sg Redshift = V4+    type Er Redshift = RESTError++    service = Service+        { _svcEndpoint     = regional+        , _svcAbbrev       = "Redshift"+        , _svcPrefix       = "redshift"+        , _svcVersion      = "2012-12-01"+        , _svcTargetPrefix = Nothing+        , _svcJSONVersion  = Nothing+        }++    handle = restError statusSuccess++ns :: Text+ns = "http://redshift.amazonaws.com/doc/2012-12-01/"++data Snapshot = Snapshot+    { _sAccountsWithRestoreAccess              :: List "AccountWithRestoreAccess" AccountWithRestoreAccess+    , _sActualIncrementalBackupSizeInMegaBytes :: Maybe Double+    , _sAvailabilityZone                       :: Maybe Text+    , _sBackupProgressInMegaBytes              :: Maybe Double+    , _sClusterCreateTime                      :: Maybe RFC822+    , _sClusterIdentifier                      :: Maybe Text+    , _sClusterVersion                         :: Maybe Text+    , _sCurrentBackupRateInMegaBytesPerSecond  :: Maybe Double+    , _sDBName                                 :: Maybe Text+    , _sElapsedTimeInSeconds                   :: Maybe Integer+    , _sEncrypted                              :: Maybe Bool+    , _sEncryptedWithHSM                       :: Maybe Bool+    , _sEstimatedSecondsToCompletion           :: Maybe Integer+    , _sKmsKeyId                               :: Maybe Text+    , _sMasterUsername                         :: Maybe Text+    , _sNodeType                               :: Maybe Text+    , _sNumberOfNodes                          :: Maybe Int+    , _sOwnerAccount                           :: Maybe Text+    , _sPort                                   :: Maybe Int+    , _sSnapshotCreateTime                     :: Maybe RFC822+    , _sSnapshotIdentifier                     :: Maybe Text+    , _sSnapshotType                           :: Maybe Text+    , _sSourceRegion                           :: Maybe Text+    , _sStatus                                 :: Maybe Text+    , _sTags                                   :: List "Tag" Tag+    , _sTotalBackupSizeInMegaBytes             :: Maybe Double+    , _sVpcId                                  :: Maybe Text+    } deriving (Eq, Show)++-- | 'Snapshot' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sAccountsWithRestoreAccess' @::@ ['AccountWithRestoreAccess']+--+-- * 'sActualIncrementalBackupSizeInMegaBytes' @::@ 'Maybe' 'Double'+--+-- * 'sAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'sBackupProgressInMegaBytes' @::@ 'Maybe' 'Double'+--+-- * 'sClusterCreateTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'sClusterIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'sClusterVersion' @::@ 'Maybe' 'Text'+--+-- * 'sCurrentBackupRateInMegaBytesPerSecond' @::@ 'Maybe' 'Double'+--+-- * 'sDBName' @::@ 'Maybe' 'Text'+--+-- * 'sElapsedTimeInSeconds' @::@ 'Maybe' 'Integer'+--+-- * 'sEncrypted' @::@ 'Maybe' 'Bool'+--+-- * 'sEncryptedWithHSM' @::@ 'Maybe' 'Bool'+--+-- * 'sEstimatedSecondsToCompletion' @::@ 'Maybe' 'Integer'+--+-- * 'sKmsKeyId' @::@ 'Maybe' 'Text'+--+-- * 'sMasterUsername' @::@ 'Maybe' 'Text'+--+-- * 'sNodeType' @::@ 'Maybe' 'Text'+--+-- * 'sNumberOfNodes' @::@ 'Maybe' 'Int'+--+-- * 'sOwnerAccount' @::@ 'Maybe' 'Text'+--+-- * 'sPort' @::@ 'Maybe' 'Int'+--+-- * 'sSnapshotCreateTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'sSnapshotIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'sSnapshotType' @::@ 'Maybe' 'Text'+--+-- * 'sSourceRegion' @::@ 'Maybe' 'Text'+--+-- * 'sStatus' @::@ 'Maybe' 'Text'+--+-- * 'sTags' @::@ ['Tag']+--+-- * 'sTotalBackupSizeInMegaBytes' @::@ 'Maybe' 'Double'+--+-- * 'sVpcId' @::@ 'Maybe' 'Text'+--+snapshot :: Snapshot+snapshot = Snapshot+    { _sSnapshotIdentifier                     = Nothing+    , _sClusterIdentifier                      = Nothing+    , _sSnapshotCreateTime                     = Nothing+    , _sStatus                                 = Nothing+    , _sPort                                   = Nothing+    , _sAvailabilityZone                       = Nothing+    , _sClusterCreateTime                      = Nothing+    , _sMasterUsername                         = Nothing+    , _sClusterVersion                         = Nothing+    , _sSnapshotType                           = Nothing+    , _sNodeType                               = Nothing+    , _sNumberOfNodes                          = Nothing+    , _sDBName                                 = Nothing+    , _sVpcId                                  = Nothing+    , _sEncrypted                              = Nothing+    , _sKmsKeyId                               = Nothing+    , _sEncryptedWithHSM                       = Nothing+    , _sAccountsWithRestoreAccess              = mempty+    , _sOwnerAccount                           = Nothing+    , _sTotalBackupSizeInMegaBytes             = Nothing+    , _sActualIncrementalBackupSizeInMegaBytes = Nothing+    , _sBackupProgressInMegaBytes              = Nothing+    , _sCurrentBackupRateInMegaBytesPerSecond  = Nothing+    , _sEstimatedSecondsToCompletion           = Nothing+    , _sElapsedTimeInSeconds                   = Nothing+    , _sSourceRegion                           = Nothing+    , _sTags                                   = mempty+    }++-- | A list of the AWS customer accounts authorized to restore the snapshot.+-- Returns null if no accounts are authorized. Visible only to the snapshot+-- owner.+sAccountsWithRestoreAccess :: Lens' Snapshot [AccountWithRestoreAccess]+sAccountsWithRestoreAccess =+    lens _sAccountsWithRestoreAccess+        (\s a -> s { _sAccountsWithRestoreAccess = a })+            . _List++-- | The size of the incremental backup.+sActualIncrementalBackupSizeInMegaBytes :: Lens' Snapshot (Maybe Double)+sActualIncrementalBackupSizeInMegaBytes =+    lens _sActualIncrementalBackupSizeInMegaBytes+        (\s a -> s { _sActualIncrementalBackupSizeInMegaBytes = a })++-- | The Availability Zone in which the cluster was created.+sAvailabilityZone :: Lens' Snapshot (Maybe Text)+sAvailabilityZone =+    lens _sAvailabilityZone (\s a -> s { _sAvailabilityZone = a })++-- | The number of megabytes that have been transferred to the snapshot+-- backup.+sBackupProgressInMegaBytes :: Lens' Snapshot (Maybe Double)+sBackupProgressInMegaBytes =+    lens _sBackupProgressInMegaBytes+        (\s a -> s { _sBackupProgressInMegaBytes = a })++-- | The time (UTC) when the cluster was originally created.+sClusterCreateTime :: Lens' Snapshot (Maybe UTCTime)+sClusterCreateTime =+    lens _sClusterCreateTime (\s a -> s { _sClusterCreateTime = a })+        . mapping _Time++-- | The identifier of the cluster for which the snapshot was taken.+sClusterIdentifier :: Lens' Snapshot (Maybe Text)+sClusterIdentifier =+    lens _sClusterIdentifier (\s a -> s { _sClusterIdentifier = a })++-- | The version ID of the Amazon Redshift engine that is running on the+-- cluster.+sClusterVersion :: Lens' Snapshot (Maybe Text)+sClusterVersion = lens _sClusterVersion (\s a -> s { _sClusterVersion = a })++-- | The number of megabytes per second being transferred to the snapshot+-- backup. Returns 0 for a completed backup.+sCurrentBackupRateInMegaBytesPerSecond :: Lens' Snapshot (Maybe Double)+sCurrentBackupRateInMegaBytesPerSecond =+    lens _sCurrentBackupRateInMegaBytesPerSecond+        (\s a -> s { _sCurrentBackupRateInMegaBytesPerSecond = a })++-- | The name of the database that was created when the cluster was created.+sDBName :: Lens' Snapshot (Maybe Text)+sDBName = lens _sDBName (\s a -> s { _sDBName = a })++-- | The amount of time an in-progress snapshot backup has been running, or+-- the amount of time it took a completed backup to finish.+sElapsedTimeInSeconds :: Lens' Snapshot (Maybe Integer)+sElapsedTimeInSeconds =+    lens _sElapsedTimeInSeconds (\s a -> s { _sElapsedTimeInSeconds = a })++-- | If true, the data in the snapshot is encrypted at rest.+sEncrypted :: Lens' Snapshot (Maybe Bool)+sEncrypted = lens _sEncrypted (\s a -> s { _sEncrypted = a })++-- | A boolean that indicates whether the snapshot data is encrypted using the+-- HSM keys of the source cluster. true indicates that the data is encrypted+-- using HSM keys.+sEncryptedWithHSM :: Lens' Snapshot (Maybe Bool)+sEncryptedWithHSM =+    lens _sEncryptedWithHSM (\s a -> s { _sEncryptedWithHSM = a })++-- | The estimate of the time remaining before the snapshot backup will+-- complete. Returns 0 for a completed backup.+sEstimatedSecondsToCompletion :: Lens' Snapshot (Maybe Integer)+sEstimatedSecondsToCompletion =+    lens _sEstimatedSecondsToCompletion+        (\s a -> s { _sEstimatedSecondsToCompletion = a })++-- | The AWS Key Management Service (KMS) key ID of the encryption key that+-- was used to encrypt data in the cluster from which the snapshot was+-- taken.+sKmsKeyId :: Lens' Snapshot (Maybe Text)+sKmsKeyId = lens _sKmsKeyId (\s a -> s { _sKmsKeyId = a })++-- | The master user name for the cluster.+sMasterUsername :: Lens' Snapshot (Maybe Text)+sMasterUsername = lens _sMasterUsername (\s a -> s { _sMasterUsername = a })++-- | The node type of the nodes in the cluster.+sNodeType :: Lens' Snapshot (Maybe Text)+sNodeType = lens _sNodeType (\s a -> s { _sNodeType = a })++-- | The number of nodes in the cluster.+sNumberOfNodes :: Lens' Snapshot (Maybe Int)+sNumberOfNodes = lens _sNumberOfNodes (\s a -> s { _sNumberOfNodes = a })++-- | For manual snapshots, the AWS customer account used to create or copy the+-- snapshot. For automatic snapshots, the owner of the cluster. The owner+-- can perform all snapshot actions, such as sharing a manual snapshot.+sOwnerAccount :: Lens' Snapshot (Maybe Text)+sOwnerAccount = lens _sOwnerAccount (\s a -> s { _sOwnerAccount = a })++-- | The port that the cluster is listening on.+sPort :: Lens' Snapshot (Maybe Int)+sPort = lens _sPort (\s a -> s { _sPort = a })++-- | The time (UTC) when Amazon Redshift began the snapshot. A snapshot+-- contains a copy of the cluster data as of this exact time.+sSnapshotCreateTime :: Lens' Snapshot (Maybe UTCTime)+sSnapshotCreateTime =+    lens _sSnapshotCreateTime (\s a -> s { _sSnapshotCreateTime = a })+        . mapping _Time++-- | The snapshot identifier that is provided in the request.+sSnapshotIdentifier :: Lens' Snapshot (Maybe Text)+sSnapshotIdentifier =+    lens _sSnapshotIdentifier (\s a -> s { _sSnapshotIdentifier = a })++-- | The snapshot type. Snapshots created using CreateClusterSnapshot and+-- CopyClusterSnapshot will be of type "manual".+sSnapshotType :: Lens' Snapshot (Maybe Text)+sSnapshotType = lens _sSnapshotType (\s a -> s { _sSnapshotType = a })++-- | The source region from which the snapshot was copied.+sSourceRegion :: Lens' Snapshot (Maybe Text)+sSourceRegion = lens _sSourceRegion (\s a -> s { _sSourceRegion = a })++-- | The snapshot status. The value of the status depends on the API operation+-- used. CreateClusterSnapshot and CopyClusterSnapshot returns status as+-- "creating". DescribeClusterSnapshots returns status as "creating",+-- "available", "final snapshot", or "failed". DeleteClusterSnapshot returns+-- status as "deleted".+sStatus :: Lens' Snapshot (Maybe Text)+sStatus = lens _sStatus (\s a -> s { _sStatus = a })++-- | The list of tags for the cluster snapshot.+sTags :: Lens' Snapshot [Tag]+sTags = lens _sTags (\s a -> s { _sTags = a }) . _List++-- | The size of the complete set of backup data that would be used to restore+-- the cluster.+sTotalBackupSizeInMegaBytes :: Lens' Snapshot (Maybe Double)+sTotalBackupSizeInMegaBytes =+    lens _sTotalBackupSizeInMegaBytes+        (\s a -> s { _sTotalBackupSizeInMegaBytes = a })++-- | The VPC identifier of the cluster if the snapshot is from a cluster in a+-- VPC. Otherwise, this field is not in the output.+sVpcId :: Lens' Snapshot (Maybe Text)+sVpcId = lens _sVpcId (\s a -> s { _sVpcId = a })++instance FromXML Snapshot where+    parseXML x = Snapshot+        <$> x .@  "AccountsWithRestoreAccess"+        <*> x .@? "ActualIncrementalBackupSizeInMegaBytes"+        <*> x .@? "AvailabilityZone"+        <*> x .@? "BackupProgressInMegaBytes"+        <*> x .@? "ClusterCreateTime"+        <*> x .@? "ClusterIdentifier"+        <*> x .@? "ClusterVersion"+        <*> x .@? "CurrentBackupRateInMegaBytesPerSecond"+        <*> x .@? "DBName"+        <*> x .@? "ElapsedTimeInSeconds"+        <*> x .@? "Encrypted"+        <*> x .@? "EncryptedWithHSM"+        <*> x .@? "EstimatedSecondsToCompletion"+        <*> x .@? "KmsKeyId"+        <*> x .@? "MasterUsername"+        <*> x .@? "NodeType"+        <*> x .@? "NumberOfNodes"+        <*> x .@? "OwnerAccount"+        <*> x .@? "Port"+        <*> x .@? "SnapshotCreateTime"+        <*> x .@? "SnapshotIdentifier"+        <*> x .@? "SnapshotType"+        <*> x .@? "SourceRegion"+        <*> x .@? "Status"+        <*> x .@  "Tags"+        <*> x .@? "TotalBackupSizeInMegaBytes"+        <*> x .@? "VpcId"++instance ToQuery Snapshot where+    toQuery Snapshot{..} = mconcat+        [ "AccountsWithRestoreAccess"              =? _sAccountsWithRestoreAccess+        , "ActualIncrementalBackupSizeInMegaBytes" =? _sActualIncrementalBackupSizeInMegaBytes+        , "AvailabilityZone"                       =? _sAvailabilityZone+        , "BackupProgressInMegaBytes"              =? _sBackupProgressInMegaBytes+        , "ClusterCreateTime"                      =? _sClusterCreateTime+        , "ClusterIdentifier"                      =? _sClusterIdentifier+        , "ClusterVersion"                         =? _sClusterVersion+        , "CurrentBackupRateInMegaBytesPerSecond"  =? _sCurrentBackupRateInMegaBytesPerSecond+        , "DBName"                                 =? _sDBName+        , "ElapsedTimeInSeconds"                   =? _sElapsedTimeInSeconds+        , "Encrypted"                              =? _sEncrypted+        , "EncryptedWithHSM"                       =? _sEncryptedWithHSM+        , "EstimatedSecondsToCompletion"           =? _sEstimatedSecondsToCompletion+        , "KmsKeyId"                               =? _sKmsKeyId+        , "MasterUsername"                         =? _sMasterUsername+        , "NodeType"                               =? _sNodeType+        , "NumberOfNodes"                          =? _sNumberOfNodes+        , "OwnerAccount"                           =? _sOwnerAccount+        , "Port"                                   =? _sPort+        , "SnapshotCreateTime"                     =? _sSnapshotCreateTime+        , "SnapshotIdentifier"                     =? _sSnapshotIdentifier+        , "SnapshotType"                           =? _sSnapshotType+        , "SourceRegion"                           =? _sSourceRegion+        , "Status"                                 =? _sStatus+        , "Tags"                                   =? _sTags+        , "TotalBackupSizeInMegaBytes"             =? _sTotalBackupSizeInMegaBytes+        , "VpcId"                                  =? _sVpcId+        ]++data ClusterParameterGroup = ClusterParameterGroup+    { _cpgDescription          :: Maybe Text+    , _cpgParameterGroupFamily :: Maybe Text+    , _cpgParameterGroupName   :: Maybe Text+    , _cpgTags                 :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'ClusterParameterGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cpgDescription' @::@ 'Maybe' 'Text'+--+-- * 'cpgParameterGroupFamily' @::@ 'Maybe' 'Text'+--+-- * 'cpgParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'cpgTags' @::@ ['Tag']+--+clusterParameterGroup :: ClusterParameterGroup+clusterParameterGroup = ClusterParameterGroup+    { _cpgParameterGroupName   = Nothing+    , _cpgParameterGroupFamily = Nothing+    , _cpgDescription          = Nothing+    , _cpgTags                 = mempty+    }++-- | The description of the parameter group.+cpgDescription :: Lens' ClusterParameterGroup (Maybe Text)+cpgDescription = lens _cpgDescription (\s a -> s { _cpgDescription = a })++-- | The name of the cluster parameter group family that this cluster+-- parameter group is compatible with.+cpgParameterGroupFamily :: Lens' ClusterParameterGroup (Maybe Text)+cpgParameterGroupFamily =+    lens _cpgParameterGroupFamily (\s a -> s { _cpgParameterGroupFamily = a })++-- | The name of the cluster parameter group.+cpgParameterGroupName :: Lens' ClusterParameterGroup (Maybe Text)+cpgParameterGroupName =+    lens _cpgParameterGroupName (\s a -> s { _cpgParameterGroupName = a })++-- | The list of tags for the cluster parameter group.+cpgTags :: Lens' ClusterParameterGroup [Tag]+cpgTags = lens _cpgTags (\s a -> s { _cpgTags = a }) . _List++instance FromXML ClusterParameterGroup where+    parseXML x = ClusterParameterGroup+        <$> x .@? "Description"+        <*> x .@? "ParameterGroupFamily"+        <*> x .@? "ParameterGroupName"+        <*> x .@  "Tags"++instance ToQuery ClusterParameterGroup where+    toQuery ClusterParameterGroup{..} = mconcat+        [ "Description"          =? _cpgDescription+        , "ParameterGroupFamily" =? _cpgParameterGroupFamily+        , "ParameterGroupName"   =? _cpgParameterGroupName+        , "Tags"                 =? _cpgTags+        ]++data RestoreStatus = RestoreStatus+    { _rsCurrentRestoreRateInMegaBytesPerSecond :: Maybe Double+    , _rsElapsedTimeInSeconds                   :: Maybe Integer+    , _rsEstimatedTimeToCompletionInSeconds     :: Maybe Integer+    , _rsProgressInMegaBytes                    :: Maybe Integer+    , _rsSnapshotSizeInMegaBytes                :: Maybe Integer+    , _rsStatus                                 :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'RestoreStatus' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rsCurrentRestoreRateInMegaBytesPerSecond' @::@ 'Maybe' 'Double'+--+-- * 'rsElapsedTimeInSeconds' @::@ 'Maybe' 'Integer'+--+-- * 'rsEstimatedTimeToCompletionInSeconds' @::@ 'Maybe' 'Integer'+--+-- * 'rsProgressInMegaBytes' @::@ 'Maybe' 'Integer'+--+-- * 'rsSnapshotSizeInMegaBytes' @::@ 'Maybe' 'Integer'+--+-- * 'rsStatus' @::@ 'Maybe' 'Text'+--+restoreStatus :: RestoreStatus+restoreStatus = RestoreStatus+    { _rsStatus                                 = Nothing+    , _rsCurrentRestoreRateInMegaBytesPerSecond = Nothing+    , _rsSnapshotSizeInMegaBytes                = Nothing+    , _rsProgressInMegaBytes                    = Nothing+    , _rsElapsedTimeInSeconds                   = Nothing+    , _rsEstimatedTimeToCompletionInSeconds     = Nothing+    }++-- | The number of megabytes per second being transferred from the backup+-- storage. Returns the average rate for a completed backup.+rsCurrentRestoreRateInMegaBytesPerSecond :: Lens' RestoreStatus (Maybe Double)+rsCurrentRestoreRateInMegaBytesPerSecond =+    lens _rsCurrentRestoreRateInMegaBytesPerSecond+        (\s a -> s { _rsCurrentRestoreRateInMegaBytesPerSecond = a })++-- | The amount of time an in-progress restore has been running, or the amount+-- of time it took a completed restore to finish.+rsElapsedTimeInSeconds :: Lens' RestoreStatus (Maybe Integer)+rsElapsedTimeInSeconds =+    lens _rsElapsedTimeInSeconds (\s a -> s { _rsElapsedTimeInSeconds = a })++-- | The estimate of the time remaining before the restore will complete.+-- Returns 0 for a completed restore.+rsEstimatedTimeToCompletionInSeconds :: Lens' RestoreStatus (Maybe Integer)+rsEstimatedTimeToCompletionInSeconds =+    lens _rsEstimatedTimeToCompletionInSeconds+        (\s a -> s { _rsEstimatedTimeToCompletionInSeconds = a })++-- | The number of megabytes that have been transferred from snapshot storage.+rsProgressInMegaBytes :: Lens' RestoreStatus (Maybe Integer)+rsProgressInMegaBytes =+    lens _rsProgressInMegaBytes (\s a -> s { _rsProgressInMegaBytes = a })++-- | The size of the set of snapshot data used to restore the cluster.+rsSnapshotSizeInMegaBytes :: Lens' RestoreStatus (Maybe Integer)+rsSnapshotSizeInMegaBytes =+    lens _rsSnapshotSizeInMegaBytes+        (\s a -> s { _rsSnapshotSizeInMegaBytes = a })++-- | The status of the restore action. Returns starting, restoring, completed,+-- or failed.+rsStatus :: Lens' RestoreStatus (Maybe Text)+rsStatus = lens _rsStatus (\s a -> s { _rsStatus = a })++instance FromXML RestoreStatus where+    parseXML x = RestoreStatus+        <$> x .@? "CurrentRestoreRateInMegaBytesPerSecond"+        <*> x .@? "ElapsedTimeInSeconds"+        <*> x .@? "EstimatedTimeToCompletionInSeconds"+        <*> x .@? "ProgressInMegaBytes"+        <*> x .@? "SnapshotSizeInMegaBytes"+        <*> x .@? "Status"++instance ToQuery RestoreStatus where+    toQuery RestoreStatus{..} = mconcat+        [ "CurrentRestoreRateInMegaBytesPerSecond" =? _rsCurrentRestoreRateInMegaBytesPerSecond+        , "ElapsedTimeInSeconds"                   =? _rsElapsedTimeInSeconds+        , "EstimatedTimeToCompletionInSeconds"     =? _rsEstimatedTimeToCompletionInSeconds+        , "ProgressInMegaBytes"                    =? _rsProgressInMegaBytes+        , "SnapshotSizeInMegaBytes"                =? _rsSnapshotSizeInMegaBytes+        , "Status"                                 =? _rsStatus+        ]++data Event = Event+    { _eDate             :: Maybe RFC822+    , _eEventCategories  :: List "EventCategory" Text+    , _eEventId          :: Maybe Text+    , _eMessage          :: Maybe Text+    , _eSeverity         :: Maybe Text+    , _eSourceIdentifier :: Maybe Text+    , _eSourceType       :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'Event' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'eDate' @::@ 'Maybe' 'UTCTime'+--+-- * 'eEventCategories' @::@ ['Text']+--+-- * 'eEventId' @::@ 'Maybe' 'Text'+--+-- * 'eMessage' @::@ 'Maybe' 'Text'+--+-- * 'eSeverity' @::@ 'Maybe' 'Text'+--+-- * 'eSourceIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'eSourceType' @::@ 'Maybe' 'Text'+--+event :: Event+event = Event+    { _eSourceIdentifier = Nothing+    , _eSourceType       = Nothing+    , _eMessage          = Nothing+    , _eEventCategories  = mempty+    , _eSeverity         = Nothing+    , _eDate             = Nothing+    , _eEventId          = Nothing+    }++-- | The date and time of the event.+eDate :: Lens' Event (Maybe UTCTime)+eDate = lens _eDate (\s a -> s { _eDate = a }) . mapping _Time++-- | A list of the event categories.+eEventCategories :: Lens' Event [Text]+eEventCategories = lens _eEventCategories (\s a -> s { _eEventCategories = a }) . _List++-- | The identifier of the event.+eEventId :: Lens' Event (Maybe Text)+eEventId = lens _eEventId (\s a -> s { _eEventId = a })++-- | The text of this event.+eMessage :: Lens' Event (Maybe Text)+eMessage = lens _eMessage (\s a -> s { _eMessage = a })++-- | The severity of the event. Values: ERROR, INFO.+eSeverity :: Lens' Event (Maybe Text)+eSeverity = lens _eSeverity (\s a -> s { _eSeverity = a })++-- | The identifier for the source of the event.+eSourceIdentifier :: Lens' Event (Maybe Text)+eSourceIdentifier =+    lens _eSourceIdentifier (\s a -> s { _eSourceIdentifier = a })++-- | The source type for this event.+eSourceType :: Lens' Event (Maybe Text)+eSourceType = lens _eSourceType (\s a -> s { _eSourceType = a })++instance FromXML Event where+    parseXML x = Event+        <$> x .@? "Date"+        <*> x .@  "EventCategories"+        <*> x .@? "EventId"+        <*> x .@? "Message"+        <*> x .@? "Severity"+        <*> x .@? "SourceIdentifier"+        <*> x .@? "SourceType"++instance ToQuery Event where+    toQuery Event{..} = mconcat+        [ "Date"             =? _eDate+        , "EventCategories"  =? _eEventCategories+        , "EventId"          =? _eEventId+        , "Message"          =? _eMessage+        , "Severity"         =? _eSeverity+        , "SourceIdentifier" =? _eSourceIdentifier+        , "SourceType"       =? _eSourceType+        ]++data ClusterSnapshotCopyStatus = ClusterSnapshotCopyStatus+    { _cscsDestinationRegion :: Maybe Text+    , _cscsRetentionPeriod   :: Maybe Integer+    } deriving (Eq, Ord, Show)++-- | 'ClusterSnapshotCopyStatus' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cscsDestinationRegion' @::@ 'Maybe' 'Text'+--+-- * 'cscsRetentionPeriod' @::@ 'Maybe' 'Integer'+--+clusterSnapshotCopyStatus :: ClusterSnapshotCopyStatus+clusterSnapshotCopyStatus = ClusterSnapshotCopyStatus+    { _cscsDestinationRegion = Nothing+    , _cscsRetentionPeriod   = Nothing+    }++-- | The destination region that snapshots are automatically copied to when+-- cross-region snapshot copy is enabled.+cscsDestinationRegion :: Lens' ClusterSnapshotCopyStatus (Maybe Text)+cscsDestinationRegion =+    lens _cscsDestinationRegion (\s a -> s { _cscsDestinationRegion = a })++-- | The number of days that automated snapshots are retained in the+-- destination region after they are copied from a source region.+cscsRetentionPeriod :: Lens' ClusterSnapshotCopyStatus (Maybe Integer)+cscsRetentionPeriod =+    lens _cscsRetentionPeriod (\s a -> s { _cscsRetentionPeriod = a })++instance FromXML ClusterSnapshotCopyStatus where+    parseXML x = ClusterSnapshotCopyStatus+        <$> x .@? "DestinationRegion"+        <*> x .@? "RetentionPeriod"++instance ToQuery ClusterSnapshotCopyStatus where+    toQuery ClusterSnapshotCopyStatus{..} = mconcat+        [ "DestinationRegion" =? _cscsDestinationRegion+        , "RetentionPeriod"   =? _cscsRetentionPeriod+        ]++data Tag = Tag+    { _tagKey   :: Maybe Text+    , _tagValue :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'Tag' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'tagKey' @::@ 'Maybe' 'Text'+--+-- * 'tagValue' @::@ 'Maybe' 'Text'+--+tag :: Tag+tag = Tag+    { _tagKey   = Nothing+    , _tagValue = Nothing+    }++-- | The key, or name, for the resource tag.+tagKey :: Lens' Tag (Maybe Text)+tagKey = lens _tagKey (\s a -> s { _tagKey = a })++-- | The value for the resource tag.+tagValue :: Lens' Tag (Maybe Text)+tagValue = lens _tagValue (\s a -> s { _tagValue = a })++instance FromXML Tag where+    parseXML x = Tag+        <$> x .@? "Key"+        <*> x .@? "Value"++instance ToQuery Tag where+    toQuery Tag{..} = mconcat+        [ "Key"   =? _tagKey+        , "Value" =? _tagValue+        ]++data HsmClientCertificate = HsmClientCertificate+    { _hccHsmClientCertificateIdentifier :: Maybe Text+    , _hccHsmClientCertificatePublicKey  :: Maybe Text+    , _hccTags                           :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'HsmClientCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'hccHsmClientCertificateIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'hccHsmClientCertificatePublicKey' @::@ 'Maybe' 'Text'+--+-- * 'hccTags' @::@ ['Tag']+--+hsmClientCertificate :: HsmClientCertificate+hsmClientCertificate = HsmClientCertificate+    { _hccHsmClientCertificateIdentifier = Nothing+    , _hccHsmClientCertificatePublicKey  = Nothing+    , _hccTags                           = mempty+    }++-- | The identifier of the HSM client certificate.+hccHsmClientCertificateIdentifier :: Lens' HsmClientCertificate (Maybe Text)+hccHsmClientCertificateIdentifier =+    lens _hccHsmClientCertificateIdentifier+        (\s a -> s { _hccHsmClientCertificateIdentifier = a })++-- | The public key that the Amazon Redshift cluster will use to connect to+-- the HSM. You must register the public key in the HSM.+hccHsmClientCertificatePublicKey :: Lens' HsmClientCertificate (Maybe Text)+hccHsmClientCertificatePublicKey =+    lens _hccHsmClientCertificatePublicKey+        (\s a -> s { _hccHsmClientCertificatePublicKey = a })++-- | The list of tags for the HSM client certificate.+hccTags :: Lens' HsmClientCertificate [Tag]+hccTags = lens _hccTags (\s a -> s { _hccTags = a }) . _List++instance FromXML HsmClientCertificate where+    parseXML x = HsmClientCertificate+        <$> x .@? "HsmClientCertificateIdentifier"+        <*> x .@? "HsmClientCertificatePublicKey"+        <*> x .@  "Tags"++instance ToQuery HsmClientCertificate where+    toQuery HsmClientCertificate{..} = mconcat+        [ "HsmClientCertificateIdentifier" =? _hccHsmClientCertificateIdentifier+        , "HsmClientCertificatePublicKey"  =? _hccHsmClientCertificatePublicKey+        , "Tags"                           =? _hccTags+        ]++data Cluster = Cluster+    { _cAllowVersionUpgrade              :: Maybe Bool+    , _cAutomatedSnapshotRetentionPeriod :: Maybe Int+    , _cAvailabilityZone                 :: Maybe Text+    , _cClusterCreateTime                :: Maybe RFC822+    , _cClusterIdentifier                :: Maybe Text+    , _cClusterNodes                     :: List "ClusterNodes" ClusterNode+    , _cClusterParameterGroups           :: List "ClusterParameterGroup" ClusterParameterGroupStatus+    , _cClusterPublicKey                 :: Maybe Text+    , _cClusterRevisionNumber            :: Maybe Text+    , _cClusterSecurityGroups            :: List "ClusterSecurityGroup" ClusterSecurityGroupMembership+    , _cClusterSnapshotCopyStatus        :: Maybe ClusterSnapshotCopyStatus+    , _cClusterStatus                    :: Maybe Text+    , _cClusterSubnetGroupName           :: Maybe Text+    , _cClusterVersion                   :: Maybe Text+    , _cDBName                           :: Maybe Text+    , _cElasticIpStatus                  :: Maybe ElasticIpStatus+    , _cEncrypted                        :: Maybe Bool+    , _cEndpoint                         :: Maybe Endpoint+    , _cHsmStatus                        :: Maybe HsmStatus+    , _cKmsKeyId                         :: Maybe Text+    , _cMasterUsername                   :: Maybe Text+    , _cModifyStatus                     :: Maybe Text+    , _cNodeType                         :: Maybe Text+    , _cNumberOfNodes                    :: Maybe Int+    , _cPendingModifiedValues            :: Maybe PendingModifiedValues+    , _cPreferredMaintenanceWindow       :: Maybe Text+    , _cPubliclyAccessible               :: Maybe Bool+    , _cRestoreStatus                    :: Maybe RestoreStatus+    , _cTags                             :: List "Tag" Tag+    , _cVpcId                            :: Maybe Text+    , _cVpcSecurityGroups                :: List "VpcSecurityGroup" VpcSecurityGroupMembership+    } deriving (Eq, Show)++-- | 'Cluster' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cAllowVersionUpgrade' @::@ 'Maybe' 'Bool'+--+-- * 'cAutomatedSnapshotRetentionPeriod' @::@ 'Maybe' 'Int'+--+-- * 'cAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'cClusterCreateTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'cClusterIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'cClusterNodes' @::@ ['ClusterNode']+--+-- * 'cClusterParameterGroups' @::@ ['ClusterParameterGroupStatus']+--+-- * 'cClusterPublicKey' @::@ 'Maybe' 'Text'+--+-- * 'cClusterRevisionNumber' @::@ 'Maybe' 'Text'+--+-- * 'cClusterSecurityGroups' @::@ ['ClusterSecurityGroupMembership']+--+-- * 'cClusterSnapshotCopyStatus' @::@ 'Maybe' 'ClusterSnapshotCopyStatus'+--+-- * 'cClusterStatus' @::@ 'Maybe' 'Text'+--+-- * 'cClusterSubnetGroupName' @::@ 'Maybe' 'Text'+--+-- * 'cClusterVersion' @::@ 'Maybe' 'Text'+--+-- * 'cDBName' @::@ 'Maybe' 'Text'+--+-- * 'cElasticIpStatus' @::@ 'Maybe' 'ElasticIpStatus'+--+-- * 'cEncrypted' @::@ 'Maybe' 'Bool'+--+-- * 'cEndpoint' @::@ 'Maybe' 'Endpoint'+--+-- * 'cHsmStatus' @::@ 'Maybe' 'HsmStatus'+--+-- * 'cKmsKeyId' @::@ 'Maybe' 'Text'+--+-- * 'cMasterUsername' @::@ 'Maybe' 'Text'+--+-- * 'cModifyStatus' @::@ 'Maybe' 'Text'+--+-- * 'cNodeType' @::@ 'Maybe' 'Text'+--+-- * 'cNumberOfNodes' @::@ 'Maybe' 'Int'+--+-- * 'cPendingModifiedValues' @::@ 'Maybe' 'PendingModifiedValues'+--+-- * 'cPreferredMaintenanceWindow' @::@ 'Maybe' 'Text'+--+-- * 'cPubliclyAccessible' @::@ 'Maybe' 'Bool'+--+-- * 'cRestoreStatus' @::@ 'Maybe' 'RestoreStatus'+--+-- * 'cTags' @::@ ['Tag']+--+-- * 'cVpcId' @::@ 'Maybe' 'Text'+--+-- * 'cVpcSecurityGroups' @::@ ['VpcSecurityGroupMembership']+--+cluster :: Cluster+cluster = Cluster+    { _cClusterIdentifier                = Nothing+    , _cNodeType                         = Nothing+    , _cClusterStatus                    = Nothing+    , _cModifyStatus                     = Nothing+    , _cMasterUsername                   = Nothing+    , _cDBName                           = Nothing+    , _cEndpoint                         = Nothing+    , _cClusterCreateTime                = Nothing+    , _cAutomatedSnapshotRetentionPeriod = Nothing+    , _cClusterSecurityGroups            = mempty+    , _cVpcSecurityGroups                = mempty+    , _cClusterParameterGroups           = mempty+    , _cClusterSubnetGroupName           = Nothing+    , _cVpcId                            = Nothing+    , _cAvailabilityZone                 = Nothing+    , _cPreferredMaintenanceWindow       = Nothing+    , _cPendingModifiedValues            = Nothing+    , _cClusterVersion                   = Nothing+    , _cAllowVersionUpgrade              = Nothing+    , _cNumberOfNodes                    = Nothing+    , _cPubliclyAccessible               = Nothing+    , _cEncrypted                        = Nothing+    , _cRestoreStatus                    = Nothing+    , _cHsmStatus                        = Nothing+    , _cClusterSnapshotCopyStatus        = Nothing+    , _cClusterPublicKey                 = Nothing+    , _cClusterNodes                     = mempty+    , _cElasticIpStatus                  = Nothing+    , _cClusterRevisionNumber            = Nothing+    , _cTags                             = mempty+    , _cKmsKeyId                         = Nothing+    }++-- | If true, major version upgrades will be applied automatically to the+-- cluster during the maintenance window.+cAllowVersionUpgrade :: Lens' Cluster (Maybe Bool)+cAllowVersionUpgrade =+    lens _cAllowVersionUpgrade (\s a -> s { _cAllowVersionUpgrade = a })++-- | The number of days that automatic cluster snapshots are retained.+cAutomatedSnapshotRetentionPeriod :: Lens' Cluster (Maybe Int)+cAutomatedSnapshotRetentionPeriod =+    lens _cAutomatedSnapshotRetentionPeriod+        (\s a -> s { _cAutomatedSnapshotRetentionPeriod = a })++-- | The name of the Availability Zone in which the cluster is located.+cAvailabilityZone :: Lens' Cluster (Maybe Text)+cAvailabilityZone =+    lens _cAvailabilityZone (\s a -> s { _cAvailabilityZone = a })++-- | The date and time that the cluster was created.+cClusterCreateTime :: Lens' Cluster (Maybe UTCTime)+cClusterCreateTime =+    lens _cClusterCreateTime (\s a -> s { _cClusterCreateTime = a })+        . mapping _Time++-- | The unique identifier of the cluster.+cClusterIdentifier :: Lens' Cluster (Maybe Text)+cClusterIdentifier =+    lens _cClusterIdentifier (\s a -> s { _cClusterIdentifier = a })++-- | The nodes in a cluster.+cClusterNodes :: Lens' Cluster [ClusterNode]+cClusterNodes = lens _cClusterNodes (\s a -> s { _cClusterNodes = a }) . _List++-- | The list of cluster parameter groups that are associated with this+-- cluster.+cClusterParameterGroups :: Lens' Cluster [ClusterParameterGroupStatus]+cClusterParameterGroups =+    lens _cClusterParameterGroups (\s a -> s { _cClusterParameterGroups = a })+        . _List++-- | The public key for the cluster.+cClusterPublicKey :: Lens' Cluster (Maybe Text)+cClusterPublicKey =+    lens _cClusterPublicKey (\s a -> s { _cClusterPublicKey = a })++-- | The specific revision number of the database in the cluster.+cClusterRevisionNumber :: Lens' Cluster (Maybe Text)+cClusterRevisionNumber =+    lens _cClusterRevisionNumber (\s a -> s { _cClusterRevisionNumber = a })++-- | A list of cluster security group that are associated with the cluster.+-- Each security group is represented by an element that contains+-- ClusterSecurityGroup.Name and ClusterSecurityGroup.Status subelements.+-- Cluster security groups are used when the cluster is not created in a+-- VPC. Clusters that are created in a VPC use VPC security groups, which+-- are listed by the VpcSecurityGroups parameter.+cClusterSecurityGroups :: Lens' Cluster [ClusterSecurityGroupMembership]+cClusterSecurityGroups =+    lens _cClusterSecurityGroups (\s a -> s { _cClusterSecurityGroups = a })+        . _List++-- | Returns the destination region and retention period that are configured+-- for cross-region snapshot copy.+cClusterSnapshotCopyStatus :: Lens' Cluster (Maybe ClusterSnapshotCopyStatus)+cClusterSnapshotCopyStatus =+    lens _cClusterSnapshotCopyStatus+        (\s a -> s { _cClusterSnapshotCopyStatus = a })++-- | The current state of this cluster. Possible values include available,+-- creating, deleting, rebooting, renaming, and resizing.+cClusterStatus :: Lens' Cluster (Maybe Text)+cClusterStatus = lens _cClusterStatus (\s a -> s { _cClusterStatus = a })++-- | The name of the subnet group that is associated with the cluster. This+-- parameter is valid only when the cluster is in a VPC.+cClusterSubnetGroupName :: Lens' Cluster (Maybe Text)+cClusterSubnetGroupName =+    lens _cClusterSubnetGroupName (\s a -> s { _cClusterSubnetGroupName = a })++-- | The version ID of the Amazon Redshift engine that is running on the+-- cluster.+cClusterVersion :: Lens' Cluster (Maybe Text)+cClusterVersion = lens _cClusterVersion (\s a -> s { _cClusterVersion = a })++-- | The name of the initial database that was created when the cluster was+-- created. This same name is returned for the life of the cluster. If an+-- initial database was not specified, a database named "dev" was created by+-- default.+cDBName :: Lens' Cluster (Maybe Text)+cDBName = lens _cDBName (\s a -> s { _cDBName = a })++-- | Describes the status of the elastic IP (EIP) address.+cElasticIpStatus :: Lens' Cluster (Maybe ElasticIpStatus)+cElasticIpStatus = lens _cElasticIpStatus (\s a -> s { _cElasticIpStatus = a })++-- | If true, data in the cluster is encrypted at rest.+cEncrypted :: Lens' Cluster (Maybe Bool)+cEncrypted = lens _cEncrypted (\s a -> s { _cEncrypted = a })++-- | The connection endpoint.+cEndpoint :: Lens' Cluster (Maybe Endpoint)+cEndpoint = lens _cEndpoint (\s a -> s { _cEndpoint = a })++-- | Reports whether the Amazon Redshift cluster has finished applying any HSM+-- settings changes specified in a modify cluster command. Values: active,+-- applying.+cHsmStatus :: Lens' Cluster (Maybe HsmStatus)+cHsmStatus = lens _cHsmStatus (\s a -> s { _cHsmStatus = a })++-- | The AWS Key Management Service (KMS) key ID of the encryption key used to+-- encrypt data in the cluster.+cKmsKeyId :: Lens' Cluster (Maybe Text)+cKmsKeyId = lens _cKmsKeyId (\s a -> s { _cKmsKeyId = a })++-- | The master user name for the cluster. This name is used to connect to the+-- database that is specified in DBName.+cMasterUsername :: Lens' Cluster (Maybe Text)+cMasterUsername = lens _cMasterUsername (\s a -> s { _cMasterUsername = a })++-- | The status of a modify operation, if any, initiated for the cluster.+cModifyStatus :: Lens' Cluster (Maybe Text)+cModifyStatus = lens _cModifyStatus (\s a -> s { _cModifyStatus = a })++-- | The node type for the nodes in the cluster.+cNodeType :: Lens' Cluster (Maybe Text)+cNodeType = lens _cNodeType (\s a -> s { _cNodeType = a })++-- | The number of compute nodes in the cluster.+cNumberOfNodes :: Lens' Cluster (Maybe Int)+cNumberOfNodes = lens _cNumberOfNodes (\s a -> s { _cNumberOfNodes = a })++-- | If present, changes to the cluster are pending. Specific pending changes+-- are identified by subelements.+cPendingModifiedValues :: Lens' Cluster (Maybe PendingModifiedValues)+cPendingModifiedValues =+    lens _cPendingModifiedValues (\s a -> s { _cPendingModifiedValues = a })++-- | The weekly time range (in UTC) during which system maintenance can occur.+cPreferredMaintenanceWindow :: Lens' Cluster (Maybe Text)+cPreferredMaintenanceWindow =+    lens _cPreferredMaintenanceWindow+        (\s a -> s { _cPreferredMaintenanceWindow = a })++-- | If true, the cluster can be accessed from a public network.+cPubliclyAccessible :: Lens' Cluster (Maybe Bool)+cPubliclyAccessible =+    lens _cPubliclyAccessible (\s a -> s { _cPubliclyAccessible = a })++-- | Describes the status of a cluster restore action. Returns null if the+-- cluster was not created by restoring a snapshot.+cRestoreStatus :: Lens' Cluster (Maybe RestoreStatus)+cRestoreStatus = lens _cRestoreStatus (\s a -> s { _cRestoreStatus = a })++-- | The list of tags for the cluster.+cTags :: Lens' Cluster [Tag]+cTags = lens _cTags (\s a -> s { _cTags = a }) . _List++-- | The identifier of the VPC the cluster is in, if the cluster is in a VPC.+cVpcId :: Lens' Cluster (Maybe Text)+cVpcId = lens _cVpcId (\s a -> s { _cVpcId = a })++-- | A list of Virtual Private Cloud (VPC) security groups that are associated+-- with the cluster. This parameter is returned only if the cluster is in a+-- VPC.+cVpcSecurityGroups :: Lens' Cluster [VpcSecurityGroupMembership]+cVpcSecurityGroups =+    lens _cVpcSecurityGroups (\s a -> s { _cVpcSecurityGroups = a })+        . _List++instance FromXML Cluster where+    parseXML x = Cluster+        <$> x .@? "AllowVersionUpgrade"+        <*> x .@? "AutomatedSnapshotRetentionPeriod"+        <*> x .@? "AvailabilityZone"+        <*> x .@? "ClusterCreateTime"+        <*> x .@? "ClusterIdentifier"+        <*> x .@  "ClusterNodes"+        <*> x .@  "ClusterParameterGroups"+        <*> x .@? "ClusterPublicKey"+        <*> x .@? "ClusterRevisionNumber"+        <*> x .@  "ClusterSecurityGroups"+        <*> x .@? "ClusterSnapshotCopyStatus"+        <*> x .@? "ClusterStatus"+        <*> x .@? "ClusterSubnetGroupName"+        <*> x .@? "ClusterVersion"+        <*> x .@? "DBName"+        <*> x .@? "ElasticIpStatus"+        <*> x .@? "Encrypted"+        <*> x .@? "Endpoint"+        <*> x .@? "HsmStatus"+        <*> x .@? "KmsKeyId"+        <*> x .@? "MasterUsername"+        <*> x .@? "ModifyStatus"+        <*> x .@? "NodeType"+        <*> x .@? "NumberOfNodes"+        <*> x .@? "PendingModifiedValues"+        <*> x .@? "PreferredMaintenanceWindow"+        <*> x .@? "PubliclyAccessible"+        <*> x .@? "RestoreStatus"+        <*> x .@  "Tags"+        <*> x .@? "VpcId"+        <*> x .@  "VpcSecurityGroups"++instance ToQuery Cluster where+    toQuery Cluster{..} = mconcat+        [ "AllowVersionUpgrade"              =? _cAllowVersionUpgrade+        , "AutomatedSnapshotRetentionPeriod" =? _cAutomatedSnapshotRetentionPeriod+        , "AvailabilityZone"                 =? _cAvailabilityZone+        , "ClusterCreateTime"                =? _cClusterCreateTime+        , "ClusterIdentifier"                =? _cClusterIdentifier+        , "ClusterNodes"                     =? _cClusterNodes+        , "ClusterParameterGroups"           =? _cClusterParameterGroups+        , "ClusterPublicKey"                 =? _cClusterPublicKey+        , "ClusterRevisionNumber"            =? _cClusterRevisionNumber+        , "ClusterSecurityGroups"            =? _cClusterSecurityGroups+        , "ClusterSnapshotCopyStatus"        =? _cClusterSnapshotCopyStatus+        , "ClusterStatus"                    =? _cClusterStatus+        , "ClusterSubnetGroupName"           =? _cClusterSubnetGroupName+        , "ClusterVersion"                   =? _cClusterVersion+        , "DBName"                           =? _cDBName+        , "ElasticIpStatus"                  =? _cElasticIpStatus+        , "Encrypted"                        =? _cEncrypted+        , "Endpoint"                         =? _cEndpoint+        , "HsmStatus"                        =? _cHsmStatus+        , "KmsKeyId"                         =? _cKmsKeyId+        , "MasterUsername"                   =? _cMasterUsername+        , "ModifyStatus"                     =? _cModifyStatus+        , "NodeType"                         =? _cNodeType+        , "NumberOfNodes"                    =? _cNumberOfNodes+        , "PendingModifiedValues"            =? _cPendingModifiedValues+        , "PreferredMaintenanceWindow"       =? _cPreferredMaintenanceWindow+        , "PubliclyAccessible"               =? _cPubliclyAccessible+        , "RestoreStatus"                    =? _cRestoreStatus+        , "Tags"                             =? _cTags+        , "VpcId"                            =? _cVpcId+        , "VpcSecurityGroups"                =? _cVpcSecurityGroups+        ]++data ClusterNode = ClusterNode+    { _cnNodeRole         :: Maybe Text+    , _cnPrivateIPAddress :: Maybe Text+    , _cnPublicIPAddress  :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ClusterNode' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cnNodeRole' @::@ 'Maybe' 'Text'+--+-- * 'cnPrivateIPAddress' @::@ 'Maybe' 'Text'+--+-- * 'cnPublicIPAddress' @::@ 'Maybe' 'Text'+--+clusterNode :: ClusterNode+clusterNode = ClusterNode+    { _cnNodeRole         = Nothing+    , _cnPrivateIPAddress = Nothing+    , _cnPublicIPAddress  = Nothing+    }++-- | Whether the node is a leader node or a compute node.+cnNodeRole :: Lens' ClusterNode (Maybe Text)+cnNodeRole = lens _cnNodeRole (\s a -> s { _cnNodeRole = a })++-- | The private IP address of a node within a cluster.+cnPrivateIPAddress :: Lens' ClusterNode (Maybe Text)+cnPrivateIPAddress =+    lens _cnPrivateIPAddress (\s a -> s { _cnPrivateIPAddress = a })++-- | The public IP address of a node within a cluster.+cnPublicIPAddress :: Lens' ClusterNode (Maybe Text)+cnPublicIPAddress =+    lens _cnPublicIPAddress (\s a -> s { _cnPublicIPAddress = a })++instance FromXML ClusterNode where+    parseXML x = ClusterNode+        <$> x .@? "NodeRole"+        <*> x .@? "PrivateIPAddress"+        <*> x .@? "PublicIPAddress"++instance ToQuery ClusterNode where+    toQuery ClusterNode{..} = mconcat+        [ "NodeRole"         =? _cnNodeRole+        , "PrivateIPAddress" =? _cnPrivateIPAddress+        , "PublicIPAddress"  =? _cnPublicIPAddress+        ]++data EC2SecurityGroup = EC2SecurityGroup+    { _ecsgEC2SecurityGroupName    :: Maybe Text+    , _ecsgEC2SecurityGroupOwnerId :: Maybe Text+    , _ecsgStatus                  :: Maybe Text+    , _ecsgTags                    :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'EC2SecurityGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ecsgEC2SecurityGroupName' @::@ 'Maybe' 'Text'+--+-- * 'ecsgEC2SecurityGroupOwnerId' @::@ 'Maybe' 'Text'+--+-- * 'ecsgStatus' @::@ 'Maybe' 'Text'+--+-- * 'ecsgTags' @::@ ['Tag']+--+ec2SecurityGroup :: EC2SecurityGroup+ec2SecurityGroup = EC2SecurityGroup+    { _ecsgStatus                  = Nothing+    , _ecsgEC2SecurityGroupName    = Nothing+    , _ecsgEC2SecurityGroupOwnerId = Nothing+    , _ecsgTags                    = mempty+    }++-- | The name of the EC2 Security Group.+ecsgEC2SecurityGroupName :: Lens' EC2SecurityGroup (Maybe Text)+ecsgEC2SecurityGroupName =+    lens _ecsgEC2SecurityGroupName+        (\s a -> s { _ecsgEC2SecurityGroupName = a })++-- | The AWS ID of the owner of the EC2 security group specified in the+-- EC2SecurityGroupName field.+ecsgEC2SecurityGroupOwnerId :: Lens' EC2SecurityGroup (Maybe Text)+ecsgEC2SecurityGroupOwnerId =+    lens _ecsgEC2SecurityGroupOwnerId+        (\s a -> s { _ecsgEC2SecurityGroupOwnerId = a })++-- | The status of the EC2 security group.+ecsgStatus :: Lens' EC2SecurityGroup (Maybe Text)+ecsgStatus = lens _ecsgStatus (\s a -> s { _ecsgStatus = a })++-- | The list of tags for the EC2 security group.+ecsgTags :: Lens' EC2SecurityGroup [Tag]+ecsgTags = lens _ecsgTags (\s a -> s { _ecsgTags = a }) . _List++instance FromXML EC2SecurityGroup where+    parseXML x = EC2SecurityGroup+        <$> x .@? "EC2SecurityGroupName"+        <*> x .@? "EC2SecurityGroupOwnerId"+        <*> x .@? "Status"+        <*> x .@  "Tags"++instance ToQuery EC2SecurityGroup where+    toQuery EC2SecurityGroup{..} = mconcat+        [ "EC2SecurityGroupName"    =? _ecsgEC2SecurityGroupName+        , "EC2SecurityGroupOwnerId" =? _ecsgEC2SecurityGroupOwnerId+        , "Status"                  =? _ecsgStatus+        , "Tags"                    =? _ecsgTags+        ]++data OrderableClusterOption = OrderableClusterOption+    { _ocoAvailabilityZones :: List "AvailabilityZone" AvailabilityZone+    , _ocoClusterType       :: Maybe Text+    , _ocoClusterVersion    :: Maybe Text+    , _ocoNodeType          :: Maybe Text+    } deriving (Eq, Show)++-- | 'OrderableClusterOption' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ocoAvailabilityZones' @::@ ['AvailabilityZone']+--+-- * 'ocoClusterType' @::@ 'Maybe' 'Text'+--+-- * 'ocoClusterVersion' @::@ 'Maybe' 'Text'+--+-- * 'ocoNodeType' @::@ 'Maybe' 'Text'+--+orderableClusterOption :: OrderableClusterOption+orderableClusterOption = OrderableClusterOption+    { _ocoClusterVersion    = Nothing+    , _ocoClusterType       = Nothing+    , _ocoNodeType          = Nothing+    , _ocoAvailabilityZones = mempty+    }++-- | A list of availability zones for the orderable cluster.+ocoAvailabilityZones :: Lens' OrderableClusterOption [AvailabilityZone]+ocoAvailabilityZones =+    lens _ocoAvailabilityZones (\s a -> s { _ocoAvailabilityZones = a })+        . _List++-- | The cluster type, for example multi-node.+ocoClusterType :: Lens' OrderableClusterOption (Maybe Text)+ocoClusterType = lens _ocoClusterType (\s a -> s { _ocoClusterType = a })++-- | The version of the orderable cluster.+ocoClusterVersion :: Lens' OrderableClusterOption (Maybe Text)+ocoClusterVersion =+    lens _ocoClusterVersion (\s a -> s { _ocoClusterVersion = a })++-- | The node type for the orderable cluster.+ocoNodeType :: Lens' OrderableClusterOption (Maybe Text)+ocoNodeType = lens _ocoNodeType (\s a -> s { _ocoNodeType = a })++instance FromXML OrderableClusterOption where+    parseXML x = OrderableClusterOption+        <$> x .@  "AvailabilityZones"+        <*> x .@? "ClusterType"+        <*> x .@? "ClusterVersion"+        <*> x .@? "NodeType"++instance ToQuery OrderableClusterOption where+    toQuery OrderableClusterOption{..} = mconcat+        [ "AvailabilityZones" =? _ocoAvailabilityZones+        , "ClusterType"       =? _ocoClusterType+        , "ClusterVersion"    =? _ocoClusterVersion+        , "NodeType"          =? _ocoNodeType+        ]++data SourceType+    = STCluster               -- ^ cluster+    | STClusterParameterGroup -- ^ cluster-parameter-group+    | STClusterSecurityGroup  -- ^ cluster-security-group+    | STClusterSnapshot       -- ^ cluster-snapshot+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable SourceType++instance FromText SourceType where+    parser = match "cluster"                 STCluster+         <|> match "cluster-parameter-group" STClusterParameterGroup+         <|> match "cluster-security-group"  STClusterSecurityGroup+         <|> match "cluster-snapshot"        STClusterSnapshot++instance ToText SourceType where+    toText = \case+        STCluster               -> "cluster"+        STClusterParameterGroup -> "cluster-parameter-group"+        STClusterSecurityGroup  -> "cluster-security-group"+        STClusterSnapshot       -> "cluster-snapshot"++instance FromXML SourceType where+    parseXML = parseXMLText "SourceType"++instance ToQuery SourceType where+    toQuery = toQuery . toText++data ClusterParameterGroupStatus = ClusterParameterGroupStatus+    { _cpgsParameterApplyStatus :: Maybe Text+    , _cpgsParameterGroupName   :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ClusterParameterGroupStatus' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cpgsParameterApplyStatus' @::@ 'Maybe' 'Text'+--+-- * 'cpgsParameterGroupName' @::@ 'Maybe' 'Text'+--+clusterParameterGroupStatus :: ClusterParameterGroupStatus+clusterParameterGroupStatus = ClusterParameterGroupStatus+    { _cpgsParameterGroupName   = Nothing+    , _cpgsParameterApplyStatus = Nothing+    }++-- | The status of parameter updates.+cpgsParameterApplyStatus :: Lens' ClusterParameterGroupStatus (Maybe Text)+cpgsParameterApplyStatus =+    lens _cpgsParameterApplyStatus+        (\s a -> s { _cpgsParameterApplyStatus = a })++-- | The name of the cluster parameter group.+cpgsParameterGroupName :: Lens' ClusterParameterGroupStatus (Maybe Text)+cpgsParameterGroupName =+    lens _cpgsParameterGroupName (\s a -> s { _cpgsParameterGroupName = a })++instance FromXML ClusterParameterGroupStatus where+    parseXML x = ClusterParameterGroupStatus+        <$> x .@? "ParameterApplyStatus"+        <*> x .@? "ParameterGroupName"++instance ToQuery ClusterParameterGroupStatus where+    toQuery ClusterParameterGroupStatus{..} = mconcat+        [ "ParameterApplyStatus" =? _cpgsParameterApplyStatus+        , "ParameterGroupName"   =? _cpgsParameterGroupName+        ]++data Subnet = Subnet+    { _sSubnetAvailabilityZone :: Maybe AvailabilityZone+    , _sSubnetIdentifier       :: Maybe Text+    , _sSubnetStatus           :: Maybe Text+    } deriving (Eq, Show)++-- | 'Subnet' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sSubnetAvailabilityZone' @::@ 'Maybe' 'AvailabilityZone'+--+-- * 'sSubnetIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'sSubnetStatus' @::@ 'Maybe' 'Text'+--+subnet :: Subnet+subnet = Subnet+    { _sSubnetIdentifier       = Nothing+    , _sSubnetAvailabilityZone = Nothing+    , _sSubnetStatus           = Nothing+    }++sSubnetAvailabilityZone :: Lens' Subnet (Maybe AvailabilityZone)+sSubnetAvailabilityZone =+    lens _sSubnetAvailabilityZone (\s a -> s { _sSubnetAvailabilityZone = a })++-- | The identifier of the subnet.+sSubnetIdentifier :: Lens' Subnet (Maybe Text)+sSubnetIdentifier =+    lens _sSubnetIdentifier (\s a -> s { _sSubnetIdentifier = a })++-- | The status of the subnet.+sSubnetStatus :: Lens' Subnet (Maybe Text)+sSubnetStatus = lens _sSubnetStatus (\s a -> s { _sSubnetStatus = a })++instance FromXML Subnet where+    parseXML x = Subnet+        <$> x .@? "SubnetAvailabilityZone"+        <*> x .@? "SubnetIdentifier"+        <*> x .@? "SubnetStatus"++instance ToQuery Subnet where+    toQuery Subnet{..} = mconcat+        [ "SubnetAvailabilityZone" =? _sSubnetAvailabilityZone+        , "SubnetIdentifier"       =? _sSubnetIdentifier+        , "SubnetStatus"           =? _sSubnetStatus+        ]++data ClusterSecurityGroup = ClusterSecurityGroup+    { _csgClusterSecurityGroupName :: Maybe Text+    , _csgDescription              :: Maybe Text+    , _csgEC2SecurityGroups        :: List "EC2SecurityGroup" EC2SecurityGroup+    , _csgIPRanges                 :: List "IPRange" IPRange+    , _csgTags                     :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'ClusterSecurityGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csgClusterSecurityGroupName' @::@ 'Maybe' 'Text'+--+-- * 'csgDescription' @::@ 'Maybe' 'Text'+--+-- * 'csgEC2SecurityGroups' @::@ ['EC2SecurityGroup']+--+-- * 'csgIPRanges' @::@ ['IPRange']+--+-- * 'csgTags' @::@ ['Tag']+--+clusterSecurityGroup :: ClusterSecurityGroup+clusterSecurityGroup = ClusterSecurityGroup+    { _csgClusterSecurityGroupName = Nothing+    , _csgDescription              = Nothing+    , _csgEC2SecurityGroups        = mempty+    , _csgIPRanges                 = mempty+    , _csgTags                     = mempty+    }++-- | The name of the cluster security group to which the operation was+-- applied.+csgClusterSecurityGroupName :: Lens' ClusterSecurityGroup (Maybe Text)+csgClusterSecurityGroupName =+    lens _csgClusterSecurityGroupName+        (\s a -> s { _csgClusterSecurityGroupName = a })++-- | A description of the security group.+csgDescription :: Lens' ClusterSecurityGroup (Maybe Text)+csgDescription = lens _csgDescription (\s a -> s { _csgDescription = a })++-- | A list of EC2 security groups that are permitted to access clusters+-- associated with this cluster security group.+csgEC2SecurityGroups :: Lens' ClusterSecurityGroup [EC2SecurityGroup]+csgEC2SecurityGroups =+    lens _csgEC2SecurityGroups (\s a -> s { _csgEC2SecurityGroups = a })+        . _List++-- | A list of IP ranges (CIDR blocks) that are permitted to access clusters+-- associated with this cluster security group.+csgIPRanges :: Lens' ClusterSecurityGroup [IPRange]+csgIPRanges = lens _csgIPRanges (\s a -> s { _csgIPRanges = a }) . _List++-- | The list of tags for the cluster security group.+csgTags :: Lens' ClusterSecurityGroup [Tag]+csgTags = lens _csgTags (\s a -> s { _csgTags = a }) . _List++instance FromXML ClusterSecurityGroup where+    parseXML x = ClusterSecurityGroup+        <$> x .@? "ClusterSecurityGroupName"+        <*> x .@? "Description"+        <*> x .@  "EC2SecurityGroups"+        <*> x .@  "IPRanges"+        <*> x .@  "Tags"++instance ToQuery ClusterSecurityGroup where+    toQuery ClusterSecurityGroup{..} = mconcat+        [ "ClusterSecurityGroupName" =? _csgClusterSecurityGroupName+        , "Description"              =? _csgDescription+        , "EC2SecurityGroups"        =? _csgEC2SecurityGroups+        , "IPRanges"                 =? _csgIPRanges+        , "Tags"                     =? _csgTags+        ]++data DefaultClusterParameters = DefaultClusterParameters+    { _dcpMarker               :: Maybe Text+    , _dcpParameterGroupFamily :: Maybe Text+    , _dcpParameters           :: List "Parameter" Parameter+    } deriving (Eq, Show)++-- | 'DefaultClusterParameters' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcpMarker' @::@ 'Maybe' 'Text'+--+-- * 'dcpParameterGroupFamily' @::@ 'Maybe' 'Text'+--+-- * 'dcpParameters' @::@ ['Parameter']+--+defaultClusterParameters :: DefaultClusterParameters+defaultClusterParameters = DefaultClusterParameters+    { _dcpParameterGroupFamily = Nothing+    , _dcpMarker               = Nothing+    , _dcpParameters           = mempty+    }++-- | A value that indicates the starting point for the next set of response+-- records in a subsequent request. If a value is returned in a response,+-- you can retrieve the next set of records by providing this returned+-- marker value in the Marker parameter and retrying the command. If the+-- Marker field is empty, all response records have been retrieved for the+-- request.+dcpMarker :: Lens' DefaultClusterParameters (Maybe Text)+dcpMarker = lens _dcpMarker (\s a -> s { _dcpMarker = a })++-- | The name of the cluster parameter group family to which the engine+-- default parameters apply.+dcpParameterGroupFamily :: Lens' DefaultClusterParameters (Maybe Text)+dcpParameterGroupFamily =+    lens _dcpParameterGroupFamily (\s a -> s { _dcpParameterGroupFamily = a })++-- | The list of cluster default parameters.+dcpParameters :: Lens' DefaultClusterParameters [Parameter]+dcpParameters = lens _dcpParameters (\s a -> s { _dcpParameters = a }) . _List++instance FromXML DefaultClusterParameters where+    parseXML x = DefaultClusterParameters+        <$> x .@? "Marker"+        <*> x .@? "ParameterGroupFamily"+        <*> x .@  "Parameters"++instance ToQuery DefaultClusterParameters where+    toQuery DefaultClusterParameters{..} = mconcat+        [ "Marker"               =? _dcpMarker+        , "ParameterGroupFamily" =? _dcpParameterGroupFamily+        , "Parameters"           =? _dcpParameters+        ]++data ClusterSubnetGroup = ClusterSubnetGroup+    { _csg1ClusterSubnetGroupName :: Maybe Text+    , _csg1Description            :: Maybe Text+    , _csg1SubnetGroupStatus      :: Maybe Text+    , _csg1Subnets                :: List "Subnet" Subnet+    , _csg1Tags                   :: List "Tag" Tag+    , _csg1VpcId                  :: Maybe Text+    } deriving (Eq, Show)++-- | 'ClusterSubnetGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csg1ClusterSubnetGroupName' @::@ 'Maybe' 'Text'+--+-- * 'csg1Description' @::@ 'Maybe' 'Text'+--+-- * 'csg1SubnetGroupStatus' @::@ 'Maybe' 'Text'+--+-- * 'csg1Subnets' @::@ ['Subnet']+--+-- * 'csg1Tags' @::@ ['Tag']+--+-- * 'csg1VpcId' @::@ 'Maybe' 'Text'+--+clusterSubnetGroup :: ClusterSubnetGroup+clusterSubnetGroup = ClusterSubnetGroup+    { _csg1ClusterSubnetGroupName = Nothing+    , _csg1Description            = Nothing+    , _csg1VpcId                  = Nothing+    , _csg1SubnetGroupStatus      = Nothing+    , _csg1Subnets                = mempty+    , _csg1Tags                   = mempty+    }++-- | The name of the cluster subnet group.+csg1ClusterSubnetGroupName :: Lens' ClusterSubnetGroup (Maybe Text)+csg1ClusterSubnetGroupName =+    lens _csg1ClusterSubnetGroupName+        (\s a -> s { _csg1ClusterSubnetGroupName = a })++-- | The description of the cluster subnet group.+csg1Description :: Lens' ClusterSubnetGroup (Maybe Text)+csg1Description = lens _csg1Description (\s a -> s { _csg1Description = a })++-- | The status of the cluster subnet group. Possible values are Complete,+-- Incomplete and Invalid.+csg1SubnetGroupStatus :: Lens' ClusterSubnetGroup (Maybe Text)+csg1SubnetGroupStatus =+    lens _csg1SubnetGroupStatus (\s a -> s { _csg1SubnetGroupStatus = a })++-- | A list of the VPC Subnet elements.+csg1Subnets :: Lens' ClusterSubnetGroup [Subnet]+csg1Subnets = lens _csg1Subnets (\s a -> s { _csg1Subnets = a }) . _List++-- | The list of tags for the cluster subnet group.+csg1Tags :: Lens' ClusterSubnetGroup [Tag]+csg1Tags = lens _csg1Tags (\s a -> s { _csg1Tags = a }) . _List++-- | The VPC ID of the cluster subnet group.+csg1VpcId :: Lens' ClusterSubnetGroup (Maybe Text)+csg1VpcId = lens _csg1VpcId (\s a -> s { _csg1VpcId = a })++instance FromXML ClusterSubnetGroup where+    parseXML x = ClusterSubnetGroup+        <$> x .@? "ClusterSubnetGroupName"+        <*> x .@? "Description"+        <*> x .@? "SubnetGroupStatus"+        <*> x .@  "Subnets"+        <*> x .@  "Tags"+        <*> x .@? "VpcId"++instance ToQuery ClusterSubnetGroup where+    toQuery ClusterSubnetGroup{..} = mconcat+        [ "ClusterSubnetGroupName" =? _csg1ClusterSubnetGroupName+        , "Description"            =? _csg1Description+        , "SubnetGroupStatus"      =? _csg1SubnetGroupStatus+        , "Subnets"                =? _csg1Subnets+        , "Tags"                   =? _csg1Tags+        , "VpcId"                  =? _csg1VpcId+        ]++data EventInfoMap = EventInfoMap+    { _eimEventCategories  :: List "EventCategory" Text+    , _eimEventDescription :: Maybe Text+    , _eimEventId          :: Maybe Text+    , _eimSeverity         :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'EventInfoMap' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'eimEventCategories' @::@ ['Text']+--+-- * 'eimEventDescription' @::@ 'Maybe' 'Text'+--+-- * 'eimEventId' @::@ 'Maybe' 'Text'+--+-- * 'eimSeverity' @::@ 'Maybe' 'Text'+--+eventInfoMap :: EventInfoMap+eventInfoMap = EventInfoMap+    { _eimEventId          = Nothing+    , _eimEventCategories  = mempty+    , _eimEventDescription = Nothing+    , _eimSeverity         = Nothing+    }++-- | The category of an Amazon Redshift event.+eimEventCategories :: Lens' EventInfoMap [Text]+eimEventCategories =+    lens _eimEventCategories (\s a -> s { _eimEventCategories = a })+        . _List++-- | The description of an Amazon Redshift event.+eimEventDescription :: Lens' EventInfoMap (Maybe Text)+eimEventDescription =+    lens _eimEventDescription (\s a -> s { _eimEventDescription = a })++-- | The identifier of an Amazon Redshift event.+eimEventId :: Lens' EventInfoMap (Maybe Text)+eimEventId = lens _eimEventId (\s a -> s { _eimEventId = a })++-- | The severity of the event. Values: ERROR, INFO.+eimSeverity :: Lens' EventInfoMap (Maybe Text)+eimSeverity = lens _eimSeverity (\s a -> s { _eimSeverity = a })++instance FromXML EventInfoMap where+    parseXML x = EventInfoMap+        <$> x .@  "EventCategories"+        <*> x .@? "EventDescription"+        <*> x .@? "EventId"+        <*> x .@? "Severity"++instance ToQuery EventInfoMap where+    toQuery EventInfoMap{..} = mconcat+        [ "EventCategories"  =? _eimEventCategories+        , "EventDescription" =? _eimEventDescription+        , "EventId"          =? _eimEventId+        , "Severity"         =? _eimSeverity+        ]++data ClusterSecurityGroupMembership = ClusterSecurityGroupMembership+    { _csgmClusterSecurityGroupName :: Maybe Text+    , _csgmStatus                   :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ClusterSecurityGroupMembership' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csgmClusterSecurityGroupName' @::@ 'Maybe' 'Text'+--+-- * 'csgmStatus' @::@ 'Maybe' 'Text'+--+clusterSecurityGroupMembership :: ClusterSecurityGroupMembership+clusterSecurityGroupMembership = ClusterSecurityGroupMembership+    { _csgmClusterSecurityGroupName = Nothing+    , _csgmStatus                   = Nothing+    }++-- | The name of the cluster security group.+csgmClusterSecurityGroupName :: Lens' ClusterSecurityGroupMembership (Maybe Text)+csgmClusterSecurityGroupName =+    lens _csgmClusterSecurityGroupName+        (\s a -> s { _csgmClusterSecurityGroupName = a })++-- | The status of the cluster security group.+csgmStatus :: Lens' ClusterSecurityGroupMembership (Maybe Text)+csgmStatus = lens _csgmStatus (\s a -> s { _csgmStatus = a })++instance FromXML ClusterSecurityGroupMembership where+    parseXML x = ClusterSecurityGroupMembership+        <$> x .@? "ClusterSecurityGroupName"+        <*> x .@? "Status"++instance ToQuery ClusterSecurityGroupMembership where+    toQuery ClusterSecurityGroupMembership{..} = mconcat+        [ "ClusterSecurityGroupName" =? _csgmClusterSecurityGroupName+        , "Status"                   =? _csgmStatus+        ]++data ReservedNodeOffering = ReservedNodeOffering+    { _rnoCurrencyCode           :: Maybe Text+    , _rnoDuration               :: Maybe Int+    , _rnoFixedPrice             :: Maybe Double+    , _rnoNodeType               :: Maybe Text+    , _rnoOfferingType           :: Maybe Text+    , _rnoRecurringCharges       :: List "RecurringCharge" RecurringCharge+    , _rnoReservedNodeOfferingId :: Maybe Text+    , _rnoUsagePrice             :: Maybe Double+    } deriving (Eq, Show)++-- | 'ReservedNodeOffering' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rnoCurrencyCode' @::@ 'Maybe' 'Text'+--+-- * 'rnoDuration' @::@ 'Maybe' 'Int'+--+-- * 'rnoFixedPrice' @::@ 'Maybe' 'Double'+--+-- * 'rnoNodeType' @::@ 'Maybe' 'Text'+--+-- * 'rnoOfferingType' @::@ 'Maybe' 'Text'+--+-- * 'rnoRecurringCharges' @::@ ['RecurringCharge']+--+-- * 'rnoReservedNodeOfferingId' @::@ 'Maybe' 'Text'+--+-- * 'rnoUsagePrice' @::@ 'Maybe' 'Double'+--+reservedNodeOffering :: ReservedNodeOffering+reservedNodeOffering = ReservedNodeOffering+    { _rnoReservedNodeOfferingId = Nothing+    , _rnoNodeType               = Nothing+    , _rnoDuration               = Nothing+    , _rnoFixedPrice             = Nothing+    , _rnoUsagePrice             = Nothing+    , _rnoCurrencyCode           = Nothing+    , _rnoOfferingType           = Nothing+    , _rnoRecurringCharges       = mempty+    }++-- | The currency code for the compute nodes offering.+rnoCurrencyCode :: Lens' ReservedNodeOffering (Maybe Text)+rnoCurrencyCode = lens _rnoCurrencyCode (\s a -> s { _rnoCurrencyCode = a })++-- | The duration, in seconds, for which the offering will reserve the node.+rnoDuration :: Lens' ReservedNodeOffering (Maybe Int)+rnoDuration = lens _rnoDuration (\s a -> s { _rnoDuration = a })++-- | The upfront fixed charge you will pay to purchase the specific reserved+-- node offering.+rnoFixedPrice :: Lens' ReservedNodeOffering (Maybe Double)+rnoFixedPrice = lens _rnoFixedPrice (\s a -> s { _rnoFixedPrice = a })++-- | The node type offered by the reserved node offering.+rnoNodeType :: Lens' ReservedNodeOffering (Maybe Text)+rnoNodeType = lens _rnoNodeType (\s a -> s { _rnoNodeType = a })++-- | The anticipated utilization of the reserved node, as defined in the+-- reserved node offering.+rnoOfferingType :: Lens' ReservedNodeOffering (Maybe Text)+rnoOfferingType = lens _rnoOfferingType (\s a -> s { _rnoOfferingType = a })++-- | The charge to your account regardless of whether you are creating any+-- clusters using the node offering. Recurring charges are only in effect+-- for heavy-utilization reserved nodes.+rnoRecurringCharges :: Lens' ReservedNodeOffering [RecurringCharge]+rnoRecurringCharges =+    lens _rnoRecurringCharges (\s a -> s { _rnoRecurringCharges = a })+        . _List++-- | The offering identifier.+rnoReservedNodeOfferingId :: Lens' ReservedNodeOffering (Maybe Text)+rnoReservedNodeOfferingId =+    lens _rnoReservedNodeOfferingId+        (\s a -> s { _rnoReservedNodeOfferingId = a })++-- | The rate you are charged for each hour the cluster that is using the+-- offering is running.+rnoUsagePrice :: Lens' ReservedNodeOffering (Maybe Double)+rnoUsagePrice = lens _rnoUsagePrice (\s a -> s { _rnoUsagePrice = a })++instance FromXML ReservedNodeOffering where+    parseXML x = ReservedNodeOffering+        <$> x .@? "CurrencyCode"+        <*> x .@? "Duration"+        <*> x .@? "FixedPrice"+        <*> x .@? "NodeType"+        <*> x .@? "OfferingType"+        <*> x .@  "RecurringCharges"+        <*> x .@? "ReservedNodeOfferingId"+        <*> x .@? "UsagePrice"++instance ToQuery ReservedNodeOffering where+    toQuery ReservedNodeOffering{..} = mconcat+        [ "CurrencyCode"           =? _rnoCurrencyCode+        , "Duration"               =? _rnoDuration+        , "FixedPrice"             =? _rnoFixedPrice+        , "NodeType"               =? _rnoNodeType+        , "OfferingType"           =? _rnoOfferingType+        , "RecurringCharges"       =? _rnoRecurringCharges+        , "ReservedNodeOfferingId" =? _rnoReservedNodeOfferingId+        , "UsagePrice"             =? _rnoUsagePrice+        ]++data ReservedNode = ReservedNode+    { _rnCurrencyCode           :: Maybe Text+    , _rnDuration               :: Maybe Int+    , _rnFixedPrice             :: Maybe Double+    , _rnNodeCount              :: Maybe Int+    , _rnNodeType               :: Maybe Text+    , _rnOfferingType           :: Maybe Text+    , _rnRecurringCharges       :: List "RecurringCharge" RecurringCharge+    , _rnReservedNodeId         :: Maybe Text+    , _rnReservedNodeOfferingId :: Maybe Text+    , _rnStartTime              :: Maybe RFC822+    , _rnState                  :: Maybe Text+    , _rnUsagePrice             :: Maybe Double+    } deriving (Eq, Show)++-- | 'ReservedNode' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rnCurrencyCode' @::@ 'Maybe' 'Text'+--+-- * 'rnDuration' @::@ 'Maybe' 'Int'+--+-- * 'rnFixedPrice' @::@ 'Maybe' 'Double'+--+-- * 'rnNodeCount' @::@ 'Maybe' 'Int'+--+-- * 'rnNodeType' @::@ 'Maybe' 'Text'+--+-- * 'rnOfferingType' @::@ 'Maybe' 'Text'+--+-- * 'rnRecurringCharges' @::@ ['RecurringCharge']+--+-- * 'rnReservedNodeId' @::@ 'Maybe' 'Text'+--+-- * 'rnReservedNodeOfferingId' @::@ 'Maybe' 'Text'+--+-- * 'rnStartTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'rnState' @::@ 'Maybe' 'Text'+--+-- * 'rnUsagePrice' @::@ 'Maybe' 'Double'+--+reservedNode :: ReservedNode+reservedNode = ReservedNode+    { _rnReservedNodeId         = Nothing+    , _rnReservedNodeOfferingId = Nothing+    , _rnNodeType               = Nothing+    , _rnStartTime              = Nothing+    , _rnDuration               = Nothing+    , _rnFixedPrice             = Nothing+    , _rnUsagePrice             = Nothing+    , _rnCurrencyCode           = Nothing+    , _rnNodeCount              = Nothing+    , _rnState                  = Nothing+    , _rnOfferingType           = Nothing+    , _rnRecurringCharges       = mempty+    }++-- | The currency code for the reserved cluster.+rnCurrencyCode :: Lens' ReservedNode (Maybe Text)+rnCurrencyCode = lens _rnCurrencyCode (\s a -> s { _rnCurrencyCode = a })++-- | The duration of the node reservation in seconds.+rnDuration :: Lens' ReservedNode (Maybe Int)+rnDuration = lens _rnDuration (\s a -> s { _rnDuration = a })++-- | The fixed cost Amazon Redshift charged you for this reserved node.+rnFixedPrice :: Lens' ReservedNode (Maybe Double)+rnFixedPrice = lens _rnFixedPrice (\s a -> s { _rnFixedPrice = a })++-- | The number of reserved compute nodes.+rnNodeCount :: Lens' ReservedNode (Maybe Int)+rnNodeCount = lens _rnNodeCount (\s a -> s { _rnNodeCount = a })++-- | The node type of the reserved node.+rnNodeType :: Lens' ReservedNode (Maybe Text)+rnNodeType = lens _rnNodeType (\s a -> s { _rnNodeType = a })++-- | The anticipated utilization of the reserved node, as defined in the+-- reserved node offering.+rnOfferingType :: Lens' ReservedNode (Maybe Text)+rnOfferingType = lens _rnOfferingType (\s a -> s { _rnOfferingType = a })++-- | The recurring charges for the reserved node.+rnRecurringCharges :: Lens' ReservedNode [RecurringCharge]+rnRecurringCharges =+    lens _rnRecurringCharges (\s a -> s { _rnRecurringCharges = a })+        . _List++-- | The unique identifier for the reservation.+rnReservedNodeId :: Lens' ReservedNode (Maybe Text)+rnReservedNodeId = lens _rnReservedNodeId (\s a -> s { _rnReservedNodeId = a })++-- | The identifier for the reserved node offering.+rnReservedNodeOfferingId :: Lens' ReservedNode (Maybe Text)+rnReservedNodeOfferingId =+    lens _rnReservedNodeOfferingId+        (\s a -> s { _rnReservedNodeOfferingId = a })++-- | The time the reservation started. You purchase a reserved node offering+-- for a duration. This is the start time of that duration.+rnStartTime :: Lens' ReservedNode (Maybe UTCTime)+rnStartTime = lens _rnStartTime (\s a -> s { _rnStartTime = a }) . mapping _Time++-- | The state of the reserved compute node. Possible Values:+-- pending-payment-This reserved node has recently been purchased, and the+-- sale has been approved, but payment has not yet been confirmed.+-- active-This reserved node is owned by the caller and is available for+-- use. payment-failed-Payment failed for the purchase attempt.+rnState :: Lens' ReservedNode (Maybe Text)+rnState = lens _rnState (\s a -> s { _rnState = a })++-- | The hourly rate Amazon Redshift charge you for this reserved node.+rnUsagePrice :: Lens' ReservedNode (Maybe Double)+rnUsagePrice = lens _rnUsagePrice (\s a -> s { _rnUsagePrice = a })++instance FromXML ReservedNode where+    parseXML x = ReservedNode+        <$> x .@? "CurrencyCode"+        <*> x .@? "Duration"+        <*> x .@? "FixedPrice"+        <*> x .@? "NodeCount"+        <*> x .@? "NodeType"+        <*> x .@? "OfferingType"+        <*> x .@  "RecurringCharges"+        <*> x .@? "ReservedNodeId"+        <*> x .@? "ReservedNodeOfferingId"+        <*> x .@? "StartTime"+        <*> x .@? "State"+        <*> x .@? "UsagePrice"++instance ToQuery ReservedNode where+    toQuery ReservedNode{..} = mconcat+        [ "CurrencyCode"           =? _rnCurrencyCode+        , "Duration"               =? _rnDuration+        , "FixedPrice"             =? _rnFixedPrice+        , "NodeCount"              =? _rnNodeCount+        , "NodeType"               =? _rnNodeType+        , "OfferingType"           =? _rnOfferingType+        , "RecurringCharges"       =? _rnRecurringCharges+        , "ReservedNodeId"         =? _rnReservedNodeId+        , "ReservedNodeOfferingId" =? _rnReservedNodeOfferingId+        , "StartTime"              =? _rnStartTime+        , "State"                  =? _rnState+        , "UsagePrice"             =? _rnUsagePrice+        ]++data LoggingStatus = LoggingStatus+    { _lsBucketName                 :: Maybe Text+    , _lsLastFailureMessage         :: Maybe Text+    , _lsLastFailureTime            :: Maybe RFC822+    , _lsLastSuccessfulDeliveryTime :: Maybe RFC822+    , _lsLoggingEnabled             :: Maybe Bool+    , _lsS3KeyPrefix                :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'LoggingStatus' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lsBucketName' @::@ 'Maybe' 'Text'+--+-- * 'lsLastFailureMessage' @::@ 'Maybe' 'Text'+--+-- * 'lsLastFailureTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'lsLastSuccessfulDeliveryTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'lsLoggingEnabled' @::@ 'Maybe' 'Bool'+--+-- * 'lsS3KeyPrefix' @::@ 'Maybe' 'Text'+--+loggingStatus :: LoggingStatus+loggingStatus = LoggingStatus+    { _lsLoggingEnabled             = Nothing+    , _lsBucketName                 = Nothing+    , _lsS3KeyPrefix                = Nothing+    , _lsLastSuccessfulDeliveryTime = Nothing+    , _lsLastFailureTime            = Nothing+    , _lsLastFailureMessage         = Nothing+    }++-- | The name of the S3 bucket where the log files are stored.+lsBucketName :: Lens' LoggingStatus (Maybe Text)+lsBucketName = lens _lsBucketName (\s a -> s { _lsBucketName = a })++-- | The message indicating that logs failed to be delivered.+lsLastFailureMessage :: Lens' LoggingStatus (Maybe Text)+lsLastFailureMessage =+    lens _lsLastFailureMessage (\s a -> s { _lsLastFailureMessage = a })++-- | The last time when logs failed to be delivered.+lsLastFailureTime :: Lens' LoggingStatus (Maybe UTCTime)+lsLastFailureTime =+    lens _lsLastFailureTime (\s a -> s { _lsLastFailureTime = a })+        . mapping _Time++-- | The last time when logs were delivered.+lsLastSuccessfulDeliveryTime :: Lens' LoggingStatus (Maybe UTCTime)+lsLastSuccessfulDeliveryTime =+    lens _lsLastSuccessfulDeliveryTime+        (\s a -> s { _lsLastSuccessfulDeliveryTime = a })+            . mapping _Time++-- | true if logging is on, false if logging is off.+lsLoggingEnabled :: Lens' LoggingStatus (Maybe Bool)+lsLoggingEnabled = lens _lsLoggingEnabled (\s a -> s { _lsLoggingEnabled = a })++-- | The prefix applied to the log file names.+lsS3KeyPrefix :: Lens' LoggingStatus (Maybe Text)+lsS3KeyPrefix = lens _lsS3KeyPrefix (\s a -> s { _lsS3KeyPrefix = a })++instance FromXML LoggingStatus where+    parseXML x = LoggingStatus+        <$> x .@? "BucketName"+        <*> x .@? "LastFailureMessage"+        <*> x .@? "LastFailureTime"+        <*> x .@? "LastSuccessfulDeliveryTime"+        <*> x .@? "LoggingEnabled"+        <*> x .@? "S3KeyPrefix"++instance ToQuery LoggingStatus where+    toQuery LoggingStatus{..} = mconcat+        [ "BucketName"                 =? _lsBucketName+        , "LastFailureMessage"         =? _lsLastFailureMessage+        , "LastFailureTime"            =? _lsLastFailureTime+        , "LastSuccessfulDeliveryTime" =? _lsLastSuccessfulDeliveryTime+        , "LoggingEnabled"             =? _lsLoggingEnabled+        , "S3KeyPrefix"                =? _lsS3KeyPrefix+        ]++newtype AccountWithRestoreAccess = AccountWithRestoreAccess+    { _awraAccountId :: Maybe Text+    } deriving (Eq, Ord, Show, Monoid)++-- | 'AccountWithRestoreAccess' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'awraAccountId' @::@ 'Maybe' 'Text'+--+accountWithRestoreAccess :: AccountWithRestoreAccess+accountWithRestoreAccess = AccountWithRestoreAccess+    { _awraAccountId = Nothing+    }++-- | The identifier of an AWS customer account authorized to restore a+-- snapshot.+awraAccountId :: Lens' AccountWithRestoreAccess (Maybe Text)+awraAccountId = lens _awraAccountId (\s a -> s { _awraAccountId = a })++instance FromXML AccountWithRestoreAccess where+    parseXML x = AccountWithRestoreAccess+        <$> x .@? "AccountId"++instance ToQuery AccountWithRestoreAccess where+    toQuery AccountWithRestoreAccess{..} = mconcat+        [ "AccountId" =? _awraAccountId+        ]++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 EventSubscription = EventSubscription+    { _esCustSubscriptionId       :: Maybe Text+    , _esCustomerAwsId            :: Maybe Text+    , _esEnabled                  :: Maybe Bool+    , _esEventCategoriesList      :: List "EventCategory" Text+    , _esSeverity                 :: Maybe Text+    , _esSnsTopicArn              :: Maybe Text+    , _esSourceIdsList            :: List "SourceId" Text+    , _esSourceType               :: Maybe Text+    , _esStatus                   :: Maybe Text+    , _esSubscriptionCreationTime :: Maybe RFC822+    , _esTags                     :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'EventSubscription' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'esCustSubscriptionId' @::@ 'Maybe' 'Text'+--+-- * 'esCustomerAwsId' @::@ 'Maybe' 'Text'+--+-- * 'esEnabled' @::@ 'Maybe' 'Bool'+--+-- * 'esEventCategoriesList' @::@ ['Text']+--+-- * 'esSeverity' @::@ 'Maybe' 'Text'+--+-- * 'esSnsTopicArn' @::@ 'Maybe' 'Text'+--+-- * 'esSourceIdsList' @::@ ['Text']+--+-- * 'esSourceType' @::@ 'Maybe' 'Text'+--+-- * 'esStatus' @::@ 'Maybe' 'Text'+--+-- * 'esSubscriptionCreationTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'esTags' @::@ ['Tag']+--+eventSubscription :: EventSubscription+eventSubscription = EventSubscription+    { _esCustomerAwsId            = Nothing+    , _esCustSubscriptionId       = Nothing+    , _esSnsTopicArn              = Nothing+    , _esStatus                   = Nothing+    , _esSubscriptionCreationTime = Nothing+    , _esSourceType               = Nothing+    , _esSourceIdsList            = mempty+    , _esEventCategoriesList      = mempty+    , _esSeverity                 = Nothing+    , _esEnabled                  = Nothing+    , _esTags                     = mempty+    }++-- | The name of the Amazon Redshift event notification subscription.+esCustSubscriptionId :: Lens' EventSubscription (Maybe Text)+esCustSubscriptionId =+    lens _esCustSubscriptionId (\s a -> s { _esCustSubscriptionId = a })++-- | The AWS customer account associated with the Amazon Redshift event+-- notification subscription.+esCustomerAwsId :: Lens' EventSubscription (Maybe Text)+esCustomerAwsId = lens _esCustomerAwsId (\s a -> s { _esCustomerAwsId = a })++-- | A Boolean value indicating whether the subscription is enabled. true+-- indicates the subscription is enabled.+esEnabled :: Lens' EventSubscription (Maybe Bool)+esEnabled = lens _esEnabled (\s a -> s { _esEnabled = a })++-- | The list of Amazon Redshift event categories specified in the event+-- notification subscription. Values: Configuration, Management, Monitoring,+-- Security.+esEventCategoriesList :: Lens' EventSubscription [Text]+esEventCategoriesList =+    lens _esEventCategoriesList (\s a -> s { _esEventCategoriesList = a })+        . _List++-- | The event severity specified in the Amazon Redshift event notification+-- subscription. Values: ERROR, INFO.+esSeverity :: Lens' EventSubscription (Maybe Text)+esSeverity = lens _esSeverity (\s a -> s { _esSeverity = a })++-- | The Amazon Resource Name (ARN) of the Amazon SNS topic used by the event+-- notification subscription.+esSnsTopicArn :: Lens' EventSubscription (Maybe Text)+esSnsTopicArn = lens _esSnsTopicArn (\s a -> s { _esSnsTopicArn = a })++-- | A list of the sources that publish events to the Amazon Redshift event+-- notification subscription.+esSourceIdsList :: Lens' EventSubscription [Text]+esSourceIdsList = lens _esSourceIdsList (\s a -> s { _esSourceIdsList = a }) . _List++-- | The source type of the events returned the Amazon Redshift event+-- notification, such as cluster, or cluster-snapshot.+esSourceType :: Lens' EventSubscription (Maybe Text)+esSourceType = lens _esSourceType (\s a -> s { _esSourceType = a })++-- | The status of the Amazon Redshift event notification subscription.+-- Constraints: Can be one of the following: active | no-permission |+-- topic-not-exist The status "no-permission" indicates that Amazon Redshift+-- no longer has permission to post to the Amazon SNS topic. The status+-- "topic-not-exist" indicates that the topic was deleted after the+-- subscription was created.+esStatus :: Lens' EventSubscription (Maybe Text)+esStatus = lens _esStatus (\s a -> s { _esStatus = a })++-- | The date and time the Amazon Redshift event notification subscription was+-- created.+esSubscriptionCreationTime :: Lens' EventSubscription (Maybe UTCTime)+esSubscriptionCreationTime =+    lens _esSubscriptionCreationTime+        (\s a -> s { _esSubscriptionCreationTime = a })+            . mapping _Time++-- | The list of tags for the event subscription.+esTags :: Lens' EventSubscription [Tag]+esTags = lens _esTags (\s a -> s { _esTags = a }) . _List++instance FromXML EventSubscription where+    parseXML x = EventSubscription+        <$> x .@? "CustSubscriptionId"+        <*> x .@? "CustomerAwsId"+        <*> x .@? "Enabled"+        <*> x .@  "EventCategoriesList"+        <*> x .@? "Severity"+        <*> x .@? "SnsTopicArn"+        <*> x .@  "SourceIdsList"+        <*> x .@? "SourceType"+        <*> x .@? "Status"+        <*> x .@? "SubscriptionCreationTime"+        <*> x .@  "Tags"++instance ToQuery EventSubscription where+    toQuery EventSubscription{..} = mconcat+        [ "CustSubscriptionId"       =? _esCustSubscriptionId+        , "CustomerAwsId"            =? _esCustomerAwsId+        , "Enabled"                  =? _esEnabled+        , "EventCategoriesList"      =? _esEventCategoriesList+        , "Severity"                 =? _esSeverity+        , "SnsTopicArn"              =? _esSnsTopicArn+        , "SourceIdsList"            =? _esSourceIdsList+        , "SourceType"               =? _esSourceType+        , "Status"                   =? _esStatus+        , "SubscriptionCreationTime" =? _esSubscriptionCreationTime+        , "Tags"                     =? _esTags+        ]++data HsmStatus = HsmStatus+    { _hsHsmClientCertificateIdentifier :: Maybe Text+    , _hsHsmConfigurationIdentifier     :: Maybe Text+    , _hsStatus                         :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'HsmStatus' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'hsHsmClientCertificateIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'hsHsmConfigurationIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'hsStatus' @::@ 'Maybe' 'Text'+--+hsmStatus :: HsmStatus+hsmStatus = HsmStatus+    { _hsHsmClientCertificateIdentifier = Nothing+    , _hsHsmConfigurationIdentifier     = Nothing+    , _hsStatus                         = Nothing+    }++-- | Specifies the name of the HSM client certificate the Amazon Redshift+-- cluster uses to retrieve the data encryption keys stored in an HSM.+hsHsmClientCertificateIdentifier :: Lens' HsmStatus (Maybe Text)+hsHsmClientCertificateIdentifier =+    lens _hsHsmClientCertificateIdentifier+        (\s a -> s { _hsHsmClientCertificateIdentifier = a })++-- | Specifies the name of the HSM configuration that contains the information+-- the Amazon Redshift cluster can use to retrieve and store keys in an HSM.+hsHsmConfigurationIdentifier :: Lens' HsmStatus (Maybe Text)+hsHsmConfigurationIdentifier =+    lens _hsHsmConfigurationIdentifier+        (\s a -> s { _hsHsmConfigurationIdentifier = a })++-- | Reports whether the Amazon Redshift cluster has finished applying any HSM+-- settings changes specified in a modify cluster command. Values: active,+-- applying.+hsStatus :: Lens' HsmStatus (Maybe Text)+hsStatus = lens _hsStatus (\s a -> s { _hsStatus = a })++instance FromXML HsmStatus where+    parseXML x = HsmStatus+        <$> x .@? "HsmClientCertificateIdentifier"+        <*> x .@? "HsmConfigurationIdentifier"+        <*> x .@? "Status"++instance ToQuery HsmStatus where+    toQuery HsmStatus{..} = mconcat+        [ "HsmClientCertificateIdentifier" =? _hsHsmClientCertificateIdentifier+        , "HsmConfigurationIdentifier"     =? _hsHsmConfigurationIdentifier+        , "Status"                         =? _hsStatus+        ]++data ClusterParameterGroupNameMessage = ClusterParameterGroupNameMessage+    { _cpgnmParameterGroupName   :: Maybe Text+    , _cpgnmParameterGroupStatus :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ClusterParameterGroupNameMessage' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cpgnmParameterGroupName' @::@ 'Maybe' 'Text'+--+-- * 'cpgnmParameterGroupStatus' @::@ 'Maybe' 'Text'+--+clusterParameterGroupNameMessage :: ClusterParameterGroupNameMessage+clusterParameterGroupNameMessage = ClusterParameterGroupNameMessage+    { _cpgnmParameterGroupName   = Nothing+    , _cpgnmParameterGroupStatus = Nothing+    }++-- | The name of the cluster parameter group.+cpgnmParameterGroupName :: Lens' ClusterParameterGroupNameMessage (Maybe Text)+cpgnmParameterGroupName =+    lens _cpgnmParameterGroupName (\s a -> s { _cpgnmParameterGroupName = a })++-- | The status of the parameter group. For example, if you made a change to a+-- parameter group name-value pair, then the change could be pending a+-- reboot of an associated cluster.+cpgnmParameterGroupStatus :: Lens' ClusterParameterGroupNameMessage (Maybe Text)+cpgnmParameterGroupStatus =+    lens _cpgnmParameterGroupStatus+        (\s a -> s { _cpgnmParameterGroupStatus = a })++instance FromXML ClusterParameterGroupNameMessage where+    parseXML x = ClusterParameterGroupNameMessage+        <$> x .@? "ParameterGroupName"+        <*> x .@? "ParameterGroupStatus"++instance ToQuery ClusterParameterGroupNameMessage where+    toQuery ClusterParameterGroupNameMessage{..} = mconcat+        [ "ParameterGroupName"   =? _cpgnmParameterGroupName+        , "ParameterGroupStatus" =? _cpgnmParameterGroupStatus+        ]++data ElasticIpStatus = ElasticIpStatus+    { _eisElasticIp :: Maybe Text+    , _eisStatus    :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ElasticIpStatus' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'eisElasticIp' @::@ 'Maybe' 'Text'+--+-- * 'eisStatus' @::@ 'Maybe' 'Text'+--+elasticIpStatus :: ElasticIpStatus+elasticIpStatus = ElasticIpStatus+    { _eisElasticIp = Nothing+    , _eisStatus    = Nothing+    }++-- | The elastic IP (EIP) address for the cluster.+eisElasticIp :: Lens' ElasticIpStatus (Maybe Text)+eisElasticIp = lens _eisElasticIp (\s a -> s { _eisElasticIp = a })++-- | Describes the status of the elastic IP (EIP) address.+eisStatus :: Lens' ElasticIpStatus (Maybe Text)+eisStatus = lens _eisStatus (\s a -> s { _eisStatus = a })++instance FromXML ElasticIpStatus where+    parseXML x = ElasticIpStatus+        <$> x .@? "ElasticIp"+        <*> x .@? "Status"++instance ToQuery ElasticIpStatus where+    toQuery ElasticIpStatus{..} = mconcat+        [ "ElasticIp" =? _eisElasticIp+        , "Status"    =? _eisStatus+        ]++data ClusterVersion = ClusterVersion+    { _cvClusterParameterGroupFamily :: Maybe Text+    , _cvClusterVersion              :: Maybe Text+    , _cvDescription                 :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ClusterVersion' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cvClusterParameterGroupFamily' @::@ 'Maybe' 'Text'+--+-- * 'cvClusterVersion' @::@ 'Maybe' 'Text'+--+-- * 'cvDescription' @::@ 'Maybe' 'Text'+--+clusterVersion :: ClusterVersion+clusterVersion = ClusterVersion+    { _cvClusterVersion              = Nothing+    , _cvClusterParameterGroupFamily = Nothing+    , _cvDescription                 = Nothing+    }++-- | The name of the cluster parameter group family for the cluster.+cvClusterParameterGroupFamily :: Lens' ClusterVersion (Maybe Text)+cvClusterParameterGroupFamily =+    lens _cvClusterParameterGroupFamily+        (\s a -> s { _cvClusterParameterGroupFamily = a })++-- | The version number used by the cluster.+cvClusterVersion :: Lens' ClusterVersion (Maybe Text)+cvClusterVersion = lens _cvClusterVersion (\s a -> s { _cvClusterVersion = a })++-- | The description of the cluster version.+cvDescription :: Lens' ClusterVersion (Maybe Text)+cvDescription = lens _cvDescription (\s a -> s { _cvDescription = a })++instance FromXML ClusterVersion where+    parseXML x = ClusterVersion+        <$> x .@? "ClusterParameterGroupFamily"+        <*> x .@? "ClusterVersion"+        <*> x .@? "Description"++instance ToQuery ClusterVersion where+    toQuery ClusterVersion{..} = mconcat+        [ "ClusterParameterGroupFamily" =? _cvClusterParameterGroupFamily+        , "ClusterVersion"              =? _cvClusterVersion+        , "Description"                 =? _cvDescription+        ]++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 amount charged per the period of time specified by the recurring+-- charge frequency.+rcRecurringChargeAmount :: Lens' RecurringCharge (Maybe Double)+rcRecurringChargeAmount =+    lens _rcRecurringChargeAmount (\s a -> s { _rcRecurringChargeAmount = a })++-- | The frequency at which the recurring charge amount is applied.+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 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 address of the Cluster.+eAddress :: Lens' Endpoint (Maybe Text)+eAddress = lens _eAddress (\s a -> s { _eAddress = a })++-- | The port that the database 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 IPRange = IPRange+    { _iprCIDRIP :: Maybe Text+    , _iprStatus :: Maybe Text+    , _iprTags   :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'IPRange' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iprCIDRIP' @::@ 'Maybe' 'Text'+--+-- * 'iprStatus' @::@ 'Maybe' 'Text'+--+-- * 'iprTags' @::@ ['Tag']+--+iprange :: IPRange+iprange = IPRange+    { _iprStatus = Nothing+    , _iprCIDRIP = Nothing+    , _iprTags   = mempty+    }++-- | The IP range in Classless Inter-Domain Routing (CIDR) notation.+iprCIDRIP :: Lens' IPRange (Maybe Text)+iprCIDRIP = lens _iprCIDRIP (\s a -> s { _iprCIDRIP = a })++-- | The status of the IP range, for example, "authorized".+iprStatus :: Lens' IPRange (Maybe Text)+iprStatus = lens _iprStatus (\s a -> s { _iprStatus = a })++-- | The list of tags for the IP range.+iprTags :: Lens' IPRange [Tag]+iprTags = lens _iprTags (\s a -> s { _iprTags = a }) . _List++instance FromXML IPRange where+    parseXML x = IPRange+        <$> x .@? "CIDRIP"+        <*> x .@? "Status"+        <*> x .@  "Tags"++instance ToQuery IPRange where+    toQuery IPRange{..} = mconcat+        [ "CIDRIP" =? _iprCIDRIP+        , "Status" =? _iprStatus+        , "Tags"   =? _iprTags+        ]++data TaggedResource = TaggedResource+    { _trResourceName :: Maybe Text+    , _trResourceType :: Maybe Text+    , _trTag          :: Maybe Tag+    } deriving (Eq, Show)++-- | 'TaggedResource' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'trResourceName' @::@ 'Maybe' 'Text'+--+-- * 'trResourceType' @::@ 'Maybe' 'Text'+--+-- * 'trTag' @::@ 'Maybe' 'Tag'+--+taggedResource :: TaggedResource+taggedResource = TaggedResource+    { _trTag          = Nothing+    , _trResourceName = Nothing+    , _trResourceType = Nothing+    }++-- | The Amazon Resource Name (ARN) with which the tag is associated. For+-- example, arn:aws:redshift:us-east-1:123456789:cluster:t1.+trResourceName :: Lens' TaggedResource (Maybe Text)+trResourceName = lens _trResourceName (\s a -> s { _trResourceName = a })++-- | The type of resource with which the tag is associated. Valid resource+-- types are: Cluster CIDR/IP EC2 security group Snapshot Cluster security+-- group Subnet group HSM connection HSM certificate Parameter group For+-- more information about Amazon Redshift resource types and constructing+-- ARNs, go to Constructing an Amazon Redshift Amazon Resource Name (ARN) in+-- the Amazon Redshift Cluster Management Guide.+trResourceType :: Lens' TaggedResource (Maybe Text)+trResourceType = lens _trResourceType (\s a -> s { _trResourceType = a })++-- | The tag for the resource.+trTag :: Lens' TaggedResource (Maybe Tag)+trTag = lens _trTag (\s a -> s { _trTag = a })++instance FromXML TaggedResource where+    parseXML x = TaggedResource+        <$> x .@? "ResourceName"+        <*> x .@? "ResourceType"+        <*> x .@? "Tag"++instance ToQuery TaggedResource where+    toQuery TaggedResource{..} = mconcat+        [ "ResourceName" =? _trResourceName+        , "ResourceType" =? _trResourceType+        , "Tag"          =? _trTag+        ]++data EventCategoriesMap = EventCategoriesMap+    { _ecmEvents     :: List "EventInfoMap" EventInfoMap+    , _ecmSourceType :: Maybe Text+    } deriving (Eq, Show)++-- | 'EventCategoriesMap' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ecmEvents' @::@ ['EventInfoMap']+--+-- * 'ecmSourceType' @::@ 'Maybe' 'Text'+--+eventCategoriesMap :: EventCategoriesMap+eventCategoriesMap = EventCategoriesMap+    { _ecmSourceType = Nothing+    , _ecmEvents     = mempty+    }++-- | The events in the event category.+ecmEvents :: Lens' EventCategoriesMap [EventInfoMap]+ecmEvents = lens _ecmEvents (\s a -> s { _ecmEvents = a }) . _List++-- | The Amazon Redshift source type, such as cluster or cluster-snapshot,+-- that the returned categories belong to.+ecmSourceType :: Lens' EventCategoriesMap (Maybe Text)+ecmSourceType = lens _ecmSourceType (\s a -> s { _ecmSourceType = a })++instance FromXML EventCategoriesMap where+    parseXML x = EventCategoriesMap+        <$> x .@  "Events"+        <*> x .@? "SourceType"++instance ToQuery EventCategoriesMap where+    toQuery EventCategoriesMap{..} = mconcat+        [ "Events"     =? _ecmEvents+        , "SourceType" =? _ecmSourceType+        ]++data HsmConfiguration = HsmConfiguration+    { _hcDescription                :: Maybe Text+    , _hcHsmConfigurationIdentifier :: Maybe Text+    , _hcHsmIpAddress               :: Maybe Text+    , _hcHsmPartitionName           :: Maybe Text+    , _hcTags                       :: List "Tag" Tag+    } deriving (Eq, Show)++-- | 'HsmConfiguration' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'hcDescription' @::@ 'Maybe' 'Text'+--+-- * 'hcHsmConfigurationIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'hcHsmIpAddress' @::@ 'Maybe' 'Text'+--+-- * 'hcHsmPartitionName' @::@ 'Maybe' 'Text'+--+-- * 'hcTags' @::@ ['Tag']+--+hsmConfiguration :: HsmConfiguration+hsmConfiguration = HsmConfiguration+    { _hcHsmConfigurationIdentifier = Nothing+    , _hcDescription                = Nothing+    , _hcHsmIpAddress               = Nothing+    , _hcHsmPartitionName           = Nothing+    , _hcTags                       = mempty+    }++-- | A text description of the HSM configuration.+hcDescription :: Lens' HsmConfiguration (Maybe Text)+hcDescription = lens _hcDescription (\s a -> s { _hcDescription = a })++-- | The name of the Amazon Redshift HSM configuration.+hcHsmConfigurationIdentifier :: Lens' HsmConfiguration (Maybe Text)+hcHsmConfigurationIdentifier =+    lens _hcHsmConfigurationIdentifier+        (\s a -> s { _hcHsmConfigurationIdentifier = a })++-- | The IP address that the Amazon Redshift cluster must use to access the+-- HSM.+hcHsmIpAddress :: Lens' HsmConfiguration (Maybe Text)+hcHsmIpAddress = lens _hcHsmIpAddress (\s a -> s { _hcHsmIpAddress = a })++-- | The name of the partition in the HSM where the Amazon Redshift clusters+-- will store their database encryption keys.+hcHsmPartitionName :: Lens' HsmConfiguration (Maybe Text)+hcHsmPartitionName =+    lens _hcHsmPartitionName (\s a -> s { _hcHsmPartitionName = a })++-- | The list of tags for the HSM configuration.+hcTags :: Lens' HsmConfiguration [Tag]+hcTags = lens _hcTags (\s a -> s { _hcTags = a }) . _List++instance FromXML HsmConfiguration where+    parseXML x = HsmConfiguration+        <$> x .@? "Description"+        <*> x .@? "HsmConfigurationIdentifier"+        <*> x .@? "HsmIpAddress"+        <*> x .@? "HsmPartitionName"+        <*> x .@  "Tags"++instance ToQuery HsmConfiguration where+    toQuery HsmConfiguration{..} = mconcat+        [ "Description"                =? _hcDescription+        , "HsmConfigurationIdentifier" =? _hcHsmConfigurationIdentifier+        , "HsmIpAddress"               =? _hcHsmIpAddress+        , "HsmPartitionName"           =? _hcHsmPartitionName+        , "Tags"                       =? _hcTags+        ]++data PendingModifiedValues = PendingModifiedValues+    { _pmvAutomatedSnapshotRetentionPeriod :: Maybe Int+    , _pmvClusterIdentifier                :: Maybe Text+    , _pmvClusterType                      :: Maybe Text+    , _pmvClusterVersion                   :: Maybe Text+    , _pmvMasterUserPassword               :: Maybe Text+    , _pmvNodeType                         :: Maybe Text+    , _pmvNumberOfNodes                    :: Maybe Int+    } deriving (Eq, Ord, Show)++-- | 'PendingModifiedValues' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pmvAutomatedSnapshotRetentionPeriod' @::@ 'Maybe' 'Int'+--+-- * 'pmvClusterIdentifier' @::@ 'Maybe' 'Text'+--+-- * 'pmvClusterType' @::@ 'Maybe' 'Text'+--+-- * 'pmvClusterVersion' @::@ 'Maybe' 'Text'+--+-- * 'pmvMasterUserPassword' @::@ 'Maybe' 'Text'+--+-- * 'pmvNodeType' @::@ 'Maybe' 'Text'+--+-- * 'pmvNumberOfNodes' @::@ 'Maybe' 'Int'+--+pendingModifiedValues :: PendingModifiedValues+pendingModifiedValues = PendingModifiedValues+    { _pmvMasterUserPassword               = Nothing+    , _pmvNodeType                         = Nothing+    , _pmvNumberOfNodes                    = Nothing+    , _pmvClusterType                      = Nothing+    , _pmvClusterVersion                   = Nothing+    , _pmvAutomatedSnapshotRetentionPeriod = Nothing+    , _pmvClusterIdentifier                = Nothing+    }++-- | The pending or in-progress change of the automated snapshot retention+-- period.+pmvAutomatedSnapshotRetentionPeriod :: Lens' PendingModifiedValues (Maybe Int)+pmvAutomatedSnapshotRetentionPeriod =+    lens _pmvAutomatedSnapshotRetentionPeriod+        (\s a -> s { _pmvAutomatedSnapshotRetentionPeriod = a })++-- | The pending or in-progress change of the new identifier for the cluster.+pmvClusterIdentifier :: Lens' PendingModifiedValues (Maybe Text)+pmvClusterIdentifier =+    lens _pmvClusterIdentifier (\s a -> s { _pmvClusterIdentifier = a })++-- | The pending or in-progress change of the cluster type.+pmvClusterType :: Lens' PendingModifiedValues (Maybe Text)+pmvClusterType = lens _pmvClusterType (\s a -> s { _pmvClusterType = a })++-- | The pending or in-progress change of the service version.+pmvClusterVersion :: Lens' PendingModifiedValues (Maybe Text)+pmvClusterVersion =+    lens _pmvClusterVersion (\s a -> s { _pmvClusterVersion = a })++-- | The pending or in-progress change of the master user password for the+-- cluster.+pmvMasterUserPassword :: Lens' PendingModifiedValues (Maybe Text)+pmvMasterUserPassword =+    lens _pmvMasterUserPassword (\s a -> s { _pmvMasterUserPassword = a })++-- | The pending or in-progress change of the cluster's node type.+pmvNodeType :: Lens' PendingModifiedValues (Maybe Text)+pmvNodeType = lens _pmvNodeType (\s a -> s { _pmvNodeType = a })++-- | The pending or in-progress change of the number of nodes in the cluster.+pmvNumberOfNodes :: Lens' PendingModifiedValues (Maybe Int)+pmvNumberOfNodes = lens _pmvNumberOfNodes (\s a -> s { _pmvNumberOfNodes = a })++instance FromXML PendingModifiedValues where+    parseXML x = PendingModifiedValues+        <$> x .@? "AutomatedSnapshotRetentionPeriod"+        <*> x .@? "ClusterIdentifier"+        <*> x .@? "ClusterType"+        <*> x .@? "ClusterVersion"+        <*> x .@? "MasterUserPassword"+        <*> x .@? "NodeType"+        <*> x .@? "NumberOfNodes"++instance ToQuery PendingModifiedValues where+    toQuery PendingModifiedValues{..} = mconcat+        [ "AutomatedSnapshotRetentionPeriod" =? _pmvAutomatedSnapshotRetentionPeriod+        , "ClusterIdentifier"                =? _pmvClusterIdentifier+        , "ClusterType"                      =? _pmvClusterType+        , "ClusterVersion"                   =? _pmvClusterVersion+        , "MasterUserPassword"               =? _pmvMasterUserPassword+        , "NodeType"                         =? _pmvNodeType+        , "NumberOfNodes"                    =? _pmvNumberOfNodes+        ]++data VpcSecurityGroupMembership = VpcSecurityGroupMembership+    { _vsgmStatus             :: Maybe Text+    , _vsgmVpcSecurityGroupId :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'VpcSecurityGroupMembership' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vsgmStatus' @::@ 'Maybe' 'Text'+--+-- * 'vsgmVpcSecurityGroupId' @::@ 'Maybe' 'Text'+--+vpcSecurityGroupMembership :: VpcSecurityGroupMembership+vpcSecurityGroupMembership = VpcSecurityGroupMembership+    { _vsgmVpcSecurityGroupId = Nothing+    , _vsgmStatus             = Nothing+    }++vsgmStatus :: Lens' VpcSecurityGroupMembership (Maybe Text)+vsgmStatus = lens _vsgmStatus (\s a -> s { _vsgmStatus = a })++vsgmVpcSecurityGroupId :: Lens' VpcSecurityGroupMembership (Maybe Text)+vsgmVpcSecurityGroupId =+    lens _vsgmVpcSecurityGroupId (\s a -> s { _vsgmVpcSecurityGroupId = a })++instance FromXML VpcSecurityGroupMembership where+    parseXML x = VpcSecurityGroupMembership+        <$> x .@? "Status"+        <*> x .@? "VpcSecurityGroupId"++instance ToQuery VpcSecurityGroupMembership where+    toQuery VpcSecurityGroupMembership{..} = mconcat+        [ "Status"             =? _vsgmStatus+        , "VpcSecurityGroupId" =? _vsgmVpcSecurityGroupId+        ]++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 data type of 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 })++-- | If true, 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 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 value, such as "engine-default" or "user".+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+        ]