packages feed

amazonka-eks (empty) → 2.0

raw patch · 184 files changed

+21729/−0 lines, 184 filesdep +amazonka-coredep +amazonka-eksdep +amazonka-test

Dependencies added: amazonka-core, amazonka-eks, amazonka-test, base, bytestring, case-insensitive, tasty, tasty-hunit, text, time, unordered-containers

Files

+ LICENSE view
@@ -0,0 +1,367 @@+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.
+ README.md view
@@ -0,0 +1,44 @@+# Amazon Elastic Kubernetes Service SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2017-11-01@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-eks)+and the [AWS API Reference](https://aws.amazon.com/documentation/).++The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),+which provides mechanisms for specifying AuthN/AuthZ information, sending requests,+and receiving responses.++Lenses are used for constructing and manipulating types,+due to the depth of nesting of AWS types and transparency regarding+de/serialisation into more palatable Haskell values.+The provided lenses should be compatible with any of the major lens libraries+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).++See [Amazonka.EKS](http://hackage.haskell.org/package/amazonka-eks/docs/Amazonka-EKS.html)+or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.+++## 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-eks` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).++Parts of the code are derived from AWS service descriptions, licensed under Apache 2.0.+Source files subject to this contain an additional licensing clause in their header.
+ amazonka-eks.cabal view
@@ -0,0 +1,185 @@+cabal-version:      2.2+name:               amazonka-eks+version:            2.0+synopsis:           Amazon Elastic Kubernetes Service SDK.+homepage:           https://github.com/brendanhay/amazonka+bug-reports:        https://github.com/brendanhay/amazonka/issues+license:            MPL-2.0+license-file:       LICENSE+author:             Brendan Hay+maintainer:+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>++copyright:          Copyright (c) 2013-2023 Brendan Hay+category:           AWS+build-type:         Simple+extra-source-files:+  fixture/*.proto+  fixture/*.yaml+  README.md+  src/.gitkeep++description:+  Derived from API version @2017-11-01@ of the AWS service descriptions, licensed under Apache 2.0.+  .+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.+  .+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.+  .+  Generated lenses can be found in "Amazonka.EKS.Lens" and are+  suitable for use with a lens package such as <http://hackage.haskell.org/package/lens lens> or <http://hackage.haskell.org/package/lens-family-core lens-family-core>.+  .+  See "Amazonka.EKS" and the <https://aws.amazon.com/documentation/ AWS documentation> to get started.++source-repository head+  type:     git+  location: git://github.com/brendanhay/amazonka.git+  subdir:   amazonka-eks++library+  default-language: Haskell2010+  hs-source-dirs:   src gen+  ghc-options:+    -Wall -fwarn-incomplete-uni-patterns+    -fwarn-incomplete-record-updates -funbox-strict-fields++  exposed-modules:+    Amazonka.EKS+    Amazonka.EKS.AssociateEncryptionConfig+    Amazonka.EKS.AssociateIdentityProviderConfig+    Amazonka.EKS.CreateAddon+    Amazonka.EKS.CreateCluster+    Amazonka.EKS.CreateFargateProfile+    Amazonka.EKS.CreateNodegroup+    Amazonka.EKS.DeleteAddon+    Amazonka.EKS.DeleteCluster+    Amazonka.EKS.DeleteFargateProfile+    Amazonka.EKS.DeleteNodegroup+    Amazonka.EKS.DeregisterCluster+    Amazonka.EKS.DescribeAddon+    Amazonka.EKS.DescribeAddonConfiguration+    Amazonka.EKS.DescribeAddonVersions+    Amazonka.EKS.DescribeCluster+    Amazonka.EKS.DescribeFargateProfile+    Amazonka.EKS.DescribeIdentityProviderConfig+    Amazonka.EKS.DescribeNodegroup+    Amazonka.EKS.DescribeUpdate+    Amazonka.EKS.DisassociateIdentityProviderConfig+    Amazonka.EKS.Lens+    Amazonka.EKS.ListAddons+    Amazonka.EKS.ListClusters+    Amazonka.EKS.ListFargateProfiles+    Amazonka.EKS.ListIdentityProviderConfigs+    Amazonka.EKS.ListNodegroups+    Amazonka.EKS.ListTagsForResource+    Amazonka.EKS.ListUpdates+    Amazonka.EKS.RegisterCluster+    Amazonka.EKS.TagResource+    Amazonka.EKS.Types+    Amazonka.EKS.Types.Addon+    Amazonka.EKS.Types.AddonHealth+    Amazonka.EKS.Types.AddonInfo+    Amazonka.EKS.Types.AddonIssue+    Amazonka.EKS.Types.AddonIssueCode+    Amazonka.EKS.Types.AddonStatus+    Amazonka.EKS.Types.AddonVersionInfo+    Amazonka.EKS.Types.AMITypes+    Amazonka.EKS.Types.AutoScalingGroup+    Amazonka.EKS.Types.CapacityTypes+    Amazonka.EKS.Types.Certificate+    Amazonka.EKS.Types.Cluster+    Amazonka.EKS.Types.ClusterHealth+    Amazonka.EKS.Types.ClusterIssue+    Amazonka.EKS.Types.ClusterIssueCode+    Amazonka.EKS.Types.ClusterStatus+    Amazonka.EKS.Types.Compatibility+    Amazonka.EKS.Types.ConfigStatus+    Amazonka.EKS.Types.ConnectorConfigProvider+    Amazonka.EKS.Types.ConnectorConfigRequest+    Amazonka.EKS.Types.ConnectorConfigResponse+    Amazonka.EKS.Types.ControlPlanePlacementRequest+    Amazonka.EKS.Types.ControlPlanePlacementResponse+    Amazonka.EKS.Types.EKSErrorCode+    Amazonka.EKS.Types.EncryptionConfig+    Amazonka.EKS.Types.ErrorDetail+    Amazonka.EKS.Types.FargateProfile+    Amazonka.EKS.Types.FargateProfileSelector+    Amazonka.EKS.Types.FargateProfileStatus+    Amazonka.EKS.Types.Identity+    Amazonka.EKS.Types.IdentityProviderConfig+    Amazonka.EKS.Types.IdentityProviderConfigResponse+    Amazonka.EKS.Types.IpFamily+    Amazonka.EKS.Types.Issue+    Amazonka.EKS.Types.KubernetesNetworkConfigRequest+    Amazonka.EKS.Types.KubernetesNetworkConfigResponse+    Amazonka.EKS.Types.LaunchTemplateSpecification+    Amazonka.EKS.Types.Logging+    Amazonka.EKS.Types.LogSetup+    Amazonka.EKS.Types.LogType+    Amazonka.EKS.Types.MarketplaceInformation+    Amazonka.EKS.Types.Nodegroup+    Amazonka.EKS.Types.NodegroupHealth+    Amazonka.EKS.Types.NodegroupIssueCode+    Amazonka.EKS.Types.NodegroupResources+    Amazonka.EKS.Types.NodegroupScalingConfig+    Amazonka.EKS.Types.NodegroupStatus+    Amazonka.EKS.Types.NodegroupUpdateConfig+    Amazonka.EKS.Types.OIDC+    Amazonka.EKS.Types.OidcIdentityProviderConfig+    Amazonka.EKS.Types.OidcIdentityProviderConfigRequest+    Amazonka.EKS.Types.OutpostConfigRequest+    Amazonka.EKS.Types.OutpostConfigResponse+    Amazonka.EKS.Types.Provider+    Amazonka.EKS.Types.RemoteAccessConfig+    Amazonka.EKS.Types.ResolveConflicts+    Amazonka.EKS.Types.Taint+    Amazonka.EKS.Types.TaintEffect+    Amazonka.EKS.Types.Update+    Amazonka.EKS.Types.UpdateLabelsPayload+    Amazonka.EKS.Types.UpdateParam+    Amazonka.EKS.Types.UpdateParamType+    Amazonka.EKS.Types.UpdateStatus+    Amazonka.EKS.Types.UpdateTaintsPayload+    Amazonka.EKS.Types.UpdateType+    Amazonka.EKS.Types.VpcConfigRequest+    Amazonka.EKS.Types.VpcConfigResponse+    Amazonka.EKS.UntagResource+    Amazonka.EKS.UpdateAddon+    Amazonka.EKS.UpdateClusterConfig+    Amazonka.EKS.UpdateClusterVersion+    Amazonka.EKS.UpdateNodegroupConfig+    Amazonka.EKS.UpdateNodegroupVersion+    Amazonka.EKS.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-eks-test+  type:             exitcode-stdio-1.0+  default-language: Haskell2010+  hs-source-dirs:   test+  main-is:          Main.hs+  ghc-options:      -Wall -threaded++  -- This section is encoded by the template and any modules added by+  -- hand outside these namespaces will not correctly be added to the+  -- distribution package.+  other-modules:+    Test.Amazonka.EKS+    Test.Amazonka.EKS.Internal+    Test.Amazonka.Gen.EKS++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-eks+    , amazonka-test         >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/AssociateEncryptionConfig.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/AssociateEncryptionConfigResponse.proto view
+ fixture/AssociateIdentityProviderConfig.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/AssociateIdentityProviderConfigResponse.proto view
+ fixture/CreateAddon.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateAddonResponse.proto view
+ fixture/CreateCluster.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateClusterResponse.proto view
+ fixture/CreateFargateProfile.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateFargateProfileResponse.proto view
+ fixture/CreateNodegroup.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateNodegroupResponse.proto view
+ fixture/DeleteAddon.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteAddonResponse.proto view
+ fixture/DeleteCluster.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteClusterResponse.proto view
+ fixture/DeleteFargateProfile.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteFargateProfileResponse.proto view
+ fixture/DeleteNodegroup.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteNodegroupResponse.proto view
+ fixture/DeregisterCluster.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeregisterClusterResponse.proto view
+ fixture/DescribeAddon.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeAddonConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeAddonConfigurationResponse.proto view
+ fixture/DescribeAddonResponse.proto view
+ fixture/DescribeAddonVersions.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeAddonVersionsResponse.proto view
+ fixture/DescribeCluster.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeClusterResponse.proto view
+ fixture/DescribeFargateProfile.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeFargateProfileResponse.proto view
+ fixture/DescribeIdentityProviderConfig.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeIdentityProviderConfigResponse.proto view
+ fixture/DescribeNodegroup.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeNodegroupResponse.proto view
+ fixture/DescribeUpdate.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DescribeUpdateResponse.proto view
+ fixture/DisassociateIdentityProviderConfig.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DisassociateIdentityProviderConfigResponse.proto view
+ fixture/ListAddons.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListAddonsResponse.proto view
+ fixture/ListClusters.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListClustersResponse.proto view
+ fixture/ListFargateProfiles.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListFargateProfilesResponse.proto view
+ fixture/ListIdentityProviderConfigs.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListIdentityProviderConfigsResponse.proto view
+ fixture/ListNodegroups.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListNodegroupsResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListTagsForResourceResponse.proto view
+ fixture/ListUpdates.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListUpdatesResponse.proto view
+ fixture/RegisterCluster.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/RegisterClusterResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/TagResourceResponse.proto view
+ fixture/UntagResource.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UntagResourceResponse.proto view
+ fixture/UpdateAddon.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UpdateAddonResponse.proto view
+ fixture/UpdateClusterConfig.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UpdateClusterConfigResponse.proto view
+ fixture/UpdateClusterVersion.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UpdateClusterVersionResponse.proto view
+ fixture/UpdateNodegroupConfig.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UpdateNodegroupConfigResponse.proto view
+ fixture/UpdateNodegroupVersion.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/eks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  eks.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UpdateNodegroupVersionResponse.proto view
+ gen/Amazonka/EKS.hs view
@@ -0,0 +1,630 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.EKS+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Derived from API version @2017-11-01@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- Amazon Elastic Kubernetes Service (Amazon EKS) is a managed service that+-- makes it easy for you to run Kubernetes on Amazon Web Services without+-- needing to stand up or maintain your own Kubernetes control plane.+-- Kubernetes is an open-source system for automating the deployment,+-- scaling, and management of containerized applications.+--+-- Amazon EKS runs up-to-date versions of the open-source Kubernetes+-- software, so you can use all the existing plugins and tooling from the+-- Kubernetes community. Applications running on Amazon EKS are fully+-- compatible with applications running on any standard Kubernetes+-- environment, whether running in on-premises data centers or public+-- clouds. This means that you can easily migrate any standard Kubernetes+-- application to Amazon EKS without any code modification required.+module Amazonka.EKS+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccessDeniedException+    _AccessDeniedException,++    -- ** BadRequestException+    _BadRequestException,++    -- ** ClientException+    _ClientException,++    -- ** InvalidParameterException+    _InvalidParameterException,++    -- ** InvalidRequestException+    _InvalidRequestException,++    -- ** NotFoundException+    _NotFoundException,++    -- ** ResourceInUseException+    _ResourceInUseException,++    -- ** ResourceLimitExceededException+    _ResourceLimitExceededException,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ResourcePropagationDelayException+    _ResourcePropagationDelayException,++    -- ** ServerException+    _ServerException,++    -- ** ServiceUnavailableException+    _ServiceUnavailableException,++    -- ** UnsupportedAvailabilityZoneException+    _UnsupportedAvailabilityZoneException,++    -- * Waiters+    -- $waiters++    -- ** AddonActive+    newAddonActive,++    -- ** AddonDeleted+    newAddonDeleted,++    -- ** ClusterActive+    newClusterActive,++    -- ** ClusterDeleted+    newClusterDeleted,++    -- ** FargateProfileActive+    newFargateProfileActive,++    -- ** FargateProfileDeleted+    newFargateProfileDeleted,++    -- ** NodegroupActive+    newNodegroupActive,++    -- ** NodegroupDeleted+    newNodegroupDeleted,++    -- * Operations+    -- $operations++    -- ** AssociateEncryptionConfig+    AssociateEncryptionConfig (AssociateEncryptionConfig'),+    newAssociateEncryptionConfig,+    AssociateEncryptionConfigResponse (AssociateEncryptionConfigResponse'),+    newAssociateEncryptionConfigResponse,++    -- ** AssociateIdentityProviderConfig+    AssociateIdentityProviderConfig (AssociateIdentityProviderConfig'),+    newAssociateIdentityProviderConfig,+    AssociateIdentityProviderConfigResponse (AssociateIdentityProviderConfigResponse'),+    newAssociateIdentityProviderConfigResponse,++    -- ** CreateAddon+    CreateAddon (CreateAddon'),+    newCreateAddon,+    CreateAddonResponse (CreateAddonResponse'),+    newCreateAddonResponse,++    -- ** CreateCluster+    CreateCluster (CreateCluster'),+    newCreateCluster,+    CreateClusterResponse (CreateClusterResponse'),+    newCreateClusterResponse,++    -- ** CreateFargateProfile+    CreateFargateProfile (CreateFargateProfile'),+    newCreateFargateProfile,+    CreateFargateProfileResponse (CreateFargateProfileResponse'),+    newCreateFargateProfileResponse,++    -- ** CreateNodegroup+    CreateNodegroup (CreateNodegroup'),+    newCreateNodegroup,+    CreateNodegroupResponse (CreateNodegroupResponse'),+    newCreateNodegroupResponse,++    -- ** DeleteAddon+    DeleteAddon (DeleteAddon'),+    newDeleteAddon,+    DeleteAddonResponse (DeleteAddonResponse'),+    newDeleteAddonResponse,++    -- ** DeleteCluster+    DeleteCluster (DeleteCluster'),+    newDeleteCluster,+    DeleteClusterResponse (DeleteClusterResponse'),+    newDeleteClusterResponse,++    -- ** DeleteFargateProfile+    DeleteFargateProfile (DeleteFargateProfile'),+    newDeleteFargateProfile,+    DeleteFargateProfileResponse (DeleteFargateProfileResponse'),+    newDeleteFargateProfileResponse,++    -- ** DeleteNodegroup+    DeleteNodegroup (DeleteNodegroup'),+    newDeleteNodegroup,+    DeleteNodegroupResponse (DeleteNodegroupResponse'),+    newDeleteNodegroupResponse,++    -- ** DeregisterCluster+    DeregisterCluster (DeregisterCluster'),+    newDeregisterCluster,+    DeregisterClusterResponse (DeregisterClusterResponse'),+    newDeregisterClusterResponse,++    -- ** DescribeAddon+    DescribeAddon (DescribeAddon'),+    newDescribeAddon,+    DescribeAddonResponse (DescribeAddonResponse'),+    newDescribeAddonResponse,++    -- ** DescribeAddonConfiguration+    DescribeAddonConfiguration (DescribeAddonConfiguration'),+    newDescribeAddonConfiguration,+    DescribeAddonConfigurationResponse (DescribeAddonConfigurationResponse'),+    newDescribeAddonConfigurationResponse,++    -- ** DescribeAddonVersions (Paginated)+    DescribeAddonVersions (DescribeAddonVersions'),+    newDescribeAddonVersions,+    DescribeAddonVersionsResponse (DescribeAddonVersionsResponse'),+    newDescribeAddonVersionsResponse,++    -- ** DescribeCluster+    DescribeCluster (DescribeCluster'),+    newDescribeCluster,+    DescribeClusterResponse (DescribeClusterResponse'),+    newDescribeClusterResponse,++    -- ** DescribeFargateProfile+    DescribeFargateProfile (DescribeFargateProfile'),+    newDescribeFargateProfile,+    DescribeFargateProfileResponse (DescribeFargateProfileResponse'),+    newDescribeFargateProfileResponse,++    -- ** DescribeIdentityProviderConfig+    DescribeIdentityProviderConfig (DescribeIdentityProviderConfig'),+    newDescribeIdentityProviderConfig,+    DescribeIdentityProviderConfigResponse (DescribeIdentityProviderConfigResponse'),+    newDescribeIdentityProviderConfigResponse,++    -- ** DescribeNodegroup+    DescribeNodegroup (DescribeNodegroup'),+    newDescribeNodegroup,+    DescribeNodegroupResponse (DescribeNodegroupResponse'),+    newDescribeNodegroupResponse,++    -- ** DescribeUpdate+    DescribeUpdate (DescribeUpdate'),+    newDescribeUpdate,+    DescribeUpdateResponse (DescribeUpdateResponse'),+    newDescribeUpdateResponse,++    -- ** DisassociateIdentityProviderConfig+    DisassociateIdentityProviderConfig (DisassociateIdentityProviderConfig'),+    newDisassociateIdentityProviderConfig,+    DisassociateIdentityProviderConfigResponse (DisassociateIdentityProviderConfigResponse'),+    newDisassociateIdentityProviderConfigResponse,++    -- ** ListAddons (Paginated)+    ListAddons (ListAddons'),+    newListAddons,+    ListAddonsResponse (ListAddonsResponse'),+    newListAddonsResponse,++    -- ** ListClusters (Paginated)+    ListClusters (ListClusters'),+    newListClusters,+    ListClustersResponse (ListClustersResponse'),+    newListClustersResponse,++    -- ** ListFargateProfiles (Paginated)+    ListFargateProfiles (ListFargateProfiles'),+    newListFargateProfiles,+    ListFargateProfilesResponse (ListFargateProfilesResponse'),+    newListFargateProfilesResponse,++    -- ** ListIdentityProviderConfigs (Paginated)+    ListIdentityProviderConfigs (ListIdentityProviderConfigs'),+    newListIdentityProviderConfigs,+    ListIdentityProviderConfigsResponse (ListIdentityProviderConfigsResponse'),+    newListIdentityProviderConfigsResponse,++    -- ** ListNodegroups (Paginated)+    ListNodegroups (ListNodegroups'),+    newListNodegroups,+    ListNodegroupsResponse (ListNodegroupsResponse'),+    newListNodegroupsResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** ListUpdates (Paginated)+    ListUpdates (ListUpdates'),+    newListUpdates,+    ListUpdatesResponse (ListUpdatesResponse'),+    newListUpdatesResponse,++    -- ** RegisterCluster+    RegisterCluster (RegisterCluster'),+    newRegisterCluster,+    RegisterClusterResponse (RegisterClusterResponse'),+    newRegisterClusterResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateAddon+    UpdateAddon (UpdateAddon'),+    newUpdateAddon,+    UpdateAddonResponse (UpdateAddonResponse'),+    newUpdateAddonResponse,++    -- ** UpdateClusterConfig+    UpdateClusterConfig (UpdateClusterConfig'),+    newUpdateClusterConfig,+    UpdateClusterConfigResponse (UpdateClusterConfigResponse'),+    newUpdateClusterConfigResponse,++    -- ** UpdateClusterVersion+    UpdateClusterVersion (UpdateClusterVersion'),+    newUpdateClusterVersion,+    UpdateClusterVersionResponse (UpdateClusterVersionResponse'),+    newUpdateClusterVersionResponse,++    -- ** UpdateNodegroupConfig+    UpdateNodegroupConfig (UpdateNodegroupConfig'),+    newUpdateNodegroupConfig,+    UpdateNodegroupConfigResponse (UpdateNodegroupConfigResponse'),+    newUpdateNodegroupConfigResponse,++    -- ** UpdateNodegroupVersion+    UpdateNodegroupVersion (UpdateNodegroupVersion'),+    newUpdateNodegroupVersion,+    UpdateNodegroupVersionResponse (UpdateNodegroupVersionResponse'),+    newUpdateNodegroupVersionResponse,++    -- * Types++    -- ** AMITypes+    AMITypes (..),++    -- ** AddonIssueCode+    AddonIssueCode (..),++    -- ** AddonStatus+    AddonStatus (..),++    -- ** CapacityTypes+    CapacityTypes (..),++    -- ** ClusterIssueCode+    ClusterIssueCode (..),++    -- ** ClusterStatus+    ClusterStatus (..),++    -- ** ConfigStatus+    ConfigStatus (..),++    -- ** ConnectorConfigProvider+    ConnectorConfigProvider (..),++    -- ** EKSErrorCode+    EKSErrorCode (..),++    -- ** FargateProfileStatus+    FargateProfileStatus (..),++    -- ** IpFamily+    IpFamily (..),++    -- ** LogType+    LogType (..),++    -- ** NodegroupIssueCode+    NodegroupIssueCode (..),++    -- ** NodegroupStatus+    NodegroupStatus (..),++    -- ** ResolveConflicts+    ResolveConflicts (..),++    -- ** TaintEffect+    TaintEffect (..),++    -- ** UpdateParamType+    UpdateParamType (..),++    -- ** UpdateStatus+    UpdateStatus (..),++    -- ** UpdateType+    UpdateType (..),++    -- ** Addon+    Addon (Addon'),+    newAddon,++    -- ** AddonHealth+    AddonHealth (AddonHealth'),+    newAddonHealth,++    -- ** AddonInfo+    AddonInfo (AddonInfo'),+    newAddonInfo,++    -- ** AddonIssue+    AddonIssue (AddonIssue'),+    newAddonIssue,++    -- ** AddonVersionInfo+    AddonVersionInfo (AddonVersionInfo'),+    newAddonVersionInfo,++    -- ** AutoScalingGroup+    AutoScalingGroup (AutoScalingGroup'),+    newAutoScalingGroup,++    -- ** Certificate+    Certificate (Certificate'),+    newCertificate,++    -- ** Cluster+    Cluster (Cluster'),+    newCluster,++    -- ** ClusterHealth+    ClusterHealth (ClusterHealth'),+    newClusterHealth,++    -- ** ClusterIssue+    ClusterIssue (ClusterIssue'),+    newClusterIssue,++    -- ** Compatibility+    Compatibility (Compatibility'),+    newCompatibility,++    -- ** ConnectorConfigRequest+    ConnectorConfigRequest (ConnectorConfigRequest'),+    newConnectorConfigRequest,++    -- ** ConnectorConfigResponse+    ConnectorConfigResponse (ConnectorConfigResponse'),+    newConnectorConfigResponse,++    -- ** ControlPlanePlacementRequest+    ControlPlanePlacementRequest (ControlPlanePlacementRequest'),+    newControlPlanePlacementRequest,++    -- ** ControlPlanePlacementResponse+    ControlPlanePlacementResponse (ControlPlanePlacementResponse'),+    newControlPlanePlacementResponse,++    -- ** EncryptionConfig+    EncryptionConfig (EncryptionConfig'),+    newEncryptionConfig,++    -- ** ErrorDetail+    ErrorDetail (ErrorDetail'),+    newErrorDetail,++    -- ** FargateProfile+    FargateProfile (FargateProfile'),+    newFargateProfile,++    -- ** FargateProfileSelector+    FargateProfileSelector (FargateProfileSelector'),+    newFargateProfileSelector,++    -- ** Identity+    Identity (Identity'),+    newIdentity,++    -- ** IdentityProviderConfig+    IdentityProviderConfig (IdentityProviderConfig'),+    newIdentityProviderConfig,++    -- ** IdentityProviderConfigResponse+    IdentityProviderConfigResponse (IdentityProviderConfigResponse'),+    newIdentityProviderConfigResponse,++    -- ** Issue+    Issue (Issue'),+    newIssue,++    -- ** KubernetesNetworkConfigRequest+    KubernetesNetworkConfigRequest (KubernetesNetworkConfigRequest'),+    newKubernetesNetworkConfigRequest,++    -- ** KubernetesNetworkConfigResponse+    KubernetesNetworkConfigResponse (KubernetesNetworkConfigResponse'),+    newKubernetesNetworkConfigResponse,++    -- ** LaunchTemplateSpecification+    LaunchTemplateSpecification (LaunchTemplateSpecification'),+    newLaunchTemplateSpecification,++    -- ** LogSetup+    LogSetup (LogSetup'),+    newLogSetup,++    -- ** Logging+    Logging (Logging'),+    newLogging,++    -- ** MarketplaceInformation+    MarketplaceInformation (MarketplaceInformation'),+    newMarketplaceInformation,++    -- ** Nodegroup+    Nodegroup (Nodegroup'),+    newNodegroup,++    -- ** NodegroupHealth+    NodegroupHealth (NodegroupHealth'),+    newNodegroupHealth,++    -- ** NodegroupResources+    NodegroupResources (NodegroupResources'),+    newNodegroupResources,++    -- ** NodegroupScalingConfig+    NodegroupScalingConfig (NodegroupScalingConfig'),+    newNodegroupScalingConfig,++    -- ** NodegroupUpdateConfig+    NodegroupUpdateConfig (NodegroupUpdateConfig'),+    newNodegroupUpdateConfig,++    -- ** OIDC+    OIDC (OIDC'),+    newOIDC,++    -- ** OidcIdentityProviderConfig+    OidcIdentityProviderConfig (OidcIdentityProviderConfig'),+    newOidcIdentityProviderConfig,++    -- ** OidcIdentityProviderConfigRequest+    OidcIdentityProviderConfigRequest (OidcIdentityProviderConfigRequest'),+    newOidcIdentityProviderConfigRequest,++    -- ** OutpostConfigRequest+    OutpostConfigRequest (OutpostConfigRequest'),+    newOutpostConfigRequest,++    -- ** OutpostConfigResponse+    OutpostConfigResponse (OutpostConfigResponse'),+    newOutpostConfigResponse,++    -- ** Provider+    Provider (Provider'),+    newProvider,++    -- ** RemoteAccessConfig+    RemoteAccessConfig (RemoteAccessConfig'),+    newRemoteAccessConfig,++    -- ** Taint+    Taint (Taint'),+    newTaint,++    -- ** Update+    Update (Update'),+    newUpdate,++    -- ** UpdateLabelsPayload+    UpdateLabelsPayload (UpdateLabelsPayload'),+    newUpdateLabelsPayload,++    -- ** UpdateParam+    UpdateParam (UpdateParam'),+    newUpdateParam,++    -- ** UpdateTaintsPayload+    UpdateTaintsPayload (UpdateTaintsPayload'),+    newUpdateTaintsPayload,++    -- ** VpcConfigRequest+    VpcConfigRequest (VpcConfigRequest'),+    newVpcConfigRequest,++    -- ** VpcConfigResponse+    VpcConfigResponse (VpcConfigResponse'),+    newVpcConfigResponse,+  )+where++import Amazonka.EKS.AssociateEncryptionConfig+import Amazonka.EKS.AssociateIdentityProviderConfig+import Amazonka.EKS.CreateAddon+import Amazonka.EKS.CreateCluster+import Amazonka.EKS.CreateFargateProfile+import Amazonka.EKS.CreateNodegroup+import Amazonka.EKS.DeleteAddon+import Amazonka.EKS.DeleteCluster+import Amazonka.EKS.DeleteFargateProfile+import Amazonka.EKS.DeleteNodegroup+import Amazonka.EKS.DeregisterCluster+import Amazonka.EKS.DescribeAddon+import Amazonka.EKS.DescribeAddonConfiguration+import Amazonka.EKS.DescribeAddonVersions+import Amazonka.EKS.DescribeCluster+import Amazonka.EKS.DescribeFargateProfile+import Amazonka.EKS.DescribeIdentityProviderConfig+import Amazonka.EKS.DescribeNodegroup+import Amazonka.EKS.DescribeUpdate+import Amazonka.EKS.DisassociateIdentityProviderConfig+import Amazonka.EKS.Lens+import Amazonka.EKS.ListAddons+import Amazonka.EKS.ListClusters+import Amazonka.EKS.ListFargateProfiles+import Amazonka.EKS.ListIdentityProviderConfigs+import Amazonka.EKS.ListNodegroups+import Amazonka.EKS.ListTagsForResource+import Amazonka.EKS.ListUpdates+import Amazonka.EKS.RegisterCluster+import Amazonka.EKS.TagResource+import Amazonka.EKS.Types+import Amazonka.EKS.UntagResource+import Amazonka.EKS.UpdateAddon+import Amazonka.EKS.UpdateClusterConfig+import Amazonka.EKS.UpdateClusterVersion+import Amazonka.EKS.UpdateNodegroupConfig+import Amazonka.EKS.UpdateNodegroupVersion+import Amazonka.EKS.Waiters++-- $errors+-- Error matchers are designed for use with the functions provided by+-- <http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.+-- This allows catching (and rethrowing) service specific errors returned+-- by 'EKS'.++-- $operations+-- Some AWS operations return results that are incomplete and require subsequent+-- requests in order to obtain the entire result set. The process of sending+-- subsequent requests to continue where a previous request left off is called+-- pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to+-- 1000 objects at a time, and you must send subsequent requests with the+-- appropriate Marker in order to retrieve the next page of results.+--+-- Operations that have an 'AWSPager' instance can transparently perform subsequent+-- requests, correctly setting Markers and other request facets to iterate through+-- the entire result set of a truncated API operation. Operations which support+-- this have an additional note in the documentation.+--+-- Many operations have the ability to filter results on the server side. See the+-- individual operation parameters for details.++-- $waiters+-- Waiters poll by repeatedly sending a request until some remote success condition+-- configured by the 'Wait' specification is fulfilled. The 'Wait' specification+-- determines how many attempts should be made, in addition to delay and retry strategies.
+ gen/Amazonka/EKS/AssociateEncryptionConfig.hs view
@@ -0,0 +1,215 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.AssociateEncryptionConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Associate encryption configuration to an existing cluster.+--+-- You can use this API to enable encryption on existing clusters which do+-- not have encryption already enabled. This allows you to implement a+-- defense-in-depth security strategy without migrating applications to new+-- Amazon EKS clusters.+module Amazonka.EKS.AssociateEncryptionConfig+  ( -- * Creating a Request+    AssociateEncryptionConfig (..),+    newAssociateEncryptionConfig,++    -- * Request Lenses+    associateEncryptionConfig_clientRequestToken,+    associateEncryptionConfig_clusterName,+    associateEncryptionConfig_encryptionConfig,++    -- * Destructuring the Response+    AssociateEncryptionConfigResponse (..),+    newAssociateEncryptionConfigResponse,++    -- * Response Lenses+    associateEncryptionConfigResponse_update,+    associateEncryptionConfigResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAssociateEncryptionConfig' smart constructor.+data AssociateEncryptionConfig = AssociateEncryptionConfig'+  { -- | The client request token you are using with the encryption+    -- configuration.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the cluster that you are associating with encryption+    -- configuration.+    clusterName :: Prelude.Text,+    -- | The configuration you are using for encryption.+    encryptionConfig :: [EncryptionConfig]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateEncryptionConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'associateEncryptionConfig_clientRequestToken' - The client request token you are using with the encryption+-- configuration.+--+-- 'clusterName', 'associateEncryptionConfig_clusterName' - The name of the cluster that you are associating with encryption+-- configuration.+--+-- 'encryptionConfig', 'associateEncryptionConfig_encryptionConfig' - The configuration you are using for encryption.+newAssociateEncryptionConfig ::+  -- | 'clusterName'+  Prelude.Text ->+  AssociateEncryptionConfig+newAssociateEncryptionConfig pClusterName_ =+  AssociateEncryptionConfig'+    { clientRequestToken =+        Prelude.Nothing,+      clusterName = pClusterName_,+      encryptionConfig = Prelude.mempty+    }++-- | The client request token you are using with the encryption+-- configuration.+associateEncryptionConfig_clientRequestToken :: Lens.Lens' AssociateEncryptionConfig (Prelude.Maybe Prelude.Text)+associateEncryptionConfig_clientRequestToken = Lens.lens (\AssociateEncryptionConfig' {clientRequestToken} -> clientRequestToken) (\s@AssociateEncryptionConfig' {} a -> s {clientRequestToken = a} :: AssociateEncryptionConfig)++-- | The name of the cluster that you are associating with encryption+-- configuration.+associateEncryptionConfig_clusterName :: Lens.Lens' AssociateEncryptionConfig Prelude.Text+associateEncryptionConfig_clusterName = Lens.lens (\AssociateEncryptionConfig' {clusterName} -> clusterName) (\s@AssociateEncryptionConfig' {} a -> s {clusterName = a} :: AssociateEncryptionConfig)++-- | The configuration you are using for encryption.+associateEncryptionConfig_encryptionConfig :: Lens.Lens' AssociateEncryptionConfig [EncryptionConfig]+associateEncryptionConfig_encryptionConfig = Lens.lens (\AssociateEncryptionConfig' {encryptionConfig} -> encryptionConfig) (\s@AssociateEncryptionConfig' {} a -> s {encryptionConfig = a} :: AssociateEncryptionConfig) Prelude.. Lens.coerced++instance Core.AWSRequest AssociateEncryptionConfig where+  type+    AWSResponse AssociateEncryptionConfig =+      AssociateEncryptionConfigResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AssociateEncryptionConfigResponse'+            Prelude.<$> (x Data..?> "update")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable AssociateEncryptionConfig where+  hashWithSalt _salt AssociateEncryptionConfig' {..} =+    _salt+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` encryptionConfig++instance Prelude.NFData AssociateEncryptionConfig where+  rnf AssociateEncryptionConfig' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf encryptionConfig++instance Data.ToHeaders AssociateEncryptionConfig where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AssociateEncryptionConfig where+  toJSON AssociateEncryptionConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            Prelude.Just+              ("encryptionConfig" Data..= encryptionConfig)+          ]+      )++instance Data.ToPath AssociateEncryptionConfig where+  toPath AssociateEncryptionConfig' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/encryption-config/associate"+      ]++instance Data.ToQuery AssociateEncryptionConfig where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAssociateEncryptionConfigResponse' smart constructor.+data AssociateEncryptionConfigResponse = AssociateEncryptionConfigResponse'+  { update :: Prelude.Maybe Update,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateEncryptionConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'update', 'associateEncryptionConfigResponse_update' - Undocumented member.+--+-- 'httpStatus', 'associateEncryptionConfigResponse_httpStatus' - The response's http status code.+newAssociateEncryptionConfigResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AssociateEncryptionConfigResponse+newAssociateEncryptionConfigResponse pHttpStatus_ =+  AssociateEncryptionConfigResponse'+    { update =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+associateEncryptionConfigResponse_update :: Lens.Lens' AssociateEncryptionConfigResponse (Prelude.Maybe Update)+associateEncryptionConfigResponse_update = Lens.lens (\AssociateEncryptionConfigResponse' {update} -> update) (\s@AssociateEncryptionConfigResponse' {} a -> s {update = a} :: AssociateEncryptionConfigResponse)++-- | The response's http status code.+associateEncryptionConfigResponse_httpStatus :: Lens.Lens' AssociateEncryptionConfigResponse Prelude.Int+associateEncryptionConfigResponse_httpStatus = Lens.lens (\AssociateEncryptionConfigResponse' {httpStatus} -> httpStatus) (\s@AssociateEncryptionConfigResponse' {} a -> s {httpStatus = a} :: AssociateEncryptionConfigResponse)++instance+  Prelude.NFData+    AssociateEncryptionConfigResponse+  where+  rnf AssociateEncryptionConfigResponse' {..} =+    Prelude.rnf update+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/AssociateIdentityProviderConfig.hs view
@@ -0,0 +1,268 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.AssociateIdentityProviderConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Associate an identity provider configuration to a cluster.+--+-- If you want to authenticate identities using an identity provider, you+-- can create an identity provider configuration and associate it to your+-- cluster. After configuring authentication to your cluster you can create+-- Kubernetes @roles@ and @clusterroles@ to assign permissions to the+-- roles, and then bind the roles to the identities using Kubernetes+-- @rolebindings@ and @clusterrolebindings@. For more information see+-- <https://kubernetes.io/docs/reference/access-authn-authz/rbac/ Using RBAC Authorization>+-- in the Kubernetes documentation.+module Amazonka.EKS.AssociateIdentityProviderConfig+  ( -- * Creating a Request+    AssociateIdentityProviderConfig (..),+    newAssociateIdentityProviderConfig,++    -- * Request Lenses+    associateIdentityProviderConfig_clientRequestToken,+    associateIdentityProviderConfig_tags,+    associateIdentityProviderConfig_clusterName,+    associateIdentityProviderConfig_oidc,++    -- * Destructuring the Response+    AssociateIdentityProviderConfigResponse (..),+    newAssociateIdentityProviderConfigResponse,++    -- * Response Lenses+    associateIdentityProviderConfigResponse_tags,+    associateIdentityProviderConfigResponse_update,+    associateIdentityProviderConfigResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAssociateIdentityProviderConfig' smart constructor.+data AssociateIdentityProviderConfig = AssociateIdentityProviderConfig'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | The metadata to apply to the configuration to assist with categorization+    -- and organization. Each tag consists of a key and an optional value. You+    -- define both.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of the cluster to associate the configuration to.+    clusterName :: Prelude.Text,+    -- | An object representing an OpenID Connect (OIDC) identity provider+    -- configuration.+    oidc :: OidcIdentityProviderConfigRequest+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateIdentityProviderConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'associateIdentityProviderConfig_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'tags', 'associateIdentityProviderConfig_tags' - The metadata to apply to the configuration to assist with categorization+-- and organization. Each tag consists of a key and an optional value. You+-- define both.+--+-- 'clusterName', 'associateIdentityProviderConfig_clusterName' - The name of the cluster to associate the configuration to.+--+-- 'oidc', 'associateIdentityProviderConfig_oidc' - An object representing an OpenID Connect (OIDC) identity provider+-- configuration.+newAssociateIdentityProviderConfig ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'oidc'+  OidcIdentityProviderConfigRequest ->+  AssociateIdentityProviderConfig+newAssociateIdentityProviderConfig+  pClusterName_+  pOidc_ =+    AssociateIdentityProviderConfig'+      { clientRequestToken =+          Prelude.Nothing,+        tags = Prelude.Nothing,+        clusterName = pClusterName_,+        oidc = pOidc_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+associateIdentityProviderConfig_clientRequestToken :: Lens.Lens' AssociateIdentityProviderConfig (Prelude.Maybe Prelude.Text)+associateIdentityProviderConfig_clientRequestToken = Lens.lens (\AssociateIdentityProviderConfig' {clientRequestToken} -> clientRequestToken) (\s@AssociateIdentityProviderConfig' {} a -> s {clientRequestToken = a} :: AssociateIdentityProviderConfig)++-- | The metadata to apply to the configuration to assist with categorization+-- and organization. Each tag consists of a key and an optional value. You+-- define both.+associateIdentityProviderConfig_tags :: Lens.Lens' AssociateIdentityProviderConfig (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+associateIdentityProviderConfig_tags = Lens.lens (\AssociateIdentityProviderConfig' {tags} -> tags) (\s@AssociateIdentityProviderConfig' {} a -> s {tags = a} :: AssociateIdentityProviderConfig) Prelude.. Lens.mapping Lens.coerced++-- | The name of the cluster to associate the configuration to.+associateIdentityProviderConfig_clusterName :: Lens.Lens' AssociateIdentityProviderConfig Prelude.Text+associateIdentityProviderConfig_clusterName = Lens.lens (\AssociateIdentityProviderConfig' {clusterName} -> clusterName) (\s@AssociateIdentityProviderConfig' {} a -> s {clusterName = a} :: AssociateIdentityProviderConfig)++-- | An object representing an OpenID Connect (OIDC) identity provider+-- configuration.+associateIdentityProviderConfig_oidc :: Lens.Lens' AssociateIdentityProviderConfig OidcIdentityProviderConfigRequest+associateIdentityProviderConfig_oidc = Lens.lens (\AssociateIdentityProviderConfig' {oidc} -> oidc) (\s@AssociateIdentityProviderConfig' {} a -> s {oidc = a} :: AssociateIdentityProviderConfig)++instance+  Core.AWSRequest+    AssociateIdentityProviderConfig+  where+  type+    AWSResponse AssociateIdentityProviderConfig =+      AssociateIdentityProviderConfigResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AssociateIdentityProviderConfigResponse'+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "update")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    AssociateIdentityProviderConfig+  where+  hashWithSalt+    _salt+    AssociateIdentityProviderConfig' {..} =+      _salt+        `Prelude.hashWithSalt` clientRequestToken+        `Prelude.hashWithSalt` tags+        `Prelude.hashWithSalt` clusterName+        `Prelude.hashWithSalt` oidc++instance+  Prelude.NFData+    AssociateIdentityProviderConfig+  where+  rnf AssociateIdentityProviderConfig' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf oidc++instance+  Data.ToHeaders+    AssociateIdentityProviderConfig+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AssociateIdentityProviderConfig where+  toJSON AssociateIdentityProviderConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("oidc" Data..= oidc)+          ]+      )++instance Data.ToPath AssociateIdentityProviderConfig where+  toPath AssociateIdentityProviderConfig' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/identity-provider-configs/associate"+      ]++instance Data.ToQuery AssociateIdentityProviderConfig where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAssociateIdentityProviderConfigResponse' smart constructor.+data AssociateIdentityProviderConfigResponse = AssociateIdentityProviderConfigResponse'+  { -- | The tags for the resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    update :: Prelude.Maybe Update,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateIdentityProviderConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tags', 'associateIdentityProviderConfigResponse_tags' - The tags for the resource.+--+-- 'update', 'associateIdentityProviderConfigResponse_update' - Undocumented member.+--+-- 'httpStatus', 'associateIdentityProviderConfigResponse_httpStatus' - The response's http status code.+newAssociateIdentityProviderConfigResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AssociateIdentityProviderConfigResponse+newAssociateIdentityProviderConfigResponse+  pHttpStatus_ =+    AssociateIdentityProviderConfigResponse'+      { tags =+          Prelude.Nothing,+        update = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The tags for the resource.+associateIdentityProviderConfigResponse_tags :: Lens.Lens' AssociateIdentityProviderConfigResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+associateIdentityProviderConfigResponse_tags = Lens.lens (\AssociateIdentityProviderConfigResponse' {tags} -> tags) (\s@AssociateIdentityProviderConfigResponse' {} a -> s {tags = a} :: AssociateIdentityProviderConfigResponse) Prelude.. Lens.mapping Lens.coerced++-- | Undocumented member.+associateIdentityProviderConfigResponse_update :: Lens.Lens' AssociateIdentityProviderConfigResponse (Prelude.Maybe Update)+associateIdentityProviderConfigResponse_update = Lens.lens (\AssociateIdentityProviderConfigResponse' {update} -> update) (\s@AssociateIdentityProviderConfigResponse' {} a -> s {update = a} :: AssociateIdentityProviderConfigResponse)++-- | The response's http status code.+associateIdentityProviderConfigResponse_httpStatus :: Lens.Lens' AssociateIdentityProviderConfigResponse Prelude.Int+associateIdentityProviderConfigResponse_httpStatus = Lens.lens (\AssociateIdentityProviderConfigResponse' {httpStatus} -> httpStatus) (\s@AssociateIdentityProviderConfigResponse' {} a -> s {httpStatus = a} :: AssociateIdentityProviderConfigResponse)++instance+  Prelude.NFData+    AssociateIdentityProviderConfigResponse+  where+  rnf AssociateIdentityProviderConfigResponse' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf update+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/CreateAddon.hs view
@@ -0,0 +1,392 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.CreateAddon+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates an Amazon EKS add-on.+--+-- Amazon EKS add-ons help to automate the provisioning and lifecycle+-- management of common operational software for Amazon EKS clusters. For+-- more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html Amazon EKS add-ons>+-- in the /Amazon EKS User Guide/.+module Amazonka.EKS.CreateAddon+  ( -- * Creating a Request+    CreateAddon (..),+    newCreateAddon,++    -- * Request Lenses+    createAddon_addonVersion,+    createAddon_clientRequestToken,+    createAddon_configurationValues,+    createAddon_resolveConflicts,+    createAddon_serviceAccountRoleArn,+    createAddon_tags,+    createAddon_clusterName,+    createAddon_addonName,++    -- * Destructuring the Response+    CreateAddonResponse (..),+    newCreateAddonResponse,++    -- * Response Lenses+    createAddonResponse_addon,+    createAddonResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateAddon' smart constructor.+data CreateAddon = CreateAddon'+  { -- | The version of the add-on. The version must match one of the versions+    -- returned by+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+    -- .+    addonVersion :: Prelude.Maybe Prelude.Text,+    -- | A unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | The set of configuration values for the add-on that\'s created. The+    -- values that you provide are validated against the schema in+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonConfiguration.html DescribeAddonConfiguration>+    -- .+    configurationValues :: Prelude.Maybe Prelude.Text,+    -- | How to resolve field value conflicts for an Amazon EKS add-on. Conflicts+    -- are handled based on the value you choose:+    --+    -- -   __None__ – If the self-managed version of the add-on is installed on+    --     your cluster, Amazon EKS doesn\'t change the value. Creation of the+    --     add-on might fail.+    --+    -- -   __Overwrite__ – If the self-managed version of the add-on is+    --     installed on your cluster and the Amazon EKS default value is+    --     different than the existing value, Amazon EKS changes the value to+    --     the Amazon EKS default value.+    --+    -- -   __Preserve__ – Not supported. You can set this value when updating+    --     an add-on though. For more information, see+    --     <https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html UpdateAddon>.+    --+    -- If you don\'t currently have the self-managed version of the add-on+    -- installed on your cluster, the Amazon EKS add-on is installed. Amazon+    -- EKS sets all values to default values, regardless of the option that you+    -- specify.+    resolveConflicts :: Prelude.Maybe ResolveConflicts,+    -- | The Amazon Resource Name (ARN) of an existing IAM role to bind to the+    -- add-on\'s service account. The role must be assigned the IAM permissions+    -- required by the add-on. If you don\'t specify an existing IAM role, then+    -- the add-on uses the permissions assigned to the node IAM role. For more+    -- information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html Amazon EKS node IAM role>+    -- in the /Amazon EKS User Guide/.+    --+    -- To specify an existing IAM role, you must have an IAM OpenID Connect+    -- (OIDC) provider created for your cluster. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html Enabling IAM roles for service accounts on your cluster>+    -- in the /Amazon EKS User Guide/.+    serviceAccountRoleArn :: Prelude.Maybe Prelude.Text,+    -- | The metadata to apply to the cluster to assist with categorization and+    -- organization. Each tag consists of a key and an optional value. You+    -- define both.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of the cluster to create the add-on for.+    clusterName :: Prelude.Text,+    -- | The name of the add-on. The name must match one of the names that+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+    -- returns.+    addonName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateAddon' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addonVersion', 'createAddon_addonVersion' - The version of the add-on. The version must match one of the versions+-- returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+-- .+--+-- 'clientRequestToken', 'createAddon_clientRequestToken' - A unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'configurationValues', 'createAddon_configurationValues' - The set of configuration values for the add-on that\'s created. The+-- values that you provide are validated against the schema in+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonConfiguration.html DescribeAddonConfiguration>+-- .+--+-- 'resolveConflicts', 'createAddon_resolveConflicts' - How to resolve field value conflicts for an Amazon EKS add-on. Conflicts+-- are handled based on the value you choose:+--+-- -   __None__ – If the self-managed version of the add-on is installed on+--     your cluster, Amazon EKS doesn\'t change the value. Creation of the+--     add-on might fail.+--+-- -   __Overwrite__ – If the self-managed version of the add-on is+--     installed on your cluster and the Amazon EKS default value is+--     different than the existing value, Amazon EKS changes the value to+--     the Amazon EKS default value.+--+-- -   __Preserve__ – Not supported. You can set this value when updating+--     an add-on though. For more information, see+--     <https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html UpdateAddon>.+--+-- If you don\'t currently have the self-managed version of the add-on+-- installed on your cluster, the Amazon EKS add-on is installed. Amazon+-- EKS sets all values to default values, regardless of the option that you+-- specify.+--+-- 'serviceAccountRoleArn', 'createAddon_serviceAccountRoleArn' - The Amazon Resource Name (ARN) of an existing IAM role to bind to the+-- add-on\'s service account. The role must be assigned the IAM permissions+-- required by the add-on. If you don\'t specify an existing IAM role, then+-- the add-on uses the permissions assigned to the node IAM role. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html Amazon EKS node IAM role>+-- in the /Amazon EKS User Guide/.+--+-- To specify an existing IAM role, you must have an IAM OpenID Connect+-- (OIDC) provider created for your cluster. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html Enabling IAM roles for service accounts on your cluster>+-- in the /Amazon EKS User Guide/.+--+-- 'tags', 'createAddon_tags' - The metadata to apply to the cluster to assist with categorization and+-- organization. Each tag consists of a key and an optional value. You+-- define both.+--+-- 'clusterName', 'createAddon_clusterName' - The name of the cluster to create the add-on for.+--+-- 'addonName', 'createAddon_addonName' - The name of the add-on. The name must match one of the names that+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+-- returns.+newCreateAddon ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'addonName'+  Prelude.Text ->+  CreateAddon+newCreateAddon pClusterName_ pAddonName_ =+  CreateAddon'+    { addonVersion = Prelude.Nothing,+      clientRequestToken = Prelude.Nothing,+      configurationValues = Prelude.Nothing,+      resolveConflicts = Prelude.Nothing,+      serviceAccountRoleArn = Prelude.Nothing,+      tags = Prelude.Nothing,+      clusterName = pClusterName_,+      addonName = pAddonName_+    }++-- | The version of the add-on. The version must match one of the versions+-- returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+-- .+createAddon_addonVersion :: Lens.Lens' CreateAddon (Prelude.Maybe Prelude.Text)+createAddon_addonVersion = Lens.lens (\CreateAddon' {addonVersion} -> addonVersion) (\s@CreateAddon' {} a -> s {addonVersion = a} :: CreateAddon)++-- | A unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+createAddon_clientRequestToken :: Lens.Lens' CreateAddon (Prelude.Maybe Prelude.Text)+createAddon_clientRequestToken = Lens.lens (\CreateAddon' {clientRequestToken} -> clientRequestToken) (\s@CreateAddon' {} a -> s {clientRequestToken = a} :: CreateAddon)++-- | The set of configuration values for the add-on that\'s created. The+-- values that you provide are validated against the schema in+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonConfiguration.html DescribeAddonConfiguration>+-- .+createAddon_configurationValues :: Lens.Lens' CreateAddon (Prelude.Maybe Prelude.Text)+createAddon_configurationValues = Lens.lens (\CreateAddon' {configurationValues} -> configurationValues) (\s@CreateAddon' {} a -> s {configurationValues = a} :: CreateAddon)++-- | How to resolve field value conflicts for an Amazon EKS add-on. Conflicts+-- are handled based on the value you choose:+--+-- -   __None__ – If the self-managed version of the add-on is installed on+--     your cluster, Amazon EKS doesn\'t change the value. Creation of the+--     add-on might fail.+--+-- -   __Overwrite__ – If the self-managed version of the add-on is+--     installed on your cluster and the Amazon EKS default value is+--     different than the existing value, Amazon EKS changes the value to+--     the Amazon EKS default value.+--+-- -   __Preserve__ – Not supported. You can set this value when updating+--     an add-on though. For more information, see+--     <https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html UpdateAddon>.+--+-- If you don\'t currently have the self-managed version of the add-on+-- installed on your cluster, the Amazon EKS add-on is installed. Amazon+-- EKS sets all values to default values, regardless of the option that you+-- specify.+createAddon_resolveConflicts :: Lens.Lens' CreateAddon (Prelude.Maybe ResolveConflicts)+createAddon_resolveConflicts = Lens.lens (\CreateAddon' {resolveConflicts} -> resolveConflicts) (\s@CreateAddon' {} a -> s {resolveConflicts = a} :: CreateAddon)++-- | The Amazon Resource Name (ARN) of an existing IAM role to bind to the+-- add-on\'s service account. The role must be assigned the IAM permissions+-- required by the add-on. If you don\'t specify an existing IAM role, then+-- the add-on uses the permissions assigned to the node IAM role. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html Amazon EKS node IAM role>+-- in the /Amazon EKS User Guide/.+--+-- To specify an existing IAM role, you must have an IAM OpenID Connect+-- (OIDC) provider created for your cluster. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html Enabling IAM roles for service accounts on your cluster>+-- in the /Amazon EKS User Guide/.+createAddon_serviceAccountRoleArn :: Lens.Lens' CreateAddon (Prelude.Maybe Prelude.Text)+createAddon_serviceAccountRoleArn = Lens.lens (\CreateAddon' {serviceAccountRoleArn} -> serviceAccountRoleArn) (\s@CreateAddon' {} a -> s {serviceAccountRoleArn = a} :: CreateAddon)++-- | The metadata to apply to the cluster to assist with categorization and+-- organization. Each tag consists of a key and an optional value. You+-- define both.+createAddon_tags :: Lens.Lens' CreateAddon (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createAddon_tags = Lens.lens (\CreateAddon' {tags} -> tags) (\s@CreateAddon' {} a -> s {tags = a} :: CreateAddon) Prelude.. Lens.mapping Lens.coerced++-- | The name of the cluster to create the add-on for.+createAddon_clusterName :: Lens.Lens' CreateAddon Prelude.Text+createAddon_clusterName = Lens.lens (\CreateAddon' {clusterName} -> clusterName) (\s@CreateAddon' {} a -> s {clusterName = a} :: CreateAddon)++-- | The name of the add-on. The name must match one of the names that+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+-- returns.+createAddon_addonName :: Lens.Lens' CreateAddon Prelude.Text+createAddon_addonName = Lens.lens (\CreateAddon' {addonName} -> addonName) (\s@CreateAddon' {} a -> s {addonName = a} :: CreateAddon)++instance Core.AWSRequest CreateAddon where+  type AWSResponse CreateAddon = CreateAddonResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateAddonResponse'+            Prelude.<$> (x Data..?> "addon")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateAddon where+  hashWithSalt _salt CreateAddon' {..} =+    _salt+      `Prelude.hashWithSalt` addonVersion+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` configurationValues+      `Prelude.hashWithSalt` resolveConflicts+      `Prelude.hashWithSalt` serviceAccountRoleArn+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` addonName++instance Prelude.NFData CreateAddon where+  rnf CreateAddon' {..} =+    Prelude.rnf addonVersion+      `Prelude.seq` Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf configurationValues+      `Prelude.seq` Prelude.rnf resolveConflicts+      `Prelude.seq` Prelude.rnf serviceAccountRoleArn+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf addonName++instance Data.ToHeaders CreateAddon where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateAddon where+  toJSON CreateAddon' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("addonVersion" Data..=) Prelude.<$> addonVersion,+            ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("configurationValues" Data..=)+              Prelude.<$> configurationValues,+            ("resolveConflicts" Data..=)+              Prelude.<$> resolveConflicts,+            ("serviceAccountRoleArn" Data..=)+              Prelude.<$> serviceAccountRoleArn,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("addonName" Data..= addonName)+          ]+      )++instance Data.ToPath CreateAddon where+  toPath CreateAddon' {..} =+    Prelude.mconcat+      ["/clusters/", Data.toBS clusterName, "/addons"]++instance Data.ToQuery CreateAddon where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateAddonResponse' smart constructor.+data CreateAddonResponse = CreateAddonResponse'+  { addon :: Prelude.Maybe Addon,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateAddonResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addon', 'createAddonResponse_addon' - Undocumented member.+--+-- 'httpStatus', 'createAddonResponse_httpStatus' - The response's http status code.+newCreateAddonResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateAddonResponse+newCreateAddonResponse pHttpStatus_ =+  CreateAddonResponse'+    { addon = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+createAddonResponse_addon :: Lens.Lens' CreateAddonResponse (Prelude.Maybe Addon)+createAddonResponse_addon = Lens.lens (\CreateAddonResponse' {addon} -> addon) (\s@CreateAddonResponse' {} a -> s {addon = a} :: CreateAddonResponse)++-- | The response's http status code.+createAddonResponse_httpStatus :: Lens.Lens' CreateAddonResponse Prelude.Int+createAddonResponse_httpStatus = Lens.lens (\CreateAddonResponse' {httpStatus} -> httpStatus) (\s@CreateAddonResponse' {} a -> s {httpStatus = a} :: CreateAddonResponse)++instance Prelude.NFData CreateAddonResponse where+  rnf CreateAddonResponse' {..} =+    Prelude.rnf addon+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/CreateCluster.hs view
@@ -0,0 +1,417 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.CreateCluster+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates an Amazon EKS control plane.+--+-- The Amazon EKS control plane consists of control plane instances that+-- run the Kubernetes software, such as @etcd@ and the API server. The+-- control plane runs in an account managed by Amazon Web Services, and the+-- Kubernetes API is exposed by the Amazon EKS API server endpoint. Each+-- Amazon EKS cluster control plane is single tenant and unique. It runs on+-- its own set of Amazon EC2 instances.+--+-- The cluster control plane is provisioned across multiple Availability+-- Zones and fronted by an Elastic Load Balancing Network Load Balancer.+-- Amazon EKS also provisions elastic network interfaces in your VPC+-- subnets to provide connectivity from the control plane instances to the+-- nodes (for example, to support @kubectl exec@, @logs@, and @proxy@ data+-- flows).+--+-- Amazon EKS nodes run in your Amazon Web Services account and connect to+-- your cluster\'s control plane over the Kubernetes API server endpoint+-- and a certificate file that is created for your cluster.+--+-- In most cases, it takes several minutes to create a cluster. After you+-- create an Amazon EKS cluster, you must configure your Kubernetes tooling+-- to communicate with the API server and launch nodes into your cluster.+-- For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/managing-auth.html Managing Cluster Authentication>+-- and+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-workers.html Launching Amazon EKS nodes>+-- in the /Amazon EKS User Guide/.+module Amazonka.EKS.CreateCluster+  ( -- * Creating a Request+    CreateCluster (..),+    newCreateCluster,++    -- * Request Lenses+    createCluster_clientRequestToken,+    createCluster_encryptionConfig,+    createCluster_kubernetesNetworkConfig,+    createCluster_logging,+    createCluster_outpostConfig,+    createCluster_tags,+    createCluster_version,+    createCluster_name,+    createCluster_roleArn,+    createCluster_resourcesVpcConfig,++    -- * Destructuring the Response+    CreateClusterResponse (..),+    newCreateClusterResponse,++    -- * Response Lenses+    createClusterResponse_cluster,+    createClusterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateCluster' smart constructor.+data CreateCluster = CreateCluster'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | The encryption configuration for the cluster.+    encryptionConfig :: Prelude.Maybe [EncryptionConfig],+    -- | The Kubernetes network configuration for the cluster.+    kubernetesNetworkConfig :: Prelude.Maybe KubernetesNetworkConfigRequest,+    -- | Enable or disable exporting the Kubernetes control plane logs for your+    -- cluster to CloudWatch Logs. By default, cluster control plane logs+    -- aren\'t exported to CloudWatch Logs. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html Amazon EKS Cluster control plane logs>+    -- in the //Amazon EKS User Guide// .+    --+    -- CloudWatch Logs ingestion, archive storage, and data scanning rates+    -- apply to exported control plane logs. For more information, see+    -- <http://aws.amazon.com/cloudwatch/pricing/ CloudWatch Pricing>.+    logging :: Prelude.Maybe Logging,+    -- | An object representing the configuration of your local Amazon EKS+    -- cluster on an Amazon Web Services Outpost. Before creating a local+    -- cluster on an Outpost, review+    -- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-local-cluster-overview.html Local clusters for Amazon EKS on Amazon Web Services Outposts>+    -- in the /Amazon EKS User Guide/. This object isn\'t available for+    -- creating Amazon EKS clusters on the Amazon Web Services cloud.+    outpostConfig :: Prelude.Maybe OutpostConfigRequest,+    -- | The metadata to apply to the cluster to assist with categorization and+    -- organization. Each tag consists of a key and an optional value. You+    -- define both.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The desired Kubernetes version for your cluster. If you don\'t specify a+    -- value here, the default version available in Amazon EKS is used.+    --+    -- The default version might not be the latest version available.+    version :: Prelude.Maybe Prelude.Text,+    -- | The unique name to give to your cluster.+    name :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the IAM role that provides permissions+    -- for the Kubernetes control plane to make calls to Amazon Web Services+    -- API operations on your behalf. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html Amazon EKS Service IAM Role>+    -- in the //Amazon EKS User Guide// .+    roleArn :: Prelude.Text,+    -- | The VPC configuration that\'s used by the cluster control plane. Amazon+    -- EKS VPC resources have specific requirements to work properly with+    -- Kubernetes. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html Cluster VPC Considerations>+    -- and+    -- <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html Cluster Security Group Considerations>+    -- in the /Amazon EKS User Guide/. You must specify at least two subnets.+    -- You can specify up to five security groups. However, we recommend that+    -- you use a dedicated security group for your cluster control plane.+    resourcesVpcConfig :: VpcConfigRequest+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateCluster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'createCluster_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'encryptionConfig', 'createCluster_encryptionConfig' - The encryption configuration for the cluster.+--+-- 'kubernetesNetworkConfig', 'createCluster_kubernetesNetworkConfig' - The Kubernetes network configuration for the cluster.+--+-- 'logging', 'createCluster_logging' - Enable or disable exporting the Kubernetes control plane logs for your+-- cluster to CloudWatch Logs. By default, cluster control plane logs+-- aren\'t exported to CloudWatch Logs. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html Amazon EKS Cluster control plane logs>+-- in the //Amazon EKS User Guide// .+--+-- CloudWatch Logs ingestion, archive storage, and data scanning rates+-- apply to exported control plane logs. For more information, see+-- <http://aws.amazon.com/cloudwatch/pricing/ CloudWatch Pricing>.+--+-- 'outpostConfig', 'createCluster_outpostConfig' - An object representing the configuration of your local Amazon EKS+-- cluster on an Amazon Web Services Outpost. Before creating a local+-- cluster on an Outpost, review+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-local-cluster-overview.html Local clusters for Amazon EKS on Amazon Web Services Outposts>+-- in the /Amazon EKS User Guide/. This object isn\'t available for+-- creating Amazon EKS clusters on the Amazon Web Services cloud.+--+-- 'tags', 'createCluster_tags' - The metadata to apply to the cluster to assist with categorization and+-- organization. Each tag consists of a key and an optional value. You+-- define both.+--+-- 'version', 'createCluster_version' - The desired Kubernetes version for your cluster. If you don\'t specify a+-- value here, the default version available in Amazon EKS is used.+--+-- The default version might not be the latest version available.+--+-- 'name', 'createCluster_name' - The unique name to give to your cluster.+--+-- 'roleArn', 'createCluster_roleArn' - The Amazon Resource Name (ARN) of the IAM role that provides permissions+-- for the Kubernetes control plane to make calls to Amazon Web Services+-- API operations on your behalf. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html Amazon EKS Service IAM Role>+-- in the //Amazon EKS User Guide// .+--+-- 'resourcesVpcConfig', 'createCluster_resourcesVpcConfig' - The VPC configuration that\'s used by the cluster control plane. Amazon+-- EKS VPC resources have specific requirements to work properly with+-- Kubernetes. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html Cluster VPC Considerations>+-- and+-- <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html Cluster Security Group Considerations>+-- in the /Amazon EKS User Guide/. You must specify at least two subnets.+-- You can specify up to five security groups. However, we recommend that+-- you use a dedicated security group for your cluster control plane.+newCreateCluster ::+  -- | 'name'+  Prelude.Text ->+  -- | 'roleArn'+  Prelude.Text ->+  -- | 'resourcesVpcConfig'+  VpcConfigRequest ->+  CreateCluster+newCreateCluster+  pName_+  pRoleArn_+  pResourcesVpcConfig_ =+    CreateCluster'+      { clientRequestToken =+          Prelude.Nothing,+        encryptionConfig = Prelude.Nothing,+        kubernetesNetworkConfig = Prelude.Nothing,+        logging = Prelude.Nothing,+        outpostConfig = Prelude.Nothing,+        tags = Prelude.Nothing,+        version = Prelude.Nothing,+        name = pName_,+        roleArn = pRoleArn_,+        resourcesVpcConfig = pResourcesVpcConfig_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+createCluster_clientRequestToken :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Text)+createCluster_clientRequestToken = Lens.lens (\CreateCluster' {clientRequestToken} -> clientRequestToken) (\s@CreateCluster' {} a -> s {clientRequestToken = a} :: CreateCluster)++-- | The encryption configuration for the cluster.+createCluster_encryptionConfig :: Lens.Lens' CreateCluster (Prelude.Maybe [EncryptionConfig])+createCluster_encryptionConfig = Lens.lens (\CreateCluster' {encryptionConfig} -> encryptionConfig) (\s@CreateCluster' {} a -> s {encryptionConfig = a} :: CreateCluster) Prelude.. Lens.mapping Lens.coerced++-- | The Kubernetes network configuration for the cluster.+createCluster_kubernetesNetworkConfig :: Lens.Lens' CreateCluster (Prelude.Maybe KubernetesNetworkConfigRequest)+createCluster_kubernetesNetworkConfig = Lens.lens (\CreateCluster' {kubernetesNetworkConfig} -> kubernetesNetworkConfig) (\s@CreateCluster' {} a -> s {kubernetesNetworkConfig = a} :: CreateCluster)++-- | Enable or disable exporting the Kubernetes control plane logs for your+-- cluster to CloudWatch Logs. By default, cluster control plane logs+-- aren\'t exported to CloudWatch Logs. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html Amazon EKS Cluster control plane logs>+-- in the //Amazon EKS User Guide// .+--+-- CloudWatch Logs ingestion, archive storage, and data scanning rates+-- apply to exported control plane logs. For more information, see+-- <http://aws.amazon.com/cloudwatch/pricing/ CloudWatch Pricing>.+createCluster_logging :: Lens.Lens' CreateCluster (Prelude.Maybe Logging)+createCluster_logging = Lens.lens (\CreateCluster' {logging} -> logging) (\s@CreateCluster' {} a -> s {logging = a} :: CreateCluster)++-- | An object representing the configuration of your local Amazon EKS+-- cluster on an Amazon Web Services Outpost. Before creating a local+-- cluster on an Outpost, review+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-local-cluster-overview.html Local clusters for Amazon EKS on Amazon Web Services Outposts>+-- in the /Amazon EKS User Guide/. This object isn\'t available for+-- creating Amazon EKS clusters on the Amazon Web Services cloud.+createCluster_outpostConfig :: Lens.Lens' CreateCluster (Prelude.Maybe OutpostConfigRequest)+createCluster_outpostConfig = Lens.lens (\CreateCluster' {outpostConfig} -> outpostConfig) (\s@CreateCluster' {} a -> s {outpostConfig = a} :: CreateCluster)++-- | The metadata to apply to the cluster to assist with categorization and+-- organization. Each tag consists of a key and an optional value. You+-- define both.+createCluster_tags :: Lens.Lens' CreateCluster (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createCluster_tags = Lens.lens (\CreateCluster' {tags} -> tags) (\s@CreateCluster' {} a -> s {tags = a} :: CreateCluster) Prelude.. Lens.mapping Lens.coerced++-- | The desired Kubernetes version for your cluster. If you don\'t specify a+-- value here, the default version available in Amazon EKS is used.+--+-- The default version might not be the latest version available.+createCluster_version :: Lens.Lens' CreateCluster (Prelude.Maybe Prelude.Text)+createCluster_version = Lens.lens (\CreateCluster' {version} -> version) (\s@CreateCluster' {} a -> s {version = a} :: CreateCluster)++-- | The unique name to give to your cluster.+createCluster_name :: Lens.Lens' CreateCluster Prelude.Text+createCluster_name = Lens.lens (\CreateCluster' {name} -> name) (\s@CreateCluster' {} a -> s {name = a} :: CreateCluster)++-- | The Amazon Resource Name (ARN) of the IAM role that provides permissions+-- for the Kubernetes control plane to make calls to Amazon Web Services+-- API operations on your behalf. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html Amazon EKS Service IAM Role>+-- in the //Amazon EKS User Guide// .+createCluster_roleArn :: Lens.Lens' CreateCluster Prelude.Text+createCluster_roleArn = Lens.lens (\CreateCluster' {roleArn} -> roleArn) (\s@CreateCluster' {} a -> s {roleArn = a} :: CreateCluster)++-- | The VPC configuration that\'s used by the cluster control plane. Amazon+-- EKS VPC resources have specific requirements to work properly with+-- Kubernetes. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html Cluster VPC Considerations>+-- and+-- <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html Cluster Security Group Considerations>+-- in the /Amazon EKS User Guide/. You must specify at least two subnets.+-- You can specify up to five security groups. However, we recommend that+-- you use a dedicated security group for your cluster control plane.+createCluster_resourcesVpcConfig :: Lens.Lens' CreateCluster VpcConfigRequest+createCluster_resourcesVpcConfig = Lens.lens (\CreateCluster' {resourcesVpcConfig} -> resourcesVpcConfig) (\s@CreateCluster' {} a -> s {resourcesVpcConfig = a} :: CreateCluster)++instance Core.AWSRequest CreateCluster where+  type+    AWSResponse CreateCluster =+      CreateClusterResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateClusterResponse'+            Prelude.<$> (x Data..?> "cluster")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateCluster where+  hashWithSalt _salt CreateCluster' {..} =+    _salt+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` encryptionConfig+      `Prelude.hashWithSalt` kubernetesNetworkConfig+      `Prelude.hashWithSalt` logging+      `Prelude.hashWithSalt` outpostConfig+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` version+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` roleArn+      `Prelude.hashWithSalt` resourcesVpcConfig++instance Prelude.NFData CreateCluster where+  rnf CreateCluster' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf encryptionConfig+      `Prelude.seq` Prelude.rnf kubernetesNetworkConfig+      `Prelude.seq` Prelude.rnf logging+      `Prelude.seq` Prelude.rnf outpostConfig+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf version+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf resourcesVpcConfig++instance Data.ToHeaders CreateCluster where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateCluster where+  toJSON CreateCluster' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("encryptionConfig" Data..=)+              Prelude.<$> encryptionConfig,+            ("kubernetesNetworkConfig" Data..=)+              Prelude.<$> kubernetesNetworkConfig,+            ("logging" Data..=) Prelude.<$> logging,+            ("outpostConfig" Data..=) Prelude.<$> outpostConfig,+            ("tags" Data..=) Prelude.<$> tags,+            ("version" Data..=) Prelude.<$> version,+            Prelude.Just ("name" Data..= name),+            Prelude.Just ("roleArn" Data..= roleArn),+            Prelude.Just+              ("resourcesVpcConfig" Data..= resourcesVpcConfig)+          ]+      )++instance Data.ToPath CreateCluster where+  toPath = Prelude.const "/clusters"++instance Data.ToQuery CreateCluster where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateClusterResponse' smart constructor.+data CreateClusterResponse = CreateClusterResponse'+  { -- | The full description of your new cluster.+    cluster :: Prelude.Maybe Cluster,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateClusterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cluster', 'createClusterResponse_cluster' - The full description of your new cluster.+--+-- 'httpStatus', 'createClusterResponse_httpStatus' - The response's http status code.+newCreateClusterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateClusterResponse+newCreateClusterResponse pHttpStatus_ =+  CreateClusterResponse'+    { cluster = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The full description of your new cluster.+createClusterResponse_cluster :: Lens.Lens' CreateClusterResponse (Prelude.Maybe Cluster)+createClusterResponse_cluster = Lens.lens (\CreateClusterResponse' {cluster} -> cluster) (\s@CreateClusterResponse' {} a -> s {cluster = a} :: CreateClusterResponse)++-- | The response's http status code.+createClusterResponse_httpStatus :: Lens.Lens' CreateClusterResponse Prelude.Int+createClusterResponse_httpStatus = Lens.lens (\CreateClusterResponse' {httpStatus} -> httpStatus) (\s@CreateClusterResponse' {} a -> s {httpStatus = a} :: CreateClusterResponse)++instance Prelude.NFData CreateClusterResponse where+  rnf CreateClusterResponse' {..} =+    Prelude.rnf cluster+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/CreateFargateProfile.hs view
@@ -0,0 +1,348 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.CreateFargateProfile+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates an Fargate profile for your Amazon EKS cluster. You must have at+-- least one Fargate profile in a cluster to be able to run pods on+-- Fargate.+--+-- The Fargate profile allows an administrator to declare which pods run on+-- Fargate and specify which pods run on which Fargate profile. This+-- declaration is done through the profile’s selectors. Each profile can+-- have up to five selectors that contain a namespace and labels. A+-- namespace is required for every selector. The label field consists of+-- multiple optional key-value pairs. Pods that match the selectors are+-- scheduled on Fargate. If a to-be-scheduled pod matches any of the+-- selectors in the Fargate profile, then that pod is run on Fargate.+--+-- When you create a Fargate profile, you must specify a pod execution role+-- to use with the pods that are scheduled with the profile. This role is+-- added to the cluster\'s Kubernetes+-- <https://kubernetes.io/docs/admin/authorization/rbac/ Role Based Access Control>+-- (RBAC) for authorization so that the @kubelet@ that is running on the+-- Fargate infrastructure can register with your Amazon EKS cluster so that+-- it can appear in your cluster as a node. The pod execution role also+-- provides IAM permissions to the Fargate infrastructure to allow read+-- access to Amazon ECR image repositories. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html Pod Execution Role>+-- in the /Amazon EKS User Guide/.+--+-- Fargate profiles are immutable. However, you can create a new updated+-- profile to replace an existing profile and then delete the original+-- after the updated profile has finished creating.+--+-- If any Fargate profiles in a cluster are in the @DELETING@ status, you+-- must wait for that Fargate profile to finish deleting before you can+-- create any other profiles in that cluster.+--+-- For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html Fargate Profile>+-- in the /Amazon EKS User Guide/.+module Amazonka.EKS.CreateFargateProfile+  ( -- * Creating a Request+    CreateFargateProfile (..),+    newCreateFargateProfile,++    -- * Request Lenses+    createFargateProfile_clientRequestToken,+    createFargateProfile_selectors,+    createFargateProfile_subnets,+    createFargateProfile_tags,+    createFargateProfile_fargateProfileName,+    createFargateProfile_clusterName,+    createFargateProfile_podExecutionRoleArn,++    -- * Destructuring the Response+    CreateFargateProfileResponse (..),+    newCreateFargateProfileResponse,++    -- * Response Lenses+    createFargateProfileResponse_fargateProfile,+    createFargateProfileResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateFargateProfile' smart constructor.+data CreateFargateProfile = CreateFargateProfile'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | The selectors to match for pods to use this Fargate profile. Each+    -- selector must have an associated namespace. Optionally, you can also+    -- specify labels for a namespace. You may specify up to five selectors in+    -- a Fargate profile.+    selectors :: Prelude.Maybe [FargateProfileSelector],+    -- | The IDs of subnets to launch your pods into. At this time, pods running+    -- on Fargate are not assigned public IP addresses, so only private subnets+    -- (with no direct route to an Internet Gateway) are accepted for this+    -- parameter.+    subnets :: Prelude.Maybe [Prelude.Text],+    -- | The metadata to apply to the Fargate profile to assist with+    -- categorization and organization. Each tag consists of a key and an+    -- optional value. You define both. Fargate profile tags do not propagate+    -- to any other resources associated with the Fargate profile, such as the+    -- pods that are scheduled with it.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of the Fargate profile.+    fargateProfileName :: Prelude.Text,+    -- | The name of the Amazon EKS cluster to apply the Fargate profile to.+    clusterName :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the pod execution role to use for pods+    -- that match the selectors in the Fargate profile. The pod execution role+    -- allows Fargate infrastructure to register with your cluster as a node,+    -- and it provides read access to Amazon ECR image repositories. For more+    -- information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html Pod Execution Role>+    -- in the /Amazon EKS User Guide/.+    podExecutionRoleArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateFargateProfile' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'createFargateProfile_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'selectors', 'createFargateProfile_selectors' - The selectors to match for pods to use this Fargate profile. Each+-- selector must have an associated namespace. Optionally, you can also+-- specify labels for a namespace. You may specify up to five selectors in+-- a Fargate profile.+--+-- 'subnets', 'createFargateProfile_subnets' - The IDs of subnets to launch your pods into. At this time, pods running+-- on Fargate are not assigned public IP addresses, so only private subnets+-- (with no direct route to an Internet Gateway) are accepted for this+-- parameter.+--+-- 'tags', 'createFargateProfile_tags' - The metadata to apply to the Fargate profile to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value. You define both. Fargate profile tags do not propagate+-- to any other resources associated with the Fargate profile, such as the+-- pods that are scheduled with it.+--+-- 'fargateProfileName', 'createFargateProfile_fargateProfileName' - The name of the Fargate profile.+--+-- 'clusterName', 'createFargateProfile_clusterName' - The name of the Amazon EKS cluster to apply the Fargate profile to.+--+-- 'podExecutionRoleArn', 'createFargateProfile_podExecutionRoleArn' - The Amazon Resource Name (ARN) of the pod execution role to use for pods+-- that match the selectors in the Fargate profile. The pod execution role+-- allows Fargate infrastructure to register with your cluster as a node,+-- and it provides read access to Amazon ECR image repositories. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html Pod Execution Role>+-- in the /Amazon EKS User Guide/.+newCreateFargateProfile ::+  -- | 'fargateProfileName'+  Prelude.Text ->+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'podExecutionRoleArn'+  Prelude.Text ->+  CreateFargateProfile+newCreateFargateProfile+  pFargateProfileName_+  pClusterName_+  pPodExecutionRoleArn_ =+    CreateFargateProfile'+      { clientRequestToken =+          Prelude.Nothing,+        selectors = Prelude.Nothing,+        subnets = Prelude.Nothing,+        tags = Prelude.Nothing,+        fargateProfileName = pFargateProfileName_,+        clusterName = pClusterName_,+        podExecutionRoleArn = pPodExecutionRoleArn_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+createFargateProfile_clientRequestToken :: Lens.Lens' CreateFargateProfile (Prelude.Maybe Prelude.Text)+createFargateProfile_clientRequestToken = Lens.lens (\CreateFargateProfile' {clientRequestToken} -> clientRequestToken) (\s@CreateFargateProfile' {} a -> s {clientRequestToken = a} :: CreateFargateProfile)++-- | The selectors to match for pods to use this Fargate profile. Each+-- selector must have an associated namespace. Optionally, you can also+-- specify labels for a namespace. You may specify up to five selectors in+-- a Fargate profile.+createFargateProfile_selectors :: Lens.Lens' CreateFargateProfile (Prelude.Maybe [FargateProfileSelector])+createFargateProfile_selectors = Lens.lens (\CreateFargateProfile' {selectors} -> selectors) (\s@CreateFargateProfile' {} a -> s {selectors = a} :: CreateFargateProfile) Prelude.. Lens.mapping Lens.coerced++-- | The IDs of subnets to launch your pods into. At this time, pods running+-- on Fargate are not assigned public IP addresses, so only private subnets+-- (with no direct route to an Internet Gateway) are accepted for this+-- parameter.+createFargateProfile_subnets :: Lens.Lens' CreateFargateProfile (Prelude.Maybe [Prelude.Text])+createFargateProfile_subnets = Lens.lens (\CreateFargateProfile' {subnets} -> subnets) (\s@CreateFargateProfile' {} a -> s {subnets = a} :: CreateFargateProfile) Prelude.. Lens.mapping Lens.coerced++-- | The metadata to apply to the Fargate profile to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value. You define both. Fargate profile tags do not propagate+-- to any other resources associated with the Fargate profile, such as the+-- pods that are scheduled with it.+createFargateProfile_tags :: Lens.Lens' CreateFargateProfile (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createFargateProfile_tags = Lens.lens (\CreateFargateProfile' {tags} -> tags) (\s@CreateFargateProfile' {} a -> s {tags = a} :: CreateFargateProfile) Prelude.. Lens.mapping Lens.coerced++-- | The name of the Fargate profile.+createFargateProfile_fargateProfileName :: Lens.Lens' CreateFargateProfile Prelude.Text+createFargateProfile_fargateProfileName = Lens.lens (\CreateFargateProfile' {fargateProfileName} -> fargateProfileName) (\s@CreateFargateProfile' {} a -> s {fargateProfileName = a} :: CreateFargateProfile)++-- | The name of the Amazon EKS cluster to apply the Fargate profile to.+createFargateProfile_clusterName :: Lens.Lens' CreateFargateProfile Prelude.Text+createFargateProfile_clusterName = Lens.lens (\CreateFargateProfile' {clusterName} -> clusterName) (\s@CreateFargateProfile' {} a -> s {clusterName = a} :: CreateFargateProfile)++-- | The Amazon Resource Name (ARN) of the pod execution role to use for pods+-- that match the selectors in the Fargate profile. The pod execution role+-- allows Fargate infrastructure to register with your cluster as a node,+-- and it provides read access to Amazon ECR image repositories. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html Pod Execution Role>+-- in the /Amazon EKS User Guide/.+createFargateProfile_podExecutionRoleArn :: Lens.Lens' CreateFargateProfile Prelude.Text+createFargateProfile_podExecutionRoleArn = Lens.lens (\CreateFargateProfile' {podExecutionRoleArn} -> podExecutionRoleArn) (\s@CreateFargateProfile' {} a -> s {podExecutionRoleArn = a} :: CreateFargateProfile)++instance Core.AWSRequest CreateFargateProfile where+  type+    AWSResponse CreateFargateProfile =+      CreateFargateProfileResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateFargateProfileResponse'+            Prelude.<$> (x Data..?> "fargateProfile")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateFargateProfile where+  hashWithSalt _salt CreateFargateProfile' {..} =+    _salt+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` selectors+      `Prelude.hashWithSalt` subnets+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` fargateProfileName+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` podExecutionRoleArn++instance Prelude.NFData CreateFargateProfile where+  rnf CreateFargateProfile' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf selectors+      `Prelude.seq` Prelude.rnf subnets+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf fargateProfileName+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf podExecutionRoleArn++instance Data.ToHeaders CreateFargateProfile where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateFargateProfile where+  toJSON CreateFargateProfile' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("selectors" Data..=) Prelude.<$> selectors,+            ("subnets" Data..=) Prelude.<$> subnets,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("fargateProfileName" Data..= fargateProfileName),+            Prelude.Just+              ("podExecutionRoleArn" Data..= podExecutionRoleArn)+          ]+      )++instance Data.ToPath CreateFargateProfile where+  toPath CreateFargateProfile' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/fargate-profiles"+      ]++instance Data.ToQuery CreateFargateProfile where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateFargateProfileResponse' smart constructor.+data CreateFargateProfileResponse = CreateFargateProfileResponse'+  { -- | The full description of your new Fargate profile.+    fargateProfile :: Prelude.Maybe FargateProfile,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateFargateProfileResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fargateProfile', 'createFargateProfileResponse_fargateProfile' - The full description of your new Fargate profile.+--+-- 'httpStatus', 'createFargateProfileResponse_httpStatus' - The response's http status code.+newCreateFargateProfileResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateFargateProfileResponse+newCreateFargateProfileResponse pHttpStatus_ =+  CreateFargateProfileResponse'+    { fargateProfile =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The full description of your new Fargate profile.+createFargateProfileResponse_fargateProfile :: Lens.Lens' CreateFargateProfileResponse (Prelude.Maybe FargateProfile)+createFargateProfileResponse_fargateProfile = Lens.lens (\CreateFargateProfileResponse' {fargateProfile} -> fargateProfile) (\s@CreateFargateProfileResponse' {} a -> s {fargateProfile = a} :: CreateFargateProfileResponse)++-- | The response's http status code.+createFargateProfileResponse_httpStatus :: Lens.Lens' CreateFargateProfileResponse Prelude.Int+createFargateProfileResponse_httpStatus = Lens.lens (\CreateFargateProfileResponse' {httpStatus} -> httpStatus) (\s@CreateFargateProfileResponse' {} a -> s {httpStatus = a} :: CreateFargateProfileResponse)++instance Prelude.NFData CreateFargateProfileResponse where+  rnf CreateFargateProfileResponse' {..} =+    Prelude.rnf fargateProfile+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/CreateNodegroup.hs view
@@ -0,0 +1,680 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.CreateNodegroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a managed node group for an Amazon EKS cluster. You can only+-- create a node group for your cluster that is equal to the current+-- Kubernetes version for the cluster. All node groups are created with the+-- latest AMI release version for the respective minor Kubernetes version+-- of the cluster, unless you deploy a custom AMI using a launch template.+-- For more information about using launch templates, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>.+--+-- An Amazon EKS managed node group is an Amazon EC2 Auto Scaling group and+-- associated Amazon EC2 instances that are managed by Amazon Web Services+-- for an Amazon EKS cluster. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html Managed node groups>+-- in the /Amazon EKS User Guide/.+--+-- Windows AMI types are only supported for commercial Regions that support+-- Windows Amazon EKS.+module Amazonka.EKS.CreateNodegroup+  ( -- * Creating a Request+    CreateNodegroup (..),+    newCreateNodegroup,++    -- * Request Lenses+    createNodegroup_amiType,+    createNodegroup_capacityType,+    createNodegroup_clientRequestToken,+    createNodegroup_diskSize,+    createNodegroup_instanceTypes,+    createNodegroup_labels,+    createNodegroup_launchTemplate,+    createNodegroup_releaseVersion,+    createNodegroup_remoteAccess,+    createNodegroup_scalingConfig,+    createNodegroup_tags,+    createNodegroup_taints,+    createNodegroup_updateConfig,+    createNodegroup_version,+    createNodegroup_clusterName,+    createNodegroup_nodegroupName,+    createNodegroup_subnets,+    createNodegroup_nodeRole,++    -- * Destructuring the Response+    CreateNodegroupResponse (..),+    newCreateNodegroupResponse,++    -- * Response Lenses+    createNodegroupResponse_nodegroup,+    createNodegroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateNodegroup' smart constructor.+data CreateNodegroup = CreateNodegroup'+  { -- | The AMI type for your node group. If you specify @launchTemplate@, and+    -- your launch template uses a custom AMI, then don\'t specify @amiType@,+    -- or the node group deployment will fail. If your launch template uses a+    -- Windows custom AMI, then add @eks:kube-proxy-windows@ to your Windows+    -- nodes @rolearn@ in the @aws-auth@ @ConfigMap@. For more information+    -- about using launch templates with Amazon EKS, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+    -- in the /Amazon EKS User Guide/.+    amiType :: Prelude.Maybe AMITypes,+    -- | The capacity type for your node group.+    capacityType :: Prelude.Maybe CapacityTypes,+    -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | The root device disk size (in GiB) for your node group instances. The+    -- default disk size is 20 GiB for Linux and Bottlerocket. The default disk+    -- size is 50 GiB for Windows. If you specify @launchTemplate@, then don\'t+    -- specify @diskSize@, or the node group deployment will fail. For more+    -- information about using launch templates with Amazon EKS, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+    -- in the /Amazon EKS User Guide/.+    diskSize :: Prelude.Maybe Prelude.Int,+    -- | Specify the instance types for a node group. If you specify a GPU+    -- instance type, make sure to also specify an applicable GPU AMI type with+    -- the @amiType@ parameter. If you specify @launchTemplate@, then you can+    -- specify zero or one instance type in your launch template /or/ you can+    -- specify 0-20 instance types for @instanceTypes@. If however, you specify+    -- an instance type in your launch template /and/ specify any+    -- @instanceTypes@, the node group deployment will fail. If you don\'t+    -- specify an instance type in a launch template or for @instanceTypes@,+    -- then @t3.medium@ is used, by default. If you specify @Spot@ for+    -- @capacityType@, then we recommend specifying multiple values for+    -- @instanceTypes@. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types Managed node group capacity types>+    -- and+    -- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+    -- in the /Amazon EKS User Guide/.+    instanceTypes :: Prelude.Maybe [Prelude.Text],+    -- | The Kubernetes labels to be applied to the nodes in the node group when+    -- they are created.+    labels :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | An object representing a node group\'s launch template specification. If+    -- specified, then do not specify @instanceTypes@, @diskSize@, or+    -- @remoteAccess@ and make sure that the launch template meets the+    -- requirements in @launchTemplateSpecification@.+    launchTemplate :: Prelude.Maybe LaunchTemplateSpecification,+    -- | The AMI version of the Amazon EKS optimized AMI to use with your node+    -- group. By default, the latest available AMI version for the node+    -- group\'s current Kubernetes version is used. For information about Linux+    -- versions, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html Amazon EKS optimized Amazon Linux AMI versions>+    -- in the /Amazon EKS User Guide/. Amazon EKS managed node groups support+    -- the November 2022 and later releases of the Windows AMIs. For+    -- information about Windows versions, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html Amazon EKS optimized Windows AMI versions>+    -- in the /Amazon EKS User Guide/.+    --+    -- If you specify @launchTemplate@, and your launch template uses a custom+    -- AMI, then don\'t specify @releaseVersion@, or the node group deployment+    -- will fail. For more information about using launch templates with Amazon+    -- EKS, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+    -- in the /Amazon EKS User Guide/.+    releaseVersion :: Prelude.Maybe Prelude.Text,+    -- | The remote access configuration to use with your node group. For Linux,+    -- the protocol is SSH. For Windows, the protocol is RDP. If you specify+    -- @launchTemplate@, then don\'t specify @remoteAccess@, or the node group+    -- deployment will fail. For more information about using launch templates+    -- with Amazon EKS, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+    -- in the /Amazon EKS User Guide/.+    remoteAccess :: Prelude.Maybe RemoteAccessConfig,+    -- | The scaling configuration details for the Auto Scaling group that is+    -- created for your node group.+    scalingConfig :: Prelude.Maybe NodegroupScalingConfig,+    -- | The metadata to apply to the node group to assist with categorization+    -- and organization. Each tag consists of a key and an optional value. You+    -- define both. Node group tags do not propagate to any other resources+    -- associated with the node group, such as the Amazon EC2 instances or+    -- subnets.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The Kubernetes taints to be applied to the nodes in the node group. For+    -- more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.+    taints :: Prelude.Maybe [Taint],+    -- | The node group update configuration.+    updateConfig :: Prelude.Maybe NodegroupUpdateConfig,+    -- | The Kubernetes version to use for your managed nodes. By default, the+    -- Kubernetes version of the cluster is used, and this is the only accepted+    -- specified value. If you specify @launchTemplate@, and your launch+    -- template uses a custom AMI, then don\'t specify @version@, or the node+    -- group deployment will fail. For more information about using launch+    -- templates with Amazon EKS, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+    -- in the /Amazon EKS User Guide/.+    version :: Prelude.Maybe Prelude.Text,+    -- | The name of the cluster to create the node group in.+    clusterName :: Prelude.Text,+    -- | The unique name to give your node group.+    nodegroupName :: Prelude.Text,+    -- | The subnets to use for the Auto Scaling group that is created for your+    -- node group. If you specify @launchTemplate@, then don\'t specify+    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html SubnetId>+    -- in your launch template, or the node group deployment will fail. For+    -- more information about using launch templates with Amazon EKS, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+    -- in the /Amazon EKS User Guide/.+    subnets :: [Prelude.Text],+    -- | The Amazon Resource Name (ARN) of the IAM role to associate with your+    -- node group. The Amazon EKS worker node @kubelet@ daemon makes calls to+    -- Amazon Web Services APIs on your behalf. Nodes receive permissions for+    -- these API calls through an IAM instance profile and associated policies.+    -- Before you can launch nodes and register them into a cluster, you must+    -- create an IAM role for those nodes to use when they are launched. For+    -- more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html Amazon EKS node IAM role>+    -- in the //Amazon EKS User Guide// . If you specify @launchTemplate@, then+    -- don\'t specify+    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html IamInstanceProfile>+    -- in your launch template, or the node group deployment will fail. For+    -- more information about using launch templates with Amazon EKS, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+    -- in the /Amazon EKS User Guide/.+    nodeRole :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateNodegroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'amiType', 'createNodegroup_amiType' - The AMI type for your node group. If you specify @launchTemplate@, and+-- your launch template uses a custom AMI, then don\'t specify @amiType@,+-- or the node group deployment will fail. If your launch template uses a+-- Windows custom AMI, then add @eks:kube-proxy-windows@ to your Windows+-- nodes @rolearn@ in the @aws-auth@ @ConfigMap@. For more information+-- about using launch templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+--+-- 'capacityType', 'createNodegroup_capacityType' - The capacity type for your node group.+--+-- 'clientRequestToken', 'createNodegroup_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'diskSize', 'createNodegroup_diskSize' - The root device disk size (in GiB) for your node group instances. The+-- default disk size is 20 GiB for Linux and Bottlerocket. The default disk+-- size is 50 GiB for Windows. If you specify @launchTemplate@, then don\'t+-- specify @diskSize@, or the node group deployment will fail. For more+-- information about using launch templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+--+-- 'instanceTypes', 'createNodegroup_instanceTypes' - Specify the instance types for a node group. If you specify a GPU+-- instance type, make sure to also specify an applicable GPU AMI type with+-- the @amiType@ parameter. If you specify @launchTemplate@, then you can+-- specify zero or one instance type in your launch template /or/ you can+-- specify 0-20 instance types for @instanceTypes@. If however, you specify+-- an instance type in your launch template /and/ specify any+-- @instanceTypes@, the node group deployment will fail. If you don\'t+-- specify an instance type in a launch template or for @instanceTypes@,+-- then @t3.medium@ is used, by default. If you specify @Spot@ for+-- @capacityType@, then we recommend specifying multiple values for+-- @instanceTypes@. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types Managed node group capacity types>+-- and+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+--+-- 'labels', 'createNodegroup_labels' - The Kubernetes labels to be applied to the nodes in the node group when+-- they are created.+--+-- 'launchTemplate', 'createNodegroup_launchTemplate' - An object representing a node group\'s launch template specification. If+-- specified, then do not specify @instanceTypes@, @diskSize@, or+-- @remoteAccess@ and make sure that the launch template meets the+-- requirements in @launchTemplateSpecification@.+--+-- 'releaseVersion', 'createNodegroup_releaseVersion' - The AMI version of the Amazon EKS optimized AMI to use with your node+-- group. By default, the latest available AMI version for the node+-- group\'s current Kubernetes version is used. For information about Linux+-- versions, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html Amazon EKS optimized Amazon Linux AMI versions>+-- in the /Amazon EKS User Guide/. Amazon EKS managed node groups support+-- the November 2022 and later releases of the Windows AMIs. For+-- information about Windows versions, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html Amazon EKS optimized Windows AMI versions>+-- in the /Amazon EKS User Guide/.+--+-- If you specify @launchTemplate@, and your launch template uses a custom+-- AMI, then don\'t specify @releaseVersion@, or the node group deployment+-- will fail. For more information about using launch templates with Amazon+-- EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+--+-- 'remoteAccess', 'createNodegroup_remoteAccess' - The remote access configuration to use with your node group. For Linux,+-- the protocol is SSH. For Windows, the protocol is RDP. If you specify+-- @launchTemplate@, then don\'t specify @remoteAccess@, or the node group+-- deployment will fail. For more information about using launch templates+-- with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+--+-- 'scalingConfig', 'createNodegroup_scalingConfig' - The scaling configuration details for the Auto Scaling group that is+-- created for your node group.+--+-- 'tags', 'createNodegroup_tags' - The metadata to apply to the node group to assist with categorization+-- and organization. Each tag consists of a key and an optional value. You+-- define both. Node group tags do not propagate to any other resources+-- associated with the node group, such as the Amazon EC2 instances or+-- subnets.+--+-- 'taints', 'createNodegroup_taints' - The Kubernetes taints to be applied to the nodes in the node group. For+-- more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.+--+-- 'updateConfig', 'createNodegroup_updateConfig' - The node group update configuration.+--+-- 'version', 'createNodegroup_version' - The Kubernetes version to use for your managed nodes. By default, the+-- Kubernetes version of the cluster is used, and this is the only accepted+-- specified value. If you specify @launchTemplate@, and your launch+-- template uses a custom AMI, then don\'t specify @version@, or the node+-- group deployment will fail. For more information about using launch+-- templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+--+-- 'clusterName', 'createNodegroup_clusterName' - The name of the cluster to create the node group in.+--+-- 'nodegroupName', 'createNodegroup_nodegroupName' - The unique name to give your node group.+--+-- 'subnets', 'createNodegroup_subnets' - The subnets to use for the Auto Scaling group that is created for your+-- node group. If you specify @launchTemplate@, then don\'t specify+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html SubnetId>+-- in your launch template, or the node group deployment will fail. For+-- more information about using launch templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+--+-- 'nodeRole', 'createNodegroup_nodeRole' - The Amazon Resource Name (ARN) of the IAM role to associate with your+-- node group. The Amazon EKS worker node @kubelet@ daemon makes calls to+-- Amazon Web Services APIs on your behalf. Nodes receive permissions for+-- these API calls through an IAM instance profile and associated policies.+-- Before you can launch nodes and register them into a cluster, you must+-- create an IAM role for those nodes to use when they are launched. For+-- more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html Amazon EKS node IAM role>+-- in the //Amazon EKS User Guide// . If you specify @launchTemplate@, then+-- don\'t specify+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html IamInstanceProfile>+-- in your launch template, or the node group deployment will fail. For+-- more information about using launch templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+newCreateNodegroup ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'nodegroupName'+  Prelude.Text ->+  -- | 'nodeRole'+  Prelude.Text ->+  CreateNodegroup+newCreateNodegroup+  pClusterName_+  pNodegroupName_+  pNodeRole_ =+    CreateNodegroup'+      { amiType = Prelude.Nothing,+        capacityType = Prelude.Nothing,+        clientRequestToken = Prelude.Nothing,+        diskSize = Prelude.Nothing,+        instanceTypes = Prelude.Nothing,+        labels = Prelude.Nothing,+        launchTemplate = Prelude.Nothing,+        releaseVersion = Prelude.Nothing,+        remoteAccess = Prelude.Nothing,+        scalingConfig = Prelude.Nothing,+        tags = Prelude.Nothing,+        taints = Prelude.Nothing,+        updateConfig = Prelude.Nothing,+        version = Prelude.Nothing,+        clusterName = pClusterName_,+        nodegroupName = pNodegroupName_,+        subnets = Prelude.mempty,+        nodeRole = pNodeRole_+      }++-- | The AMI type for your node group. If you specify @launchTemplate@, and+-- your launch template uses a custom AMI, then don\'t specify @amiType@,+-- or the node group deployment will fail. If your launch template uses a+-- Windows custom AMI, then add @eks:kube-proxy-windows@ to your Windows+-- nodes @rolearn@ in the @aws-auth@ @ConfigMap@. For more information+-- about using launch templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+createNodegroup_amiType :: Lens.Lens' CreateNodegroup (Prelude.Maybe AMITypes)+createNodegroup_amiType = Lens.lens (\CreateNodegroup' {amiType} -> amiType) (\s@CreateNodegroup' {} a -> s {amiType = a} :: CreateNodegroup)++-- | The capacity type for your node group.+createNodegroup_capacityType :: Lens.Lens' CreateNodegroup (Prelude.Maybe CapacityTypes)+createNodegroup_capacityType = Lens.lens (\CreateNodegroup' {capacityType} -> capacityType) (\s@CreateNodegroup' {} a -> s {capacityType = a} :: CreateNodegroup)++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+createNodegroup_clientRequestToken :: Lens.Lens' CreateNodegroup (Prelude.Maybe Prelude.Text)+createNodegroup_clientRequestToken = Lens.lens (\CreateNodegroup' {clientRequestToken} -> clientRequestToken) (\s@CreateNodegroup' {} a -> s {clientRequestToken = a} :: CreateNodegroup)++-- | The root device disk size (in GiB) for your node group instances. The+-- default disk size is 20 GiB for Linux and Bottlerocket. The default disk+-- size is 50 GiB for Windows. If you specify @launchTemplate@, then don\'t+-- specify @diskSize@, or the node group deployment will fail. For more+-- information about using launch templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+createNodegroup_diskSize :: Lens.Lens' CreateNodegroup (Prelude.Maybe Prelude.Int)+createNodegroup_diskSize = Lens.lens (\CreateNodegroup' {diskSize} -> diskSize) (\s@CreateNodegroup' {} a -> s {diskSize = a} :: CreateNodegroup)++-- | Specify the instance types for a node group. If you specify a GPU+-- instance type, make sure to also specify an applicable GPU AMI type with+-- the @amiType@ parameter. If you specify @launchTemplate@, then you can+-- specify zero or one instance type in your launch template /or/ you can+-- specify 0-20 instance types for @instanceTypes@. If however, you specify+-- an instance type in your launch template /and/ specify any+-- @instanceTypes@, the node group deployment will fail. If you don\'t+-- specify an instance type in a launch template or for @instanceTypes@,+-- then @t3.medium@ is used, by default. If you specify @Spot@ for+-- @capacityType@, then we recommend specifying multiple values for+-- @instanceTypes@. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types Managed node group capacity types>+-- and+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+createNodegroup_instanceTypes :: Lens.Lens' CreateNodegroup (Prelude.Maybe [Prelude.Text])+createNodegroup_instanceTypes = Lens.lens (\CreateNodegroup' {instanceTypes} -> instanceTypes) (\s@CreateNodegroup' {} a -> s {instanceTypes = a} :: CreateNodegroup) Prelude.. Lens.mapping Lens.coerced++-- | The Kubernetes labels to be applied to the nodes in the node group when+-- they are created.+createNodegroup_labels :: Lens.Lens' CreateNodegroup (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createNodegroup_labels = Lens.lens (\CreateNodegroup' {labels} -> labels) (\s@CreateNodegroup' {} a -> s {labels = a} :: CreateNodegroup) Prelude.. Lens.mapping Lens.coerced++-- | An object representing a node group\'s launch template specification. If+-- specified, then do not specify @instanceTypes@, @diskSize@, or+-- @remoteAccess@ and make sure that the launch template meets the+-- requirements in @launchTemplateSpecification@.+createNodegroup_launchTemplate :: Lens.Lens' CreateNodegroup (Prelude.Maybe LaunchTemplateSpecification)+createNodegroup_launchTemplate = Lens.lens (\CreateNodegroup' {launchTemplate} -> launchTemplate) (\s@CreateNodegroup' {} a -> s {launchTemplate = a} :: CreateNodegroup)++-- | The AMI version of the Amazon EKS optimized AMI to use with your node+-- group. By default, the latest available AMI version for the node+-- group\'s current Kubernetes version is used. For information about Linux+-- versions, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html Amazon EKS optimized Amazon Linux AMI versions>+-- in the /Amazon EKS User Guide/. Amazon EKS managed node groups support+-- the November 2022 and later releases of the Windows AMIs. For+-- information about Windows versions, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html Amazon EKS optimized Windows AMI versions>+-- in the /Amazon EKS User Guide/.+--+-- If you specify @launchTemplate@, and your launch template uses a custom+-- AMI, then don\'t specify @releaseVersion@, or the node group deployment+-- will fail. For more information about using launch templates with Amazon+-- EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+createNodegroup_releaseVersion :: Lens.Lens' CreateNodegroup (Prelude.Maybe Prelude.Text)+createNodegroup_releaseVersion = Lens.lens (\CreateNodegroup' {releaseVersion} -> releaseVersion) (\s@CreateNodegroup' {} a -> s {releaseVersion = a} :: CreateNodegroup)++-- | The remote access configuration to use with your node group. For Linux,+-- the protocol is SSH. For Windows, the protocol is RDP. If you specify+-- @launchTemplate@, then don\'t specify @remoteAccess@, or the node group+-- deployment will fail. For more information about using launch templates+-- with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+createNodegroup_remoteAccess :: Lens.Lens' CreateNodegroup (Prelude.Maybe RemoteAccessConfig)+createNodegroup_remoteAccess = Lens.lens (\CreateNodegroup' {remoteAccess} -> remoteAccess) (\s@CreateNodegroup' {} a -> s {remoteAccess = a} :: CreateNodegroup)++-- | The scaling configuration details for the Auto Scaling group that is+-- created for your node group.+createNodegroup_scalingConfig :: Lens.Lens' CreateNodegroup (Prelude.Maybe NodegroupScalingConfig)+createNodegroup_scalingConfig = Lens.lens (\CreateNodegroup' {scalingConfig} -> scalingConfig) (\s@CreateNodegroup' {} a -> s {scalingConfig = a} :: CreateNodegroup)++-- | The metadata to apply to the node group to assist with categorization+-- and organization. Each tag consists of a key and an optional value. You+-- define both. Node group tags do not propagate to any other resources+-- associated with the node group, such as the Amazon EC2 instances or+-- subnets.+createNodegroup_tags :: Lens.Lens' CreateNodegroup (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createNodegroup_tags = Lens.lens (\CreateNodegroup' {tags} -> tags) (\s@CreateNodegroup' {} a -> s {tags = a} :: CreateNodegroup) Prelude.. Lens.mapping Lens.coerced++-- | The Kubernetes taints to be applied to the nodes in the node group. For+-- more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.+createNodegroup_taints :: Lens.Lens' CreateNodegroup (Prelude.Maybe [Taint])+createNodegroup_taints = Lens.lens (\CreateNodegroup' {taints} -> taints) (\s@CreateNodegroup' {} a -> s {taints = a} :: CreateNodegroup) Prelude.. Lens.mapping Lens.coerced++-- | The node group update configuration.+createNodegroup_updateConfig :: Lens.Lens' CreateNodegroup (Prelude.Maybe NodegroupUpdateConfig)+createNodegroup_updateConfig = Lens.lens (\CreateNodegroup' {updateConfig} -> updateConfig) (\s@CreateNodegroup' {} a -> s {updateConfig = a} :: CreateNodegroup)++-- | The Kubernetes version to use for your managed nodes. By default, the+-- Kubernetes version of the cluster is used, and this is the only accepted+-- specified value. If you specify @launchTemplate@, and your launch+-- template uses a custom AMI, then don\'t specify @version@, or the node+-- group deployment will fail. For more information about using launch+-- templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+createNodegroup_version :: Lens.Lens' CreateNodegroup (Prelude.Maybe Prelude.Text)+createNodegroup_version = Lens.lens (\CreateNodegroup' {version} -> version) (\s@CreateNodegroup' {} a -> s {version = a} :: CreateNodegroup)++-- | The name of the cluster to create the node group in.+createNodegroup_clusterName :: Lens.Lens' CreateNodegroup Prelude.Text+createNodegroup_clusterName = Lens.lens (\CreateNodegroup' {clusterName} -> clusterName) (\s@CreateNodegroup' {} a -> s {clusterName = a} :: CreateNodegroup)++-- | The unique name to give your node group.+createNodegroup_nodegroupName :: Lens.Lens' CreateNodegroup Prelude.Text+createNodegroup_nodegroupName = Lens.lens (\CreateNodegroup' {nodegroupName} -> nodegroupName) (\s@CreateNodegroup' {} a -> s {nodegroupName = a} :: CreateNodegroup)++-- | The subnets to use for the Auto Scaling group that is created for your+-- node group. If you specify @launchTemplate@, then don\'t specify+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html SubnetId>+-- in your launch template, or the node group deployment will fail. For+-- more information about using launch templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+createNodegroup_subnets :: Lens.Lens' CreateNodegroup [Prelude.Text]+createNodegroup_subnets = Lens.lens (\CreateNodegroup' {subnets} -> subnets) (\s@CreateNodegroup' {} a -> s {subnets = a} :: CreateNodegroup) Prelude.. Lens.coerced++-- | The Amazon Resource Name (ARN) of the IAM role to associate with your+-- node group. The Amazon EKS worker node @kubelet@ daemon makes calls to+-- Amazon Web Services APIs on your behalf. Nodes receive permissions for+-- these API calls through an IAM instance profile and associated policies.+-- Before you can launch nodes and register them into a cluster, you must+-- create an IAM role for those nodes to use when they are launched. For+-- more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html Amazon EKS node IAM role>+-- in the //Amazon EKS User Guide// . If you specify @launchTemplate@, then+-- don\'t specify+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html IamInstanceProfile>+-- in your launch template, or the node group deployment will fail. For+-- more information about using launch templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+createNodegroup_nodeRole :: Lens.Lens' CreateNodegroup Prelude.Text+createNodegroup_nodeRole = Lens.lens (\CreateNodegroup' {nodeRole} -> nodeRole) (\s@CreateNodegroup' {} a -> s {nodeRole = a} :: CreateNodegroup)++instance Core.AWSRequest CreateNodegroup where+  type+    AWSResponse CreateNodegroup =+      CreateNodegroupResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateNodegroupResponse'+            Prelude.<$> (x Data..?> "nodegroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateNodegroup where+  hashWithSalt _salt CreateNodegroup' {..} =+    _salt+      `Prelude.hashWithSalt` amiType+      `Prelude.hashWithSalt` capacityType+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` diskSize+      `Prelude.hashWithSalt` instanceTypes+      `Prelude.hashWithSalt` labels+      `Prelude.hashWithSalt` launchTemplate+      `Prelude.hashWithSalt` releaseVersion+      `Prelude.hashWithSalt` remoteAccess+      `Prelude.hashWithSalt` scalingConfig+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` taints+      `Prelude.hashWithSalt` updateConfig+      `Prelude.hashWithSalt` version+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` nodegroupName+      `Prelude.hashWithSalt` subnets+      `Prelude.hashWithSalt` nodeRole++instance Prelude.NFData CreateNodegroup where+  rnf CreateNodegroup' {..} =+    Prelude.rnf amiType+      `Prelude.seq` Prelude.rnf capacityType+      `Prelude.seq` Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf diskSize+      `Prelude.seq` Prelude.rnf instanceTypes+      `Prelude.seq` Prelude.rnf labels+      `Prelude.seq` Prelude.rnf launchTemplate+      `Prelude.seq` Prelude.rnf releaseVersion+      `Prelude.seq` Prelude.rnf remoteAccess+      `Prelude.seq` Prelude.rnf scalingConfig+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf taints+      `Prelude.seq` Prelude.rnf updateConfig+      `Prelude.seq` Prelude.rnf version+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf nodegroupName+      `Prelude.seq` Prelude.rnf subnets+      `Prelude.seq` Prelude.rnf nodeRole++instance Data.ToHeaders CreateNodegroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateNodegroup where+  toJSON CreateNodegroup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("amiType" Data..=) Prelude.<$> amiType,+            ("capacityType" Data..=) Prelude.<$> capacityType,+            ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("diskSize" Data..=) Prelude.<$> diskSize,+            ("instanceTypes" Data..=) Prelude.<$> instanceTypes,+            ("labels" Data..=) Prelude.<$> labels,+            ("launchTemplate" Data..=)+              Prelude.<$> launchTemplate,+            ("releaseVersion" Data..=)+              Prelude.<$> releaseVersion,+            ("remoteAccess" Data..=) Prelude.<$> remoteAccess,+            ("scalingConfig" Data..=) Prelude.<$> scalingConfig,+            ("tags" Data..=) Prelude.<$> tags,+            ("taints" Data..=) Prelude.<$> taints,+            ("updateConfig" Data..=) Prelude.<$> updateConfig,+            ("version" Data..=) Prelude.<$> version,+            Prelude.Just ("nodegroupName" Data..= nodegroupName),+            Prelude.Just ("subnets" Data..= subnets),+            Prelude.Just ("nodeRole" Data..= nodeRole)+          ]+      )++instance Data.ToPath CreateNodegroup where+  toPath CreateNodegroup' {..} =+    Prelude.mconcat+      ["/clusters/", Data.toBS clusterName, "/node-groups"]++instance Data.ToQuery CreateNodegroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateNodegroupResponse' smart constructor.+data CreateNodegroupResponse = CreateNodegroupResponse'+  { -- | The full description of your new node group.+    nodegroup :: Prelude.Maybe Nodegroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateNodegroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nodegroup', 'createNodegroupResponse_nodegroup' - The full description of your new node group.+--+-- 'httpStatus', 'createNodegroupResponse_httpStatus' - The response's http status code.+newCreateNodegroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateNodegroupResponse+newCreateNodegroupResponse pHttpStatus_ =+  CreateNodegroupResponse'+    { nodegroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The full description of your new node group.+createNodegroupResponse_nodegroup :: Lens.Lens' CreateNodegroupResponse (Prelude.Maybe Nodegroup)+createNodegroupResponse_nodegroup = Lens.lens (\CreateNodegroupResponse' {nodegroup} -> nodegroup) (\s@CreateNodegroupResponse' {} a -> s {nodegroup = a} :: CreateNodegroupResponse)++-- | The response's http status code.+createNodegroupResponse_httpStatus :: Lens.Lens' CreateNodegroupResponse Prelude.Int+createNodegroupResponse_httpStatus = Lens.lens (\CreateNodegroupResponse' {httpStatus} -> httpStatus) (\s@CreateNodegroupResponse' {} a -> s {httpStatus = a} :: CreateNodegroupResponse)++instance Prelude.NFData CreateNodegroupResponse where+  rnf CreateNodegroupResponse' {..} =+    Prelude.rnf nodegroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DeleteAddon.hs view
@@ -0,0 +1,206 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DeleteAddon+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Delete an Amazon EKS add-on.+--+-- When you remove the add-on, it will also be deleted from the cluster.+-- You can always manually start an add-on on the cluster using the+-- Kubernetes API.+module Amazonka.EKS.DeleteAddon+  ( -- * Creating a Request+    DeleteAddon (..),+    newDeleteAddon,++    -- * Request Lenses+    deleteAddon_preserve,+    deleteAddon_clusterName,+    deleteAddon_addonName,++    -- * Destructuring the Response+    DeleteAddonResponse (..),+    newDeleteAddonResponse,++    -- * Response Lenses+    deleteAddonResponse_addon,+    deleteAddonResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteAddon' smart constructor.+data DeleteAddon = DeleteAddon'+  { -- | Specifying this option preserves the add-on software on your cluster but+    -- Amazon EKS stops managing any settings for the add-on. If an IAM account+    -- is associated with the add-on, it isn\'t removed.+    preserve :: Prelude.Maybe Prelude.Bool,+    -- | The name of the cluster to delete the add-on from.+    clusterName :: Prelude.Text,+    -- | The name of the add-on. The name must match one of the names returned by+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+    -- .+    addonName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteAddon' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'preserve', 'deleteAddon_preserve' - Specifying this option preserves the add-on software on your cluster but+-- Amazon EKS stops managing any settings for the add-on. If an IAM account+-- is associated with the add-on, it isn\'t removed.+--+-- 'clusterName', 'deleteAddon_clusterName' - The name of the cluster to delete the add-on from.+--+-- 'addonName', 'deleteAddon_addonName' - The name of the add-on. The name must match one of the names returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+-- .+newDeleteAddon ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'addonName'+  Prelude.Text ->+  DeleteAddon+newDeleteAddon pClusterName_ pAddonName_ =+  DeleteAddon'+    { preserve = Prelude.Nothing,+      clusterName = pClusterName_,+      addonName = pAddonName_+    }++-- | Specifying this option preserves the add-on software on your cluster but+-- Amazon EKS stops managing any settings for the add-on. If an IAM account+-- is associated with the add-on, it isn\'t removed.+deleteAddon_preserve :: Lens.Lens' DeleteAddon (Prelude.Maybe Prelude.Bool)+deleteAddon_preserve = Lens.lens (\DeleteAddon' {preserve} -> preserve) (\s@DeleteAddon' {} a -> s {preserve = a} :: DeleteAddon)++-- | The name of the cluster to delete the add-on from.+deleteAddon_clusterName :: Lens.Lens' DeleteAddon Prelude.Text+deleteAddon_clusterName = Lens.lens (\DeleteAddon' {clusterName} -> clusterName) (\s@DeleteAddon' {} a -> s {clusterName = a} :: DeleteAddon)++-- | The name of the add-on. The name must match one of the names returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+-- .+deleteAddon_addonName :: Lens.Lens' DeleteAddon Prelude.Text+deleteAddon_addonName = Lens.lens (\DeleteAddon' {addonName} -> addonName) (\s@DeleteAddon' {} a -> s {addonName = a} :: DeleteAddon)++instance Core.AWSRequest DeleteAddon where+  type AWSResponse DeleteAddon = DeleteAddonResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteAddonResponse'+            Prelude.<$> (x Data..?> "addon")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteAddon where+  hashWithSalt _salt DeleteAddon' {..} =+    _salt+      `Prelude.hashWithSalt` preserve+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` addonName++instance Prelude.NFData DeleteAddon where+  rnf DeleteAddon' {..} =+    Prelude.rnf preserve+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf addonName++instance Data.ToHeaders DeleteAddon where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteAddon where+  toPath DeleteAddon' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/addons/",+        Data.toBS addonName+      ]++instance Data.ToQuery DeleteAddon where+  toQuery DeleteAddon' {..} =+    Prelude.mconcat ["preserve" Data.=: preserve]++-- | /See:/ 'newDeleteAddonResponse' smart constructor.+data DeleteAddonResponse = DeleteAddonResponse'+  { addon :: Prelude.Maybe Addon,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteAddonResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addon', 'deleteAddonResponse_addon' - Undocumented member.+--+-- 'httpStatus', 'deleteAddonResponse_httpStatus' - The response's http status code.+newDeleteAddonResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteAddonResponse+newDeleteAddonResponse pHttpStatus_ =+  DeleteAddonResponse'+    { addon = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+deleteAddonResponse_addon :: Lens.Lens' DeleteAddonResponse (Prelude.Maybe Addon)+deleteAddonResponse_addon = Lens.lens (\DeleteAddonResponse' {addon} -> addon) (\s@DeleteAddonResponse' {} a -> s {addon = a} :: DeleteAddonResponse)++-- | The response's http status code.+deleteAddonResponse_httpStatus :: Lens.Lens' DeleteAddonResponse Prelude.Int+deleteAddonResponse_httpStatus = Lens.lens (\DeleteAddonResponse' {httpStatus} -> httpStatus) (\s@DeleteAddonResponse' {} a -> s {httpStatus = a} :: DeleteAddonResponse)++instance Prelude.NFData DeleteAddonResponse where+  rnf DeleteAddonResponse' {..} =+    Prelude.rnf addon+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DeleteCluster.hs view
@@ -0,0 +1,169 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DeleteCluster+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes the Amazon EKS cluster control plane.+--+-- If you have active services in your cluster that are associated with a+-- load balancer, you must delete those services before deleting the+-- cluster so that the load balancers are deleted properly. Otherwise, you+-- can have orphaned resources in your VPC that prevent you from being able+-- to delete the VPC. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/delete-cluster.html Deleting a Cluster>+-- in the /Amazon EKS User Guide/.+--+-- If you have managed node groups or Fargate profiles attached to the+-- cluster, you must delete them first. For more information, see+-- DeleteNodegroup and DeleteFargateProfile.+module Amazonka.EKS.DeleteCluster+  ( -- * Creating a Request+    DeleteCluster (..),+    newDeleteCluster,++    -- * Request Lenses+    deleteCluster_name,++    -- * Destructuring the Response+    DeleteClusterResponse (..),+    newDeleteClusterResponse,++    -- * Response Lenses+    deleteClusterResponse_cluster,+    deleteClusterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteCluster' smart constructor.+data DeleteCluster = DeleteCluster'+  { -- | The name of the cluster to delete.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteCluster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'deleteCluster_name' - The name of the cluster to delete.+newDeleteCluster ::+  -- | 'name'+  Prelude.Text ->+  DeleteCluster+newDeleteCluster pName_ =+  DeleteCluster' {name = pName_}++-- | The name of the cluster to delete.+deleteCluster_name :: Lens.Lens' DeleteCluster Prelude.Text+deleteCluster_name = Lens.lens (\DeleteCluster' {name} -> name) (\s@DeleteCluster' {} a -> s {name = a} :: DeleteCluster)++instance Core.AWSRequest DeleteCluster where+  type+    AWSResponse DeleteCluster =+      DeleteClusterResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteClusterResponse'+            Prelude.<$> (x Data..?> "cluster")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteCluster where+  hashWithSalt _salt DeleteCluster' {..} =+    _salt `Prelude.hashWithSalt` name++instance Prelude.NFData DeleteCluster where+  rnf DeleteCluster' {..} = Prelude.rnf name++instance Data.ToHeaders DeleteCluster where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteCluster where+  toPath DeleteCluster' {..} =+    Prelude.mconcat ["/clusters/", Data.toBS name]++instance Data.ToQuery DeleteCluster where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteClusterResponse' smart constructor.+data DeleteClusterResponse = DeleteClusterResponse'+  { -- | The full description of the cluster to delete.+    cluster :: Prelude.Maybe Cluster,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteClusterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cluster', 'deleteClusterResponse_cluster' - The full description of the cluster to delete.+--+-- 'httpStatus', 'deleteClusterResponse_httpStatus' - The response's http status code.+newDeleteClusterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteClusterResponse+newDeleteClusterResponse pHttpStatus_ =+  DeleteClusterResponse'+    { cluster = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The full description of the cluster to delete.+deleteClusterResponse_cluster :: Lens.Lens' DeleteClusterResponse (Prelude.Maybe Cluster)+deleteClusterResponse_cluster = Lens.lens (\DeleteClusterResponse' {cluster} -> cluster) (\s@DeleteClusterResponse' {} a -> s {cluster = a} :: DeleteClusterResponse)++-- | The response's http status code.+deleteClusterResponse_httpStatus :: Lens.Lens' DeleteClusterResponse Prelude.Int+deleteClusterResponse_httpStatus = Lens.lens (\DeleteClusterResponse' {httpStatus} -> httpStatus) (\s@DeleteClusterResponse' {} a -> s {httpStatus = a} :: DeleteClusterResponse)++instance Prelude.NFData DeleteClusterResponse where+  rnf DeleteClusterResponse' {..} =+    Prelude.rnf cluster+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DeleteFargateProfile.hs view
@@ -0,0 +1,196 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DeleteFargateProfile+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes an Fargate profile.+--+-- When you delete a Fargate profile, any pods running on Fargate that were+-- created with the profile are deleted. If those pods match another+-- Fargate profile, then they are scheduled on Fargate with that profile.+-- If they no longer match any Fargate profiles, then they are not+-- scheduled on Fargate and they may remain in a pending state.+--+-- Only one Fargate profile in a cluster can be in the @DELETING@ status at+-- a time. You must wait for a Fargate profile to finish deleting before+-- you can delete any other profiles in that cluster.+module Amazonka.EKS.DeleteFargateProfile+  ( -- * Creating a Request+    DeleteFargateProfile (..),+    newDeleteFargateProfile,++    -- * Request Lenses+    deleteFargateProfile_clusterName,+    deleteFargateProfile_fargateProfileName,++    -- * Destructuring the Response+    DeleteFargateProfileResponse (..),+    newDeleteFargateProfileResponse,++    -- * Response Lenses+    deleteFargateProfileResponse_fargateProfile,+    deleteFargateProfileResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteFargateProfile' smart constructor.+data DeleteFargateProfile = DeleteFargateProfile'+  { -- | The name of the Amazon EKS cluster associated with the Fargate profile+    -- to delete.+    clusterName :: Prelude.Text,+    -- | The name of the Fargate profile to delete.+    fargateProfileName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteFargateProfile' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterName', 'deleteFargateProfile_clusterName' - The name of the Amazon EKS cluster associated with the Fargate profile+-- to delete.+--+-- 'fargateProfileName', 'deleteFargateProfile_fargateProfileName' - The name of the Fargate profile to delete.+newDeleteFargateProfile ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'fargateProfileName'+  Prelude.Text ->+  DeleteFargateProfile+newDeleteFargateProfile+  pClusterName_+  pFargateProfileName_ =+    DeleteFargateProfile'+      { clusterName = pClusterName_,+        fargateProfileName = pFargateProfileName_+      }++-- | The name of the Amazon EKS cluster associated with the Fargate profile+-- to delete.+deleteFargateProfile_clusterName :: Lens.Lens' DeleteFargateProfile Prelude.Text+deleteFargateProfile_clusterName = Lens.lens (\DeleteFargateProfile' {clusterName} -> clusterName) (\s@DeleteFargateProfile' {} a -> s {clusterName = a} :: DeleteFargateProfile)++-- | The name of the Fargate profile to delete.+deleteFargateProfile_fargateProfileName :: Lens.Lens' DeleteFargateProfile Prelude.Text+deleteFargateProfile_fargateProfileName = Lens.lens (\DeleteFargateProfile' {fargateProfileName} -> fargateProfileName) (\s@DeleteFargateProfile' {} a -> s {fargateProfileName = a} :: DeleteFargateProfile)++instance Core.AWSRequest DeleteFargateProfile where+  type+    AWSResponse DeleteFargateProfile =+      DeleteFargateProfileResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteFargateProfileResponse'+            Prelude.<$> (x Data..?> "fargateProfile")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteFargateProfile where+  hashWithSalt _salt DeleteFargateProfile' {..} =+    _salt+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` fargateProfileName++instance Prelude.NFData DeleteFargateProfile where+  rnf DeleteFargateProfile' {..} =+    Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf fargateProfileName++instance Data.ToHeaders DeleteFargateProfile where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteFargateProfile where+  toPath DeleteFargateProfile' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/fargate-profiles/",+        Data.toBS fargateProfileName+      ]++instance Data.ToQuery DeleteFargateProfile where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteFargateProfileResponse' smart constructor.+data DeleteFargateProfileResponse = DeleteFargateProfileResponse'+  { -- | The deleted Fargate profile.+    fargateProfile :: Prelude.Maybe FargateProfile,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteFargateProfileResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fargateProfile', 'deleteFargateProfileResponse_fargateProfile' - The deleted Fargate profile.+--+-- 'httpStatus', 'deleteFargateProfileResponse_httpStatus' - The response's http status code.+newDeleteFargateProfileResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteFargateProfileResponse+newDeleteFargateProfileResponse pHttpStatus_ =+  DeleteFargateProfileResponse'+    { fargateProfile =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The deleted Fargate profile.+deleteFargateProfileResponse_fargateProfile :: Lens.Lens' DeleteFargateProfileResponse (Prelude.Maybe FargateProfile)+deleteFargateProfileResponse_fargateProfile = Lens.lens (\DeleteFargateProfileResponse' {fargateProfile} -> fargateProfile) (\s@DeleteFargateProfileResponse' {} a -> s {fargateProfile = a} :: DeleteFargateProfileResponse)++-- | The response's http status code.+deleteFargateProfileResponse_httpStatus :: Lens.Lens' DeleteFargateProfileResponse Prelude.Int+deleteFargateProfileResponse_httpStatus = Lens.lens (\DeleteFargateProfileResponse' {httpStatus} -> httpStatus) (\s@DeleteFargateProfileResponse' {} a -> s {httpStatus = a} :: DeleteFargateProfileResponse)++instance Prelude.NFData DeleteFargateProfileResponse where+  rnf DeleteFargateProfileResponse' {..} =+    Prelude.rnf fargateProfile+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DeleteNodegroup.hs view
@@ -0,0 +1,184 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DeleteNodegroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes an Amazon EKS node group for a cluster.+module Amazonka.EKS.DeleteNodegroup+  ( -- * Creating a Request+    DeleteNodegroup (..),+    newDeleteNodegroup,++    -- * Request Lenses+    deleteNodegroup_clusterName,+    deleteNodegroup_nodegroupName,++    -- * Destructuring the Response+    DeleteNodegroupResponse (..),+    newDeleteNodegroupResponse,++    -- * Response Lenses+    deleteNodegroupResponse_nodegroup,+    deleteNodegroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteNodegroup' smart constructor.+data DeleteNodegroup = DeleteNodegroup'+  { -- | The name of the Amazon EKS cluster that is associated with your node+    -- group.+    clusterName :: Prelude.Text,+    -- | The name of the node group to delete.+    nodegroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteNodegroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterName', 'deleteNodegroup_clusterName' - The name of the Amazon EKS cluster that is associated with your node+-- group.+--+-- 'nodegroupName', 'deleteNodegroup_nodegroupName' - The name of the node group to delete.+newDeleteNodegroup ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'nodegroupName'+  Prelude.Text ->+  DeleteNodegroup+newDeleteNodegroup pClusterName_ pNodegroupName_ =+  DeleteNodegroup'+    { clusterName = pClusterName_,+      nodegroupName = pNodegroupName_+    }++-- | The name of the Amazon EKS cluster that is associated with your node+-- group.+deleteNodegroup_clusterName :: Lens.Lens' DeleteNodegroup Prelude.Text+deleteNodegroup_clusterName = Lens.lens (\DeleteNodegroup' {clusterName} -> clusterName) (\s@DeleteNodegroup' {} a -> s {clusterName = a} :: DeleteNodegroup)++-- | The name of the node group to delete.+deleteNodegroup_nodegroupName :: Lens.Lens' DeleteNodegroup Prelude.Text+deleteNodegroup_nodegroupName = Lens.lens (\DeleteNodegroup' {nodegroupName} -> nodegroupName) (\s@DeleteNodegroup' {} a -> s {nodegroupName = a} :: DeleteNodegroup)++instance Core.AWSRequest DeleteNodegroup where+  type+    AWSResponse DeleteNodegroup =+      DeleteNodegroupResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteNodegroupResponse'+            Prelude.<$> (x Data..?> "nodegroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteNodegroup where+  hashWithSalt _salt DeleteNodegroup' {..} =+    _salt+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` nodegroupName++instance Prelude.NFData DeleteNodegroup where+  rnf DeleteNodegroup' {..} =+    Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf nodegroupName++instance Data.ToHeaders DeleteNodegroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteNodegroup where+  toPath DeleteNodegroup' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/node-groups/",+        Data.toBS nodegroupName+      ]++instance Data.ToQuery DeleteNodegroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteNodegroupResponse' smart constructor.+data DeleteNodegroupResponse = DeleteNodegroupResponse'+  { -- | The full description of your deleted node group.+    nodegroup :: Prelude.Maybe Nodegroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteNodegroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nodegroup', 'deleteNodegroupResponse_nodegroup' - The full description of your deleted node group.+--+-- 'httpStatus', 'deleteNodegroupResponse_httpStatus' - The response's http status code.+newDeleteNodegroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteNodegroupResponse+newDeleteNodegroupResponse pHttpStatus_ =+  DeleteNodegroupResponse'+    { nodegroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The full description of your deleted node group.+deleteNodegroupResponse_nodegroup :: Lens.Lens' DeleteNodegroupResponse (Prelude.Maybe Nodegroup)+deleteNodegroupResponse_nodegroup = Lens.lens (\DeleteNodegroupResponse' {nodegroup} -> nodegroup) (\s@DeleteNodegroupResponse' {} a -> s {nodegroup = a} :: DeleteNodegroupResponse)++-- | The response's http status code.+deleteNodegroupResponse_httpStatus :: Lens.Lens' DeleteNodegroupResponse Prelude.Int+deleteNodegroupResponse_httpStatus = Lens.lens (\DeleteNodegroupResponse' {httpStatus} -> httpStatus) (\s@DeleteNodegroupResponse' {} a -> s {httpStatus = a} :: DeleteNodegroupResponse)++instance Prelude.NFData DeleteNodegroupResponse where+  rnf DeleteNodegroupResponse' {..} =+    Prelude.rnf nodegroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DeregisterCluster.hs view
@@ -0,0 +1,159 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DeregisterCluster+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deregisters a connected cluster to remove it from the Amazon EKS control+-- plane.+module Amazonka.EKS.DeregisterCluster+  ( -- * Creating a Request+    DeregisterCluster (..),+    newDeregisterCluster,++    -- * Request Lenses+    deregisterCluster_name,++    -- * Destructuring the Response+    DeregisterClusterResponse (..),+    newDeregisterClusterResponse,++    -- * Response Lenses+    deregisterClusterResponse_cluster,+    deregisterClusterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeregisterCluster' smart constructor.+data DeregisterCluster = DeregisterCluster'+  { -- | The name of the connected cluster to deregister.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeregisterCluster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'deregisterCluster_name' - The name of the connected cluster to deregister.+newDeregisterCluster ::+  -- | 'name'+  Prelude.Text ->+  DeregisterCluster+newDeregisterCluster pName_ =+  DeregisterCluster' {name = pName_}++-- | The name of the connected cluster to deregister.+deregisterCluster_name :: Lens.Lens' DeregisterCluster Prelude.Text+deregisterCluster_name = Lens.lens (\DeregisterCluster' {name} -> name) (\s@DeregisterCluster' {} a -> s {name = a} :: DeregisterCluster)++instance Core.AWSRequest DeregisterCluster where+  type+    AWSResponse DeregisterCluster =+      DeregisterClusterResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeregisterClusterResponse'+            Prelude.<$> (x Data..?> "cluster")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeregisterCluster where+  hashWithSalt _salt DeregisterCluster' {..} =+    _salt `Prelude.hashWithSalt` name++instance Prelude.NFData DeregisterCluster where+  rnf DeregisterCluster' {..} = Prelude.rnf name++instance Data.ToHeaders DeregisterCluster where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeregisterCluster where+  toPath DeregisterCluster' {..} =+    Prelude.mconcat+      ["/cluster-registrations/", Data.toBS name]++instance Data.ToQuery DeregisterCluster where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeregisterClusterResponse' smart constructor.+data DeregisterClusterResponse = DeregisterClusterResponse'+  { cluster :: Prelude.Maybe Cluster,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeregisterClusterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cluster', 'deregisterClusterResponse_cluster' - Undocumented member.+--+-- 'httpStatus', 'deregisterClusterResponse_httpStatus' - The response's http status code.+newDeregisterClusterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeregisterClusterResponse+newDeregisterClusterResponse pHttpStatus_ =+  DeregisterClusterResponse'+    { cluster =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+deregisterClusterResponse_cluster :: Lens.Lens' DeregisterClusterResponse (Prelude.Maybe Cluster)+deregisterClusterResponse_cluster = Lens.lens (\DeregisterClusterResponse' {cluster} -> cluster) (\s@DeregisterClusterResponse' {} a -> s {cluster = a} :: DeregisterClusterResponse)++-- | The response's http status code.+deregisterClusterResponse_httpStatus :: Lens.Lens' DeregisterClusterResponse Prelude.Int+deregisterClusterResponse_httpStatus = Lens.lens (\DeregisterClusterResponse' {httpStatus} -> httpStatus) (\s@DeregisterClusterResponse' {} a -> s {httpStatus = a} :: DeregisterClusterResponse)++instance Prelude.NFData DeregisterClusterResponse where+  rnf DeregisterClusterResponse' {..} =+    Prelude.rnf cluster+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DescribeAddon.hs view
@@ -0,0 +1,185 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DescribeAddon+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes an Amazon EKS add-on.+module Amazonka.EKS.DescribeAddon+  ( -- * Creating a Request+    DescribeAddon (..),+    newDescribeAddon,++    -- * Request Lenses+    describeAddon_clusterName,+    describeAddon_addonName,++    -- * Destructuring the Response+    DescribeAddonResponse (..),+    newDescribeAddonResponse,++    -- * Response Lenses+    describeAddonResponse_addon,+    describeAddonResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeAddon' smart constructor.+data DescribeAddon = DescribeAddon'+  { -- | The name of the cluster.+    clusterName :: Prelude.Text,+    -- | The name of the add-on. The name must match one of the names returned by+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+    -- .+    addonName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAddon' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterName', 'describeAddon_clusterName' - The name of the cluster.+--+-- 'addonName', 'describeAddon_addonName' - The name of the add-on. The name must match one of the names returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+-- .+newDescribeAddon ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'addonName'+  Prelude.Text ->+  DescribeAddon+newDescribeAddon pClusterName_ pAddonName_ =+  DescribeAddon'+    { clusterName = pClusterName_,+      addonName = pAddonName_+    }++-- | The name of the cluster.+describeAddon_clusterName :: Lens.Lens' DescribeAddon Prelude.Text+describeAddon_clusterName = Lens.lens (\DescribeAddon' {clusterName} -> clusterName) (\s@DescribeAddon' {} a -> s {clusterName = a} :: DescribeAddon)++-- | The name of the add-on. The name must match one of the names returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+-- .+describeAddon_addonName :: Lens.Lens' DescribeAddon Prelude.Text+describeAddon_addonName = Lens.lens (\DescribeAddon' {addonName} -> addonName) (\s@DescribeAddon' {} a -> s {addonName = a} :: DescribeAddon)++instance Core.AWSRequest DescribeAddon where+  type+    AWSResponse DescribeAddon =+      DescribeAddonResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeAddonResponse'+            Prelude.<$> (x Data..?> "addon")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeAddon where+  hashWithSalt _salt DescribeAddon' {..} =+    _salt+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` addonName++instance Prelude.NFData DescribeAddon where+  rnf DescribeAddon' {..} =+    Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf addonName++instance Data.ToHeaders DescribeAddon where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeAddon where+  toPath DescribeAddon' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/addons/",+        Data.toBS addonName+      ]++instance Data.ToQuery DescribeAddon where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeAddonResponse' smart constructor.+data DescribeAddonResponse = DescribeAddonResponse'+  { addon :: Prelude.Maybe Addon,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAddonResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addon', 'describeAddonResponse_addon' - Undocumented member.+--+-- 'httpStatus', 'describeAddonResponse_httpStatus' - The response's http status code.+newDescribeAddonResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeAddonResponse+newDescribeAddonResponse pHttpStatus_ =+  DescribeAddonResponse'+    { addon = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+describeAddonResponse_addon :: Lens.Lens' DescribeAddonResponse (Prelude.Maybe Addon)+describeAddonResponse_addon = Lens.lens (\DescribeAddonResponse' {addon} -> addon) (\s@DescribeAddonResponse' {} a -> s {addon = a} :: DescribeAddonResponse)++-- | The response's http status code.+describeAddonResponse_httpStatus :: Lens.Lens' DescribeAddonResponse Prelude.Int+describeAddonResponse_httpStatus = Lens.lens (\DescribeAddonResponse' {httpStatus} -> httpStatus) (\s@DescribeAddonResponse' {} a -> s {httpStatus = a} :: DescribeAddonResponse)++instance Prelude.NFData DescribeAddonResponse where+  rnf DescribeAddonResponse' {..} =+    Prelude.rnf addon+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DescribeAddonConfiguration.hs view
@@ -0,0 +1,237 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DescribeAddonConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns configuration options.+module Amazonka.EKS.DescribeAddonConfiguration+  ( -- * Creating a Request+    DescribeAddonConfiguration (..),+    newDescribeAddonConfiguration,++    -- * Request Lenses+    describeAddonConfiguration_addonName,+    describeAddonConfiguration_addonVersion,++    -- * Destructuring the Response+    DescribeAddonConfigurationResponse (..),+    newDescribeAddonConfigurationResponse,++    -- * Response Lenses+    describeAddonConfigurationResponse_addonName,+    describeAddonConfigurationResponse_addonVersion,+    describeAddonConfigurationResponse_configurationSchema,+    describeAddonConfigurationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeAddonConfiguration' smart constructor.+data DescribeAddonConfiguration = DescribeAddonConfiguration'+  { -- | The name of the add-on. The name must match one of the names that+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+    -- returns.+    addonName :: Prelude.Text,+    -- | The version of the add-on. The version must match one of the versions+    -- returned by+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+    -- .+    addonVersion :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAddonConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addonName', 'describeAddonConfiguration_addonName' - The name of the add-on. The name must match one of the names that+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+-- returns.+--+-- 'addonVersion', 'describeAddonConfiguration_addonVersion' - The version of the add-on. The version must match one of the versions+-- returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+-- .+newDescribeAddonConfiguration ::+  -- | 'addonName'+  Prelude.Text ->+  -- | 'addonVersion'+  Prelude.Text ->+  DescribeAddonConfiguration+newDescribeAddonConfiguration+  pAddonName_+  pAddonVersion_ =+    DescribeAddonConfiguration'+      { addonName =+          pAddonName_,+        addonVersion = pAddonVersion_+      }++-- | The name of the add-on. The name must match one of the names that+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+-- returns.+describeAddonConfiguration_addonName :: Lens.Lens' DescribeAddonConfiguration Prelude.Text+describeAddonConfiguration_addonName = Lens.lens (\DescribeAddonConfiguration' {addonName} -> addonName) (\s@DescribeAddonConfiguration' {} a -> s {addonName = a} :: DescribeAddonConfiguration)++-- | The version of the add-on. The version must match one of the versions+-- returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+-- .+describeAddonConfiguration_addonVersion :: Lens.Lens' DescribeAddonConfiguration Prelude.Text+describeAddonConfiguration_addonVersion = Lens.lens (\DescribeAddonConfiguration' {addonVersion} -> addonVersion) (\s@DescribeAddonConfiguration' {} a -> s {addonVersion = a} :: DescribeAddonConfiguration)++instance Core.AWSRequest DescribeAddonConfiguration where+  type+    AWSResponse DescribeAddonConfiguration =+      DescribeAddonConfigurationResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeAddonConfigurationResponse'+            Prelude.<$> (x Data..?> "addonName")+            Prelude.<*> (x Data..?> "addonVersion")+            Prelude.<*> (x Data..?> "configurationSchema")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeAddonConfiguration where+  hashWithSalt _salt DescribeAddonConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` addonName+      `Prelude.hashWithSalt` addonVersion++instance Prelude.NFData DescribeAddonConfiguration where+  rnf DescribeAddonConfiguration' {..} =+    Prelude.rnf addonName+      `Prelude.seq` Prelude.rnf addonVersion++instance Data.ToHeaders DescribeAddonConfiguration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeAddonConfiguration where+  toPath =+    Prelude.const "/addons/configuration-schemas"++instance Data.ToQuery DescribeAddonConfiguration where+  toQuery DescribeAddonConfiguration' {..} =+    Prelude.mconcat+      [ "addonName" Data.=: addonName,+        "addonVersion" Data.=: addonVersion+      ]++-- | /See:/ 'newDescribeAddonConfigurationResponse' smart constructor.+data DescribeAddonConfigurationResponse = DescribeAddonConfigurationResponse'+  { -- | The name of the add-on.+    addonName :: Prelude.Maybe Prelude.Text,+    -- | The version of the add-on. The version must match one of the versions+    -- returned by+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+    -- .+    addonVersion :: Prelude.Maybe Prelude.Text,+    -- | A JSON schema that\'s used to validate the configuration values that you+    -- provide when an addon is created or updated.+    configurationSchema :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAddonConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addonName', 'describeAddonConfigurationResponse_addonName' - The name of the add-on.+--+-- 'addonVersion', 'describeAddonConfigurationResponse_addonVersion' - The version of the add-on. The version must match one of the versions+-- returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+-- .+--+-- 'configurationSchema', 'describeAddonConfigurationResponse_configurationSchema' - A JSON schema that\'s used to validate the configuration values that you+-- provide when an addon is created or updated.+--+-- 'httpStatus', 'describeAddonConfigurationResponse_httpStatus' - The response's http status code.+newDescribeAddonConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeAddonConfigurationResponse+newDescribeAddonConfigurationResponse pHttpStatus_ =+  DescribeAddonConfigurationResponse'+    { addonName =+        Prelude.Nothing,+      addonVersion = Prelude.Nothing,+      configurationSchema = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The name of the add-on.+describeAddonConfigurationResponse_addonName :: Lens.Lens' DescribeAddonConfigurationResponse (Prelude.Maybe Prelude.Text)+describeAddonConfigurationResponse_addonName = Lens.lens (\DescribeAddonConfigurationResponse' {addonName} -> addonName) (\s@DescribeAddonConfigurationResponse' {} a -> s {addonName = a} :: DescribeAddonConfigurationResponse)++-- | The version of the add-on. The version must match one of the versions+-- returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+-- .+describeAddonConfigurationResponse_addonVersion :: Lens.Lens' DescribeAddonConfigurationResponse (Prelude.Maybe Prelude.Text)+describeAddonConfigurationResponse_addonVersion = Lens.lens (\DescribeAddonConfigurationResponse' {addonVersion} -> addonVersion) (\s@DescribeAddonConfigurationResponse' {} a -> s {addonVersion = a} :: DescribeAddonConfigurationResponse)++-- | A JSON schema that\'s used to validate the configuration values that you+-- provide when an addon is created or updated.+describeAddonConfigurationResponse_configurationSchema :: Lens.Lens' DescribeAddonConfigurationResponse (Prelude.Maybe Prelude.Text)+describeAddonConfigurationResponse_configurationSchema = Lens.lens (\DescribeAddonConfigurationResponse' {configurationSchema} -> configurationSchema) (\s@DescribeAddonConfigurationResponse' {} a -> s {configurationSchema = a} :: DescribeAddonConfigurationResponse)++-- | The response's http status code.+describeAddonConfigurationResponse_httpStatus :: Lens.Lens' DescribeAddonConfigurationResponse Prelude.Int+describeAddonConfigurationResponse_httpStatus = Lens.lens (\DescribeAddonConfigurationResponse' {httpStatus} -> httpStatus) (\s@DescribeAddonConfigurationResponse' {} a -> s {httpStatus = a} :: DescribeAddonConfigurationResponse)++instance+  Prelude.NFData+    DescribeAddonConfigurationResponse+  where+  rnf DescribeAddonConfigurationResponse' {..} =+    Prelude.rnf addonName+      `Prelude.seq` Prelude.rnf addonVersion+      `Prelude.seq` Prelude.rnf configurationSchema+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DescribeAddonVersions.hs view
@@ -0,0 +1,344 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DescribeAddonVersions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes the versions for an add-on. Information such as the Kubernetes+-- versions that you can use the add-on with, the @owner@, @publisher@, and+-- the @type@ of the add-on are returned.+--+-- This operation returns paginated results.+module Amazonka.EKS.DescribeAddonVersions+  ( -- * Creating a Request+    DescribeAddonVersions (..),+    newDescribeAddonVersions,++    -- * Request Lenses+    describeAddonVersions_addonName,+    describeAddonVersions_kubernetesVersion,+    describeAddonVersions_maxResults,+    describeAddonVersions_nextToken,+    describeAddonVersions_owners,+    describeAddonVersions_publishers,+    describeAddonVersions_types,++    -- * Destructuring the Response+    DescribeAddonVersionsResponse (..),+    newDescribeAddonVersionsResponse,++    -- * Response Lenses+    describeAddonVersionsResponse_addons,+    describeAddonVersionsResponse_nextToken,+    describeAddonVersionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeAddonVersions' smart constructor.+data DescribeAddonVersions = DescribeAddonVersions'+  { -- | The name of the add-on. The name must match one of the names returned by+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+    -- .+    addonName :: Prelude.Maybe Prelude.Text,+    -- | The Kubernetes versions that you can use the add-on with.+    kubernetesVersion :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of results to return.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @DescribeAddonVersionsRequest@ where @maxResults@ was used and the+    -- results exceeded the value of that parameter. Pagination continues from+    -- the end of the previous results that returned the @nextToken@ value.+    --+    -- This token should be treated as an opaque identifier that is used only+    -- to retrieve the next items in a list and not for other programmatic+    -- purposes.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The owner of the add-on. For valid @owners@, don\'t specify a value for+    -- this property.+    owners :: Prelude.Maybe [Prelude.Text],+    -- | The publisher of the add-on. For valid @publishers@, don\'t specify a+    -- value for this property.+    publishers :: Prelude.Maybe [Prelude.Text],+    -- | The type of the add-on. For valid @types@, don\'t specify a value for+    -- this property.+    types :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAddonVersions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addonName', 'describeAddonVersions_addonName' - The name of the add-on. The name must match one of the names returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+-- .+--+-- 'kubernetesVersion', 'describeAddonVersions_kubernetesVersion' - The Kubernetes versions that you can use the add-on with.+--+-- 'maxResults', 'describeAddonVersions_maxResults' - The maximum number of results to return.+--+-- 'nextToken', 'describeAddonVersions_nextToken' - The @nextToken@ value returned from a previous paginated+-- @DescribeAddonVersionsRequest@ where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is used only+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+--+-- 'owners', 'describeAddonVersions_owners' - The owner of the add-on. For valid @owners@, don\'t specify a value for+-- this property.+--+-- 'publishers', 'describeAddonVersions_publishers' - The publisher of the add-on. For valid @publishers@, don\'t specify a+-- value for this property.+--+-- 'types', 'describeAddonVersions_types' - The type of the add-on. For valid @types@, don\'t specify a value for+-- this property.+newDescribeAddonVersions ::+  DescribeAddonVersions+newDescribeAddonVersions =+  DescribeAddonVersions'+    { addonName = Prelude.Nothing,+      kubernetesVersion = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      owners = Prelude.Nothing,+      publishers = Prelude.Nothing,+      types = Prelude.Nothing+    }++-- | The name of the add-on. The name must match one of the names returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+-- .+describeAddonVersions_addonName :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe Prelude.Text)+describeAddonVersions_addonName = Lens.lens (\DescribeAddonVersions' {addonName} -> addonName) (\s@DescribeAddonVersions' {} a -> s {addonName = a} :: DescribeAddonVersions)++-- | The Kubernetes versions that you can use the add-on with.+describeAddonVersions_kubernetesVersion :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe Prelude.Text)+describeAddonVersions_kubernetesVersion = Lens.lens (\DescribeAddonVersions' {kubernetesVersion} -> kubernetesVersion) (\s@DescribeAddonVersions' {} a -> s {kubernetesVersion = a} :: DescribeAddonVersions)++-- | The maximum number of results to return.+describeAddonVersions_maxResults :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe Prelude.Natural)+describeAddonVersions_maxResults = Lens.lens (\DescribeAddonVersions' {maxResults} -> maxResults) (\s@DescribeAddonVersions' {} a -> s {maxResults = a} :: DescribeAddonVersions)++-- | The @nextToken@ value returned from a previous paginated+-- @DescribeAddonVersionsRequest@ where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is used only+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+describeAddonVersions_nextToken :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe Prelude.Text)+describeAddonVersions_nextToken = Lens.lens (\DescribeAddonVersions' {nextToken} -> nextToken) (\s@DescribeAddonVersions' {} a -> s {nextToken = a} :: DescribeAddonVersions)++-- | The owner of the add-on. For valid @owners@, don\'t specify a value for+-- this property.+describeAddonVersions_owners :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe [Prelude.Text])+describeAddonVersions_owners = Lens.lens (\DescribeAddonVersions' {owners} -> owners) (\s@DescribeAddonVersions' {} a -> s {owners = a} :: DescribeAddonVersions) Prelude.. Lens.mapping Lens.coerced++-- | The publisher of the add-on. For valid @publishers@, don\'t specify a+-- value for this property.+describeAddonVersions_publishers :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe [Prelude.Text])+describeAddonVersions_publishers = Lens.lens (\DescribeAddonVersions' {publishers} -> publishers) (\s@DescribeAddonVersions' {} a -> s {publishers = a} :: DescribeAddonVersions) Prelude.. Lens.mapping Lens.coerced++-- | The type of the add-on. For valid @types@, don\'t specify a value for+-- this property.+describeAddonVersions_types :: Lens.Lens' DescribeAddonVersions (Prelude.Maybe [Prelude.Text])+describeAddonVersions_types = Lens.lens (\DescribeAddonVersions' {types} -> types) (\s@DescribeAddonVersions' {} a -> s {types = a} :: DescribeAddonVersions) Prelude.. Lens.mapping Lens.coerced++instance Core.AWSPager DescribeAddonVersions where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeAddonVersionsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeAddonVersionsResponse_addons+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeAddonVersions_nextToken+          Lens..~ rs+          Lens.^? describeAddonVersionsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeAddonVersions where+  type+    AWSResponse DescribeAddonVersions =+      DescribeAddonVersionsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeAddonVersionsResponse'+            Prelude.<$> (x Data..?> "addons" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeAddonVersions where+  hashWithSalt _salt DescribeAddonVersions' {..} =+    _salt+      `Prelude.hashWithSalt` addonName+      `Prelude.hashWithSalt` kubernetesVersion+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` owners+      `Prelude.hashWithSalt` publishers+      `Prelude.hashWithSalt` types++instance Prelude.NFData DescribeAddonVersions where+  rnf DescribeAddonVersions' {..} =+    Prelude.rnf addonName+      `Prelude.seq` Prelude.rnf kubernetesVersion+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf owners+      `Prelude.seq` Prelude.rnf publishers+      `Prelude.seq` Prelude.rnf types++instance Data.ToHeaders DescribeAddonVersions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeAddonVersions where+  toPath = Prelude.const "/addons/supported-versions"++instance Data.ToQuery DescribeAddonVersions where+  toQuery DescribeAddonVersions' {..} =+    Prelude.mconcat+      [ "addonName" Data.=: addonName,+        "kubernetesVersion" Data.=: kubernetesVersion,+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "owners"+          Data.=: Data.toQuery+            (Data.toQueryList "member" Prelude.<$> owners),+        "publishers"+          Data.=: Data.toQuery+            (Data.toQueryList "member" Prelude.<$> publishers),+        "types"+          Data.=: Data.toQuery+            (Data.toQueryList "member" Prelude.<$> types)+      ]++-- | /See:/ 'newDescribeAddonVersionsResponse' smart constructor.+data DescribeAddonVersionsResponse = DescribeAddonVersionsResponse'+  { -- | The list of available versions with Kubernetes version compatibility and+    -- other properties.+    addons :: Prelude.Maybe [AddonInfo],+    -- | The @nextToken@ value returned from a previous paginated+    -- @DescribeAddonVersionsResponse@ where @maxResults@ was used and the+    -- results exceeded the value of that parameter. Pagination continues from+    -- the end of the previous results that returned the @nextToken@ value.+    --+    -- This token should be treated as an opaque identifier that is used only+    -- to retrieve the next items in a list and not for other programmatic+    -- purposes.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAddonVersionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addons', 'describeAddonVersionsResponse_addons' - The list of available versions with Kubernetes version compatibility and+-- other properties.+--+-- 'nextToken', 'describeAddonVersionsResponse_nextToken' - The @nextToken@ value returned from a previous paginated+-- @DescribeAddonVersionsResponse@ where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is used only+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+--+-- 'httpStatus', 'describeAddonVersionsResponse_httpStatus' - The response's http status code.+newDescribeAddonVersionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeAddonVersionsResponse+newDescribeAddonVersionsResponse pHttpStatus_ =+  DescribeAddonVersionsResponse'+    { addons =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of available versions with Kubernetes version compatibility and+-- other properties.+describeAddonVersionsResponse_addons :: Lens.Lens' DescribeAddonVersionsResponse (Prelude.Maybe [AddonInfo])+describeAddonVersionsResponse_addons = Lens.lens (\DescribeAddonVersionsResponse' {addons} -> addons) (\s@DescribeAddonVersionsResponse' {} a -> s {addons = a} :: DescribeAddonVersionsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The @nextToken@ value returned from a previous paginated+-- @DescribeAddonVersionsResponse@ where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is used only+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+describeAddonVersionsResponse_nextToken :: Lens.Lens' DescribeAddonVersionsResponse (Prelude.Maybe Prelude.Text)+describeAddonVersionsResponse_nextToken = Lens.lens (\DescribeAddonVersionsResponse' {nextToken} -> nextToken) (\s@DescribeAddonVersionsResponse' {} a -> s {nextToken = a} :: DescribeAddonVersionsResponse)++-- | The response's http status code.+describeAddonVersionsResponse_httpStatus :: Lens.Lens' DescribeAddonVersionsResponse Prelude.Int+describeAddonVersionsResponse_httpStatus = Lens.lens (\DescribeAddonVersionsResponse' {httpStatus} -> httpStatus) (\s@DescribeAddonVersionsResponse' {} a -> s {httpStatus = a} :: DescribeAddonVersionsResponse)++instance Prelude.NFData DescribeAddonVersionsResponse where+  rnf DescribeAddonVersionsResponse' {..} =+    Prelude.rnf addons+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DescribeCluster.hs view
@@ -0,0 +1,165 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DescribeCluster+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns descriptive information about an Amazon EKS cluster.+--+-- The API server endpoint and certificate authority data returned by this+-- operation are required for @kubelet@ and @kubectl@ to communicate with+-- your Kubernetes API server. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html Create a kubeconfig for Amazon EKS>.+--+-- The API server endpoint and certificate authority data aren\'t available+-- until the cluster reaches the @ACTIVE@ state.+module Amazonka.EKS.DescribeCluster+  ( -- * Creating a Request+    DescribeCluster (..),+    newDescribeCluster,++    -- * Request Lenses+    describeCluster_name,++    -- * Destructuring the Response+    DescribeClusterResponse (..),+    newDescribeClusterResponse,++    -- * Response Lenses+    describeClusterResponse_cluster,+    describeClusterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeCluster' smart constructor.+data DescribeCluster = DescribeCluster'+  { -- | The name of the cluster to describe.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeCluster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'describeCluster_name' - The name of the cluster to describe.+newDescribeCluster ::+  -- | 'name'+  Prelude.Text ->+  DescribeCluster+newDescribeCluster pName_ =+  DescribeCluster' {name = pName_}++-- | The name of the cluster to describe.+describeCluster_name :: Lens.Lens' DescribeCluster Prelude.Text+describeCluster_name = Lens.lens (\DescribeCluster' {name} -> name) (\s@DescribeCluster' {} a -> s {name = a} :: DescribeCluster)++instance Core.AWSRequest DescribeCluster where+  type+    AWSResponse DescribeCluster =+      DescribeClusterResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeClusterResponse'+            Prelude.<$> (x Data..?> "cluster")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeCluster where+  hashWithSalt _salt DescribeCluster' {..} =+    _salt `Prelude.hashWithSalt` name++instance Prelude.NFData DescribeCluster where+  rnf DescribeCluster' {..} = Prelude.rnf name++instance Data.ToHeaders DescribeCluster where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeCluster where+  toPath DescribeCluster' {..} =+    Prelude.mconcat ["/clusters/", Data.toBS name]++instance Data.ToQuery DescribeCluster where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeClusterResponse' smart constructor.+data DescribeClusterResponse = DescribeClusterResponse'+  { -- | The full description of your specified cluster.+    cluster :: Prelude.Maybe Cluster,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeClusterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cluster', 'describeClusterResponse_cluster' - The full description of your specified cluster.+--+-- 'httpStatus', 'describeClusterResponse_httpStatus' - The response's http status code.+newDescribeClusterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeClusterResponse+newDescribeClusterResponse pHttpStatus_ =+  DescribeClusterResponse'+    { cluster = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The full description of your specified cluster.+describeClusterResponse_cluster :: Lens.Lens' DescribeClusterResponse (Prelude.Maybe Cluster)+describeClusterResponse_cluster = Lens.lens (\DescribeClusterResponse' {cluster} -> cluster) (\s@DescribeClusterResponse' {} a -> s {cluster = a} :: DescribeClusterResponse)++-- | The response's http status code.+describeClusterResponse_httpStatus :: Lens.Lens' DescribeClusterResponse Prelude.Int+describeClusterResponse_httpStatus = Lens.lens (\DescribeClusterResponse' {httpStatus} -> httpStatus) (\s@DescribeClusterResponse' {} a -> s {httpStatus = a} :: DescribeClusterResponse)++instance Prelude.NFData DescribeClusterResponse where+  rnf DescribeClusterResponse' {..} =+    Prelude.rnf cluster+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DescribeFargateProfile.hs view
@@ -0,0 +1,187 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DescribeFargateProfile+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns descriptive information about an Fargate profile.+module Amazonka.EKS.DescribeFargateProfile+  ( -- * Creating a Request+    DescribeFargateProfile (..),+    newDescribeFargateProfile,++    -- * Request Lenses+    describeFargateProfile_clusterName,+    describeFargateProfile_fargateProfileName,++    -- * Destructuring the Response+    DescribeFargateProfileResponse (..),+    newDescribeFargateProfileResponse,++    -- * Response Lenses+    describeFargateProfileResponse_fargateProfile,+    describeFargateProfileResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeFargateProfile' smart constructor.+data DescribeFargateProfile = DescribeFargateProfile'+  { -- | The name of the Amazon EKS cluster associated with the Fargate profile.+    clusterName :: Prelude.Text,+    -- | The name of the Fargate profile to describe.+    fargateProfileName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeFargateProfile' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterName', 'describeFargateProfile_clusterName' - The name of the Amazon EKS cluster associated with the Fargate profile.+--+-- 'fargateProfileName', 'describeFargateProfile_fargateProfileName' - The name of the Fargate profile to describe.+newDescribeFargateProfile ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'fargateProfileName'+  Prelude.Text ->+  DescribeFargateProfile+newDescribeFargateProfile+  pClusterName_+  pFargateProfileName_ =+    DescribeFargateProfile'+      { clusterName =+          pClusterName_,+        fargateProfileName = pFargateProfileName_+      }++-- | The name of the Amazon EKS cluster associated with the Fargate profile.+describeFargateProfile_clusterName :: Lens.Lens' DescribeFargateProfile Prelude.Text+describeFargateProfile_clusterName = Lens.lens (\DescribeFargateProfile' {clusterName} -> clusterName) (\s@DescribeFargateProfile' {} a -> s {clusterName = a} :: DescribeFargateProfile)++-- | The name of the Fargate profile to describe.+describeFargateProfile_fargateProfileName :: Lens.Lens' DescribeFargateProfile Prelude.Text+describeFargateProfile_fargateProfileName = Lens.lens (\DescribeFargateProfile' {fargateProfileName} -> fargateProfileName) (\s@DescribeFargateProfile' {} a -> s {fargateProfileName = a} :: DescribeFargateProfile)++instance Core.AWSRequest DescribeFargateProfile where+  type+    AWSResponse DescribeFargateProfile =+      DescribeFargateProfileResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeFargateProfileResponse'+            Prelude.<$> (x Data..?> "fargateProfile")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeFargateProfile where+  hashWithSalt _salt DescribeFargateProfile' {..} =+    _salt+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` fargateProfileName++instance Prelude.NFData DescribeFargateProfile where+  rnf DescribeFargateProfile' {..} =+    Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf fargateProfileName++instance Data.ToHeaders DescribeFargateProfile where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeFargateProfile where+  toPath DescribeFargateProfile' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/fargate-profiles/",+        Data.toBS fargateProfileName+      ]++instance Data.ToQuery DescribeFargateProfile where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeFargateProfileResponse' smart constructor.+data DescribeFargateProfileResponse = DescribeFargateProfileResponse'+  { -- | The full description of your Fargate profile.+    fargateProfile :: Prelude.Maybe FargateProfile,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeFargateProfileResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fargateProfile', 'describeFargateProfileResponse_fargateProfile' - The full description of your Fargate profile.+--+-- 'httpStatus', 'describeFargateProfileResponse_httpStatus' - The response's http status code.+newDescribeFargateProfileResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeFargateProfileResponse+newDescribeFargateProfileResponse pHttpStatus_ =+  DescribeFargateProfileResponse'+    { fargateProfile =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The full description of your Fargate profile.+describeFargateProfileResponse_fargateProfile :: Lens.Lens' DescribeFargateProfileResponse (Prelude.Maybe FargateProfile)+describeFargateProfileResponse_fargateProfile = Lens.lens (\DescribeFargateProfileResponse' {fargateProfile} -> fargateProfile) (\s@DescribeFargateProfileResponse' {} a -> s {fargateProfile = a} :: DescribeFargateProfileResponse)++-- | The response's http status code.+describeFargateProfileResponse_httpStatus :: Lens.Lens' DescribeFargateProfileResponse Prelude.Int+describeFargateProfileResponse_httpStatus = Lens.lens (\DescribeFargateProfileResponse' {httpStatus} -> httpStatus) (\s@DescribeFargateProfileResponse' {} a -> s {httpStatus = a} :: DescribeFargateProfileResponse)++instance+  Prelude.NFData+    DescribeFargateProfileResponse+  where+  rnf DescribeFargateProfileResponse' {..} =+    Prelude.rnf fargateProfile+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DescribeIdentityProviderConfig.hs view
@@ -0,0 +1,220 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DescribeIdentityProviderConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns descriptive information about an identity provider+-- configuration.+module Amazonka.EKS.DescribeIdentityProviderConfig+  ( -- * Creating a Request+    DescribeIdentityProviderConfig (..),+    newDescribeIdentityProviderConfig,++    -- * Request Lenses+    describeIdentityProviderConfig_clusterName,+    describeIdentityProviderConfig_identityProviderConfig,++    -- * Destructuring the Response+    DescribeIdentityProviderConfigResponse (..),+    newDescribeIdentityProviderConfigResponse,++    -- * Response Lenses+    describeIdentityProviderConfigResponse_identityProviderConfig,+    describeIdentityProviderConfigResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeIdentityProviderConfig' smart constructor.+data DescribeIdentityProviderConfig = DescribeIdentityProviderConfig'+  { -- | The cluster name that the identity provider configuration is associated+    -- to.+    clusterName :: Prelude.Text,+    -- | An object representing an identity provider configuration.+    identityProviderConfig :: IdentityProviderConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeIdentityProviderConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterName', 'describeIdentityProviderConfig_clusterName' - The cluster name that the identity provider configuration is associated+-- to.+--+-- 'identityProviderConfig', 'describeIdentityProviderConfig_identityProviderConfig' - An object representing an identity provider configuration.+newDescribeIdentityProviderConfig ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'identityProviderConfig'+  IdentityProviderConfig ->+  DescribeIdentityProviderConfig+newDescribeIdentityProviderConfig+  pClusterName_+  pIdentityProviderConfig_ =+    DescribeIdentityProviderConfig'+      { clusterName =+          pClusterName_,+        identityProviderConfig =+          pIdentityProviderConfig_+      }++-- | The cluster name that the identity provider configuration is associated+-- to.+describeIdentityProviderConfig_clusterName :: Lens.Lens' DescribeIdentityProviderConfig Prelude.Text+describeIdentityProviderConfig_clusterName = Lens.lens (\DescribeIdentityProviderConfig' {clusterName} -> clusterName) (\s@DescribeIdentityProviderConfig' {} a -> s {clusterName = a} :: DescribeIdentityProviderConfig)++-- | An object representing an identity provider configuration.+describeIdentityProviderConfig_identityProviderConfig :: Lens.Lens' DescribeIdentityProviderConfig IdentityProviderConfig+describeIdentityProviderConfig_identityProviderConfig = Lens.lens (\DescribeIdentityProviderConfig' {identityProviderConfig} -> identityProviderConfig) (\s@DescribeIdentityProviderConfig' {} a -> s {identityProviderConfig = a} :: DescribeIdentityProviderConfig)++instance+  Core.AWSRequest+    DescribeIdentityProviderConfig+  where+  type+    AWSResponse DescribeIdentityProviderConfig =+      DescribeIdentityProviderConfigResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeIdentityProviderConfigResponse'+            Prelude.<$> (x Data..?> "identityProviderConfig")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DescribeIdentityProviderConfig+  where+  hashWithSalt+    _salt+    DescribeIdentityProviderConfig' {..} =+      _salt+        `Prelude.hashWithSalt` clusterName+        `Prelude.hashWithSalt` identityProviderConfig++instance+  Prelude.NFData+    DescribeIdentityProviderConfig+  where+  rnf DescribeIdentityProviderConfig' {..} =+    Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf identityProviderConfig++instance+  Data.ToHeaders+    DescribeIdentityProviderConfig+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeIdentityProviderConfig where+  toJSON DescribeIdentityProviderConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "identityProviderConfig"+                  Data..= identityProviderConfig+              )+          ]+      )++instance Data.ToPath DescribeIdentityProviderConfig where+  toPath DescribeIdentityProviderConfig' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/identity-provider-configs/describe"+      ]++instance Data.ToQuery DescribeIdentityProviderConfig where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeIdentityProviderConfigResponse' smart constructor.+data DescribeIdentityProviderConfigResponse = DescribeIdentityProviderConfigResponse'+  { -- | The object that represents an OpenID Connect (OIDC) identity provider+    -- configuration.+    identityProviderConfig :: Prelude.Maybe IdentityProviderConfigResponse,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeIdentityProviderConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'identityProviderConfig', 'describeIdentityProviderConfigResponse_identityProviderConfig' - The object that represents an OpenID Connect (OIDC) identity provider+-- configuration.+--+-- 'httpStatus', 'describeIdentityProviderConfigResponse_httpStatus' - The response's http status code.+newDescribeIdentityProviderConfigResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeIdentityProviderConfigResponse+newDescribeIdentityProviderConfigResponse+  pHttpStatus_ =+    DescribeIdentityProviderConfigResponse'+      { identityProviderConfig =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The object that represents an OpenID Connect (OIDC) identity provider+-- configuration.+describeIdentityProviderConfigResponse_identityProviderConfig :: Lens.Lens' DescribeIdentityProviderConfigResponse (Prelude.Maybe IdentityProviderConfigResponse)+describeIdentityProviderConfigResponse_identityProviderConfig = Lens.lens (\DescribeIdentityProviderConfigResponse' {identityProviderConfig} -> identityProviderConfig) (\s@DescribeIdentityProviderConfigResponse' {} a -> s {identityProviderConfig = a} :: DescribeIdentityProviderConfigResponse)++-- | The response's http status code.+describeIdentityProviderConfigResponse_httpStatus :: Lens.Lens' DescribeIdentityProviderConfigResponse Prelude.Int+describeIdentityProviderConfigResponse_httpStatus = Lens.lens (\DescribeIdentityProviderConfigResponse' {httpStatus} -> httpStatus) (\s@DescribeIdentityProviderConfigResponse' {} a -> s {httpStatus = a} :: DescribeIdentityProviderConfigResponse)++instance+  Prelude.NFData+    DescribeIdentityProviderConfigResponse+  where+  rnf DescribeIdentityProviderConfigResponse' {..} =+    Prelude.rnf identityProviderConfig+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DescribeNodegroup.hs view
@@ -0,0 +1,181 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DescribeNodegroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns descriptive information about an Amazon EKS node group.+module Amazonka.EKS.DescribeNodegroup+  ( -- * Creating a Request+    DescribeNodegroup (..),+    newDescribeNodegroup,++    -- * Request Lenses+    describeNodegroup_clusterName,+    describeNodegroup_nodegroupName,++    -- * Destructuring the Response+    DescribeNodegroupResponse (..),+    newDescribeNodegroupResponse,++    -- * Response Lenses+    describeNodegroupResponse_nodegroup,+    describeNodegroupResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeNodegroup' smart constructor.+data DescribeNodegroup = DescribeNodegroup'+  { -- | The name of the Amazon EKS cluster associated with the node group.+    clusterName :: Prelude.Text,+    -- | The name of the node group to describe.+    nodegroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeNodegroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterName', 'describeNodegroup_clusterName' - The name of the Amazon EKS cluster associated with the node group.+--+-- 'nodegroupName', 'describeNodegroup_nodegroupName' - The name of the node group to describe.+newDescribeNodegroup ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'nodegroupName'+  Prelude.Text ->+  DescribeNodegroup+newDescribeNodegroup pClusterName_ pNodegroupName_ =+  DescribeNodegroup'+    { clusterName = pClusterName_,+      nodegroupName = pNodegroupName_+    }++-- | The name of the Amazon EKS cluster associated with the node group.+describeNodegroup_clusterName :: Lens.Lens' DescribeNodegroup Prelude.Text+describeNodegroup_clusterName = Lens.lens (\DescribeNodegroup' {clusterName} -> clusterName) (\s@DescribeNodegroup' {} a -> s {clusterName = a} :: DescribeNodegroup)++-- | The name of the node group to describe.+describeNodegroup_nodegroupName :: Lens.Lens' DescribeNodegroup Prelude.Text+describeNodegroup_nodegroupName = Lens.lens (\DescribeNodegroup' {nodegroupName} -> nodegroupName) (\s@DescribeNodegroup' {} a -> s {nodegroupName = a} :: DescribeNodegroup)++instance Core.AWSRequest DescribeNodegroup where+  type+    AWSResponse DescribeNodegroup =+      DescribeNodegroupResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeNodegroupResponse'+            Prelude.<$> (x Data..?> "nodegroup")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeNodegroup where+  hashWithSalt _salt DescribeNodegroup' {..} =+    _salt+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` nodegroupName++instance Prelude.NFData DescribeNodegroup where+  rnf DescribeNodegroup' {..} =+    Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf nodegroupName++instance Data.ToHeaders DescribeNodegroup where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeNodegroup where+  toPath DescribeNodegroup' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/node-groups/",+        Data.toBS nodegroupName+      ]++instance Data.ToQuery DescribeNodegroup where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeNodegroupResponse' smart constructor.+data DescribeNodegroupResponse = DescribeNodegroupResponse'+  { -- | The full description of your node group.+    nodegroup :: Prelude.Maybe Nodegroup,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeNodegroupResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nodegroup', 'describeNodegroupResponse_nodegroup' - The full description of your node group.+--+-- 'httpStatus', 'describeNodegroupResponse_httpStatus' - The response's http status code.+newDescribeNodegroupResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeNodegroupResponse+newDescribeNodegroupResponse pHttpStatus_ =+  DescribeNodegroupResponse'+    { nodegroup =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The full description of your node group.+describeNodegroupResponse_nodegroup :: Lens.Lens' DescribeNodegroupResponse (Prelude.Maybe Nodegroup)+describeNodegroupResponse_nodegroup = Lens.lens (\DescribeNodegroupResponse' {nodegroup} -> nodegroup) (\s@DescribeNodegroupResponse' {} a -> s {nodegroup = a} :: DescribeNodegroupResponse)++-- | The response's http status code.+describeNodegroupResponse_httpStatus :: Lens.Lens' DescribeNodegroupResponse Prelude.Int+describeNodegroupResponse_httpStatus = Lens.lens (\DescribeNodegroupResponse' {httpStatus} -> httpStatus) (\s@DescribeNodegroupResponse' {} a -> s {httpStatus = a} :: DescribeNodegroupResponse)++instance Prelude.NFData DescribeNodegroupResponse where+  rnf DescribeNodegroupResponse' {..} =+    Prelude.rnf nodegroup+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DescribeUpdate.hs view
@@ -0,0 +1,222 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DescribeUpdate+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns descriptive information about an update against your Amazon EKS+-- cluster or associated managed node group or Amazon EKS add-on.+--+-- When the status of the update is @Succeeded@, the update is complete. If+-- an update fails, the status is @Failed@, and an error detail explains+-- the reason for the failure.+module Amazonka.EKS.DescribeUpdate+  ( -- * Creating a Request+    DescribeUpdate (..),+    newDescribeUpdate,++    -- * Request Lenses+    describeUpdate_addonName,+    describeUpdate_nodegroupName,+    describeUpdate_name,+    describeUpdate_updateId,++    -- * Destructuring the Response+    DescribeUpdateResponse (..),+    newDescribeUpdateResponse,++    -- * Response Lenses+    describeUpdateResponse_update,+    describeUpdateResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeUpdate' smart constructor.+data DescribeUpdate = DescribeUpdate'+  { -- | The name of the add-on. The name must match one of the names returned by+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+    -- . This parameter is required if the update is an add-on update.+    addonName :: Prelude.Maybe Prelude.Text,+    -- | The name of the Amazon EKS node group associated with the update. This+    -- parameter is required if the update is a node group update.+    nodegroupName :: Prelude.Maybe Prelude.Text,+    -- | The name of the Amazon EKS cluster associated with the update.+    name :: Prelude.Text,+    -- | The ID of the update to describe.+    updateId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeUpdate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addonName', 'describeUpdate_addonName' - The name of the add-on. The name must match one of the names returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+-- . This parameter is required if the update is an add-on update.+--+-- 'nodegroupName', 'describeUpdate_nodegroupName' - The name of the Amazon EKS node group associated with the update. This+-- parameter is required if the update is a node group update.+--+-- 'name', 'describeUpdate_name' - The name of the Amazon EKS cluster associated with the update.+--+-- 'updateId', 'describeUpdate_updateId' - The ID of the update to describe.+newDescribeUpdate ::+  -- | 'name'+  Prelude.Text ->+  -- | 'updateId'+  Prelude.Text ->+  DescribeUpdate+newDescribeUpdate pName_ pUpdateId_ =+  DescribeUpdate'+    { addonName = Prelude.Nothing,+      nodegroupName = Prelude.Nothing,+      name = pName_,+      updateId = pUpdateId_+    }++-- | The name of the add-on. The name must match one of the names returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+-- . This parameter is required if the update is an add-on update.+describeUpdate_addonName :: Lens.Lens' DescribeUpdate (Prelude.Maybe Prelude.Text)+describeUpdate_addonName = Lens.lens (\DescribeUpdate' {addonName} -> addonName) (\s@DescribeUpdate' {} a -> s {addonName = a} :: DescribeUpdate)++-- | The name of the Amazon EKS node group associated with the update. This+-- parameter is required if the update is a node group update.+describeUpdate_nodegroupName :: Lens.Lens' DescribeUpdate (Prelude.Maybe Prelude.Text)+describeUpdate_nodegroupName = Lens.lens (\DescribeUpdate' {nodegroupName} -> nodegroupName) (\s@DescribeUpdate' {} a -> s {nodegroupName = a} :: DescribeUpdate)++-- | The name of the Amazon EKS cluster associated with the update.+describeUpdate_name :: Lens.Lens' DescribeUpdate Prelude.Text+describeUpdate_name = Lens.lens (\DescribeUpdate' {name} -> name) (\s@DescribeUpdate' {} a -> s {name = a} :: DescribeUpdate)++-- | The ID of the update to describe.+describeUpdate_updateId :: Lens.Lens' DescribeUpdate Prelude.Text+describeUpdate_updateId = Lens.lens (\DescribeUpdate' {updateId} -> updateId) (\s@DescribeUpdate' {} a -> s {updateId = a} :: DescribeUpdate)++instance Core.AWSRequest DescribeUpdate where+  type+    AWSResponse DescribeUpdate =+      DescribeUpdateResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeUpdateResponse'+            Prelude.<$> (x Data..?> "update")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeUpdate where+  hashWithSalt _salt DescribeUpdate' {..} =+    _salt+      `Prelude.hashWithSalt` addonName+      `Prelude.hashWithSalt` nodegroupName+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` updateId++instance Prelude.NFData DescribeUpdate where+  rnf DescribeUpdate' {..} =+    Prelude.rnf addonName+      `Prelude.seq` Prelude.rnf nodegroupName+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf updateId++instance Data.ToHeaders DescribeUpdate where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeUpdate where+  toPath DescribeUpdate' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS name,+        "/updates/",+        Data.toBS updateId+      ]++instance Data.ToQuery DescribeUpdate where+  toQuery DescribeUpdate' {..} =+    Prelude.mconcat+      [ "addonName" Data.=: addonName,+        "nodegroupName" Data.=: nodegroupName+      ]++-- | /See:/ 'newDescribeUpdateResponse' smart constructor.+data DescribeUpdateResponse = DescribeUpdateResponse'+  { -- | The full description of the specified update.+    update :: Prelude.Maybe Update,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeUpdateResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'update', 'describeUpdateResponse_update' - The full description of the specified update.+--+-- 'httpStatus', 'describeUpdateResponse_httpStatus' - The response's http status code.+newDescribeUpdateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeUpdateResponse+newDescribeUpdateResponse pHttpStatus_ =+  DescribeUpdateResponse'+    { update = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The full description of the specified update.+describeUpdateResponse_update :: Lens.Lens' DescribeUpdateResponse (Prelude.Maybe Update)+describeUpdateResponse_update = Lens.lens (\DescribeUpdateResponse' {update} -> update) (\s@DescribeUpdateResponse' {} a -> s {update = a} :: DescribeUpdateResponse)++-- | The response's http status code.+describeUpdateResponse_httpStatus :: Lens.Lens' DescribeUpdateResponse Prelude.Int+describeUpdateResponse_httpStatus = Lens.lens (\DescribeUpdateResponse' {httpStatus} -> httpStatus) (\s@DescribeUpdateResponse' {} a -> s {httpStatus = a} :: DescribeUpdateResponse)++instance Prelude.NFData DescribeUpdateResponse where+  rnf DescribeUpdateResponse' {..} =+    Prelude.rnf update+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/DisassociateIdentityProviderConfig.hs view
@@ -0,0 +1,241 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.DisassociateIdentityProviderConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Disassociates an identity provider configuration from a cluster. If you+-- disassociate an identity provider from your cluster, users included in+-- the provider can no longer access the cluster. However, you can still+-- access the cluster with Amazon Web Services IAM users.+module Amazonka.EKS.DisassociateIdentityProviderConfig+  ( -- * Creating a Request+    DisassociateIdentityProviderConfig (..),+    newDisassociateIdentityProviderConfig,++    -- * Request Lenses+    disassociateIdentityProviderConfig_clientRequestToken,+    disassociateIdentityProviderConfig_clusterName,+    disassociateIdentityProviderConfig_identityProviderConfig,++    -- * Destructuring the Response+    DisassociateIdentityProviderConfigResponse (..),+    newDisassociateIdentityProviderConfigResponse,++    -- * Response Lenses+    disassociateIdentityProviderConfigResponse_update,+    disassociateIdentityProviderConfigResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDisassociateIdentityProviderConfig' smart constructor.+data DisassociateIdentityProviderConfig = DisassociateIdentityProviderConfig'+  { -- | A unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the cluster to disassociate an identity provider from.+    clusterName :: Prelude.Text,+    -- | An object representing an identity provider configuration.+    identityProviderConfig :: IdentityProviderConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisassociateIdentityProviderConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'disassociateIdentityProviderConfig_clientRequestToken' - A unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'clusterName', 'disassociateIdentityProviderConfig_clusterName' - The name of the cluster to disassociate an identity provider from.+--+-- 'identityProviderConfig', 'disassociateIdentityProviderConfig_identityProviderConfig' - An object representing an identity provider configuration.+newDisassociateIdentityProviderConfig ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'identityProviderConfig'+  IdentityProviderConfig ->+  DisassociateIdentityProviderConfig+newDisassociateIdentityProviderConfig+  pClusterName_+  pIdentityProviderConfig_ =+    DisassociateIdentityProviderConfig'+      { clientRequestToken =+          Prelude.Nothing,+        clusterName = pClusterName_,+        identityProviderConfig =+          pIdentityProviderConfig_+      }++-- | A unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+disassociateIdentityProviderConfig_clientRequestToken :: Lens.Lens' DisassociateIdentityProviderConfig (Prelude.Maybe Prelude.Text)+disassociateIdentityProviderConfig_clientRequestToken = Lens.lens (\DisassociateIdentityProviderConfig' {clientRequestToken} -> clientRequestToken) (\s@DisassociateIdentityProviderConfig' {} a -> s {clientRequestToken = a} :: DisassociateIdentityProviderConfig)++-- | The name of the cluster to disassociate an identity provider from.+disassociateIdentityProviderConfig_clusterName :: Lens.Lens' DisassociateIdentityProviderConfig Prelude.Text+disassociateIdentityProviderConfig_clusterName = Lens.lens (\DisassociateIdentityProviderConfig' {clusterName} -> clusterName) (\s@DisassociateIdentityProviderConfig' {} a -> s {clusterName = a} :: DisassociateIdentityProviderConfig)++-- | An object representing an identity provider configuration.+disassociateIdentityProviderConfig_identityProviderConfig :: Lens.Lens' DisassociateIdentityProviderConfig IdentityProviderConfig+disassociateIdentityProviderConfig_identityProviderConfig = Lens.lens (\DisassociateIdentityProviderConfig' {identityProviderConfig} -> identityProviderConfig) (\s@DisassociateIdentityProviderConfig' {} a -> s {identityProviderConfig = a} :: DisassociateIdentityProviderConfig)++instance+  Core.AWSRequest+    DisassociateIdentityProviderConfig+  where+  type+    AWSResponse DisassociateIdentityProviderConfig =+      DisassociateIdentityProviderConfigResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DisassociateIdentityProviderConfigResponse'+            Prelude.<$> (x Data..?> "update")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DisassociateIdentityProviderConfig+  where+  hashWithSalt+    _salt+    DisassociateIdentityProviderConfig' {..} =+      _salt+        `Prelude.hashWithSalt` clientRequestToken+        `Prelude.hashWithSalt` clusterName+        `Prelude.hashWithSalt` identityProviderConfig++instance+  Prelude.NFData+    DisassociateIdentityProviderConfig+  where+  rnf DisassociateIdentityProviderConfig' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf identityProviderConfig++instance+  Data.ToHeaders+    DisassociateIdentityProviderConfig+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    DisassociateIdentityProviderConfig+  where+  toJSON DisassociateIdentityProviderConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            Prelude.Just+              ( "identityProviderConfig"+                  Data..= identityProviderConfig+              )+          ]+      )++instance+  Data.ToPath+    DisassociateIdentityProviderConfig+  where+  toPath DisassociateIdentityProviderConfig' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/identity-provider-configs/disassociate"+      ]++instance+  Data.ToQuery+    DisassociateIdentityProviderConfig+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDisassociateIdentityProviderConfigResponse' smart constructor.+data DisassociateIdentityProviderConfigResponse = DisassociateIdentityProviderConfigResponse'+  { update :: Prelude.Maybe Update,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisassociateIdentityProviderConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'update', 'disassociateIdentityProviderConfigResponse_update' - Undocumented member.+--+-- 'httpStatus', 'disassociateIdentityProviderConfigResponse_httpStatus' - The response's http status code.+newDisassociateIdentityProviderConfigResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DisassociateIdentityProviderConfigResponse+newDisassociateIdentityProviderConfigResponse+  pHttpStatus_ =+    DisassociateIdentityProviderConfigResponse'+      { update =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | Undocumented member.+disassociateIdentityProviderConfigResponse_update :: Lens.Lens' DisassociateIdentityProviderConfigResponse (Prelude.Maybe Update)+disassociateIdentityProviderConfigResponse_update = Lens.lens (\DisassociateIdentityProviderConfigResponse' {update} -> update) (\s@DisassociateIdentityProviderConfigResponse' {} a -> s {update = a} :: DisassociateIdentityProviderConfigResponse)++-- | The response's http status code.+disassociateIdentityProviderConfigResponse_httpStatus :: Lens.Lens' DisassociateIdentityProviderConfigResponse Prelude.Int+disassociateIdentityProviderConfigResponse_httpStatus = Lens.lens (\DisassociateIdentityProviderConfigResponse' {httpStatus} -> httpStatus) (\s@DisassociateIdentityProviderConfigResponse' {} a -> s {httpStatus = a} :: DisassociateIdentityProviderConfigResponse)++instance+  Prelude.NFData+    DisassociateIdentityProviderConfigResponse+  where+  rnf DisassociateIdentityProviderConfigResponse' {..} =+    Prelude.rnf update+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/Lens.hs view
@@ -0,0 +1,678 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Lens+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Lens+  ( -- * Operations++    -- ** AssociateEncryptionConfig+    associateEncryptionConfig_clientRequestToken,+    associateEncryptionConfig_clusterName,+    associateEncryptionConfig_encryptionConfig,+    associateEncryptionConfigResponse_update,+    associateEncryptionConfigResponse_httpStatus,++    -- ** AssociateIdentityProviderConfig+    associateIdentityProviderConfig_clientRequestToken,+    associateIdentityProviderConfig_tags,+    associateIdentityProviderConfig_clusterName,+    associateIdentityProviderConfig_oidc,+    associateIdentityProviderConfigResponse_tags,+    associateIdentityProviderConfigResponse_update,+    associateIdentityProviderConfigResponse_httpStatus,++    -- ** CreateAddon+    createAddon_addonVersion,+    createAddon_clientRequestToken,+    createAddon_configurationValues,+    createAddon_resolveConflicts,+    createAddon_serviceAccountRoleArn,+    createAddon_tags,+    createAddon_clusterName,+    createAddon_addonName,+    createAddonResponse_addon,+    createAddonResponse_httpStatus,++    -- ** CreateCluster+    createCluster_clientRequestToken,+    createCluster_encryptionConfig,+    createCluster_kubernetesNetworkConfig,+    createCluster_logging,+    createCluster_outpostConfig,+    createCluster_tags,+    createCluster_version,+    createCluster_name,+    createCluster_roleArn,+    createCluster_resourcesVpcConfig,+    createClusterResponse_cluster,+    createClusterResponse_httpStatus,++    -- ** CreateFargateProfile+    createFargateProfile_clientRequestToken,+    createFargateProfile_selectors,+    createFargateProfile_subnets,+    createFargateProfile_tags,+    createFargateProfile_fargateProfileName,+    createFargateProfile_clusterName,+    createFargateProfile_podExecutionRoleArn,+    createFargateProfileResponse_fargateProfile,+    createFargateProfileResponse_httpStatus,++    -- ** CreateNodegroup+    createNodegroup_amiType,+    createNodegroup_capacityType,+    createNodegroup_clientRequestToken,+    createNodegroup_diskSize,+    createNodegroup_instanceTypes,+    createNodegroup_labels,+    createNodegroup_launchTemplate,+    createNodegroup_releaseVersion,+    createNodegroup_remoteAccess,+    createNodegroup_scalingConfig,+    createNodegroup_tags,+    createNodegroup_taints,+    createNodegroup_updateConfig,+    createNodegroup_version,+    createNodegroup_clusterName,+    createNodegroup_nodegroupName,+    createNodegroup_subnets,+    createNodegroup_nodeRole,+    createNodegroupResponse_nodegroup,+    createNodegroupResponse_httpStatus,++    -- ** DeleteAddon+    deleteAddon_preserve,+    deleteAddon_clusterName,+    deleteAddon_addonName,+    deleteAddonResponse_addon,+    deleteAddonResponse_httpStatus,++    -- ** DeleteCluster+    deleteCluster_name,+    deleteClusterResponse_cluster,+    deleteClusterResponse_httpStatus,++    -- ** DeleteFargateProfile+    deleteFargateProfile_clusterName,+    deleteFargateProfile_fargateProfileName,+    deleteFargateProfileResponse_fargateProfile,+    deleteFargateProfileResponse_httpStatus,++    -- ** DeleteNodegroup+    deleteNodegroup_clusterName,+    deleteNodegroup_nodegroupName,+    deleteNodegroupResponse_nodegroup,+    deleteNodegroupResponse_httpStatus,++    -- ** DeregisterCluster+    deregisterCluster_name,+    deregisterClusterResponse_cluster,+    deregisterClusterResponse_httpStatus,++    -- ** DescribeAddon+    describeAddon_clusterName,+    describeAddon_addonName,+    describeAddonResponse_addon,+    describeAddonResponse_httpStatus,++    -- ** DescribeAddonConfiguration+    describeAddonConfiguration_addonName,+    describeAddonConfiguration_addonVersion,+    describeAddonConfigurationResponse_addonName,+    describeAddonConfigurationResponse_addonVersion,+    describeAddonConfigurationResponse_configurationSchema,+    describeAddonConfigurationResponse_httpStatus,++    -- ** DescribeAddonVersions+    describeAddonVersions_addonName,+    describeAddonVersions_kubernetesVersion,+    describeAddonVersions_maxResults,+    describeAddonVersions_nextToken,+    describeAddonVersions_owners,+    describeAddonVersions_publishers,+    describeAddonVersions_types,+    describeAddonVersionsResponse_addons,+    describeAddonVersionsResponse_nextToken,+    describeAddonVersionsResponse_httpStatus,++    -- ** DescribeCluster+    describeCluster_name,+    describeClusterResponse_cluster,+    describeClusterResponse_httpStatus,++    -- ** DescribeFargateProfile+    describeFargateProfile_clusterName,+    describeFargateProfile_fargateProfileName,+    describeFargateProfileResponse_fargateProfile,+    describeFargateProfileResponse_httpStatus,++    -- ** DescribeIdentityProviderConfig+    describeIdentityProviderConfig_clusterName,+    describeIdentityProviderConfig_identityProviderConfig,+    describeIdentityProviderConfigResponse_identityProviderConfig,+    describeIdentityProviderConfigResponse_httpStatus,++    -- ** DescribeNodegroup+    describeNodegroup_clusterName,+    describeNodegroup_nodegroupName,+    describeNodegroupResponse_nodegroup,+    describeNodegroupResponse_httpStatus,++    -- ** DescribeUpdate+    describeUpdate_addonName,+    describeUpdate_nodegroupName,+    describeUpdate_name,+    describeUpdate_updateId,+    describeUpdateResponse_update,+    describeUpdateResponse_httpStatus,++    -- ** DisassociateIdentityProviderConfig+    disassociateIdentityProviderConfig_clientRequestToken,+    disassociateIdentityProviderConfig_clusterName,+    disassociateIdentityProviderConfig_identityProviderConfig,+    disassociateIdentityProviderConfigResponse_update,+    disassociateIdentityProviderConfigResponse_httpStatus,++    -- ** ListAddons+    listAddons_maxResults,+    listAddons_nextToken,+    listAddons_clusterName,+    listAddonsResponse_addons,+    listAddonsResponse_nextToken,+    listAddonsResponse_httpStatus,++    -- ** ListClusters+    listClusters_include,+    listClusters_maxResults,+    listClusters_nextToken,+    listClustersResponse_clusters,+    listClustersResponse_nextToken,+    listClustersResponse_httpStatus,++    -- ** ListFargateProfiles+    listFargateProfiles_maxResults,+    listFargateProfiles_nextToken,+    listFargateProfiles_clusterName,+    listFargateProfilesResponse_fargateProfileNames,+    listFargateProfilesResponse_nextToken,+    listFargateProfilesResponse_httpStatus,++    -- ** ListIdentityProviderConfigs+    listIdentityProviderConfigs_maxResults,+    listIdentityProviderConfigs_nextToken,+    listIdentityProviderConfigs_clusterName,+    listIdentityProviderConfigsResponse_identityProviderConfigs,+    listIdentityProviderConfigsResponse_nextToken,+    listIdentityProviderConfigsResponse_httpStatus,++    -- ** ListNodegroups+    listNodegroups_maxResults,+    listNodegroups_nextToken,+    listNodegroups_clusterName,+    listNodegroupsResponse_nextToken,+    listNodegroupsResponse_nodegroups,+    listNodegroupsResponse_httpStatus,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** ListUpdates+    listUpdates_addonName,+    listUpdates_maxResults,+    listUpdates_nextToken,+    listUpdates_nodegroupName,+    listUpdates_name,+    listUpdatesResponse_nextToken,+    listUpdatesResponse_updateIds,+    listUpdatesResponse_httpStatus,++    -- ** RegisterCluster+    registerCluster_clientRequestToken,+    registerCluster_tags,+    registerCluster_name,+    registerCluster_connectorConfig,+    registerClusterResponse_cluster,+    registerClusterResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateAddon+    updateAddon_addonVersion,+    updateAddon_clientRequestToken,+    updateAddon_configurationValues,+    updateAddon_resolveConflicts,+    updateAddon_serviceAccountRoleArn,+    updateAddon_clusterName,+    updateAddon_addonName,+    updateAddonResponse_update,+    updateAddonResponse_httpStatus,++    -- ** UpdateClusterConfig+    updateClusterConfig_clientRequestToken,+    updateClusterConfig_logging,+    updateClusterConfig_resourcesVpcConfig,+    updateClusterConfig_name,+    updateClusterConfigResponse_update,+    updateClusterConfigResponse_httpStatus,++    -- ** UpdateClusterVersion+    updateClusterVersion_clientRequestToken,+    updateClusterVersion_name,+    updateClusterVersion_version,+    updateClusterVersionResponse_update,+    updateClusterVersionResponse_httpStatus,++    -- ** UpdateNodegroupConfig+    updateNodegroupConfig_clientRequestToken,+    updateNodegroupConfig_labels,+    updateNodegroupConfig_scalingConfig,+    updateNodegroupConfig_taints,+    updateNodegroupConfig_updateConfig,+    updateNodegroupConfig_clusterName,+    updateNodegroupConfig_nodegroupName,+    updateNodegroupConfigResponse_update,+    updateNodegroupConfigResponse_httpStatus,++    -- ** UpdateNodegroupVersion+    updateNodegroupVersion_clientRequestToken,+    updateNodegroupVersion_force,+    updateNodegroupVersion_launchTemplate,+    updateNodegroupVersion_releaseVersion,+    updateNodegroupVersion_version,+    updateNodegroupVersion_clusterName,+    updateNodegroupVersion_nodegroupName,+    updateNodegroupVersionResponse_update,+    updateNodegroupVersionResponse_httpStatus,++    -- * Types++    -- ** Addon+    addon_addonArn,+    addon_addonName,+    addon_addonVersion,+    addon_clusterName,+    addon_configurationValues,+    addon_createdAt,+    addon_health,+    addon_marketplaceInformation,+    addon_modifiedAt,+    addon_owner,+    addon_publisher,+    addon_serviceAccountRoleArn,+    addon_status,+    addon_tags,++    -- ** AddonHealth+    addonHealth_issues,++    -- ** AddonInfo+    addonInfo_addonName,+    addonInfo_addonVersions,+    addonInfo_marketplaceInformation,+    addonInfo_owner,+    addonInfo_publisher,+    addonInfo_type,++    -- ** AddonIssue+    addonIssue_code,+    addonIssue_message,+    addonIssue_resourceIds,++    -- ** AddonVersionInfo+    addonVersionInfo_addonVersion,+    addonVersionInfo_architecture,+    addonVersionInfo_compatibilities,+    addonVersionInfo_requiresConfiguration,++    -- ** AutoScalingGroup+    autoScalingGroup_name,++    -- ** Certificate+    certificate_data,++    -- ** Cluster+    cluster_arn,+    cluster_certificateAuthority,+    cluster_clientRequestToken,+    cluster_connectorConfig,+    cluster_createdAt,+    cluster_encryptionConfig,+    cluster_endpoint,+    cluster_health,+    cluster_id,+    cluster_identity,+    cluster_kubernetesNetworkConfig,+    cluster_logging,+    cluster_name,+    cluster_outpostConfig,+    cluster_platformVersion,+    cluster_resourcesVpcConfig,+    cluster_roleArn,+    cluster_status,+    cluster_tags,+    cluster_version,++    -- ** ClusterHealth+    clusterHealth_issues,++    -- ** ClusterIssue+    clusterIssue_code,+    clusterIssue_message,+    clusterIssue_resourceIds,++    -- ** Compatibility+    compatibility_clusterVersion,+    compatibility_defaultVersion,+    compatibility_platformVersions,++    -- ** ConnectorConfigRequest+    connectorConfigRequest_roleArn,+    connectorConfigRequest_provider,++    -- ** ConnectorConfigResponse+    connectorConfigResponse_activationCode,+    connectorConfigResponse_activationExpiry,+    connectorConfigResponse_activationId,+    connectorConfigResponse_provider,+    connectorConfigResponse_roleArn,++    -- ** ControlPlanePlacementRequest+    controlPlanePlacementRequest_groupName,++    -- ** ControlPlanePlacementResponse+    controlPlanePlacementResponse_groupName,++    -- ** EncryptionConfig+    encryptionConfig_provider,+    encryptionConfig_resources,++    -- ** ErrorDetail+    errorDetail_errorCode,+    errorDetail_errorMessage,+    errorDetail_resourceIds,++    -- ** FargateProfile+    fargateProfile_clusterName,+    fargateProfile_createdAt,+    fargateProfile_fargateProfileArn,+    fargateProfile_fargateProfileName,+    fargateProfile_podExecutionRoleArn,+    fargateProfile_selectors,+    fargateProfile_status,+    fargateProfile_subnets,+    fargateProfile_tags,++    -- ** FargateProfileSelector+    fargateProfileSelector_labels,+    fargateProfileSelector_namespace,++    -- ** Identity+    identity_oidc,++    -- ** IdentityProviderConfig+    identityProviderConfig_type,+    identityProviderConfig_name,++    -- ** IdentityProviderConfigResponse+    identityProviderConfigResponse_oidc,++    -- ** Issue+    issue_code,+    issue_message,+    issue_resourceIds,++    -- ** KubernetesNetworkConfigRequest+    kubernetesNetworkConfigRequest_ipFamily,+    kubernetesNetworkConfigRequest_serviceIpv4Cidr,++    -- ** KubernetesNetworkConfigResponse+    kubernetesNetworkConfigResponse_ipFamily,+    kubernetesNetworkConfigResponse_serviceIpv4Cidr,+    kubernetesNetworkConfigResponse_serviceIpv6Cidr,++    -- ** LaunchTemplateSpecification+    launchTemplateSpecification_id,+    launchTemplateSpecification_name,+    launchTemplateSpecification_version,++    -- ** LogSetup+    logSetup_enabled,+    logSetup_types,++    -- ** Logging+    logging_clusterLogging,++    -- ** MarketplaceInformation+    marketplaceInformation_productId,+    marketplaceInformation_productUrl,++    -- ** Nodegroup+    nodegroup_amiType,+    nodegroup_capacityType,+    nodegroup_clusterName,+    nodegroup_createdAt,+    nodegroup_diskSize,+    nodegroup_health,+    nodegroup_instanceTypes,+    nodegroup_labels,+    nodegroup_launchTemplate,+    nodegroup_modifiedAt,+    nodegroup_nodeRole,+    nodegroup_nodegroupArn,+    nodegroup_nodegroupName,+    nodegroup_releaseVersion,+    nodegroup_remoteAccess,+    nodegroup_resources,+    nodegroup_scalingConfig,+    nodegroup_status,+    nodegroup_subnets,+    nodegroup_tags,+    nodegroup_taints,+    nodegroup_updateConfig,+    nodegroup_version,++    -- ** NodegroupHealth+    nodegroupHealth_issues,++    -- ** NodegroupResources+    nodegroupResources_autoScalingGroups,+    nodegroupResources_remoteAccessSecurityGroup,++    -- ** NodegroupScalingConfig+    nodegroupScalingConfig_desiredSize,+    nodegroupScalingConfig_maxSize,+    nodegroupScalingConfig_minSize,++    -- ** NodegroupUpdateConfig+    nodegroupUpdateConfig_maxUnavailable,+    nodegroupUpdateConfig_maxUnavailablePercentage,++    -- ** OIDC+    oidc_issuer,++    -- ** OidcIdentityProviderConfig+    oidcIdentityProviderConfig_clientId,+    oidcIdentityProviderConfig_clusterName,+    oidcIdentityProviderConfig_groupsClaim,+    oidcIdentityProviderConfig_groupsPrefix,+    oidcIdentityProviderConfig_identityProviderConfigArn,+    oidcIdentityProviderConfig_identityProviderConfigName,+    oidcIdentityProviderConfig_issuerUrl,+    oidcIdentityProviderConfig_requiredClaims,+    oidcIdentityProviderConfig_status,+    oidcIdentityProviderConfig_tags,+    oidcIdentityProviderConfig_usernameClaim,+    oidcIdentityProviderConfig_usernamePrefix,++    -- ** OidcIdentityProviderConfigRequest+    oidcIdentityProviderConfigRequest_groupsClaim,+    oidcIdentityProviderConfigRequest_groupsPrefix,+    oidcIdentityProviderConfigRequest_requiredClaims,+    oidcIdentityProviderConfigRequest_usernameClaim,+    oidcIdentityProviderConfigRequest_usernamePrefix,+    oidcIdentityProviderConfigRequest_identityProviderConfigName,+    oidcIdentityProviderConfigRequest_issuerUrl,+    oidcIdentityProviderConfigRequest_clientId,++    -- ** OutpostConfigRequest+    outpostConfigRequest_controlPlanePlacement,+    outpostConfigRequest_outpostArns,+    outpostConfigRequest_controlPlaneInstanceType,++    -- ** OutpostConfigResponse+    outpostConfigResponse_controlPlanePlacement,+    outpostConfigResponse_outpostArns,+    outpostConfigResponse_controlPlaneInstanceType,++    -- ** Provider+    provider_keyArn,++    -- ** RemoteAccessConfig+    remoteAccessConfig_ec2SshKey,+    remoteAccessConfig_sourceSecurityGroups,++    -- ** Taint+    taint_effect,+    taint_key,+    taint_value,++    -- ** Update+    update_createdAt,+    update_errors,+    update_id,+    update_params,+    update_status,+    update_type,++    -- ** UpdateLabelsPayload+    updateLabelsPayload_addOrUpdateLabels,+    updateLabelsPayload_removeLabels,++    -- ** UpdateParam+    updateParam_type,+    updateParam_value,++    -- ** UpdateTaintsPayload+    updateTaintsPayload_addOrUpdateTaints,+    updateTaintsPayload_removeTaints,++    -- ** VpcConfigRequest+    vpcConfigRequest_endpointPrivateAccess,+    vpcConfigRequest_endpointPublicAccess,+    vpcConfigRequest_publicAccessCidrs,+    vpcConfigRequest_securityGroupIds,+    vpcConfigRequest_subnetIds,++    -- ** VpcConfigResponse+    vpcConfigResponse_clusterSecurityGroupId,+    vpcConfigResponse_endpointPrivateAccess,+    vpcConfigResponse_endpointPublicAccess,+    vpcConfigResponse_publicAccessCidrs,+    vpcConfigResponse_securityGroupIds,+    vpcConfigResponse_subnetIds,+    vpcConfigResponse_vpcId,+  )+where++import Amazonka.EKS.AssociateEncryptionConfig+import Amazonka.EKS.AssociateIdentityProviderConfig+import Amazonka.EKS.CreateAddon+import Amazonka.EKS.CreateCluster+import Amazonka.EKS.CreateFargateProfile+import Amazonka.EKS.CreateNodegroup+import Amazonka.EKS.DeleteAddon+import Amazonka.EKS.DeleteCluster+import Amazonka.EKS.DeleteFargateProfile+import Amazonka.EKS.DeleteNodegroup+import Amazonka.EKS.DeregisterCluster+import Amazonka.EKS.DescribeAddon+import Amazonka.EKS.DescribeAddonConfiguration+import Amazonka.EKS.DescribeAddonVersions+import Amazonka.EKS.DescribeCluster+import Amazonka.EKS.DescribeFargateProfile+import Amazonka.EKS.DescribeIdentityProviderConfig+import Amazonka.EKS.DescribeNodegroup+import Amazonka.EKS.DescribeUpdate+import Amazonka.EKS.DisassociateIdentityProviderConfig+import Amazonka.EKS.ListAddons+import Amazonka.EKS.ListClusters+import Amazonka.EKS.ListFargateProfiles+import Amazonka.EKS.ListIdentityProviderConfigs+import Amazonka.EKS.ListNodegroups+import Amazonka.EKS.ListTagsForResource+import Amazonka.EKS.ListUpdates+import Amazonka.EKS.RegisterCluster+import Amazonka.EKS.TagResource+import Amazonka.EKS.Types.Addon+import Amazonka.EKS.Types.AddonHealth+import Amazonka.EKS.Types.AddonInfo+import Amazonka.EKS.Types.AddonIssue+import Amazonka.EKS.Types.AddonVersionInfo+import Amazonka.EKS.Types.AutoScalingGroup+import Amazonka.EKS.Types.Certificate+import Amazonka.EKS.Types.Cluster+import Amazonka.EKS.Types.ClusterHealth+import Amazonka.EKS.Types.ClusterIssue+import Amazonka.EKS.Types.Compatibility+import Amazonka.EKS.Types.ConnectorConfigRequest+import Amazonka.EKS.Types.ConnectorConfigResponse+import Amazonka.EKS.Types.ControlPlanePlacementRequest+import Amazonka.EKS.Types.ControlPlanePlacementResponse+import Amazonka.EKS.Types.EncryptionConfig+import Amazonka.EKS.Types.ErrorDetail+import Amazonka.EKS.Types.FargateProfile+import Amazonka.EKS.Types.FargateProfileSelector+import Amazonka.EKS.Types.Identity+import Amazonka.EKS.Types.IdentityProviderConfig+import Amazonka.EKS.Types.IdentityProviderConfigResponse+import Amazonka.EKS.Types.Issue+import Amazonka.EKS.Types.KubernetesNetworkConfigRequest+import Amazonka.EKS.Types.KubernetesNetworkConfigResponse+import Amazonka.EKS.Types.LaunchTemplateSpecification+import Amazonka.EKS.Types.LogSetup+import Amazonka.EKS.Types.Logging+import Amazonka.EKS.Types.MarketplaceInformation+import Amazonka.EKS.Types.Nodegroup+import Amazonka.EKS.Types.NodegroupHealth+import Amazonka.EKS.Types.NodegroupResources+import Amazonka.EKS.Types.NodegroupScalingConfig+import Amazonka.EKS.Types.NodegroupUpdateConfig+import Amazonka.EKS.Types.OIDC+import Amazonka.EKS.Types.OidcIdentityProviderConfig+import Amazonka.EKS.Types.OidcIdentityProviderConfigRequest+import Amazonka.EKS.Types.OutpostConfigRequest+import Amazonka.EKS.Types.OutpostConfigResponse+import Amazonka.EKS.Types.Provider+import Amazonka.EKS.Types.RemoteAccessConfig+import Amazonka.EKS.Types.Taint+import Amazonka.EKS.Types.Update+import Amazonka.EKS.Types.UpdateLabelsPayload+import Amazonka.EKS.Types.UpdateParam+import Amazonka.EKS.Types.UpdateTaintsPayload+import Amazonka.EKS.Types.VpcConfigRequest+import Amazonka.EKS.Types.VpcConfigResponse+import Amazonka.EKS.UntagResource+import Amazonka.EKS.UpdateAddon+import Amazonka.EKS.UpdateClusterConfig+import Amazonka.EKS.UpdateClusterVersion+import Amazonka.EKS.UpdateNodegroupConfig+import Amazonka.EKS.UpdateNodegroupVersion
+ gen/Amazonka/EKS/ListAddons.hs view
@@ -0,0 +1,287 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.ListAddons+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists the available add-ons.+--+-- This operation returns paginated results.+module Amazonka.EKS.ListAddons+  ( -- * Creating a Request+    ListAddons (..),+    newListAddons,++    -- * Request Lenses+    listAddons_maxResults,+    listAddons_nextToken,+    listAddons_clusterName,++    -- * Destructuring the Response+    ListAddonsResponse (..),+    newListAddonsResponse,++    -- * Response Lenses+    listAddonsResponse_addons,+    listAddonsResponse_nextToken,+    listAddonsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAddons' smart constructor.+data ListAddons = ListAddons'+  { -- | The maximum number of add-on results returned by @ListAddonsRequest@ in+    -- paginated output. When you use this parameter, @ListAddonsRequest@+    -- returns only @maxResults@ results in a single page along with a+    -- @nextToken@ response element. You can see the remaining results of the+    -- initial request by sending another @ListAddonsRequest@ request with the+    -- returned @nextToken@ value. This value can be between 1 and 100. If you+    -- don\'t use this parameter, @ListAddonsRequest@ returns up to 100 results+    -- and a @nextToken@ value, if applicable.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListAddonsRequest@ where @maxResults@ was used and the results exceeded+    -- the value of that parameter. Pagination continues from the end of the+    -- previous results that returned the @nextToken@ value.+    --+    -- This token should be treated as an opaque identifier that is used only+    -- to retrieve the next items in a list and not for other programmatic+    -- purposes.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the cluster.+    clusterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAddons' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listAddons_maxResults' - The maximum number of add-on results returned by @ListAddonsRequest@ in+-- paginated output. When you use this parameter, @ListAddonsRequest@+-- returns only @maxResults@ results in a single page along with a+-- @nextToken@ response element. You can see the remaining results of the+-- initial request by sending another @ListAddonsRequest@ request with the+-- returned @nextToken@ value. This value can be between 1 and 100. If you+-- don\'t use this parameter, @ListAddonsRequest@ returns up to 100 results+-- and a @nextToken@ value, if applicable.+--+-- 'nextToken', 'listAddons_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListAddonsRequest@ where @maxResults@ was used and the results exceeded+-- the value of that parameter. Pagination continues from the end of the+-- previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is used only+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+--+-- 'clusterName', 'listAddons_clusterName' - The name of the cluster.+newListAddons ::+  -- | 'clusterName'+  Prelude.Text ->+  ListAddons+newListAddons pClusterName_ =+  ListAddons'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      clusterName = pClusterName_+    }++-- | The maximum number of add-on results returned by @ListAddonsRequest@ in+-- paginated output. When you use this parameter, @ListAddonsRequest@+-- returns only @maxResults@ results in a single page along with a+-- @nextToken@ response element. You can see the remaining results of the+-- initial request by sending another @ListAddonsRequest@ request with the+-- returned @nextToken@ value. This value can be between 1 and 100. If you+-- don\'t use this parameter, @ListAddonsRequest@ returns up to 100 results+-- and a @nextToken@ value, if applicable.+listAddons_maxResults :: Lens.Lens' ListAddons (Prelude.Maybe Prelude.Natural)+listAddons_maxResults = Lens.lens (\ListAddons' {maxResults} -> maxResults) (\s@ListAddons' {} a -> s {maxResults = a} :: ListAddons)++-- | The @nextToken@ value returned from a previous paginated+-- @ListAddonsRequest@ where @maxResults@ was used and the results exceeded+-- the value of that parameter. Pagination continues from the end of the+-- previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is used only+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+listAddons_nextToken :: Lens.Lens' ListAddons (Prelude.Maybe Prelude.Text)+listAddons_nextToken = Lens.lens (\ListAddons' {nextToken} -> nextToken) (\s@ListAddons' {} a -> s {nextToken = a} :: ListAddons)++-- | The name of the cluster.+listAddons_clusterName :: Lens.Lens' ListAddons Prelude.Text+listAddons_clusterName = Lens.lens (\ListAddons' {clusterName} -> clusterName) (\s@ListAddons' {} a -> s {clusterName = a} :: ListAddons)++instance Core.AWSPager ListAddons where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listAddonsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listAddonsResponse_addons+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listAddons_nextToken+          Lens..~ rs+          Lens.^? listAddonsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListAddons where+  type AWSResponse ListAddons = ListAddonsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAddonsResponse'+            Prelude.<$> (x Data..?> "addons" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListAddons where+  hashWithSalt _salt ListAddons' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` clusterName++instance Prelude.NFData ListAddons where+  rnf ListAddons' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf clusterName++instance Data.ToHeaders ListAddons where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListAddons where+  toPath ListAddons' {..} =+    Prelude.mconcat+      ["/clusters/", Data.toBS clusterName, "/addons"]++instance Data.ToQuery ListAddons where+  toQuery ListAddons' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListAddonsResponse' smart constructor.+data ListAddonsResponse = ListAddonsResponse'+  { -- | A list of available add-ons.+    addons :: Prelude.Maybe [Prelude.Text],+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListAddonsResponse@ where @maxResults@ was used and the results+    -- exceeded the value of that parameter. Pagination continues from the end+    -- of the previous results that returned the @nextToken@ value.+    --+    -- This token should be treated as an opaque identifier that is used only+    -- to retrieve the next items in a list and not for other programmatic+    -- purposes.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAddonsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addons', 'listAddonsResponse_addons' - A list of available add-ons.+--+-- 'nextToken', 'listAddonsResponse_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListAddonsResponse@ where @maxResults@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is used only+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+--+-- 'httpStatus', 'listAddonsResponse_httpStatus' - The response's http status code.+newListAddonsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListAddonsResponse+newListAddonsResponse pHttpStatus_ =+  ListAddonsResponse'+    { addons = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of available add-ons.+listAddonsResponse_addons :: Lens.Lens' ListAddonsResponse (Prelude.Maybe [Prelude.Text])+listAddonsResponse_addons = Lens.lens (\ListAddonsResponse' {addons} -> addons) (\s@ListAddonsResponse' {} a -> s {addons = a} :: ListAddonsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The @nextToken@ value returned from a previous paginated+-- @ListAddonsResponse@ where @maxResults@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is used only+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+listAddonsResponse_nextToken :: Lens.Lens' ListAddonsResponse (Prelude.Maybe Prelude.Text)+listAddonsResponse_nextToken = Lens.lens (\ListAddonsResponse' {nextToken} -> nextToken) (\s@ListAddonsResponse' {} a -> s {nextToken = a} :: ListAddonsResponse)++-- | The response's http status code.+listAddonsResponse_httpStatus :: Lens.Lens' ListAddonsResponse Prelude.Int+listAddonsResponse_httpStatus = Lens.lens (\ListAddonsResponse' {httpStatus} -> httpStatus) (\s@ListAddonsResponse' {} a -> s {httpStatus = a} :: ListAddonsResponse)++instance Prelude.NFData ListAddonsResponse where+  rnf ListAddonsResponse' {..} =+    Prelude.rnf addons+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/ListClusters.hs view
@@ -0,0 +1,284 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.ListClusters+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists the Amazon EKS clusters in your Amazon Web Services account in the+-- specified Region.+--+-- This operation returns paginated results.+module Amazonka.EKS.ListClusters+  ( -- * Creating a Request+    ListClusters (..),+    newListClusters,++    -- * Request Lenses+    listClusters_include,+    listClusters_maxResults,+    listClusters_nextToken,++    -- * Destructuring the Response+    ListClustersResponse (..),+    newListClustersResponse,++    -- * Response Lenses+    listClustersResponse_clusters,+    listClustersResponse_nextToken,+    listClustersResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListClusters' smart constructor.+data ListClusters = ListClusters'+  { -- | Indicates whether external clusters are included in the returned list.+    -- Use \'@all@\' to return connected clusters, or blank to return only+    -- Amazon EKS clusters. \'@all@\' must be in lowercase otherwise an error+    -- occurs.+    include :: Prelude.Maybe [Prelude.Text],+    -- | The maximum number of cluster results returned by @ListClusters@ in+    -- paginated output. When you use this parameter, @ListClusters@ returns+    -- only @maxResults@ results in a single page along with a @nextToken@+    -- response element. You can see the remaining results of the initial+    -- request by sending another @ListClusters@ request with the returned+    -- @nextToken@ value. This value can be between 1 and 100. If you don\'t+    -- use this parameter, @ListClusters@ returns up to 100 results and a+    -- @nextToken@ value if applicable.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated @ListClusters@+    -- request where @maxResults@ was used and the results exceeded the value+    -- of that parameter. Pagination continues from the end of the previous+    -- results that returned the @nextToken@ value.+    --+    -- This token should be treated as an opaque identifier that is used only+    -- to retrieve the next items in a list and not for other programmatic+    -- purposes.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListClusters' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'include', 'listClusters_include' - Indicates whether external clusters are included in the returned list.+-- Use \'@all@\' to return connected clusters, or blank to return only+-- Amazon EKS clusters. \'@all@\' must be in lowercase otherwise an error+-- occurs.+--+-- 'maxResults', 'listClusters_maxResults' - The maximum number of cluster results returned by @ListClusters@ in+-- paginated output. When you use this parameter, @ListClusters@ returns+-- only @maxResults@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListClusters@ request with the returned+-- @nextToken@ value. This value can be between 1 and 100. If you don\'t+-- use this parameter, @ListClusters@ returns up to 100 results and a+-- @nextToken@ value if applicable.+--+-- 'nextToken', 'listClusters_nextToken' - The @nextToken@ value returned from a previous paginated @ListClusters@+-- request where @maxResults@ was used and the results exceeded the value+-- of that parameter. Pagination continues from the end of the previous+-- results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is used only+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+newListClusters ::+  ListClusters+newListClusters =+  ListClusters'+    { include = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | Indicates whether external clusters are included in the returned list.+-- Use \'@all@\' to return connected clusters, or blank to return only+-- Amazon EKS clusters. \'@all@\' must be in lowercase otherwise an error+-- occurs.+listClusters_include :: Lens.Lens' ListClusters (Prelude.Maybe [Prelude.Text])+listClusters_include = Lens.lens (\ListClusters' {include} -> include) (\s@ListClusters' {} a -> s {include = a} :: ListClusters) Prelude.. Lens.mapping Lens.coerced++-- | The maximum number of cluster results returned by @ListClusters@ in+-- paginated output. When you use this parameter, @ListClusters@ returns+-- only @maxResults@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListClusters@ request with the returned+-- @nextToken@ value. This value can be between 1 and 100. If you don\'t+-- use this parameter, @ListClusters@ returns up to 100 results and a+-- @nextToken@ value if applicable.+listClusters_maxResults :: Lens.Lens' ListClusters (Prelude.Maybe Prelude.Natural)+listClusters_maxResults = Lens.lens (\ListClusters' {maxResults} -> maxResults) (\s@ListClusters' {} a -> s {maxResults = a} :: ListClusters)++-- | The @nextToken@ value returned from a previous paginated @ListClusters@+-- request where @maxResults@ was used and the results exceeded the value+-- of that parameter. Pagination continues from the end of the previous+-- results that returned the @nextToken@ value.+--+-- This token should be treated as an opaque identifier that is used only+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+listClusters_nextToken :: Lens.Lens' ListClusters (Prelude.Maybe Prelude.Text)+listClusters_nextToken = Lens.lens (\ListClusters' {nextToken} -> nextToken) (\s@ListClusters' {} a -> s {nextToken = a} :: ListClusters)++instance Core.AWSPager ListClusters where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listClustersResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listClustersResponse_clusters+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listClusters_nextToken+          Lens..~ rs+          Lens.^? listClustersResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListClusters where+  type AWSResponse ListClusters = ListClustersResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListClustersResponse'+            Prelude.<$> (x Data..?> "clusters" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListClusters where+  hashWithSalt _salt ListClusters' {..} =+    _salt+      `Prelude.hashWithSalt` include+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListClusters where+  rnf ListClusters' {..} =+    Prelude.rnf include+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListClusters where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListClusters where+  toPath = Prelude.const "/clusters"++instance Data.ToQuery ListClusters where+  toQuery ListClusters' {..} =+    Prelude.mconcat+      [ "include"+          Data.=: Data.toQuery+            (Data.toQueryList "member" Prelude.<$> include),+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListClustersResponse' smart constructor.+data ListClustersResponse = ListClustersResponse'+  { -- | A list of all of the clusters for your account in the specified Region.+    clusters :: Prelude.Maybe [Prelude.Text],+    -- | The @nextToken@ value to include in a future @ListClusters@ request.+    -- When the results of a @ListClusters@ request exceed @maxResults@, you+    -- can use this value to retrieve the next page of results. This value is+    -- @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListClustersResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusters', 'listClustersResponse_clusters' - A list of all of the clusters for your account in the specified Region.+--+-- 'nextToken', 'listClustersResponse_nextToken' - The @nextToken@ value to include in a future @ListClusters@ request.+-- When the results of a @ListClusters@ request exceed @maxResults@, you+-- can use this value to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+--+-- 'httpStatus', 'listClustersResponse_httpStatus' - The response's http status code.+newListClustersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListClustersResponse+newListClustersResponse pHttpStatus_ =+  ListClustersResponse'+    { clusters = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of all of the clusters for your account in the specified Region.+listClustersResponse_clusters :: Lens.Lens' ListClustersResponse (Prelude.Maybe [Prelude.Text])+listClustersResponse_clusters = Lens.lens (\ListClustersResponse' {clusters} -> clusters) (\s@ListClustersResponse' {} a -> s {clusters = a} :: ListClustersResponse) Prelude.. Lens.mapping Lens.coerced++-- | The @nextToken@ value to include in a future @ListClusters@ request.+-- When the results of a @ListClusters@ request exceed @maxResults@, you+-- can use this value to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+listClustersResponse_nextToken :: Lens.Lens' ListClustersResponse (Prelude.Maybe Prelude.Text)+listClustersResponse_nextToken = Lens.lens (\ListClustersResponse' {nextToken} -> nextToken) (\s@ListClustersResponse' {} a -> s {nextToken = a} :: ListClustersResponse)++-- | The response's http status code.+listClustersResponse_httpStatus :: Lens.Lens' ListClustersResponse Prelude.Int+listClustersResponse_httpStatus = Lens.lens (\ListClustersResponse' {httpStatus} -> httpStatus) (\s@ListClustersResponse' {} a -> s {httpStatus = a} :: ListClustersResponse)++instance Prelude.NFData ListClustersResponse where+  rnf ListClustersResponse' {..} =+    Prelude.rnf clusters+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/ListFargateProfiles.hs view
@@ -0,0 +1,279 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.ListFargateProfiles+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists the Fargate profiles associated with the specified cluster in your+-- Amazon Web Services account in the specified Region.+--+-- This operation returns paginated results.+module Amazonka.EKS.ListFargateProfiles+  ( -- * Creating a Request+    ListFargateProfiles (..),+    newListFargateProfiles,++    -- * Request Lenses+    listFargateProfiles_maxResults,+    listFargateProfiles_nextToken,+    listFargateProfiles_clusterName,++    -- * Destructuring the Response+    ListFargateProfilesResponse (..),+    newListFargateProfilesResponse,++    -- * Response Lenses+    listFargateProfilesResponse_fargateProfileNames,+    listFargateProfilesResponse_nextToken,+    listFargateProfilesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListFargateProfiles' smart constructor.+data ListFargateProfiles = ListFargateProfiles'+  { -- | The maximum number of Fargate profile results returned by+    -- @ListFargateProfiles@ in paginated output. When you use this parameter,+    -- @ListFargateProfiles@ returns only @maxResults@ results in a single page+    -- along with a @nextToken@ response element. You can see the remaining+    -- results of the initial request by sending another @ListFargateProfiles@+    -- request with the returned @nextToken@ value. This value can be between 1+    -- and 100. If you don\'t use this parameter, @ListFargateProfiles@ returns+    -- up to 100 results and a @nextToken@ value if applicable.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListFargateProfiles@ request where @maxResults@ was used and the+    -- results exceeded the value of that parameter. Pagination continues from+    -- the end of the previous results that returned the @nextToken@ value.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the Amazon EKS cluster that you would like to list Fargate+    -- profiles in.+    clusterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListFargateProfiles' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listFargateProfiles_maxResults' - The maximum number of Fargate profile results returned by+-- @ListFargateProfiles@ in paginated output. When you use this parameter,+-- @ListFargateProfiles@ returns only @maxResults@ results in a single page+-- along with a @nextToken@ response element. You can see the remaining+-- results of the initial request by sending another @ListFargateProfiles@+-- request with the returned @nextToken@ value. This value can be between 1+-- and 100. If you don\'t use this parameter, @ListFargateProfiles@ returns+-- up to 100 results and a @nextToken@ value if applicable.+--+-- 'nextToken', 'listFargateProfiles_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListFargateProfiles@ request where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+--+-- 'clusterName', 'listFargateProfiles_clusterName' - The name of the Amazon EKS cluster that you would like to list Fargate+-- profiles in.+newListFargateProfiles ::+  -- | 'clusterName'+  Prelude.Text ->+  ListFargateProfiles+newListFargateProfiles pClusterName_ =+  ListFargateProfiles'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      clusterName = pClusterName_+    }++-- | The maximum number of Fargate profile results returned by+-- @ListFargateProfiles@ in paginated output. When you use this parameter,+-- @ListFargateProfiles@ returns only @maxResults@ results in a single page+-- along with a @nextToken@ response element. You can see the remaining+-- results of the initial request by sending another @ListFargateProfiles@+-- request with the returned @nextToken@ value. This value can be between 1+-- and 100. If you don\'t use this parameter, @ListFargateProfiles@ returns+-- up to 100 results and a @nextToken@ value if applicable.+listFargateProfiles_maxResults :: Lens.Lens' ListFargateProfiles (Prelude.Maybe Prelude.Natural)+listFargateProfiles_maxResults = Lens.lens (\ListFargateProfiles' {maxResults} -> maxResults) (\s@ListFargateProfiles' {} a -> s {maxResults = a} :: ListFargateProfiles)++-- | The @nextToken@ value returned from a previous paginated+-- @ListFargateProfiles@ request where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+listFargateProfiles_nextToken :: Lens.Lens' ListFargateProfiles (Prelude.Maybe Prelude.Text)+listFargateProfiles_nextToken = Lens.lens (\ListFargateProfiles' {nextToken} -> nextToken) (\s@ListFargateProfiles' {} a -> s {nextToken = a} :: ListFargateProfiles)++-- | The name of the Amazon EKS cluster that you would like to list Fargate+-- profiles in.+listFargateProfiles_clusterName :: Lens.Lens' ListFargateProfiles Prelude.Text+listFargateProfiles_clusterName = Lens.lens (\ListFargateProfiles' {clusterName} -> clusterName) (\s@ListFargateProfiles' {} a -> s {clusterName = a} :: ListFargateProfiles)++instance Core.AWSPager ListFargateProfiles where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listFargateProfilesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listFargateProfilesResponse_fargateProfileNames+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listFargateProfiles_nextToken+          Lens..~ rs+          Lens.^? listFargateProfilesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListFargateProfiles where+  type+    AWSResponse ListFargateProfiles =+      ListFargateProfilesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListFargateProfilesResponse'+            Prelude.<$> ( x+                            Data..?> "fargateProfileNames"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListFargateProfiles where+  hashWithSalt _salt ListFargateProfiles' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` clusterName++instance Prelude.NFData ListFargateProfiles where+  rnf ListFargateProfiles' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf clusterName++instance Data.ToHeaders ListFargateProfiles where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListFargateProfiles where+  toPath ListFargateProfiles' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/fargate-profiles"+      ]++instance Data.ToQuery ListFargateProfiles where+  toQuery ListFargateProfiles' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListFargateProfilesResponse' smart constructor.+data ListFargateProfilesResponse = ListFargateProfilesResponse'+  { -- | A list of all of the Fargate profiles associated with the specified+    -- cluster.+    fargateProfileNames :: Prelude.Maybe [Prelude.Text],+    -- | The @nextToken@ value to include in a future @ListFargateProfiles@+    -- request. When the results of a @ListFargateProfiles@ request exceed+    -- @maxResults@, you can use this value to retrieve the next page of+    -- results. This value is @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListFargateProfilesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fargateProfileNames', 'listFargateProfilesResponse_fargateProfileNames' - A list of all of the Fargate profiles associated with the specified+-- cluster.+--+-- 'nextToken', 'listFargateProfilesResponse_nextToken' - The @nextToken@ value to include in a future @ListFargateProfiles@+-- request. When the results of a @ListFargateProfiles@ request exceed+-- @maxResults@, you can use this value to retrieve the next page of+-- results. This value is @null@ when there are no more results to return.+--+-- 'httpStatus', 'listFargateProfilesResponse_httpStatus' - The response's http status code.+newListFargateProfilesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListFargateProfilesResponse+newListFargateProfilesResponse pHttpStatus_ =+  ListFargateProfilesResponse'+    { fargateProfileNames =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of all of the Fargate profiles associated with the specified+-- cluster.+listFargateProfilesResponse_fargateProfileNames :: Lens.Lens' ListFargateProfilesResponse (Prelude.Maybe [Prelude.Text])+listFargateProfilesResponse_fargateProfileNames = Lens.lens (\ListFargateProfilesResponse' {fargateProfileNames} -> fargateProfileNames) (\s@ListFargateProfilesResponse' {} a -> s {fargateProfileNames = a} :: ListFargateProfilesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The @nextToken@ value to include in a future @ListFargateProfiles@+-- request. When the results of a @ListFargateProfiles@ request exceed+-- @maxResults@, you can use this value to retrieve the next page of+-- results. This value is @null@ when there are no more results to return.+listFargateProfilesResponse_nextToken :: Lens.Lens' ListFargateProfilesResponse (Prelude.Maybe Prelude.Text)+listFargateProfilesResponse_nextToken = Lens.lens (\ListFargateProfilesResponse' {nextToken} -> nextToken) (\s@ListFargateProfilesResponse' {} a -> s {nextToken = a} :: ListFargateProfilesResponse)++-- | The response's http status code.+listFargateProfilesResponse_httpStatus :: Lens.Lens' ListFargateProfilesResponse Prelude.Int+listFargateProfilesResponse_httpStatus = Lens.lens (\ListFargateProfilesResponse' {httpStatus} -> httpStatus) (\s@ListFargateProfilesResponse' {} a -> s {httpStatus = a} :: ListFargateProfilesResponse)++instance Prelude.NFData ListFargateProfilesResponse where+  rnf ListFargateProfilesResponse' {..} =+    Prelude.rnf fargateProfileNames+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/ListIdentityProviderConfigs.hs view
@@ -0,0 +1,285 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.ListIdentityProviderConfigs+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- A list of identity provider configurations.+--+-- This operation returns paginated results.+module Amazonka.EKS.ListIdentityProviderConfigs+  ( -- * Creating a Request+    ListIdentityProviderConfigs (..),+    newListIdentityProviderConfigs,++    -- * Request Lenses+    listIdentityProviderConfigs_maxResults,+    listIdentityProviderConfigs_nextToken,+    listIdentityProviderConfigs_clusterName,++    -- * Destructuring the Response+    ListIdentityProviderConfigsResponse (..),+    newListIdentityProviderConfigsResponse,++    -- * Response Lenses+    listIdentityProviderConfigsResponse_identityProviderConfigs,+    listIdentityProviderConfigsResponse_nextToken,+    listIdentityProviderConfigsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListIdentityProviderConfigs' smart constructor.+data ListIdentityProviderConfigs = ListIdentityProviderConfigs'+  { -- | The maximum number of identity provider configurations returned by+    -- @ListIdentityProviderConfigs@ in paginated output. When you use this+    -- parameter, @ListIdentityProviderConfigs@ returns only @maxResults@+    -- results in a single page along with a @nextToken@ response element. You+    -- can see the remaining results of the initial request by sending another+    -- @ListIdentityProviderConfigs@ request with the returned @nextToken@+    -- value. This value can be between 1 and 100. If you don\'t use this+    -- parameter, @ListIdentityProviderConfigs@ returns up to 100 results and a+    -- @nextToken@ value, if applicable.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @IdentityProviderConfigsRequest@ where @maxResults@ was used and the+    -- results exceeded the value of that parameter. Pagination continues from+    -- the end of the previous results that returned the @nextToken@ value.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The cluster name that you want to list identity provider configurations+    -- for.+    clusterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListIdentityProviderConfigs' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listIdentityProviderConfigs_maxResults' - The maximum number of identity provider configurations returned by+-- @ListIdentityProviderConfigs@ in paginated output. When you use this+-- parameter, @ListIdentityProviderConfigs@ returns only @maxResults@+-- results in a single page along with a @nextToken@ response element. You+-- can see the remaining results of the initial request by sending another+-- @ListIdentityProviderConfigs@ request with the returned @nextToken@+-- value. This value can be between 1 and 100. If you don\'t use this+-- parameter, @ListIdentityProviderConfigs@ returns up to 100 results and a+-- @nextToken@ value, if applicable.+--+-- 'nextToken', 'listIdentityProviderConfigs_nextToken' - The @nextToken@ value returned from a previous paginated+-- @IdentityProviderConfigsRequest@ where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+--+-- 'clusterName', 'listIdentityProviderConfigs_clusterName' - The cluster name that you want to list identity provider configurations+-- for.+newListIdentityProviderConfigs ::+  -- | 'clusterName'+  Prelude.Text ->+  ListIdentityProviderConfigs+newListIdentityProviderConfigs pClusterName_ =+  ListIdentityProviderConfigs'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      clusterName = pClusterName_+    }++-- | The maximum number of identity provider configurations returned by+-- @ListIdentityProviderConfigs@ in paginated output. When you use this+-- parameter, @ListIdentityProviderConfigs@ returns only @maxResults@+-- results in a single page along with a @nextToken@ response element. You+-- can see the remaining results of the initial request by sending another+-- @ListIdentityProviderConfigs@ request with the returned @nextToken@+-- value. This value can be between 1 and 100. If you don\'t use this+-- parameter, @ListIdentityProviderConfigs@ returns up to 100 results and a+-- @nextToken@ value, if applicable.+listIdentityProviderConfigs_maxResults :: Lens.Lens' ListIdentityProviderConfigs (Prelude.Maybe Prelude.Natural)+listIdentityProviderConfigs_maxResults = Lens.lens (\ListIdentityProviderConfigs' {maxResults} -> maxResults) (\s@ListIdentityProviderConfigs' {} a -> s {maxResults = a} :: ListIdentityProviderConfigs)++-- | The @nextToken@ value returned from a previous paginated+-- @IdentityProviderConfigsRequest@ where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+listIdentityProviderConfigs_nextToken :: Lens.Lens' ListIdentityProviderConfigs (Prelude.Maybe Prelude.Text)+listIdentityProviderConfigs_nextToken = Lens.lens (\ListIdentityProviderConfigs' {nextToken} -> nextToken) (\s@ListIdentityProviderConfigs' {} a -> s {nextToken = a} :: ListIdentityProviderConfigs)++-- | The cluster name that you want to list identity provider configurations+-- for.+listIdentityProviderConfigs_clusterName :: Lens.Lens' ListIdentityProviderConfigs Prelude.Text+listIdentityProviderConfigs_clusterName = Lens.lens (\ListIdentityProviderConfigs' {clusterName} -> clusterName) (\s@ListIdentityProviderConfigs' {} a -> s {clusterName = a} :: ListIdentityProviderConfigs)++instance Core.AWSPager ListIdentityProviderConfigs where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listIdentityProviderConfigsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listIdentityProviderConfigsResponse_identityProviderConfigs+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listIdentityProviderConfigs_nextToken+          Lens..~ rs+          Lens.^? listIdentityProviderConfigsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListIdentityProviderConfigs where+  type+    AWSResponse ListIdentityProviderConfigs =+      ListIdentityProviderConfigsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListIdentityProviderConfigsResponse'+            Prelude.<$> ( x+                            Data..?> "identityProviderConfigs"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListIdentityProviderConfigs where+  hashWithSalt _salt ListIdentityProviderConfigs' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` clusterName++instance Prelude.NFData ListIdentityProviderConfigs where+  rnf ListIdentityProviderConfigs' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf clusterName++instance Data.ToHeaders ListIdentityProviderConfigs where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListIdentityProviderConfigs where+  toPath ListIdentityProviderConfigs' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/identity-provider-configs"+      ]++instance Data.ToQuery ListIdentityProviderConfigs where+  toQuery ListIdentityProviderConfigs' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListIdentityProviderConfigsResponse' smart constructor.+data ListIdentityProviderConfigsResponse = ListIdentityProviderConfigsResponse'+  { -- | The identity provider configurations for the cluster.+    identityProviderConfigs :: Prelude.Maybe [IdentityProviderConfig],+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListIdentityProviderConfigsResponse@ where @maxResults@ was used and+    -- the results exceeded the value of that parameter. Pagination continues+    -- from the end of the previous results that returned the @nextToken@+    -- value.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListIdentityProviderConfigsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'identityProviderConfigs', 'listIdentityProviderConfigsResponse_identityProviderConfigs' - The identity provider configurations for the cluster.+--+-- 'nextToken', 'listIdentityProviderConfigsResponse_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListIdentityProviderConfigsResponse@ where @maxResults@ was used and+-- the results exceeded the value of that parameter. Pagination continues+-- from the end of the previous results that returned the @nextToken@+-- value.+--+-- 'httpStatus', 'listIdentityProviderConfigsResponse_httpStatus' - The response's http status code.+newListIdentityProviderConfigsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListIdentityProviderConfigsResponse+newListIdentityProviderConfigsResponse pHttpStatus_ =+  ListIdentityProviderConfigsResponse'+    { identityProviderConfigs =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The identity provider configurations for the cluster.+listIdentityProviderConfigsResponse_identityProviderConfigs :: Lens.Lens' ListIdentityProviderConfigsResponse (Prelude.Maybe [IdentityProviderConfig])+listIdentityProviderConfigsResponse_identityProviderConfigs = Lens.lens (\ListIdentityProviderConfigsResponse' {identityProviderConfigs} -> identityProviderConfigs) (\s@ListIdentityProviderConfigsResponse' {} a -> s {identityProviderConfigs = a} :: ListIdentityProviderConfigsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The @nextToken@ value returned from a previous paginated+-- @ListIdentityProviderConfigsResponse@ where @maxResults@ was used and+-- the results exceeded the value of that parameter. Pagination continues+-- from the end of the previous results that returned the @nextToken@+-- value.+listIdentityProviderConfigsResponse_nextToken :: Lens.Lens' ListIdentityProviderConfigsResponse (Prelude.Maybe Prelude.Text)+listIdentityProviderConfigsResponse_nextToken = Lens.lens (\ListIdentityProviderConfigsResponse' {nextToken} -> nextToken) (\s@ListIdentityProviderConfigsResponse' {} a -> s {nextToken = a} :: ListIdentityProviderConfigsResponse)++-- | The response's http status code.+listIdentityProviderConfigsResponse_httpStatus :: Lens.Lens' ListIdentityProviderConfigsResponse Prelude.Int+listIdentityProviderConfigsResponse_httpStatus = Lens.lens (\ListIdentityProviderConfigsResponse' {httpStatus} -> httpStatus) (\s@ListIdentityProviderConfigsResponse' {} a -> s {httpStatus = a} :: ListIdentityProviderConfigsResponse)++instance+  Prelude.NFData+    ListIdentityProviderConfigsResponse+  where+  rnf ListIdentityProviderConfigsResponse' {..} =+    Prelude.rnf identityProviderConfigs+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/ListNodegroups.hs view
@@ -0,0 +1,271 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.ListNodegroups+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists the Amazon EKS managed node groups associated with the specified+-- cluster in your Amazon Web Services account in the specified Region.+-- Self-managed node groups are not listed.+--+-- This operation returns paginated results.+module Amazonka.EKS.ListNodegroups+  ( -- * Creating a Request+    ListNodegroups (..),+    newListNodegroups,++    -- * Request Lenses+    listNodegroups_maxResults,+    listNodegroups_nextToken,+    listNodegroups_clusterName,++    -- * Destructuring the Response+    ListNodegroupsResponse (..),+    newListNodegroupsResponse,++    -- * Response Lenses+    listNodegroupsResponse_nextToken,+    listNodegroupsResponse_nodegroups,+    listNodegroupsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListNodegroups' smart constructor.+data ListNodegroups = ListNodegroups'+  { -- | The maximum number of node group results returned by @ListNodegroups@ in+    -- paginated output. When you use this parameter, @ListNodegroups@ returns+    -- only @maxResults@ results in a single page along with a @nextToken@+    -- response element. You can see the remaining results of the initial+    -- request by sending another @ListNodegroups@ request with the returned+    -- @nextToken@ value. This value can be between 1 and 100. If you don\'t+    -- use this parameter, @ListNodegroups@ returns up to 100 results and a+    -- @nextToken@ value if applicable.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @ListNodegroups@ request where @maxResults@ was used and the results+    -- exceeded the value of that parameter. Pagination continues from the end+    -- of the previous results that returned the @nextToken@ value.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the Amazon EKS cluster that you would like to list node+    -- groups in.+    clusterName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListNodegroups' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listNodegroups_maxResults' - The maximum number of node group results returned by @ListNodegroups@ in+-- paginated output. When you use this parameter, @ListNodegroups@ returns+-- only @maxResults@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListNodegroups@ request with the returned+-- @nextToken@ value. This value can be between 1 and 100. If you don\'t+-- use this parameter, @ListNodegroups@ returns up to 100 results and a+-- @nextToken@ value if applicable.+--+-- 'nextToken', 'listNodegroups_nextToken' - The @nextToken@ value returned from a previous paginated+-- @ListNodegroups@ request where @maxResults@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+--+-- 'clusterName', 'listNodegroups_clusterName' - The name of the Amazon EKS cluster that you would like to list node+-- groups in.+newListNodegroups ::+  -- | 'clusterName'+  Prelude.Text ->+  ListNodegroups+newListNodegroups pClusterName_ =+  ListNodegroups'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      clusterName = pClusterName_+    }++-- | The maximum number of node group results returned by @ListNodegroups@ in+-- paginated output. When you use this parameter, @ListNodegroups@ returns+-- only @maxResults@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListNodegroups@ request with the returned+-- @nextToken@ value. This value can be between 1 and 100. If you don\'t+-- use this parameter, @ListNodegroups@ returns up to 100 results and a+-- @nextToken@ value if applicable.+listNodegroups_maxResults :: Lens.Lens' ListNodegroups (Prelude.Maybe Prelude.Natural)+listNodegroups_maxResults = Lens.lens (\ListNodegroups' {maxResults} -> maxResults) (\s@ListNodegroups' {} a -> s {maxResults = a} :: ListNodegroups)++-- | The @nextToken@ value returned from a previous paginated+-- @ListNodegroups@ request where @maxResults@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value.+listNodegroups_nextToken :: Lens.Lens' ListNodegroups (Prelude.Maybe Prelude.Text)+listNodegroups_nextToken = Lens.lens (\ListNodegroups' {nextToken} -> nextToken) (\s@ListNodegroups' {} a -> s {nextToken = a} :: ListNodegroups)++-- | The name of the Amazon EKS cluster that you would like to list node+-- groups in.+listNodegroups_clusterName :: Lens.Lens' ListNodegroups Prelude.Text+listNodegroups_clusterName = Lens.lens (\ListNodegroups' {clusterName} -> clusterName) (\s@ListNodegroups' {} a -> s {clusterName = a} :: ListNodegroups)++instance Core.AWSPager ListNodegroups where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listNodegroupsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listNodegroupsResponse_nodegroups+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listNodegroups_nextToken+          Lens..~ rs+          Lens.^? listNodegroupsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListNodegroups where+  type+    AWSResponse ListNodegroups =+      ListNodegroupsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListNodegroupsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "nodegroups" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListNodegroups where+  hashWithSalt _salt ListNodegroups' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` clusterName++instance Prelude.NFData ListNodegroups where+  rnf ListNodegroups' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf clusterName++instance Data.ToHeaders ListNodegroups where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListNodegroups where+  toPath ListNodegroups' {..} =+    Prelude.mconcat+      ["/clusters/", Data.toBS clusterName, "/node-groups"]++instance Data.ToQuery ListNodegroups where+  toQuery ListNodegroups' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListNodegroupsResponse' smart constructor.+data ListNodegroupsResponse = ListNodegroupsResponse'+  { -- | The @nextToken@ value to include in a future @ListNodegroups@ request.+    -- When the results of a @ListNodegroups@ request exceed @maxResults@, you+    -- can use this value to retrieve the next page of results. This value is+    -- @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of all of the node groups associated with the specified cluster.+    nodegroups :: Prelude.Maybe [Prelude.Text],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListNodegroupsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listNodegroupsResponse_nextToken' - The @nextToken@ value to include in a future @ListNodegroups@ request.+-- When the results of a @ListNodegroups@ request exceed @maxResults@, you+-- can use this value to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+--+-- 'nodegroups', 'listNodegroupsResponse_nodegroups' - A list of all of the node groups associated with the specified cluster.+--+-- 'httpStatus', 'listNodegroupsResponse_httpStatus' - The response's http status code.+newListNodegroupsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListNodegroupsResponse+newListNodegroupsResponse pHttpStatus_ =+  ListNodegroupsResponse'+    { nextToken =+        Prelude.Nothing,+      nodegroups = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The @nextToken@ value to include in a future @ListNodegroups@ request.+-- When the results of a @ListNodegroups@ request exceed @maxResults@, you+-- can use this value to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+listNodegroupsResponse_nextToken :: Lens.Lens' ListNodegroupsResponse (Prelude.Maybe Prelude.Text)+listNodegroupsResponse_nextToken = Lens.lens (\ListNodegroupsResponse' {nextToken} -> nextToken) (\s@ListNodegroupsResponse' {} a -> s {nextToken = a} :: ListNodegroupsResponse)++-- | A list of all of the node groups associated with the specified cluster.+listNodegroupsResponse_nodegroups :: Lens.Lens' ListNodegroupsResponse (Prelude.Maybe [Prelude.Text])+listNodegroupsResponse_nodegroups = Lens.lens (\ListNodegroupsResponse' {nodegroups} -> nodegroups) (\s@ListNodegroupsResponse' {} a -> s {nodegroups = a} :: ListNodegroupsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listNodegroupsResponse_httpStatus :: Lens.Lens' ListNodegroupsResponse Prelude.Int+listNodegroupsResponse_httpStatus = Lens.lens (\ListNodegroupsResponse' {httpStatus} -> httpStatus) (\s@ListNodegroupsResponse' {} a -> s {httpStatus = a} :: ListNodegroupsResponse)++instance Prelude.NFData ListNodegroupsResponse where+  rnf ListNodegroupsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf nodegroups+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/ListTagsForResource.hs view
@@ -0,0 +1,165 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.ListTagsForResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- List the tags for an Amazon EKS resource.+module Amazonka.EKS.ListTagsForResource+  ( -- * Creating a Request+    ListTagsForResource (..),+    newListTagsForResource,++    -- * Request Lenses+    listTagsForResource_resourceArn,++    -- * Destructuring the Response+    ListTagsForResourceResponse (..),+    newListTagsForResourceResponse,++    -- * Response Lenses+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTagsForResource' smart constructor.+data ListTagsForResource = ListTagsForResource'+  { -- | The Amazon Resource Name (ARN) that identifies the resource for which to+    -- list the tags. Currently, the supported resources are Amazon EKS+    -- clusters and managed node groups.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) that identifies the resource for which to+-- list the tags. Currently, the supported resources are Amazon EKS+-- clusters and managed node groups.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The Amazon Resource Name (ARN) that identifies the resource for which to+-- list the tags. Currently, the supported resources are Amazon EKS+-- clusters and managed node groups.+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)++instance Core.AWSRequest ListTagsForResource where+  type+    AWSResponse ListTagsForResource =+      ListTagsForResourceResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTagsForResourceResponse'+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListTagsForResource where+  hashWithSalt _salt ListTagsForResource' {..} =+    _salt `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData ListTagsForResource where+  rnf ListTagsForResource' {..} =+    Prelude.rnf resourceArn++instance Data.ToHeaders ListTagsForResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListTagsForResource where+  toPath ListTagsForResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery ListTagsForResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | The tags for the resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tags', 'listTagsForResourceResponse_tags' - The tags for the resource.+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { tags =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The tags for the resource.+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)++instance Prelude.NFData ListTagsForResourceResponse where+  rnf ListTagsForResourceResponse' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/ListUpdates.hs view
@@ -0,0 +1,290 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.ListUpdates+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists the updates associated with an Amazon EKS cluster or managed node+-- group in your Amazon Web Services account, in the specified Region.+--+-- This operation returns paginated results.+module Amazonka.EKS.ListUpdates+  ( -- * Creating a Request+    ListUpdates (..),+    newListUpdates,++    -- * Request Lenses+    listUpdates_addonName,+    listUpdates_maxResults,+    listUpdates_nextToken,+    listUpdates_nodegroupName,+    listUpdates_name,++    -- * Destructuring the Response+    ListUpdatesResponse (..),+    newListUpdatesResponse,++    -- * Response Lenses+    listUpdatesResponse_nextToken,+    listUpdatesResponse_updateIds,+    listUpdatesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListUpdates' smart constructor.+data ListUpdates = ListUpdates'+  { -- | The names of the installed add-ons that have available updates.+    addonName :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of update results returned by @ListUpdates@ in+    -- paginated output. When you use this parameter, @ListUpdates@ returns+    -- only @maxResults@ results in a single page along with a @nextToken@+    -- response element. You can see the remaining results of the initial+    -- request by sending another @ListUpdates@ request with the returned+    -- @nextToken@ value. This value can be between 1 and 100. If you don\'t+    -- use this parameter, @ListUpdates@ returns up to 100 results and a+    -- @nextToken@ value if applicable.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated @ListUpdates@+    -- request where @maxResults@ was used and the results exceeded the value+    -- of that parameter. Pagination continues from the end of the previous+    -- results that returned the @nextToken@ value.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the Amazon EKS managed node group to list updates for.+    nodegroupName :: Prelude.Maybe Prelude.Text,+    -- | The name of the Amazon EKS cluster to list updates for.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListUpdates' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addonName', 'listUpdates_addonName' - The names of the installed add-ons that have available updates.+--+-- 'maxResults', 'listUpdates_maxResults' - The maximum number of update results returned by @ListUpdates@ in+-- paginated output. When you use this parameter, @ListUpdates@ returns+-- only @maxResults@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListUpdates@ request with the returned+-- @nextToken@ value. This value can be between 1 and 100. If you don\'t+-- use this parameter, @ListUpdates@ returns up to 100 results and a+-- @nextToken@ value if applicable.+--+-- 'nextToken', 'listUpdates_nextToken' - The @nextToken@ value returned from a previous paginated @ListUpdates@+-- request where @maxResults@ was used and the results exceeded the value+-- of that parameter. Pagination continues from the end of the previous+-- results that returned the @nextToken@ value.+--+-- 'nodegroupName', 'listUpdates_nodegroupName' - The name of the Amazon EKS managed node group to list updates for.+--+-- 'name', 'listUpdates_name' - The name of the Amazon EKS cluster to list updates for.+newListUpdates ::+  -- | 'name'+  Prelude.Text ->+  ListUpdates+newListUpdates pName_ =+  ListUpdates'+    { addonName = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      nodegroupName = Prelude.Nothing,+      name = pName_+    }++-- | The names of the installed add-ons that have available updates.+listUpdates_addonName :: Lens.Lens' ListUpdates (Prelude.Maybe Prelude.Text)+listUpdates_addonName = Lens.lens (\ListUpdates' {addonName} -> addonName) (\s@ListUpdates' {} a -> s {addonName = a} :: ListUpdates)++-- | The maximum number of update results returned by @ListUpdates@ in+-- paginated output. When you use this parameter, @ListUpdates@ returns+-- only @maxResults@ results in a single page along with a @nextToken@+-- response element. You can see the remaining results of the initial+-- request by sending another @ListUpdates@ request with the returned+-- @nextToken@ value. This value can be between 1 and 100. If you don\'t+-- use this parameter, @ListUpdates@ returns up to 100 results and a+-- @nextToken@ value if applicable.+listUpdates_maxResults :: Lens.Lens' ListUpdates (Prelude.Maybe Prelude.Natural)+listUpdates_maxResults = Lens.lens (\ListUpdates' {maxResults} -> maxResults) (\s@ListUpdates' {} a -> s {maxResults = a} :: ListUpdates)++-- | The @nextToken@ value returned from a previous paginated @ListUpdates@+-- request where @maxResults@ was used and the results exceeded the value+-- of that parameter. Pagination continues from the end of the previous+-- results that returned the @nextToken@ value.+listUpdates_nextToken :: Lens.Lens' ListUpdates (Prelude.Maybe Prelude.Text)+listUpdates_nextToken = Lens.lens (\ListUpdates' {nextToken} -> nextToken) (\s@ListUpdates' {} a -> s {nextToken = a} :: ListUpdates)++-- | The name of the Amazon EKS managed node group to list updates for.+listUpdates_nodegroupName :: Lens.Lens' ListUpdates (Prelude.Maybe Prelude.Text)+listUpdates_nodegroupName = Lens.lens (\ListUpdates' {nodegroupName} -> nodegroupName) (\s@ListUpdates' {} a -> s {nodegroupName = a} :: ListUpdates)++-- | The name of the Amazon EKS cluster to list updates for.+listUpdates_name :: Lens.Lens' ListUpdates Prelude.Text+listUpdates_name = Lens.lens (\ListUpdates' {name} -> name) (\s@ListUpdates' {} a -> s {name = a} :: ListUpdates)++instance Core.AWSPager ListUpdates where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listUpdatesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listUpdatesResponse_updateIds+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listUpdates_nextToken+          Lens..~ rs+          Lens.^? listUpdatesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListUpdates where+  type AWSResponse ListUpdates = ListUpdatesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListUpdatesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "updateIds" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListUpdates where+  hashWithSalt _salt ListUpdates' {..} =+    _salt+      `Prelude.hashWithSalt` addonName+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` nodegroupName+      `Prelude.hashWithSalt` name++instance Prelude.NFData ListUpdates where+  rnf ListUpdates' {..} =+    Prelude.rnf addonName+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf nodegroupName+      `Prelude.seq` Prelude.rnf name++instance Data.ToHeaders ListUpdates where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListUpdates where+  toPath ListUpdates' {..} =+    Prelude.mconcat+      ["/clusters/", Data.toBS name, "/updates"]++instance Data.ToQuery ListUpdates where+  toQuery ListUpdates' {..} =+    Prelude.mconcat+      [ "addonName" Data.=: addonName,+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "nodegroupName" Data.=: nodegroupName+      ]++-- | /See:/ 'newListUpdatesResponse' smart constructor.+data ListUpdatesResponse = ListUpdatesResponse'+  { -- | The @nextToken@ value to include in a future @ListUpdates@ request. When+    -- the results of a @ListUpdates@ request exceed @maxResults@, you can use+    -- this value to retrieve the next page of results. This value is @null@+    -- when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of all the updates for the specified cluster and Region.+    updateIds :: Prelude.Maybe [Prelude.Text],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListUpdatesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listUpdatesResponse_nextToken' - The @nextToken@ value to include in a future @ListUpdates@ request. When+-- the results of a @ListUpdates@ request exceed @maxResults@, you can use+-- this value to retrieve the next page of results. This value is @null@+-- when there are no more results to return.+--+-- 'updateIds', 'listUpdatesResponse_updateIds' - A list of all the updates for the specified cluster and Region.+--+-- 'httpStatus', 'listUpdatesResponse_httpStatus' - The response's http status code.+newListUpdatesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListUpdatesResponse+newListUpdatesResponse pHttpStatus_ =+  ListUpdatesResponse'+    { nextToken = Prelude.Nothing,+      updateIds = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The @nextToken@ value to include in a future @ListUpdates@ request. When+-- the results of a @ListUpdates@ request exceed @maxResults@, you can use+-- this value to retrieve the next page of results. This value is @null@+-- when there are no more results to return.+listUpdatesResponse_nextToken :: Lens.Lens' ListUpdatesResponse (Prelude.Maybe Prelude.Text)+listUpdatesResponse_nextToken = Lens.lens (\ListUpdatesResponse' {nextToken} -> nextToken) (\s@ListUpdatesResponse' {} a -> s {nextToken = a} :: ListUpdatesResponse)++-- | A list of all the updates for the specified cluster and Region.+listUpdatesResponse_updateIds :: Lens.Lens' ListUpdatesResponse (Prelude.Maybe [Prelude.Text])+listUpdatesResponse_updateIds = Lens.lens (\ListUpdatesResponse' {updateIds} -> updateIds) (\s@ListUpdatesResponse' {} a -> s {updateIds = a} :: ListUpdatesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listUpdatesResponse_httpStatus :: Lens.Lens' ListUpdatesResponse Prelude.Int+listUpdatesResponse_httpStatus = Lens.lens (\ListUpdatesResponse' {httpStatus} -> httpStatus) (\s@ListUpdatesResponse' {} a -> s {httpStatus = a} :: ListUpdatesResponse)++instance Prelude.NFData ListUpdatesResponse where+  rnf ListUpdatesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf updateIds+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/RegisterCluster.hs view
@@ -0,0 +1,244 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.RegisterCluster+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Connects a Kubernetes cluster to the Amazon EKS control plane.+--+-- Any Kubernetes cluster can be connected to the Amazon EKS control plane+-- to view current information about the cluster and its nodes.+--+-- Cluster connection requires two steps. First, send a+-- @ @@RegisterClusterRequest@@ @ to add it to the Amazon EKS control+-- plane.+--+-- Second, a+-- <https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector/latest/eks-connector.yaml Manifest>+-- containing the @activationID@ and @activationCode@ must be applied to+-- the Kubernetes cluster through it\'s native provider to provide+-- visibility.+--+-- After the Manifest is updated and applied, then the connected cluster is+-- visible to the Amazon EKS control plane. If the Manifest is not applied+-- within three days, then the connected cluster will no longer be visible+-- and must be deregistered. See DeregisterCluster.+module Amazonka.EKS.RegisterCluster+  ( -- * Creating a Request+    RegisterCluster (..),+    newRegisterCluster,++    -- * Request Lenses+    registerCluster_clientRequestToken,+    registerCluster_tags,+    registerCluster_name,+    registerCluster_connectorConfig,++    -- * Destructuring the Response+    RegisterClusterResponse (..),+    newRegisterClusterResponse,++    -- * Response Lenses+    registerClusterResponse_cluster,+    registerClusterResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newRegisterCluster' smart constructor.+data RegisterCluster = RegisterCluster'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | The metadata that you apply to the cluster to assist with categorization+    -- and organization. Each tag consists of a key and an optional value, both+    -- of which you define. Cluster tags do not propagate to any other+    -- resources associated with the cluster.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Define a unique name for this cluster for your Region.+    name :: Prelude.Text,+    -- | The configuration settings required to connect the Kubernetes cluster to+    -- the Amazon EKS control plane.+    connectorConfig :: ConnectorConfigRequest+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RegisterCluster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'registerCluster_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'tags', 'registerCluster_tags' - The metadata that you apply to the cluster to assist with categorization+-- and organization. Each tag consists of a key and an optional value, both+-- of which you define. Cluster tags do not propagate to any other+-- resources associated with the cluster.+--+-- 'name', 'registerCluster_name' - Define a unique name for this cluster for your Region.+--+-- 'connectorConfig', 'registerCluster_connectorConfig' - The configuration settings required to connect the Kubernetes cluster to+-- the Amazon EKS control plane.+newRegisterCluster ::+  -- | 'name'+  Prelude.Text ->+  -- | 'connectorConfig'+  ConnectorConfigRequest ->+  RegisterCluster+newRegisterCluster pName_ pConnectorConfig_ =+  RegisterCluster'+    { clientRequestToken =+        Prelude.Nothing,+      tags = Prelude.Nothing,+      name = pName_,+      connectorConfig = pConnectorConfig_+    }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+registerCluster_clientRequestToken :: Lens.Lens' RegisterCluster (Prelude.Maybe Prelude.Text)+registerCluster_clientRequestToken = Lens.lens (\RegisterCluster' {clientRequestToken} -> clientRequestToken) (\s@RegisterCluster' {} a -> s {clientRequestToken = a} :: RegisterCluster)++-- | The metadata that you apply to the cluster to assist with categorization+-- and organization. Each tag consists of a key and an optional value, both+-- of which you define. Cluster tags do not propagate to any other+-- resources associated with the cluster.+registerCluster_tags :: Lens.Lens' RegisterCluster (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+registerCluster_tags = Lens.lens (\RegisterCluster' {tags} -> tags) (\s@RegisterCluster' {} a -> s {tags = a} :: RegisterCluster) Prelude.. Lens.mapping Lens.coerced++-- | Define a unique name for this cluster for your Region.+registerCluster_name :: Lens.Lens' RegisterCluster Prelude.Text+registerCluster_name = Lens.lens (\RegisterCluster' {name} -> name) (\s@RegisterCluster' {} a -> s {name = a} :: RegisterCluster)++-- | The configuration settings required to connect the Kubernetes cluster to+-- the Amazon EKS control plane.+registerCluster_connectorConfig :: Lens.Lens' RegisterCluster ConnectorConfigRequest+registerCluster_connectorConfig = Lens.lens (\RegisterCluster' {connectorConfig} -> connectorConfig) (\s@RegisterCluster' {} a -> s {connectorConfig = a} :: RegisterCluster)++instance Core.AWSRequest RegisterCluster where+  type+    AWSResponse RegisterCluster =+      RegisterClusterResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          RegisterClusterResponse'+            Prelude.<$> (x Data..?> "cluster")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable RegisterCluster where+  hashWithSalt _salt RegisterCluster' {..} =+    _salt+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` connectorConfig++instance Prelude.NFData RegisterCluster where+  rnf RegisterCluster' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf connectorConfig++instance Data.ToHeaders RegisterCluster where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON RegisterCluster where+  toJSON RegisterCluster' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("name" Data..= name),+            Prelude.Just+              ("connectorConfig" Data..= connectorConfig)+          ]+      )++instance Data.ToPath RegisterCluster where+  toPath = Prelude.const "/cluster-registrations"++instance Data.ToQuery RegisterCluster where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newRegisterClusterResponse' smart constructor.+data RegisterClusterResponse = RegisterClusterResponse'+  { cluster :: Prelude.Maybe Cluster,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RegisterClusterResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cluster', 'registerClusterResponse_cluster' - Undocumented member.+--+-- 'httpStatus', 'registerClusterResponse_httpStatus' - The response's http status code.+newRegisterClusterResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  RegisterClusterResponse+newRegisterClusterResponse pHttpStatus_ =+  RegisterClusterResponse'+    { cluster = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+registerClusterResponse_cluster :: Lens.Lens' RegisterClusterResponse (Prelude.Maybe Cluster)+registerClusterResponse_cluster = Lens.lens (\RegisterClusterResponse' {cluster} -> cluster) (\s@RegisterClusterResponse' {} a -> s {cluster = a} :: RegisterClusterResponse)++-- | The response's http status code.+registerClusterResponse_httpStatus :: Lens.Lens' RegisterClusterResponse Prelude.Int+registerClusterResponse_httpStatus = Lens.lens (\RegisterClusterResponse' {httpStatus} -> httpStatus) (\s@RegisterClusterResponse' {} a -> s {httpStatus = a} :: RegisterClusterResponse)++instance Prelude.NFData RegisterClusterResponse where+  rnf RegisterClusterResponse' {..} =+    Prelude.rnf cluster+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/TagResource.hs view
@@ -0,0 +1,176 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.TagResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Associates the specified tags to a resource with the specified+-- @resourceArn@. If existing tags on a resource are not specified in the+-- request parameters, they are not changed. When a resource is deleted,+-- the tags associated with that resource are deleted as well. Tags that+-- you create for Amazon EKS resources do not propagate to any other+-- resources associated with the cluster. For example, if you tag a cluster+-- with this operation, that tag does not automatically propagate to the+-- subnets and nodes associated with the cluster.+module Amazonka.EKS.TagResource+  ( -- * Creating a Request+    TagResource (..),+    newTagResource,++    -- * Request Lenses+    tagResource_resourceArn,+    tagResource_tags,++    -- * Destructuring the Response+    TagResourceResponse (..),+    newTagResourceResponse,++    -- * Response Lenses+    tagResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newTagResource' smart constructor.+data TagResource = TagResource'+  { -- | The Amazon Resource Name (ARN) of the resource to which to add tags.+    -- Currently, the supported resources are Amazon EKS clusters and managed+    -- node groups.+    resourceArn :: Prelude.Text,+    -- | The tags to add to the resource. A tag is an array of key-value pairs.+    tags :: Prelude.HashMap Prelude.Text Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource to which to add tags.+-- Currently, the supported resources are Amazon EKS clusters and managed+-- node groups.+--+-- 'tags', 'tagResource_tags' - The tags to add to the resource. A tag is an array of key-value pairs.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource to which to add tags.+-- Currently, the supported resources are Amazon EKS clusters and managed+-- node groups.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | The tags to add to the resource. A tag is an array of key-value pairs.+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced++instance Core.AWSRequest TagResource where+  type AWSResponse TagResource = TagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          TagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable TagResource where+  hashWithSalt _salt TagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tags++instance Prelude.NFData TagResource where+  rnf TagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tags++instance Data.ToHeaders TagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TagResource where+  toJSON TagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("tags" Data..= tags)]+      )++instance Data.ToPath TagResource where+  toPath TagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery TagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newTagResourceResponse' smart constructor.+data TagResourceResponse = TagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.+newTagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  TagResourceResponse+newTagResourceResponse pHttpStatus_ =+  TagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)++instance Prelude.NFData TagResourceResponse where+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/EKS/Types.hs view
@@ -0,0 +1,740 @@+{-# LANGUAGE DisambiguateRecordFields #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccessDeniedException,+    _BadRequestException,+    _ClientException,+    _InvalidParameterException,+    _InvalidRequestException,+    _NotFoundException,+    _ResourceInUseException,+    _ResourceLimitExceededException,+    _ResourceNotFoundException,+    _ResourcePropagationDelayException,+    _ServerException,+    _ServiceUnavailableException,+    _UnsupportedAvailabilityZoneException,++    -- * AMITypes+    AMITypes (..),++    -- * AddonIssueCode+    AddonIssueCode (..),++    -- * AddonStatus+    AddonStatus (..),++    -- * CapacityTypes+    CapacityTypes (..),++    -- * ClusterIssueCode+    ClusterIssueCode (..),++    -- * ClusterStatus+    ClusterStatus (..),++    -- * ConfigStatus+    ConfigStatus (..),++    -- * ConnectorConfigProvider+    ConnectorConfigProvider (..),++    -- * EKSErrorCode+    EKSErrorCode (..),++    -- * FargateProfileStatus+    FargateProfileStatus (..),++    -- * IpFamily+    IpFamily (..),++    -- * LogType+    LogType (..),++    -- * NodegroupIssueCode+    NodegroupIssueCode (..),++    -- * NodegroupStatus+    NodegroupStatus (..),++    -- * ResolveConflicts+    ResolveConflicts (..),++    -- * TaintEffect+    TaintEffect (..),++    -- * UpdateParamType+    UpdateParamType (..),++    -- * UpdateStatus+    UpdateStatus (..),++    -- * UpdateType+    UpdateType (..),++    -- * Addon+    Addon (..),+    newAddon,+    addon_addonArn,+    addon_addonName,+    addon_addonVersion,+    addon_clusterName,+    addon_configurationValues,+    addon_createdAt,+    addon_health,+    addon_marketplaceInformation,+    addon_modifiedAt,+    addon_owner,+    addon_publisher,+    addon_serviceAccountRoleArn,+    addon_status,+    addon_tags,++    -- * AddonHealth+    AddonHealth (..),+    newAddonHealth,+    addonHealth_issues,++    -- * AddonInfo+    AddonInfo (..),+    newAddonInfo,+    addonInfo_addonName,+    addonInfo_addonVersions,+    addonInfo_marketplaceInformation,+    addonInfo_owner,+    addonInfo_publisher,+    addonInfo_type,++    -- * AddonIssue+    AddonIssue (..),+    newAddonIssue,+    addonIssue_code,+    addonIssue_message,+    addonIssue_resourceIds,++    -- * AddonVersionInfo+    AddonVersionInfo (..),+    newAddonVersionInfo,+    addonVersionInfo_addonVersion,+    addonVersionInfo_architecture,+    addonVersionInfo_compatibilities,+    addonVersionInfo_requiresConfiguration,++    -- * AutoScalingGroup+    AutoScalingGroup (..),+    newAutoScalingGroup,+    autoScalingGroup_name,++    -- * Certificate+    Certificate (..),+    newCertificate,+    certificate_data,++    -- * Cluster+    Cluster (..),+    newCluster,+    cluster_arn,+    cluster_certificateAuthority,+    cluster_clientRequestToken,+    cluster_connectorConfig,+    cluster_createdAt,+    cluster_encryptionConfig,+    cluster_endpoint,+    cluster_health,+    cluster_id,+    cluster_identity,+    cluster_kubernetesNetworkConfig,+    cluster_logging,+    cluster_name,+    cluster_outpostConfig,+    cluster_platformVersion,+    cluster_resourcesVpcConfig,+    cluster_roleArn,+    cluster_status,+    cluster_tags,+    cluster_version,++    -- * ClusterHealth+    ClusterHealth (..),+    newClusterHealth,+    clusterHealth_issues,++    -- * ClusterIssue+    ClusterIssue (..),+    newClusterIssue,+    clusterIssue_code,+    clusterIssue_message,+    clusterIssue_resourceIds,++    -- * Compatibility+    Compatibility (..),+    newCompatibility,+    compatibility_clusterVersion,+    compatibility_defaultVersion,+    compatibility_platformVersions,++    -- * ConnectorConfigRequest+    ConnectorConfigRequest (..),+    newConnectorConfigRequest,+    connectorConfigRequest_roleArn,+    connectorConfigRequest_provider,++    -- * ConnectorConfigResponse+    ConnectorConfigResponse (..),+    newConnectorConfigResponse,+    connectorConfigResponse_activationCode,+    connectorConfigResponse_activationExpiry,+    connectorConfigResponse_activationId,+    connectorConfigResponse_provider,+    connectorConfigResponse_roleArn,++    -- * ControlPlanePlacementRequest+    ControlPlanePlacementRequest (..),+    newControlPlanePlacementRequest,+    controlPlanePlacementRequest_groupName,++    -- * ControlPlanePlacementResponse+    ControlPlanePlacementResponse (..),+    newControlPlanePlacementResponse,+    controlPlanePlacementResponse_groupName,++    -- * EncryptionConfig+    EncryptionConfig (..),+    newEncryptionConfig,+    encryptionConfig_provider,+    encryptionConfig_resources,++    -- * ErrorDetail+    ErrorDetail (..),+    newErrorDetail,+    errorDetail_errorCode,+    errorDetail_errorMessage,+    errorDetail_resourceIds,++    -- * FargateProfile+    FargateProfile (..),+    newFargateProfile,+    fargateProfile_clusterName,+    fargateProfile_createdAt,+    fargateProfile_fargateProfileArn,+    fargateProfile_fargateProfileName,+    fargateProfile_podExecutionRoleArn,+    fargateProfile_selectors,+    fargateProfile_status,+    fargateProfile_subnets,+    fargateProfile_tags,++    -- * FargateProfileSelector+    FargateProfileSelector (..),+    newFargateProfileSelector,+    fargateProfileSelector_labels,+    fargateProfileSelector_namespace,++    -- * Identity+    Identity (..),+    newIdentity,+    identity_oidc,++    -- * IdentityProviderConfig+    IdentityProviderConfig (..),+    newIdentityProviderConfig,+    identityProviderConfig_type,+    identityProviderConfig_name,++    -- * IdentityProviderConfigResponse+    IdentityProviderConfigResponse (..),+    newIdentityProviderConfigResponse,+    identityProviderConfigResponse_oidc,++    -- * Issue+    Issue (..),+    newIssue,+    issue_code,+    issue_message,+    issue_resourceIds,++    -- * KubernetesNetworkConfigRequest+    KubernetesNetworkConfigRequest (..),+    newKubernetesNetworkConfigRequest,+    kubernetesNetworkConfigRequest_ipFamily,+    kubernetesNetworkConfigRequest_serviceIpv4Cidr,++    -- * KubernetesNetworkConfigResponse+    KubernetesNetworkConfigResponse (..),+    newKubernetesNetworkConfigResponse,+    kubernetesNetworkConfigResponse_ipFamily,+    kubernetesNetworkConfigResponse_serviceIpv4Cidr,+    kubernetesNetworkConfigResponse_serviceIpv6Cidr,++    -- * LaunchTemplateSpecification+    LaunchTemplateSpecification (..),+    newLaunchTemplateSpecification,+    launchTemplateSpecification_id,+    launchTemplateSpecification_name,+    launchTemplateSpecification_version,++    -- * LogSetup+    LogSetup (..),+    newLogSetup,+    logSetup_enabled,+    logSetup_types,++    -- * Logging+    Logging (..),+    newLogging,+    logging_clusterLogging,++    -- * MarketplaceInformation+    MarketplaceInformation (..),+    newMarketplaceInformation,+    marketplaceInformation_productId,+    marketplaceInformation_productUrl,++    -- * Nodegroup+    Nodegroup (..),+    newNodegroup,+    nodegroup_amiType,+    nodegroup_capacityType,+    nodegroup_clusterName,+    nodegroup_createdAt,+    nodegroup_diskSize,+    nodegroup_health,+    nodegroup_instanceTypes,+    nodegroup_labels,+    nodegroup_launchTemplate,+    nodegroup_modifiedAt,+    nodegroup_nodeRole,+    nodegroup_nodegroupArn,+    nodegroup_nodegroupName,+    nodegroup_releaseVersion,+    nodegroup_remoteAccess,+    nodegroup_resources,+    nodegroup_scalingConfig,+    nodegroup_status,+    nodegroup_subnets,+    nodegroup_tags,+    nodegroup_taints,+    nodegroup_updateConfig,+    nodegroup_version,++    -- * NodegroupHealth+    NodegroupHealth (..),+    newNodegroupHealth,+    nodegroupHealth_issues,++    -- * NodegroupResources+    NodegroupResources (..),+    newNodegroupResources,+    nodegroupResources_autoScalingGroups,+    nodegroupResources_remoteAccessSecurityGroup,++    -- * NodegroupScalingConfig+    NodegroupScalingConfig (..),+    newNodegroupScalingConfig,+    nodegroupScalingConfig_desiredSize,+    nodegroupScalingConfig_maxSize,+    nodegroupScalingConfig_minSize,++    -- * NodegroupUpdateConfig+    NodegroupUpdateConfig (..),+    newNodegroupUpdateConfig,+    nodegroupUpdateConfig_maxUnavailable,+    nodegroupUpdateConfig_maxUnavailablePercentage,++    -- * OIDC+    OIDC (..),+    newOIDC,+    oidc_issuer,++    -- * OidcIdentityProviderConfig+    OidcIdentityProviderConfig (..),+    newOidcIdentityProviderConfig,+    oidcIdentityProviderConfig_clientId,+    oidcIdentityProviderConfig_clusterName,+    oidcIdentityProviderConfig_groupsClaim,+    oidcIdentityProviderConfig_groupsPrefix,+    oidcIdentityProviderConfig_identityProviderConfigArn,+    oidcIdentityProviderConfig_identityProviderConfigName,+    oidcIdentityProviderConfig_issuerUrl,+    oidcIdentityProviderConfig_requiredClaims,+    oidcIdentityProviderConfig_status,+    oidcIdentityProviderConfig_tags,+    oidcIdentityProviderConfig_usernameClaim,+    oidcIdentityProviderConfig_usernamePrefix,++    -- * OidcIdentityProviderConfigRequest+    OidcIdentityProviderConfigRequest (..),+    newOidcIdentityProviderConfigRequest,+    oidcIdentityProviderConfigRequest_groupsClaim,+    oidcIdentityProviderConfigRequest_groupsPrefix,+    oidcIdentityProviderConfigRequest_requiredClaims,+    oidcIdentityProviderConfigRequest_usernameClaim,+    oidcIdentityProviderConfigRequest_usernamePrefix,+    oidcIdentityProviderConfigRequest_identityProviderConfigName,+    oidcIdentityProviderConfigRequest_issuerUrl,+    oidcIdentityProviderConfigRequest_clientId,++    -- * OutpostConfigRequest+    OutpostConfigRequest (..),+    newOutpostConfigRequest,+    outpostConfigRequest_controlPlanePlacement,+    outpostConfigRequest_outpostArns,+    outpostConfigRequest_controlPlaneInstanceType,++    -- * OutpostConfigResponse+    OutpostConfigResponse (..),+    newOutpostConfigResponse,+    outpostConfigResponse_controlPlanePlacement,+    outpostConfigResponse_outpostArns,+    outpostConfigResponse_controlPlaneInstanceType,++    -- * Provider+    Provider (..),+    newProvider,+    provider_keyArn,++    -- * RemoteAccessConfig+    RemoteAccessConfig (..),+    newRemoteAccessConfig,+    remoteAccessConfig_ec2SshKey,+    remoteAccessConfig_sourceSecurityGroups,++    -- * Taint+    Taint (..),+    newTaint,+    taint_effect,+    taint_key,+    taint_value,++    -- * Update+    Update (..),+    newUpdate,+    update_createdAt,+    update_errors,+    update_id,+    update_params,+    update_status,+    update_type,++    -- * UpdateLabelsPayload+    UpdateLabelsPayload (..),+    newUpdateLabelsPayload,+    updateLabelsPayload_addOrUpdateLabels,+    updateLabelsPayload_removeLabels,++    -- * UpdateParam+    UpdateParam (..),+    newUpdateParam,+    updateParam_type,+    updateParam_value,++    -- * UpdateTaintsPayload+    UpdateTaintsPayload (..),+    newUpdateTaintsPayload,+    updateTaintsPayload_addOrUpdateTaints,+    updateTaintsPayload_removeTaints,++    -- * VpcConfigRequest+    VpcConfigRequest (..),+    newVpcConfigRequest,+    vpcConfigRequest_endpointPrivateAccess,+    vpcConfigRequest_endpointPublicAccess,+    vpcConfigRequest_publicAccessCidrs,+    vpcConfigRequest_securityGroupIds,+    vpcConfigRequest_subnetIds,++    -- * VpcConfigResponse+    VpcConfigResponse (..),+    newVpcConfigResponse,+    vpcConfigResponse_clusterSecurityGroupId,+    vpcConfigResponse_endpointPrivateAccess,+    vpcConfigResponse_endpointPublicAccess,+    vpcConfigResponse_publicAccessCidrs,+    vpcConfigResponse_securityGroupIds,+    vpcConfigResponse_subnetIds,+    vpcConfigResponse_vpcId,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.EKS.Types.AMITypes+import Amazonka.EKS.Types.Addon+import Amazonka.EKS.Types.AddonHealth+import Amazonka.EKS.Types.AddonInfo+import Amazonka.EKS.Types.AddonIssue+import Amazonka.EKS.Types.AddonIssueCode+import Amazonka.EKS.Types.AddonStatus+import Amazonka.EKS.Types.AddonVersionInfo+import Amazonka.EKS.Types.AutoScalingGroup+import Amazonka.EKS.Types.CapacityTypes+import Amazonka.EKS.Types.Certificate+import Amazonka.EKS.Types.Cluster+import Amazonka.EKS.Types.ClusterHealth+import Amazonka.EKS.Types.ClusterIssue+import Amazonka.EKS.Types.ClusterIssueCode+import Amazonka.EKS.Types.ClusterStatus+import Amazonka.EKS.Types.Compatibility+import Amazonka.EKS.Types.ConfigStatus+import Amazonka.EKS.Types.ConnectorConfigProvider+import Amazonka.EKS.Types.ConnectorConfigRequest+import Amazonka.EKS.Types.ConnectorConfigResponse+import Amazonka.EKS.Types.ControlPlanePlacementRequest+import Amazonka.EKS.Types.ControlPlanePlacementResponse+import Amazonka.EKS.Types.EKSErrorCode+import Amazonka.EKS.Types.EncryptionConfig+import Amazonka.EKS.Types.ErrorDetail+import Amazonka.EKS.Types.FargateProfile+import Amazonka.EKS.Types.FargateProfileSelector+import Amazonka.EKS.Types.FargateProfileStatus+import Amazonka.EKS.Types.Identity+import Amazonka.EKS.Types.IdentityProviderConfig+import Amazonka.EKS.Types.IdentityProviderConfigResponse+import Amazonka.EKS.Types.IpFamily+import Amazonka.EKS.Types.Issue+import Amazonka.EKS.Types.KubernetesNetworkConfigRequest+import Amazonka.EKS.Types.KubernetesNetworkConfigResponse+import Amazonka.EKS.Types.LaunchTemplateSpecification+import Amazonka.EKS.Types.LogSetup+import Amazonka.EKS.Types.LogType+import Amazonka.EKS.Types.Logging+import Amazonka.EKS.Types.MarketplaceInformation+import Amazonka.EKS.Types.Nodegroup+import Amazonka.EKS.Types.NodegroupHealth+import Amazonka.EKS.Types.NodegroupIssueCode+import Amazonka.EKS.Types.NodegroupResources+import Amazonka.EKS.Types.NodegroupScalingConfig+import Amazonka.EKS.Types.NodegroupStatus+import Amazonka.EKS.Types.NodegroupUpdateConfig+import Amazonka.EKS.Types.OIDC+import Amazonka.EKS.Types.OidcIdentityProviderConfig+import Amazonka.EKS.Types.OidcIdentityProviderConfigRequest+import Amazonka.EKS.Types.OutpostConfigRequest+import Amazonka.EKS.Types.OutpostConfigResponse+import Amazonka.EKS.Types.Provider+import Amazonka.EKS.Types.RemoteAccessConfig+import Amazonka.EKS.Types.ResolveConflicts+import Amazonka.EKS.Types.Taint+import Amazonka.EKS.Types.TaintEffect+import Amazonka.EKS.Types.Update+import Amazonka.EKS.Types.UpdateLabelsPayload+import Amazonka.EKS.Types.UpdateParam+import Amazonka.EKS.Types.UpdateParamType+import Amazonka.EKS.Types.UpdateStatus+import Amazonka.EKS.Types.UpdateTaintsPayload+import Amazonka.EKS.Types.UpdateType+import Amazonka.EKS.Types.VpcConfigRequest+import Amazonka.EKS.Types.VpcConfigResponse+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2017-11-01@ of the Amazon Elastic Kubernetes Service SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "EKS",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "eks",+      Core.signingName = "eks",+      Core.version = "2017-11-01",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "EKS",+      Core.retry = retry+    }+  where+    retry =+      Core.Exponential+        { Core.base = 5.0e-2,+          Core.growth = 2,+          Core.attempts = 5,+          Core.check = check+        }+    check e+      | Lens.has (Core.hasStatus 502) e =+          Prelude.Just "bad_gateway"+      | Lens.has (Core.hasStatus 504) e =+          Prelude.Just "gateway_timeout"+      | Lens.has (Core.hasStatus 500) e =+          Prelude.Just "general_server_error"+      | Lens.has (Core.hasStatus 509) e =+          Prelude.Just "limit_exceeded"+      | Lens.has+          ( Core.hasCode "RequestThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "request_throttled_exception"+      | Lens.has (Core.hasStatus 503) e =+          Prelude.Just "service_unavailable"+      | Lens.has+          ( Core.hasCode "ThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttled_exception"+      | Lens.has+          ( Core.hasCode "Throttling"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling"+      | Lens.has+          ( Core.hasCode "ThrottlingException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling_exception"+      | Lens.has+          ( Core.hasCode+              "ProvisionedThroughputExceededException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throughput_exceeded"+      | Lens.has (Core.hasStatus 429) e =+          Prelude.Just "too_many_requests"+      | Prelude.otherwise = Prelude.Nothing++-- | You don\'t have permissions to perform the requested operation. The user+-- or role that is making the request must have at least one IAM+-- permissions policy attached that grants the required permissions. For+-- more information, see+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html Access Management>+-- in the /IAM User Guide/.+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccessDeniedException =+  Core._MatchServiceError+    defaultService+    "AccessDeniedException"+    Prelude.. Core.hasStatus 403++-- | This exception is thrown if the request contains a semantic error. The+-- precise meaning will depend on the API, and will be documented in the+-- error message.+_BadRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_BadRequestException =+  Core._MatchServiceError+    defaultService+    "BadRequestException"+    Prelude.. Core.hasStatus 400++-- | These errors are usually caused by a client action. Actions can include+-- using an action or resource on behalf of a user that doesn\'t have+-- permissions to use the action or resource or specifying an identifier+-- that is not valid.+_ClientException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ClientException =+  Core._MatchServiceError+    defaultService+    "ClientException"+    Prelude.. Core.hasStatus 400++-- | The specified parameter is invalid. Review the available parameters for+-- the API request.+_InvalidParameterException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidParameterException =+  Core._MatchServiceError+    defaultService+    "InvalidParameterException"+    Prelude.. Core.hasStatus 400++-- | The request is invalid given the state of the cluster. Check the state+-- of the cluster and the associated operations.+_InvalidRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidRequestException =+  Core._MatchServiceError+    defaultService+    "InvalidRequestException"+    Prelude.. Core.hasStatus 400++-- | A service resource associated with the request could not be found.+-- Clients should not retry such requests.+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_NotFoundException =+  Core._MatchServiceError+    defaultService+    "NotFoundException"+    Prelude.. Core.hasStatus 404++-- | The specified resource is in use.+_ResourceInUseException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceInUseException =+  Core._MatchServiceError+    defaultService+    "ResourceInUseException"+    Prelude.. Core.hasStatus 409++-- | You have encountered a service limit on the specified resource.+_ResourceLimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceLimitExceededException =+  Core._MatchServiceError+    defaultService+    "ResourceLimitExceededException"+    Prelude.. Core.hasStatus 400++-- | The specified resource could not be found. You can view your available+-- clusters with ListClusters. You can view your available managed node+-- groups with ListNodegroups. Amazon EKS clusters and node groups are+-- Region-specific.+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotFoundException =+  Core._MatchServiceError+    defaultService+    "ResourceNotFoundException"+    Prelude.. Core.hasStatus 404++-- | Required resources (such as service-linked roles) were created and are+-- still propagating. Retry later.+_ResourcePropagationDelayException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourcePropagationDelayException =+  Core._MatchServiceError+    defaultService+    "ResourcePropagationDelayException"+    Prelude.. Core.hasStatus 428++-- | These errors are usually caused by a server-side issue.+_ServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServerException =+  Core._MatchServiceError+    defaultService+    "ServerException"+    Prelude.. Core.hasStatus 500++-- | The service is unavailable. Back off and retry the operation.+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceUnavailableException =+  Core._MatchServiceError+    defaultService+    "ServiceUnavailableException"+    Prelude.. Core.hasStatus 503++-- | At least one of your specified cluster subnets is in an Availability+-- Zone that does not support Amazon EKS. The exception output specifies+-- the supported Availability Zones for your account, from which you can+-- choose subnets for your cluster.+_UnsupportedAvailabilityZoneException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_UnsupportedAvailabilityZoneException =+  Core._MatchServiceError+    defaultService+    "UnsupportedAvailabilityZoneException"+    Prelude.. Core.hasStatus 400
+ gen/Amazonka/EKS/Types/AMITypes.hs view
@@ -0,0 +1,121 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.AMITypes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.AMITypes+  ( AMITypes+      ( ..,+        AMITypes_AL2_ARM_64,+        AMITypes_AL2_x86_64,+        AMITypes_AL2_x86_64_GPU,+        AMITypes_BOTTLEROCKET_ARM_64,+        AMITypes_BOTTLEROCKET_ARM_64_NVIDIA,+        AMITypes_BOTTLEROCKET_x86_64,+        AMITypes_BOTTLEROCKET_x86_64_NVIDIA,+        AMITypes_CUSTOM,+        AMITypes_WINDOWS_CORE_2019_x86_64,+        AMITypes_WINDOWS_CORE_2022_x86_64,+        AMITypes_WINDOWS_FULL_2019_x86_64,+        AMITypes_WINDOWS_FULL_2022_x86_64+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AMITypes = AMITypes'+  { fromAMITypes ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern AMITypes_AL2_ARM_64 :: AMITypes+pattern AMITypes_AL2_ARM_64 = AMITypes' "AL2_ARM_64"++pattern AMITypes_AL2_x86_64 :: AMITypes+pattern AMITypes_AL2_x86_64 = AMITypes' "AL2_x86_64"++pattern AMITypes_AL2_x86_64_GPU :: AMITypes+pattern AMITypes_AL2_x86_64_GPU = AMITypes' "AL2_x86_64_GPU"++pattern AMITypes_BOTTLEROCKET_ARM_64 :: AMITypes+pattern AMITypes_BOTTLEROCKET_ARM_64 = AMITypes' "BOTTLEROCKET_ARM_64"++pattern AMITypes_BOTTLEROCKET_ARM_64_NVIDIA :: AMITypes+pattern AMITypes_BOTTLEROCKET_ARM_64_NVIDIA = AMITypes' "BOTTLEROCKET_ARM_64_NVIDIA"++pattern AMITypes_BOTTLEROCKET_x86_64 :: AMITypes+pattern AMITypes_BOTTLEROCKET_x86_64 = AMITypes' "BOTTLEROCKET_x86_64"++pattern AMITypes_BOTTLEROCKET_x86_64_NVIDIA :: AMITypes+pattern AMITypes_BOTTLEROCKET_x86_64_NVIDIA = AMITypes' "BOTTLEROCKET_x86_64_NVIDIA"++pattern AMITypes_CUSTOM :: AMITypes+pattern AMITypes_CUSTOM = AMITypes' "CUSTOM"++pattern AMITypes_WINDOWS_CORE_2019_x86_64 :: AMITypes+pattern AMITypes_WINDOWS_CORE_2019_x86_64 = AMITypes' "WINDOWS_CORE_2019_x86_64"++pattern AMITypes_WINDOWS_CORE_2022_x86_64 :: AMITypes+pattern AMITypes_WINDOWS_CORE_2022_x86_64 = AMITypes' "WINDOWS_CORE_2022_x86_64"++pattern AMITypes_WINDOWS_FULL_2019_x86_64 :: AMITypes+pattern AMITypes_WINDOWS_FULL_2019_x86_64 = AMITypes' "WINDOWS_FULL_2019_x86_64"++pattern AMITypes_WINDOWS_FULL_2022_x86_64 :: AMITypes+pattern AMITypes_WINDOWS_FULL_2022_x86_64 = AMITypes' "WINDOWS_FULL_2022_x86_64"++{-# COMPLETE+  AMITypes_AL2_ARM_64,+  AMITypes_AL2_x86_64,+  AMITypes_AL2_x86_64_GPU,+  AMITypes_BOTTLEROCKET_ARM_64,+  AMITypes_BOTTLEROCKET_ARM_64_NVIDIA,+  AMITypes_BOTTLEROCKET_x86_64,+  AMITypes_BOTTLEROCKET_x86_64_NVIDIA,+  AMITypes_CUSTOM,+  AMITypes_WINDOWS_CORE_2019_x86_64,+  AMITypes_WINDOWS_CORE_2022_x86_64,+  AMITypes_WINDOWS_FULL_2019_x86_64,+  AMITypes_WINDOWS_FULL_2022_x86_64,+  AMITypes'+  #-}
+ gen/Amazonka/EKS/Types/Addon.hs view
@@ -0,0 +1,248 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.Addon+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.Addon where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.AddonHealth+import Amazonka.EKS.Types.AddonStatus+import Amazonka.EKS.Types.MarketplaceInformation+import qualified Amazonka.Prelude as Prelude++-- | An Amazon EKS add-on. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html Amazon EKS add-ons>+-- in the /Amazon EKS User Guide/.+--+-- /See:/ 'newAddon' smart constructor.+data Addon = Addon'+  { -- | The Amazon Resource Name (ARN) of the add-on.+    addonArn :: Prelude.Maybe Prelude.Text,+    -- | The name of the add-on.+    addonName :: Prelude.Maybe Prelude.Text,+    -- | The version of the add-on.+    addonVersion :: Prelude.Maybe Prelude.Text,+    -- | The name of the cluster.+    clusterName :: Prelude.Maybe Prelude.Text,+    -- | The configuration values that you provided.+    configurationValues :: Prelude.Maybe Prelude.Text,+    -- | The date and time that the add-on was created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | An object that represents the health of the add-on.+    health :: Prelude.Maybe AddonHealth,+    -- | Information about an Amazon EKS add-on from the Amazon Web Services+    -- Marketplace.+    marketplaceInformation :: Prelude.Maybe MarketplaceInformation,+    -- | The date and time that the add-on was last modified.+    modifiedAt :: Prelude.Maybe Data.POSIX,+    -- | The owner of the add-on.+    owner :: Prelude.Maybe Prelude.Text,+    -- | The publisher of the add-on.+    publisher :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the IAM role that\'s bound to the+    -- Kubernetes service account that the add-on uses.+    serviceAccountRoleArn :: Prelude.Maybe Prelude.Text,+    -- | The status of the add-on.+    status :: Prelude.Maybe AddonStatus,+    -- | The metadata that you apply to the add-on to assist with categorization+    -- and organization. Each tag consists of a key and an optional value. You+    -- define both. Add-on tags do not propagate to any other resources+    -- associated with the cluster.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Addon' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addonArn', 'addon_addonArn' - The Amazon Resource Name (ARN) of the add-on.+--+-- 'addonName', 'addon_addonName' - The name of the add-on.+--+-- 'addonVersion', 'addon_addonVersion' - The version of the add-on.+--+-- 'clusterName', 'addon_clusterName' - The name of the cluster.+--+-- 'configurationValues', 'addon_configurationValues' - The configuration values that you provided.+--+-- 'createdAt', 'addon_createdAt' - The date and time that the add-on was created.+--+-- 'health', 'addon_health' - An object that represents the health of the add-on.+--+-- 'marketplaceInformation', 'addon_marketplaceInformation' - Information about an Amazon EKS add-on from the Amazon Web Services+-- Marketplace.+--+-- 'modifiedAt', 'addon_modifiedAt' - The date and time that the add-on was last modified.+--+-- 'owner', 'addon_owner' - The owner of the add-on.+--+-- 'publisher', 'addon_publisher' - The publisher of the add-on.+--+-- 'serviceAccountRoleArn', 'addon_serviceAccountRoleArn' - The Amazon Resource Name (ARN) of the IAM role that\'s bound to the+-- Kubernetes service account that the add-on uses.+--+-- 'status', 'addon_status' - The status of the add-on.+--+-- 'tags', 'addon_tags' - The metadata that you apply to the add-on to assist with categorization+-- and organization. Each tag consists of a key and an optional value. You+-- define both. Add-on tags do not propagate to any other resources+-- associated with the cluster.+newAddon ::+  Addon+newAddon =+  Addon'+    { addonArn = Prelude.Nothing,+      addonName = Prelude.Nothing,+      addonVersion = Prelude.Nothing,+      clusterName = Prelude.Nothing,+      configurationValues = Prelude.Nothing,+      createdAt = Prelude.Nothing,+      health = Prelude.Nothing,+      marketplaceInformation = Prelude.Nothing,+      modifiedAt = Prelude.Nothing,+      owner = Prelude.Nothing,+      publisher = Prelude.Nothing,+      serviceAccountRoleArn = Prelude.Nothing,+      status = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the add-on.+addon_addonArn :: Lens.Lens' Addon (Prelude.Maybe Prelude.Text)+addon_addonArn = Lens.lens (\Addon' {addonArn} -> addonArn) (\s@Addon' {} a -> s {addonArn = a} :: Addon)++-- | The name of the add-on.+addon_addonName :: Lens.Lens' Addon (Prelude.Maybe Prelude.Text)+addon_addonName = Lens.lens (\Addon' {addonName} -> addonName) (\s@Addon' {} a -> s {addonName = a} :: Addon)++-- | The version of the add-on.+addon_addonVersion :: Lens.Lens' Addon (Prelude.Maybe Prelude.Text)+addon_addonVersion = Lens.lens (\Addon' {addonVersion} -> addonVersion) (\s@Addon' {} a -> s {addonVersion = a} :: Addon)++-- | The name of the cluster.+addon_clusterName :: Lens.Lens' Addon (Prelude.Maybe Prelude.Text)+addon_clusterName = Lens.lens (\Addon' {clusterName} -> clusterName) (\s@Addon' {} a -> s {clusterName = a} :: Addon)++-- | The configuration values that you provided.+addon_configurationValues :: Lens.Lens' Addon (Prelude.Maybe Prelude.Text)+addon_configurationValues = Lens.lens (\Addon' {configurationValues} -> configurationValues) (\s@Addon' {} a -> s {configurationValues = a} :: Addon)++-- | The date and time that the add-on was created.+addon_createdAt :: Lens.Lens' Addon (Prelude.Maybe Prelude.UTCTime)+addon_createdAt = Lens.lens (\Addon' {createdAt} -> createdAt) (\s@Addon' {} a -> s {createdAt = a} :: Addon) Prelude.. Lens.mapping Data._Time++-- | An object that represents the health of the add-on.+addon_health :: Lens.Lens' Addon (Prelude.Maybe AddonHealth)+addon_health = Lens.lens (\Addon' {health} -> health) (\s@Addon' {} a -> s {health = a} :: Addon)++-- | Information about an Amazon EKS add-on from the Amazon Web Services+-- Marketplace.+addon_marketplaceInformation :: Lens.Lens' Addon (Prelude.Maybe MarketplaceInformation)+addon_marketplaceInformation = Lens.lens (\Addon' {marketplaceInformation} -> marketplaceInformation) (\s@Addon' {} a -> s {marketplaceInformation = a} :: Addon)++-- | The date and time that the add-on was last modified.+addon_modifiedAt :: Lens.Lens' Addon (Prelude.Maybe Prelude.UTCTime)+addon_modifiedAt = Lens.lens (\Addon' {modifiedAt} -> modifiedAt) (\s@Addon' {} a -> s {modifiedAt = a} :: Addon) Prelude.. Lens.mapping Data._Time++-- | The owner of the add-on.+addon_owner :: Lens.Lens' Addon (Prelude.Maybe Prelude.Text)+addon_owner = Lens.lens (\Addon' {owner} -> owner) (\s@Addon' {} a -> s {owner = a} :: Addon)++-- | The publisher of the add-on.+addon_publisher :: Lens.Lens' Addon (Prelude.Maybe Prelude.Text)+addon_publisher = Lens.lens (\Addon' {publisher} -> publisher) (\s@Addon' {} a -> s {publisher = a} :: Addon)++-- | The Amazon Resource Name (ARN) of the IAM role that\'s bound to the+-- Kubernetes service account that the add-on uses.+addon_serviceAccountRoleArn :: Lens.Lens' Addon (Prelude.Maybe Prelude.Text)+addon_serviceAccountRoleArn = Lens.lens (\Addon' {serviceAccountRoleArn} -> serviceAccountRoleArn) (\s@Addon' {} a -> s {serviceAccountRoleArn = a} :: Addon)++-- | The status of the add-on.+addon_status :: Lens.Lens' Addon (Prelude.Maybe AddonStatus)+addon_status = Lens.lens (\Addon' {status} -> status) (\s@Addon' {} a -> s {status = a} :: Addon)++-- | The metadata that you apply to the add-on to assist with categorization+-- and organization. Each tag consists of a key and an optional value. You+-- define both. Add-on tags do not propagate to any other resources+-- associated with the cluster.+addon_tags :: Lens.Lens' Addon (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+addon_tags = Lens.lens (\Addon' {tags} -> tags) (\s@Addon' {} a -> s {tags = a} :: Addon) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON Addon where+  parseJSON =+    Data.withObject+      "Addon"+      ( \x ->+          Addon'+            Prelude.<$> (x Data..:? "addonArn")+            Prelude.<*> (x Data..:? "addonName")+            Prelude.<*> (x Data..:? "addonVersion")+            Prelude.<*> (x Data..:? "clusterName")+            Prelude.<*> (x Data..:? "configurationValues")+            Prelude.<*> (x Data..:? "createdAt")+            Prelude.<*> (x Data..:? "health")+            Prelude.<*> (x Data..:? "marketplaceInformation")+            Prelude.<*> (x Data..:? "modifiedAt")+            Prelude.<*> (x Data..:? "owner")+            Prelude.<*> (x Data..:? "publisher")+            Prelude.<*> (x Data..:? "serviceAccountRoleArn")+            Prelude.<*> (x Data..:? "status")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Addon where+  hashWithSalt _salt Addon' {..} =+    _salt+      `Prelude.hashWithSalt` addonArn+      `Prelude.hashWithSalt` addonName+      `Prelude.hashWithSalt` addonVersion+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` configurationValues+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` health+      `Prelude.hashWithSalt` marketplaceInformation+      `Prelude.hashWithSalt` modifiedAt+      `Prelude.hashWithSalt` owner+      `Prelude.hashWithSalt` publisher+      `Prelude.hashWithSalt` serviceAccountRoleArn+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` tags++instance Prelude.NFData Addon where+  rnf Addon' {..} =+    Prelude.rnf addonArn+      `Prelude.seq` Prelude.rnf addonName+      `Prelude.seq` Prelude.rnf addonVersion+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf configurationValues+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf health+      `Prelude.seq` Prelude.rnf marketplaceInformation+      `Prelude.seq` Prelude.rnf modifiedAt+      `Prelude.seq` Prelude.rnf owner+      `Prelude.seq` Prelude.rnf publisher+      `Prelude.seq` Prelude.rnf serviceAccountRoleArn+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/EKS/Types/AddonHealth.hs view
@@ -0,0 +1,69 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.AddonHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.AddonHealth where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.AddonIssue+import qualified Amazonka.Prelude as Prelude++-- | The health of the add-on.+--+-- /See:/ 'newAddonHealth' smart constructor.+data AddonHealth = AddonHealth'+  { -- | An object representing the health issues for an add-on.+    issues :: Prelude.Maybe [AddonIssue]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddonHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'issues', 'addonHealth_issues' - An object representing the health issues for an add-on.+newAddonHealth ::+  AddonHealth+newAddonHealth =+  AddonHealth' {issues = Prelude.Nothing}++-- | An object representing the health issues for an add-on.+addonHealth_issues :: Lens.Lens' AddonHealth (Prelude.Maybe [AddonIssue])+addonHealth_issues = Lens.lens (\AddonHealth' {issues} -> issues) (\s@AddonHealth' {} a -> s {issues = a} :: AddonHealth) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON AddonHealth where+  parseJSON =+    Data.withObject+      "AddonHealth"+      ( \x ->+          AddonHealth'+            Prelude.<$> (x Data..:? "issues" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable AddonHealth where+  hashWithSalt _salt AddonHealth' {..} =+    _salt `Prelude.hashWithSalt` issues++instance Prelude.NFData AddonHealth where+  rnf AddonHealth' {..} = Prelude.rnf issues
+ gen/Amazonka/EKS/Types/AddonInfo.hs view
@@ -0,0 +1,137 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.AddonInfo+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.AddonInfo where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.AddonVersionInfo+import Amazonka.EKS.Types.MarketplaceInformation+import qualified Amazonka.Prelude as Prelude++-- | Information about an add-on.+--+-- /See:/ 'newAddonInfo' smart constructor.+data AddonInfo = AddonInfo'+  { -- | The name of the add-on.+    addonName :: Prelude.Maybe Prelude.Text,+    -- | An object representing information about available add-on versions and+    -- compatible Kubernetes versions.+    addonVersions :: Prelude.Maybe [AddonVersionInfo],+    -- | Information about the add-on from the Amazon Web Services Marketplace.+    marketplaceInformation :: Prelude.Maybe MarketplaceInformation,+    -- | The owner of the add-on.+    owner :: Prelude.Maybe Prelude.Text,+    -- | The publisher of the add-on.+    publisher :: Prelude.Maybe Prelude.Text,+    -- | The type of the add-on.+    type' :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddonInfo' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addonName', 'addonInfo_addonName' - The name of the add-on.+--+-- 'addonVersions', 'addonInfo_addonVersions' - An object representing information about available add-on versions and+-- compatible Kubernetes versions.+--+-- 'marketplaceInformation', 'addonInfo_marketplaceInformation' - Information about the add-on from the Amazon Web Services Marketplace.+--+-- 'owner', 'addonInfo_owner' - The owner of the add-on.+--+-- 'publisher', 'addonInfo_publisher' - The publisher of the add-on.+--+-- 'type'', 'addonInfo_type' - The type of the add-on.+newAddonInfo ::+  AddonInfo+newAddonInfo =+  AddonInfo'+    { addonName = Prelude.Nothing,+      addonVersions = Prelude.Nothing,+      marketplaceInformation = Prelude.Nothing,+      owner = Prelude.Nothing,+      publisher = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | The name of the add-on.+addonInfo_addonName :: Lens.Lens' AddonInfo (Prelude.Maybe Prelude.Text)+addonInfo_addonName = Lens.lens (\AddonInfo' {addonName} -> addonName) (\s@AddonInfo' {} a -> s {addonName = a} :: AddonInfo)++-- | An object representing information about available add-on versions and+-- compatible Kubernetes versions.+addonInfo_addonVersions :: Lens.Lens' AddonInfo (Prelude.Maybe [AddonVersionInfo])+addonInfo_addonVersions = Lens.lens (\AddonInfo' {addonVersions} -> addonVersions) (\s@AddonInfo' {} a -> s {addonVersions = a} :: AddonInfo) Prelude.. Lens.mapping Lens.coerced++-- | Information about the add-on from the Amazon Web Services Marketplace.+addonInfo_marketplaceInformation :: Lens.Lens' AddonInfo (Prelude.Maybe MarketplaceInformation)+addonInfo_marketplaceInformation = Lens.lens (\AddonInfo' {marketplaceInformation} -> marketplaceInformation) (\s@AddonInfo' {} a -> s {marketplaceInformation = a} :: AddonInfo)++-- | The owner of the add-on.+addonInfo_owner :: Lens.Lens' AddonInfo (Prelude.Maybe Prelude.Text)+addonInfo_owner = Lens.lens (\AddonInfo' {owner} -> owner) (\s@AddonInfo' {} a -> s {owner = a} :: AddonInfo)++-- | The publisher of the add-on.+addonInfo_publisher :: Lens.Lens' AddonInfo (Prelude.Maybe Prelude.Text)+addonInfo_publisher = Lens.lens (\AddonInfo' {publisher} -> publisher) (\s@AddonInfo' {} a -> s {publisher = a} :: AddonInfo)++-- | The type of the add-on.+addonInfo_type :: Lens.Lens' AddonInfo (Prelude.Maybe Prelude.Text)+addonInfo_type = Lens.lens (\AddonInfo' {type'} -> type') (\s@AddonInfo' {} a -> s {type' = a} :: AddonInfo)++instance Data.FromJSON AddonInfo where+  parseJSON =+    Data.withObject+      "AddonInfo"+      ( \x ->+          AddonInfo'+            Prelude.<$> (x Data..:? "addonName")+            Prelude.<*> (x Data..:? "addonVersions" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "marketplaceInformation")+            Prelude.<*> (x Data..:? "owner")+            Prelude.<*> (x Data..:? "publisher")+            Prelude.<*> (x Data..:? "type")+      )++instance Prelude.Hashable AddonInfo where+  hashWithSalt _salt AddonInfo' {..} =+    _salt+      `Prelude.hashWithSalt` addonName+      `Prelude.hashWithSalt` addonVersions+      `Prelude.hashWithSalt` marketplaceInformation+      `Prelude.hashWithSalt` owner+      `Prelude.hashWithSalt` publisher+      `Prelude.hashWithSalt` type'++instance Prelude.NFData AddonInfo where+  rnf AddonInfo' {..} =+    Prelude.rnf addonName+      `Prelude.seq` Prelude.rnf addonVersions+      `Prelude.seq` Prelude.rnf marketplaceInformation+      `Prelude.seq` Prelude.rnf owner+      `Prelude.seq` Prelude.rnf publisher+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/EKS/Types/AddonIssue.hs view
@@ -0,0 +1,97 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.AddonIssue+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.AddonIssue where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.AddonIssueCode+import qualified Amazonka.Prelude as Prelude++-- | An issue related to an add-on.+--+-- /See:/ 'newAddonIssue' smart constructor.+data AddonIssue = AddonIssue'+  { -- | A code that describes the type of issue.+    code :: Prelude.Maybe AddonIssueCode,+    -- | A message that provides details about the issue and what might cause it.+    message :: Prelude.Maybe Prelude.Text,+    -- | The resource IDs of the issue.+    resourceIds :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddonIssue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'code', 'addonIssue_code' - A code that describes the type of issue.+--+-- 'message', 'addonIssue_message' - A message that provides details about the issue and what might cause it.+--+-- 'resourceIds', 'addonIssue_resourceIds' - The resource IDs of the issue.+newAddonIssue ::+  AddonIssue+newAddonIssue =+  AddonIssue'+    { code = Prelude.Nothing,+      message = Prelude.Nothing,+      resourceIds = Prelude.Nothing+    }++-- | A code that describes the type of issue.+addonIssue_code :: Lens.Lens' AddonIssue (Prelude.Maybe AddonIssueCode)+addonIssue_code = Lens.lens (\AddonIssue' {code} -> code) (\s@AddonIssue' {} a -> s {code = a} :: AddonIssue)++-- | A message that provides details about the issue and what might cause it.+addonIssue_message :: Lens.Lens' AddonIssue (Prelude.Maybe Prelude.Text)+addonIssue_message = Lens.lens (\AddonIssue' {message} -> message) (\s@AddonIssue' {} a -> s {message = a} :: AddonIssue)++-- | The resource IDs of the issue.+addonIssue_resourceIds :: Lens.Lens' AddonIssue (Prelude.Maybe [Prelude.Text])+addonIssue_resourceIds = Lens.lens (\AddonIssue' {resourceIds} -> resourceIds) (\s@AddonIssue' {} a -> s {resourceIds = a} :: AddonIssue) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON AddonIssue where+  parseJSON =+    Data.withObject+      "AddonIssue"+      ( \x ->+          AddonIssue'+            Prelude.<$> (x Data..:? "code")+            Prelude.<*> (x Data..:? "message")+            Prelude.<*> (x Data..:? "resourceIds" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable AddonIssue where+  hashWithSalt _salt AddonIssue' {..} =+    _salt+      `Prelude.hashWithSalt` code+      `Prelude.hashWithSalt` message+      `Prelude.hashWithSalt` resourceIds++instance Prelude.NFData AddonIssue where+  rnf AddonIssue' {..} =+    Prelude.rnf code+      `Prelude.seq` Prelude.rnf message+      `Prelude.seq` Prelude.rnf resourceIds
+ gen/Amazonka/EKS/Types/AddonIssueCode.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.AddonIssueCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.AddonIssueCode+  ( AddonIssueCode+      ( ..,+        AddonIssueCode_AccessDenied,+        AddonIssueCode_AdmissionRequestDenied,+        AddonIssueCode_ClusterUnreachable,+        AddonIssueCode_ConfigurationConflict,+        AddonIssueCode_InsufficientNumberOfReplicas,+        AddonIssueCode_InternalFailure,+        AddonIssueCode_K8sResourceNotFound,+        AddonIssueCode_UnsupportedAddonModification+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AddonIssueCode = AddonIssueCode'+  { fromAddonIssueCode ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern AddonIssueCode_AccessDenied :: AddonIssueCode+pattern AddonIssueCode_AccessDenied = AddonIssueCode' "AccessDenied"++pattern AddonIssueCode_AdmissionRequestDenied :: AddonIssueCode+pattern AddonIssueCode_AdmissionRequestDenied = AddonIssueCode' "AdmissionRequestDenied"++pattern AddonIssueCode_ClusterUnreachable :: AddonIssueCode+pattern AddonIssueCode_ClusterUnreachable = AddonIssueCode' "ClusterUnreachable"++pattern AddonIssueCode_ConfigurationConflict :: AddonIssueCode+pattern AddonIssueCode_ConfigurationConflict = AddonIssueCode' "ConfigurationConflict"++pattern AddonIssueCode_InsufficientNumberOfReplicas :: AddonIssueCode+pattern AddonIssueCode_InsufficientNumberOfReplicas = AddonIssueCode' "InsufficientNumberOfReplicas"++pattern AddonIssueCode_InternalFailure :: AddonIssueCode+pattern AddonIssueCode_InternalFailure = AddonIssueCode' "InternalFailure"++pattern AddonIssueCode_K8sResourceNotFound :: AddonIssueCode+pattern AddonIssueCode_K8sResourceNotFound = AddonIssueCode' "K8sResourceNotFound"++pattern AddonIssueCode_UnsupportedAddonModification :: AddonIssueCode+pattern AddonIssueCode_UnsupportedAddonModification = AddonIssueCode' "UnsupportedAddonModification"++{-# COMPLETE+  AddonIssueCode_AccessDenied,+  AddonIssueCode_AdmissionRequestDenied,+  AddonIssueCode_ClusterUnreachable,+  AddonIssueCode_ConfigurationConflict,+  AddonIssueCode_InsufficientNumberOfReplicas,+  AddonIssueCode_InternalFailure,+  AddonIssueCode_K8sResourceNotFound,+  AddonIssueCode_UnsupportedAddonModification,+  AddonIssueCode'+  #-}
+ gen/Amazonka/EKS/Types/AddonStatus.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.AddonStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.AddonStatus+  ( AddonStatus+      ( ..,+        AddonStatus_ACTIVE,+        AddonStatus_CREATE_FAILED,+        AddonStatus_CREATING,+        AddonStatus_DEGRADED,+        AddonStatus_DELETE_FAILED,+        AddonStatus_DELETING,+        AddonStatus_UPDATE_FAILED,+        AddonStatus_UPDATING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AddonStatus = AddonStatus'+  { fromAddonStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern AddonStatus_ACTIVE :: AddonStatus+pattern AddonStatus_ACTIVE = AddonStatus' "ACTIVE"++pattern AddonStatus_CREATE_FAILED :: AddonStatus+pattern AddonStatus_CREATE_FAILED = AddonStatus' "CREATE_FAILED"++pattern AddonStatus_CREATING :: AddonStatus+pattern AddonStatus_CREATING = AddonStatus' "CREATING"++pattern AddonStatus_DEGRADED :: AddonStatus+pattern AddonStatus_DEGRADED = AddonStatus' "DEGRADED"++pattern AddonStatus_DELETE_FAILED :: AddonStatus+pattern AddonStatus_DELETE_FAILED = AddonStatus' "DELETE_FAILED"++pattern AddonStatus_DELETING :: AddonStatus+pattern AddonStatus_DELETING = AddonStatus' "DELETING"++pattern AddonStatus_UPDATE_FAILED :: AddonStatus+pattern AddonStatus_UPDATE_FAILED = AddonStatus' "UPDATE_FAILED"++pattern AddonStatus_UPDATING :: AddonStatus+pattern AddonStatus_UPDATING = AddonStatus' "UPDATING"++{-# COMPLETE+  AddonStatus_ACTIVE,+  AddonStatus_CREATE_FAILED,+  AddonStatus_CREATING,+  AddonStatus_DEGRADED,+  AddonStatus_DELETE_FAILED,+  AddonStatus_DELETING,+  AddonStatus_UPDATE_FAILED,+  AddonStatus_UPDATING,+  AddonStatus'+  #-}
+ gen/Amazonka/EKS/Types/AddonVersionInfo.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.AddonVersionInfo+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.AddonVersionInfo where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.Compatibility+import qualified Amazonka.Prelude as Prelude++-- | Information about an add-on version.+--+-- /See:/ 'newAddonVersionInfo' smart constructor.+data AddonVersionInfo = AddonVersionInfo'+  { -- | The version of the add-on.+    addonVersion :: Prelude.Maybe Prelude.Text,+    -- | The architectures that the version supports.+    architecture :: Prelude.Maybe [Prelude.Text],+    -- | An object representing the compatibilities of a version.+    compatibilities :: Prelude.Maybe [Compatibility],+    -- | Whether the add-on requires configuration.+    requiresConfiguration :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AddonVersionInfo' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addonVersion', 'addonVersionInfo_addonVersion' - The version of the add-on.+--+-- 'architecture', 'addonVersionInfo_architecture' - The architectures that the version supports.+--+-- 'compatibilities', 'addonVersionInfo_compatibilities' - An object representing the compatibilities of a version.+--+-- 'requiresConfiguration', 'addonVersionInfo_requiresConfiguration' - Whether the add-on requires configuration.+newAddonVersionInfo ::+  AddonVersionInfo+newAddonVersionInfo =+  AddonVersionInfo'+    { addonVersion = Prelude.Nothing,+      architecture = Prelude.Nothing,+      compatibilities = Prelude.Nothing,+      requiresConfiguration = Prelude.Nothing+    }++-- | The version of the add-on.+addonVersionInfo_addonVersion :: Lens.Lens' AddonVersionInfo (Prelude.Maybe Prelude.Text)+addonVersionInfo_addonVersion = Lens.lens (\AddonVersionInfo' {addonVersion} -> addonVersion) (\s@AddonVersionInfo' {} a -> s {addonVersion = a} :: AddonVersionInfo)++-- | The architectures that the version supports.+addonVersionInfo_architecture :: Lens.Lens' AddonVersionInfo (Prelude.Maybe [Prelude.Text])+addonVersionInfo_architecture = Lens.lens (\AddonVersionInfo' {architecture} -> architecture) (\s@AddonVersionInfo' {} a -> s {architecture = a} :: AddonVersionInfo) Prelude.. Lens.mapping Lens.coerced++-- | An object representing the compatibilities of a version.+addonVersionInfo_compatibilities :: Lens.Lens' AddonVersionInfo (Prelude.Maybe [Compatibility])+addonVersionInfo_compatibilities = Lens.lens (\AddonVersionInfo' {compatibilities} -> compatibilities) (\s@AddonVersionInfo' {} a -> s {compatibilities = a} :: AddonVersionInfo) Prelude.. Lens.mapping Lens.coerced++-- | Whether the add-on requires configuration.+addonVersionInfo_requiresConfiguration :: Lens.Lens' AddonVersionInfo (Prelude.Maybe Prelude.Bool)+addonVersionInfo_requiresConfiguration = Lens.lens (\AddonVersionInfo' {requiresConfiguration} -> requiresConfiguration) (\s@AddonVersionInfo' {} a -> s {requiresConfiguration = a} :: AddonVersionInfo)++instance Data.FromJSON AddonVersionInfo where+  parseJSON =+    Data.withObject+      "AddonVersionInfo"+      ( \x ->+          AddonVersionInfo'+            Prelude.<$> (x Data..:? "addonVersion")+            Prelude.<*> (x Data..:? "architecture" Data..!= Prelude.mempty)+            Prelude.<*> ( x+                            Data..:? "compatibilities"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "requiresConfiguration")+      )++instance Prelude.Hashable AddonVersionInfo where+  hashWithSalt _salt AddonVersionInfo' {..} =+    _salt+      `Prelude.hashWithSalt` addonVersion+      `Prelude.hashWithSalt` architecture+      `Prelude.hashWithSalt` compatibilities+      `Prelude.hashWithSalt` requiresConfiguration++instance Prelude.NFData AddonVersionInfo where+  rnf AddonVersionInfo' {..} =+    Prelude.rnf addonVersion+      `Prelude.seq` Prelude.rnf architecture+      `Prelude.seq` Prelude.rnf compatibilities+      `Prelude.seq` Prelude.rnf requiresConfiguration
+ gen/Amazonka/EKS/Types/AutoScalingGroup.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.AutoScalingGroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.AutoScalingGroup where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An Auto Scaling group that is associated with an Amazon EKS managed node+-- group.+--+-- /See:/ 'newAutoScalingGroup' smart constructor.+data AutoScalingGroup = AutoScalingGroup'+  { -- | The name of the Auto Scaling group associated with an Amazon EKS managed+    -- node group.+    name :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AutoScalingGroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'autoScalingGroup_name' - The name of the Auto Scaling group associated with an Amazon EKS managed+-- node group.+newAutoScalingGroup ::+  AutoScalingGroup+newAutoScalingGroup =+  AutoScalingGroup' {name = Prelude.Nothing}++-- | The name of the Auto Scaling group associated with an Amazon EKS managed+-- node group.+autoScalingGroup_name :: Lens.Lens' AutoScalingGroup (Prelude.Maybe Prelude.Text)+autoScalingGroup_name = Lens.lens (\AutoScalingGroup' {name} -> name) (\s@AutoScalingGroup' {} a -> s {name = a} :: AutoScalingGroup)++instance Data.FromJSON AutoScalingGroup where+  parseJSON =+    Data.withObject+      "AutoScalingGroup"+      ( \x ->+          AutoScalingGroup' Prelude.<$> (x Data..:? "name")+      )++instance Prelude.Hashable AutoScalingGroup where+  hashWithSalt _salt AutoScalingGroup' {..} =+    _salt `Prelude.hashWithSalt` name++instance Prelude.NFData AutoScalingGroup where+  rnf AutoScalingGroup' {..} = Prelude.rnf name
+ gen/Amazonka/EKS/Types/CapacityTypes.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.CapacityTypes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.CapacityTypes+  ( CapacityTypes+      ( ..,+        CapacityTypes_ON_DEMAND,+        CapacityTypes_SPOT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype CapacityTypes = CapacityTypes'+  { fromCapacityTypes ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern CapacityTypes_ON_DEMAND :: CapacityTypes+pattern CapacityTypes_ON_DEMAND = CapacityTypes' "ON_DEMAND"++pattern CapacityTypes_SPOT :: CapacityTypes+pattern CapacityTypes_SPOT = CapacityTypes' "SPOT"++{-# COMPLETE+  CapacityTypes_ON_DEMAND,+  CapacityTypes_SPOT,+  CapacityTypes'+  #-}
+ gen/Amazonka/EKS/Types/Certificate.hs view
@@ -0,0 +1,72 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.Certificate+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.Certificate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the @certificate-authority-data@ for your+-- cluster.+--+-- /See:/ 'newCertificate' smart constructor.+data Certificate = Certificate'+  { -- | The Base64-encoded certificate data required to communicate with your+    -- cluster. Add this to the @certificate-authority-data@ section of the+    -- @kubeconfig@ file for your cluster.+    data' :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Certificate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'data'', 'certificate_data' - The Base64-encoded certificate data required to communicate with your+-- cluster. Add this to the @certificate-authority-data@ section of the+-- @kubeconfig@ file for your cluster.+newCertificate ::+  Certificate+newCertificate =+  Certificate' {data' = Prelude.Nothing}++-- | The Base64-encoded certificate data required to communicate with your+-- cluster. Add this to the @certificate-authority-data@ section of the+-- @kubeconfig@ file for your cluster.+certificate_data :: Lens.Lens' Certificate (Prelude.Maybe Prelude.Text)+certificate_data = Lens.lens (\Certificate' {data'} -> data') (\s@Certificate' {} a -> s {data' = a} :: Certificate)++instance Data.FromJSON Certificate where+  parseJSON =+    Data.withObject+      "Certificate"+      (\x -> Certificate' Prelude.<$> (x Data..:? "data"))++instance Prelude.Hashable Certificate where+  hashWithSalt _salt Certificate' {..} =+    _salt `Prelude.hashWithSalt` data'++instance Prelude.NFData Certificate where+  rnf Certificate' {..} = Prelude.rnf data'
+ gen/Amazonka/EKS/Types/Cluster.hs view
@@ -0,0 +1,376 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.Cluster+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.Cluster where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.Certificate+import Amazonka.EKS.Types.ClusterHealth+import Amazonka.EKS.Types.ClusterStatus+import Amazonka.EKS.Types.ConnectorConfigResponse+import Amazonka.EKS.Types.EncryptionConfig+import Amazonka.EKS.Types.Identity+import Amazonka.EKS.Types.KubernetesNetworkConfigResponse+import Amazonka.EKS.Types.Logging+import Amazonka.EKS.Types.OutpostConfigResponse+import Amazonka.EKS.Types.VpcConfigResponse+import qualified Amazonka.Prelude as Prelude++-- | An object representing an Amazon EKS cluster.+--+-- /See:/ 'newCluster' smart constructor.+data Cluster = Cluster'+  { -- | The Amazon Resource Name (ARN) of the cluster.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The @certificate-authority-data@ for your cluster.+    certificateAuthority :: Prelude.Maybe Certificate,+    -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | The configuration used to connect to a cluster for registration.+    connectorConfig :: Prelude.Maybe ConnectorConfigResponse,+    -- | The Unix epoch timestamp in seconds for when the cluster was created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The encryption configuration for the cluster.+    encryptionConfig :: Prelude.Maybe [EncryptionConfig],+    -- | The endpoint for your Kubernetes API server.+    endpoint :: Prelude.Maybe Prelude.Text,+    -- | An object representing the health of your local Amazon EKS cluster on an+    -- Amazon Web Services Outpost. This object isn\'t available for clusters+    -- on the Amazon Web Services cloud.+    health :: Prelude.Maybe ClusterHealth,+    -- | The ID of your local Amazon EKS cluster on an Amazon Web Services+    -- Outpost. This property isn\'t available for an Amazon EKS cluster on the+    -- Amazon Web Services cloud.+    id :: Prelude.Maybe Prelude.Text,+    -- | The identity provider information for the cluster.+    identity :: Prelude.Maybe Identity,+    -- | The Kubernetes network configuration for the cluster.+    kubernetesNetworkConfig :: Prelude.Maybe KubernetesNetworkConfigResponse,+    -- | The logging configuration for your cluster.+    logging :: Prelude.Maybe Logging,+    -- | The name of the cluster.+    name :: Prelude.Maybe Prelude.Text,+    -- | An object representing the configuration of your local Amazon EKS+    -- cluster on an Amazon Web Services Outpost. This object isn\'t available+    -- for clusters on the Amazon Web Services cloud.+    outpostConfig :: Prelude.Maybe OutpostConfigResponse,+    -- | The platform version of your Amazon EKS cluster. For more information,+    -- see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html Platform Versions>+    -- in the //Amazon EKS User Guide// .+    platformVersion :: Prelude.Maybe Prelude.Text,+    -- | The VPC configuration used by the cluster control plane. Amazon EKS VPC+    -- resources have specific requirements to work properly with Kubernetes.+    -- For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html Cluster VPC Considerations>+    -- and+    -- <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html Cluster Security Group Considerations>+    -- in the /Amazon EKS User Guide/.+    resourcesVpcConfig :: Prelude.Maybe VpcConfigResponse,+    -- | The Amazon Resource Name (ARN) of the IAM role that provides permissions+    -- for the Kubernetes control plane to make calls to Amazon Web Services+    -- API operations on your behalf.+    roleArn :: Prelude.Maybe Prelude.Text,+    -- | The current status of the cluster.+    status :: Prelude.Maybe ClusterStatus,+    -- | The metadata that you apply to the cluster to assist with categorization+    -- and organization. Each tag consists of a key and an optional value. You+    -- define both. Cluster tags do not propagate to any other resources+    -- associated with the cluster.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The Kubernetes server version for the cluster.+    version :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Cluster' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'cluster_arn' - The Amazon Resource Name (ARN) of the cluster.+--+-- 'certificateAuthority', 'cluster_certificateAuthority' - The @certificate-authority-data@ for your cluster.+--+-- 'clientRequestToken', 'cluster_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'connectorConfig', 'cluster_connectorConfig' - The configuration used to connect to a cluster for registration.+--+-- 'createdAt', 'cluster_createdAt' - The Unix epoch timestamp in seconds for when the cluster was created.+--+-- 'encryptionConfig', 'cluster_encryptionConfig' - The encryption configuration for the cluster.+--+-- 'endpoint', 'cluster_endpoint' - The endpoint for your Kubernetes API server.+--+-- 'health', 'cluster_health' - An object representing the health of your local Amazon EKS cluster on an+-- Amazon Web Services Outpost. This object isn\'t available for clusters+-- on the Amazon Web Services cloud.+--+-- 'id', 'cluster_id' - The ID of your local Amazon EKS cluster on an Amazon Web Services+-- Outpost. This property isn\'t available for an Amazon EKS cluster on the+-- Amazon Web Services cloud.+--+-- 'identity', 'cluster_identity' - The identity provider information for the cluster.+--+-- 'kubernetesNetworkConfig', 'cluster_kubernetesNetworkConfig' - The Kubernetes network configuration for the cluster.+--+-- 'logging', 'cluster_logging' - The logging configuration for your cluster.+--+-- 'name', 'cluster_name' - The name of the cluster.+--+-- 'outpostConfig', 'cluster_outpostConfig' - An object representing the configuration of your local Amazon EKS+-- cluster on an Amazon Web Services Outpost. This object isn\'t available+-- for clusters on the Amazon Web Services cloud.+--+-- 'platformVersion', 'cluster_platformVersion' - The platform version of your Amazon EKS cluster. For more information,+-- see+-- <https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html Platform Versions>+-- in the //Amazon EKS User Guide// .+--+-- 'resourcesVpcConfig', 'cluster_resourcesVpcConfig' - The VPC configuration used by the cluster control plane. Amazon EKS VPC+-- resources have specific requirements to work properly with Kubernetes.+-- For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html Cluster VPC Considerations>+-- and+-- <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html Cluster Security Group Considerations>+-- in the /Amazon EKS User Guide/.+--+-- 'roleArn', 'cluster_roleArn' - The Amazon Resource Name (ARN) of the IAM role that provides permissions+-- for the Kubernetes control plane to make calls to Amazon Web Services+-- API operations on your behalf.+--+-- 'status', 'cluster_status' - The current status of the cluster.+--+-- 'tags', 'cluster_tags' - The metadata that you apply to the cluster to assist with categorization+-- and organization. Each tag consists of a key and an optional value. You+-- define both. Cluster tags do not propagate to any other resources+-- associated with the cluster.+--+-- 'version', 'cluster_version' - The Kubernetes server version for the cluster.+newCluster ::+  Cluster+newCluster =+  Cluster'+    { arn = Prelude.Nothing,+      certificateAuthority = Prelude.Nothing,+      clientRequestToken = Prelude.Nothing,+      connectorConfig = Prelude.Nothing,+      createdAt = Prelude.Nothing,+      encryptionConfig = Prelude.Nothing,+      endpoint = Prelude.Nothing,+      health = Prelude.Nothing,+      id = Prelude.Nothing,+      identity = Prelude.Nothing,+      kubernetesNetworkConfig = Prelude.Nothing,+      logging = Prelude.Nothing,+      name = Prelude.Nothing,+      outpostConfig = Prelude.Nothing,+      platformVersion = Prelude.Nothing,+      resourcesVpcConfig = Prelude.Nothing,+      roleArn = Prelude.Nothing,+      status = Prelude.Nothing,+      tags = Prelude.Nothing,+      version = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the cluster.+cluster_arn :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_arn = Lens.lens (\Cluster' {arn} -> arn) (\s@Cluster' {} a -> s {arn = a} :: Cluster)++-- | The @certificate-authority-data@ for your cluster.+cluster_certificateAuthority :: Lens.Lens' Cluster (Prelude.Maybe Certificate)+cluster_certificateAuthority = Lens.lens (\Cluster' {certificateAuthority} -> certificateAuthority) (\s@Cluster' {} a -> s {certificateAuthority = a} :: Cluster)++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+cluster_clientRequestToken :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_clientRequestToken = Lens.lens (\Cluster' {clientRequestToken} -> clientRequestToken) (\s@Cluster' {} a -> s {clientRequestToken = a} :: Cluster)++-- | The configuration used to connect to a cluster for registration.+cluster_connectorConfig :: Lens.Lens' Cluster (Prelude.Maybe ConnectorConfigResponse)+cluster_connectorConfig = Lens.lens (\Cluster' {connectorConfig} -> connectorConfig) (\s@Cluster' {} a -> s {connectorConfig = a} :: Cluster)++-- | The Unix epoch timestamp in seconds for when the cluster was created.+cluster_createdAt :: Lens.Lens' Cluster (Prelude.Maybe Prelude.UTCTime)+cluster_createdAt = Lens.lens (\Cluster' {createdAt} -> createdAt) (\s@Cluster' {} a -> s {createdAt = a} :: Cluster) Prelude.. Lens.mapping Data._Time++-- | The encryption configuration for the cluster.+cluster_encryptionConfig :: Lens.Lens' Cluster (Prelude.Maybe [EncryptionConfig])+cluster_encryptionConfig = Lens.lens (\Cluster' {encryptionConfig} -> encryptionConfig) (\s@Cluster' {} a -> s {encryptionConfig = a} :: Cluster) Prelude.. Lens.mapping Lens.coerced++-- | The endpoint for your Kubernetes API server.+cluster_endpoint :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_endpoint = Lens.lens (\Cluster' {endpoint} -> endpoint) (\s@Cluster' {} a -> s {endpoint = a} :: Cluster)++-- | An object representing the health of your local Amazon EKS cluster on an+-- Amazon Web Services Outpost. This object isn\'t available for clusters+-- on the Amazon Web Services cloud.+cluster_health :: Lens.Lens' Cluster (Prelude.Maybe ClusterHealth)+cluster_health = Lens.lens (\Cluster' {health} -> health) (\s@Cluster' {} a -> s {health = a} :: Cluster)++-- | The ID of your local Amazon EKS cluster on an Amazon Web Services+-- Outpost. This property isn\'t available for an Amazon EKS cluster on the+-- Amazon Web Services cloud.+cluster_id :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_id = Lens.lens (\Cluster' {id} -> id) (\s@Cluster' {} a -> s {id = a} :: Cluster)++-- | The identity provider information for the cluster.+cluster_identity :: Lens.Lens' Cluster (Prelude.Maybe Identity)+cluster_identity = Lens.lens (\Cluster' {identity} -> identity) (\s@Cluster' {} a -> s {identity = a} :: Cluster)++-- | The Kubernetes network configuration for the cluster.+cluster_kubernetesNetworkConfig :: Lens.Lens' Cluster (Prelude.Maybe KubernetesNetworkConfigResponse)+cluster_kubernetesNetworkConfig = Lens.lens (\Cluster' {kubernetesNetworkConfig} -> kubernetesNetworkConfig) (\s@Cluster' {} a -> s {kubernetesNetworkConfig = a} :: Cluster)++-- | The logging configuration for your cluster.+cluster_logging :: Lens.Lens' Cluster (Prelude.Maybe Logging)+cluster_logging = Lens.lens (\Cluster' {logging} -> logging) (\s@Cluster' {} a -> s {logging = a} :: Cluster)++-- | The name of the cluster.+cluster_name :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_name = Lens.lens (\Cluster' {name} -> name) (\s@Cluster' {} a -> s {name = a} :: Cluster)++-- | An object representing the configuration of your local Amazon EKS+-- cluster on an Amazon Web Services Outpost. This object isn\'t available+-- for clusters on the Amazon Web Services cloud.+cluster_outpostConfig :: Lens.Lens' Cluster (Prelude.Maybe OutpostConfigResponse)+cluster_outpostConfig = Lens.lens (\Cluster' {outpostConfig} -> outpostConfig) (\s@Cluster' {} a -> s {outpostConfig = a} :: Cluster)++-- | The platform version of your Amazon EKS cluster. For more information,+-- see+-- <https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html Platform Versions>+-- in the //Amazon EKS User Guide// .+cluster_platformVersion :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_platformVersion = Lens.lens (\Cluster' {platformVersion} -> platformVersion) (\s@Cluster' {} a -> s {platformVersion = a} :: Cluster)++-- | The VPC configuration used by the cluster control plane. Amazon EKS VPC+-- resources have specific requirements to work properly with Kubernetes.+-- For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html Cluster VPC Considerations>+-- and+-- <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html Cluster Security Group Considerations>+-- in the /Amazon EKS User Guide/.+cluster_resourcesVpcConfig :: Lens.Lens' Cluster (Prelude.Maybe VpcConfigResponse)+cluster_resourcesVpcConfig = Lens.lens (\Cluster' {resourcesVpcConfig} -> resourcesVpcConfig) (\s@Cluster' {} a -> s {resourcesVpcConfig = a} :: Cluster)++-- | The Amazon Resource Name (ARN) of the IAM role that provides permissions+-- for the Kubernetes control plane to make calls to Amazon Web Services+-- API operations on your behalf.+cluster_roleArn :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_roleArn = Lens.lens (\Cluster' {roleArn} -> roleArn) (\s@Cluster' {} a -> s {roleArn = a} :: Cluster)++-- | The current status of the cluster.+cluster_status :: Lens.Lens' Cluster (Prelude.Maybe ClusterStatus)+cluster_status = Lens.lens (\Cluster' {status} -> status) (\s@Cluster' {} a -> s {status = a} :: Cluster)++-- | The metadata that you apply to the cluster to assist with categorization+-- and organization. Each tag consists of a key and an optional value. You+-- define both. Cluster tags do not propagate to any other resources+-- associated with the cluster.+cluster_tags :: Lens.Lens' Cluster (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+cluster_tags = Lens.lens (\Cluster' {tags} -> tags) (\s@Cluster' {} a -> s {tags = a} :: Cluster) Prelude.. Lens.mapping Lens.coerced++-- | The Kubernetes server version for the cluster.+cluster_version :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)+cluster_version = Lens.lens (\Cluster' {version} -> version) (\s@Cluster' {} a -> s {version = a} :: Cluster)++instance Data.FromJSON Cluster where+  parseJSON =+    Data.withObject+      "Cluster"+      ( \x ->+          Cluster'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "certificateAuthority")+            Prelude.<*> (x Data..:? "clientRequestToken")+            Prelude.<*> (x Data..:? "connectorConfig")+            Prelude.<*> (x Data..:? "createdAt")+            Prelude.<*> ( x+                            Data..:? "encryptionConfig"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "endpoint")+            Prelude.<*> (x Data..:? "health")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "identity")+            Prelude.<*> (x Data..:? "kubernetesNetworkConfig")+            Prelude.<*> (x Data..:? "logging")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "outpostConfig")+            Prelude.<*> (x Data..:? "platformVersion")+            Prelude.<*> (x Data..:? "resourcesVpcConfig")+            Prelude.<*> (x Data..:? "roleArn")+            Prelude.<*> (x Data..:? "status")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "version")+      )++instance Prelude.Hashable Cluster where+  hashWithSalt _salt Cluster' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` certificateAuthority+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` connectorConfig+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` encryptionConfig+      `Prelude.hashWithSalt` endpoint+      `Prelude.hashWithSalt` health+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` identity+      `Prelude.hashWithSalt` kubernetesNetworkConfig+      `Prelude.hashWithSalt` logging+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` outpostConfig+      `Prelude.hashWithSalt` platformVersion+      `Prelude.hashWithSalt` resourcesVpcConfig+      `Prelude.hashWithSalt` roleArn+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` version++instance Prelude.NFData Cluster where+  rnf Cluster' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf certificateAuthority+      `Prelude.seq` Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf connectorConfig+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf encryptionConfig+      `Prelude.seq` Prelude.rnf endpoint+      `Prelude.seq` Prelude.rnf health+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf identity+      `Prelude.seq` Prelude.rnf kubernetesNetworkConfig+      `Prelude.seq` Prelude.rnf logging+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf outpostConfig+      `Prelude.seq` Prelude.rnf platformVersion+      `Prelude.seq` Prelude.rnf resourcesVpcConfig+      `Prelude.seq` Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf version
+ gen/Amazonka/EKS/Types/ClusterHealth.hs view
@@ -0,0 +1,74 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.ClusterHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.ClusterHealth where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.ClusterIssue+import qualified Amazonka.Prelude as Prelude++-- | An object representing the health of your local Amazon EKS cluster on an+-- Amazon Web Services Outpost. You can\'t use this API with an Amazon EKS+-- cluster on the Amazon Web Services cloud.+--+-- /See:/ 'newClusterHealth' smart constructor.+data ClusterHealth = ClusterHealth'+  { -- | An object representing the health issues of your local Amazon EKS+    -- cluster on an Amazon Web Services Outpost.+    issues :: Prelude.Maybe [ClusterIssue]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ClusterHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'issues', 'clusterHealth_issues' - An object representing the health issues of your local Amazon EKS+-- cluster on an Amazon Web Services Outpost.+newClusterHealth ::+  ClusterHealth+newClusterHealth =+  ClusterHealth' {issues = Prelude.Nothing}++-- | An object representing the health issues of your local Amazon EKS+-- cluster on an Amazon Web Services Outpost.+clusterHealth_issues :: Lens.Lens' ClusterHealth (Prelude.Maybe [ClusterIssue])+clusterHealth_issues = Lens.lens (\ClusterHealth' {issues} -> issues) (\s@ClusterHealth' {} a -> s {issues = a} :: ClusterHealth) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ClusterHealth where+  parseJSON =+    Data.withObject+      "ClusterHealth"+      ( \x ->+          ClusterHealth'+            Prelude.<$> (x Data..:? "issues" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ClusterHealth where+  hashWithSalt _salt ClusterHealth' {..} =+    _salt `Prelude.hashWithSalt` issues++instance Prelude.NFData ClusterHealth where+  rnf ClusterHealth' {..} = Prelude.rnf issues
+ gen/Amazonka/EKS/Types/ClusterIssue.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.ClusterIssue+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.ClusterIssue where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.ClusterIssueCode+import qualified Amazonka.Prelude as Prelude++-- | An issue with your local Amazon EKS cluster on an Amazon Web Services+-- Outpost. You can\'t use this API with an Amazon EKS cluster on the+-- Amazon Web Services cloud.+--+-- /See:/ 'newClusterIssue' smart constructor.+data ClusterIssue = ClusterIssue'+  { -- | The error code of the issue.+    code :: Prelude.Maybe ClusterIssueCode,+    -- | A description of the issue.+    message :: Prelude.Maybe Prelude.Text,+    -- | The resource IDs that the issue relates to.+    resourceIds :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ClusterIssue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'code', 'clusterIssue_code' - The error code of the issue.+--+-- 'message', 'clusterIssue_message' - A description of the issue.+--+-- 'resourceIds', 'clusterIssue_resourceIds' - The resource IDs that the issue relates to.+newClusterIssue ::+  ClusterIssue+newClusterIssue =+  ClusterIssue'+    { code = Prelude.Nothing,+      message = Prelude.Nothing,+      resourceIds = Prelude.Nothing+    }++-- | The error code of the issue.+clusterIssue_code :: Lens.Lens' ClusterIssue (Prelude.Maybe ClusterIssueCode)+clusterIssue_code = Lens.lens (\ClusterIssue' {code} -> code) (\s@ClusterIssue' {} a -> s {code = a} :: ClusterIssue)++-- | A description of the issue.+clusterIssue_message :: Lens.Lens' ClusterIssue (Prelude.Maybe Prelude.Text)+clusterIssue_message = Lens.lens (\ClusterIssue' {message} -> message) (\s@ClusterIssue' {} a -> s {message = a} :: ClusterIssue)++-- | The resource IDs that the issue relates to.+clusterIssue_resourceIds :: Lens.Lens' ClusterIssue (Prelude.Maybe [Prelude.Text])+clusterIssue_resourceIds = Lens.lens (\ClusterIssue' {resourceIds} -> resourceIds) (\s@ClusterIssue' {} a -> s {resourceIds = a} :: ClusterIssue) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ClusterIssue where+  parseJSON =+    Data.withObject+      "ClusterIssue"+      ( \x ->+          ClusterIssue'+            Prelude.<$> (x Data..:? "code")+            Prelude.<*> (x Data..:? "message")+            Prelude.<*> (x Data..:? "resourceIds" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ClusterIssue where+  hashWithSalt _salt ClusterIssue' {..} =+    _salt+      `Prelude.hashWithSalt` code+      `Prelude.hashWithSalt` message+      `Prelude.hashWithSalt` resourceIds++instance Prelude.NFData ClusterIssue where+  rnf ClusterIssue' {..} =+    Prelude.rnf code+      `Prelude.seq` Prelude.rnf message+      `Prelude.seq` Prelude.rnf resourceIds
+ gen/Amazonka/EKS/Types/ClusterIssueCode.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.ClusterIssueCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.ClusterIssueCode+  ( ClusterIssueCode+      ( ..,+        ClusterIssueCode_AccessDenied,+        ClusterIssueCode_ClusterUnreachable,+        ClusterIssueCode_ConfigurationConflict,+        ClusterIssueCode_InternalFailure,+        ClusterIssueCode_ResourceLimitExceeded,+        ClusterIssueCode_ResourceNotFound+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ClusterIssueCode = ClusterIssueCode'+  { fromClusterIssueCode ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ClusterIssueCode_AccessDenied :: ClusterIssueCode+pattern ClusterIssueCode_AccessDenied = ClusterIssueCode' "AccessDenied"++pattern ClusterIssueCode_ClusterUnreachable :: ClusterIssueCode+pattern ClusterIssueCode_ClusterUnreachable = ClusterIssueCode' "ClusterUnreachable"++pattern ClusterIssueCode_ConfigurationConflict :: ClusterIssueCode+pattern ClusterIssueCode_ConfigurationConflict = ClusterIssueCode' "ConfigurationConflict"++pattern ClusterIssueCode_InternalFailure :: ClusterIssueCode+pattern ClusterIssueCode_InternalFailure = ClusterIssueCode' "InternalFailure"++pattern ClusterIssueCode_ResourceLimitExceeded :: ClusterIssueCode+pattern ClusterIssueCode_ResourceLimitExceeded = ClusterIssueCode' "ResourceLimitExceeded"++pattern ClusterIssueCode_ResourceNotFound :: ClusterIssueCode+pattern ClusterIssueCode_ResourceNotFound = ClusterIssueCode' "ResourceNotFound"++{-# COMPLETE+  ClusterIssueCode_AccessDenied,+  ClusterIssueCode_ClusterUnreachable,+  ClusterIssueCode_ConfigurationConflict,+  ClusterIssueCode_InternalFailure,+  ClusterIssueCode_ResourceLimitExceeded,+  ClusterIssueCode_ResourceNotFound,+  ClusterIssueCode'+  #-}
+ gen/Amazonka/EKS/Types/ClusterStatus.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.ClusterStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.ClusterStatus+  ( ClusterStatus+      ( ..,+        ClusterStatus_ACTIVE,+        ClusterStatus_CREATING,+        ClusterStatus_DELETING,+        ClusterStatus_FAILED,+        ClusterStatus_PENDING,+        ClusterStatus_UPDATING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ClusterStatus = ClusterStatus'+  { fromClusterStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ClusterStatus_ACTIVE :: ClusterStatus+pattern ClusterStatus_ACTIVE = ClusterStatus' "ACTIVE"++pattern ClusterStatus_CREATING :: ClusterStatus+pattern ClusterStatus_CREATING = ClusterStatus' "CREATING"++pattern ClusterStatus_DELETING :: ClusterStatus+pattern ClusterStatus_DELETING = ClusterStatus' "DELETING"++pattern ClusterStatus_FAILED :: ClusterStatus+pattern ClusterStatus_FAILED = ClusterStatus' "FAILED"++pattern ClusterStatus_PENDING :: ClusterStatus+pattern ClusterStatus_PENDING = ClusterStatus' "PENDING"++pattern ClusterStatus_UPDATING :: ClusterStatus+pattern ClusterStatus_UPDATING = ClusterStatus' "UPDATING"++{-# COMPLETE+  ClusterStatus_ACTIVE,+  ClusterStatus_CREATING,+  ClusterStatus_DELETING,+  ClusterStatus_FAILED,+  ClusterStatus_PENDING,+  ClusterStatus_UPDATING,+  ClusterStatus'+  #-}
+ gen/Amazonka/EKS/Types/Compatibility.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.Compatibility+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.Compatibility where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Compatibility information.+--+-- /See:/ 'newCompatibility' smart constructor.+data Compatibility = Compatibility'+  { -- | The supported Kubernetes version of the cluster.+    clusterVersion :: Prelude.Maybe Prelude.Text,+    -- | The supported default version.+    defaultVersion :: Prelude.Maybe Prelude.Bool,+    -- | The supported compute platform.+    platformVersions :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Compatibility' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterVersion', 'compatibility_clusterVersion' - The supported Kubernetes version of the cluster.+--+-- 'defaultVersion', 'compatibility_defaultVersion' - The supported default version.+--+-- 'platformVersions', 'compatibility_platformVersions' - The supported compute platform.+newCompatibility ::+  Compatibility+newCompatibility =+  Compatibility'+    { clusterVersion = Prelude.Nothing,+      defaultVersion = Prelude.Nothing,+      platformVersions = Prelude.Nothing+    }++-- | The supported Kubernetes version of the cluster.+compatibility_clusterVersion :: Lens.Lens' Compatibility (Prelude.Maybe Prelude.Text)+compatibility_clusterVersion = Lens.lens (\Compatibility' {clusterVersion} -> clusterVersion) (\s@Compatibility' {} a -> s {clusterVersion = a} :: Compatibility)++-- | The supported default version.+compatibility_defaultVersion :: Lens.Lens' Compatibility (Prelude.Maybe Prelude.Bool)+compatibility_defaultVersion = Lens.lens (\Compatibility' {defaultVersion} -> defaultVersion) (\s@Compatibility' {} a -> s {defaultVersion = a} :: Compatibility)++-- | The supported compute platform.+compatibility_platformVersions :: Lens.Lens' Compatibility (Prelude.Maybe [Prelude.Text])+compatibility_platformVersions = Lens.lens (\Compatibility' {platformVersions} -> platformVersions) (\s@Compatibility' {} a -> s {platformVersions = a} :: Compatibility) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON Compatibility where+  parseJSON =+    Data.withObject+      "Compatibility"+      ( \x ->+          Compatibility'+            Prelude.<$> (x Data..:? "clusterVersion")+            Prelude.<*> (x Data..:? "defaultVersion")+            Prelude.<*> ( x+                            Data..:? "platformVersions"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable Compatibility where+  hashWithSalt _salt Compatibility' {..} =+    _salt+      `Prelude.hashWithSalt` clusterVersion+      `Prelude.hashWithSalt` defaultVersion+      `Prelude.hashWithSalt` platformVersions++instance Prelude.NFData Compatibility where+  rnf Compatibility' {..} =+    Prelude.rnf clusterVersion+      `Prelude.seq` Prelude.rnf defaultVersion+      `Prelude.seq` Prelude.rnf platformVersions
+ gen/Amazonka/EKS/Types/ConfigStatus.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.ConfigStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.ConfigStatus+  ( ConfigStatus+      ( ..,+        ConfigStatus_ACTIVE,+        ConfigStatus_CREATING,+        ConfigStatus_DELETING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ConfigStatus = ConfigStatus'+  { fromConfigStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ConfigStatus_ACTIVE :: ConfigStatus+pattern ConfigStatus_ACTIVE = ConfigStatus' "ACTIVE"++pattern ConfigStatus_CREATING :: ConfigStatus+pattern ConfigStatus_CREATING = ConfigStatus' "CREATING"++pattern ConfigStatus_DELETING :: ConfigStatus+pattern ConfigStatus_DELETING = ConfigStatus' "DELETING"++{-# COMPLETE+  ConfigStatus_ACTIVE,+  ConfigStatus_CREATING,+  ConfigStatus_DELETING,+  ConfigStatus'+  #-}
+ gen/Amazonka/EKS/Types/ConnectorConfigProvider.hs view
@@ -0,0 +1,106 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.ConnectorConfigProvider+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.ConnectorConfigProvider+  ( ConnectorConfigProvider+      ( ..,+        ConnectorConfigProvider_AKS,+        ConnectorConfigProvider_ANTHOS,+        ConnectorConfigProvider_EC2,+        ConnectorConfigProvider_EKS_ANYWHERE,+        ConnectorConfigProvider_GKE,+        ConnectorConfigProvider_OPENSHIFT,+        ConnectorConfigProvider_OTHER,+        ConnectorConfigProvider_RANCHER,+        ConnectorConfigProvider_TANZU+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ConnectorConfigProvider = ConnectorConfigProvider'+  { fromConnectorConfigProvider ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ConnectorConfigProvider_AKS :: ConnectorConfigProvider+pattern ConnectorConfigProvider_AKS = ConnectorConfigProvider' "AKS"++pattern ConnectorConfigProvider_ANTHOS :: ConnectorConfigProvider+pattern ConnectorConfigProvider_ANTHOS = ConnectorConfigProvider' "ANTHOS"++pattern ConnectorConfigProvider_EC2 :: ConnectorConfigProvider+pattern ConnectorConfigProvider_EC2 = ConnectorConfigProvider' "EC2"++pattern ConnectorConfigProvider_EKS_ANYWHERE :: ConnectorConfigProvider+pattern ConnectorConfigProvider_EKS_ANYWHERE = ConnectorConfigProvider' "EKS_ANYWHERE"++pattern ConnectorConfigProvider_GKE :: ConnectorConfigProvider+pattern ConnectorConfigProvider_GKE = ConnectorConfigProvider' "GKE"++pattern ConnectorConfigProvider_OPENSHIFT :: ConnectorConfigProvider+pattern ConnectorConfigProvider_OPENSHIFT = ConnectorConfigProvider' "OPENSHIFT"++pattern ConnectorConfigProvider_OTHER :: ConnectorConfigProvider+pattern ConnectorConfigProvider_OTHER = ConnectorConfigProvider' "OTHER"++pattern ConnectorConfigProvider_RANCHER :: ConnectorConfigProvider+pattern ConnectorConfigProvider_RANCHER = ConnectorConfigProvider' "RANCHER"++pattern ConnectorConfigProvider_TANZU :: ConnectorConfigProvider+pattern ConnectorConfigProvider_TANZU = ConnectorConfigProvider' "TANZU"++{-# COMPLETE+  ConnectorConfigProvider_AKS,+  ConnectorConfigProvider_ANTHOS,+  ConnectorConfigProvider_EC2,+  ConnectorConfigProvider_EKS_ANYWHERE,+  ConnectorConfigProvider_GKE,+  ConnectorConfigProvider_OPENSHIFT,+  ConnectorConfigProvider_OTHER,+  ConnectorConfigProvider_RANCHER,+  ConnectorConfigProvider_TANZU,+  ConnectorConfigProvider'+  #-}
+ gen/Amazonka/EKS/Types/ConnectorConfigRequest.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.ConnectorConfigRequest+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.ConnectorConfigRequest where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.ConnectorConfigProvider+import qualified Amazonka.Prelude as Prelude++-- | The configuration sent to a cluster for configuration.+--+-- /See:/ 'newConnectorConfigRequest' smart constructor.+data ConnectorConfigRequest = ConnectorConfigRequest'+  { -- | The Amazon Resource Name (ARN) of the role that is authorized to request+    -- the connector configuration.+    roleArn :: Prelude.Text,+    -- | The cloud provider for the target cluster to connect.+    provider :: ConnectorConfigProvider+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ConnectorConfigRequest' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'roleArn', 'connectorConfigRequest_roleArn' - The Amazon Resource Name (ARN) of the role that is authorized to request+-- the connector configuration.+--+-- 'provider', 'connectorConfigRequest_provider' - The cloud provider for the target cluster to connect.+newConnectorConfigRequest ::+  -- | 'roleArn'+  Prelude.Text ->+  -- | 'provider'+  ConnectorConfigProvider ->+  ConnectorConfigRequest+newConnectorConfigRequest pRoleArn_ pProvider_ =+  ConnectorConfigRequest'+    { roleArn = pRoleArn_,+      provider = pProvider_+    }++-- | The Amazon Resource Name (ARN) of the role that is authorized to request+-- the connector configuration.+connectorConfigRequest_roleArn :: Lens.Lens' ConnectorConfigRequest Prelude.Text+connectorConfigRequest_roleArn = Lens.lens (\ConnectorConfigRequest' {roleArn} -> roleArn) (\s@ConnectorConfigRequest' {} a -> s {roleArn = a} :: ConnectorConfigRequest)++-- | The cloud provider for the target cluster to connect.+connectorConfigRequest_provider :: Lens.Lens' ConnectorConfigRequest ConnectorConfigProvider+connectorConfigRequest_provider = Lens.lens (\ConnectorConfigRequest' {provider} -> provider) (\s@ConnectorConfigRequest' {} a -> s {provider = a} :: ConnectorConfigRequest)++instance Prelude.Hashable ConnectorConfigRequest where+  hashWithSalt _salt ConnectorConfigRequest' {..} =+    _salt+      `Prelude.hashWithSalt` roleArn+      `Prelude.hashWithSalt` provider++instance Prelude.NFData ConnectorConfigRequest where+  rnf ConnectorConfigRequest' {..} =+    Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf provider++instance Data.ToJSON ConnectorConfigRequest where+  toJSON ConnectorConfigRequest' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("roleArn" Data..= roleArn),+            Prelude.Just ("provider" Data..= provider)+          ]+      )
+ gen/Amazonka/EKS/Types/ConnectorConfigResponse.hs view
@@ -0,0 +1,127 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.ConnectorConfigResponse+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.ConnectorConfigResponse where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The full description of your connected cluster.+--+-- /See:/ 'newConnectorConfigResponse' smart constructor.+data ConnectorConfigResponse = ConnectorConfigResponse'+  { -- | A unique code associated with the cluster for registration purposes.+    activationCode :: Prelude.Maybe Prelude.Text,+    -- | The expiration time of the connected cluster. The cluster\'s YAML file+    -- must be applied through the native provider.+    activationExpiry :: Prelude.Maybe Data.POSIX,+    -- | A unique ID associated with the cluster for registration purposes.+    activationId :: Prelude.Maybe Prelude.Text,+    -- | The cluster\'s cloud service provider.+    provider :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the role to communicate with services+    -- from the connected Kubernetes cluster.+    roleArn :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ConnectorConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'activationCode', 'connectorConfigResponse_activationCode' - A unique code associated with the cluster for registration purposes.+--+-- 'activationExpiry', 'connectorConfigResponse_activationExpiry' - The expiration time of the connected cluster. The cluster\'s YAML file+-- must be applied through the native provider.+--+-- 'activationId', 'connectorConfigResponse_activationId' - A unique ID associated with the cluster for registration purposes.+--+-- 'provider', 'connectorConfigResponse_provider' - The cluster\'s cloud service provider.+--+-- 'roleArn', 'connectorConfigResponse_roleArn' - The Amazon Resource Name (ARN) of the role to communicate with services+-- from the connected Kubernetes cluster.+newConnectorConfigResponse ::+  ConnectorConfigResponse+newConnectorConfigResponse =+  ConnectorConfigResponse'+    { activationCode =+        Prelude.Nothing,+      activationExpiry = Prelude.Nothing,+      activationId = Prelude.Nothing,+      provider = Prelude.Nothing,+      roleArn = Prelude.Nothing+    }++-- | A unique code associated with the cluster for registration purposes.+connectorConfigResponse_activationCode :: Lens.Lens' ConnectorConfigResponse (Prelude.Maybe Prelude.Text)+connectorConfigResponse_activationCode = Lens.lens (\ConnectorConfigResponse' {activationCode} -> activationCode) (\s@ConnectorConfigResponse' {} a -> s {activationCode = a} :: ConnectorConfigResponse)++-- | The expiration time of the connected cluster. The cluster\'s YAML file+-- must be applied through the native provider.+connectorConfigResponse_activationExpiry :: Lens.Lens' ConnectorConfigResponse (Prelude.Maybe Prelude.UTCTime)+connectorConfigResponse_activationExpiry = Lens.lens (\ConnectorConfigResponse' {activationExpiry} -> activationExpiry) (\s@ConnectorConfigResponse' {} a -> s {activationExpiry = a} :: ConnectorConfigResponse) Prelude.. Lens.mapping Data._Time++-- | A unique ID associated with the cluster for registration purposes.+connectorConfigResponse_activationId :: Lens.Lens' ConnectorConfigResponse (Prelude.Maybe Prelude.Text)+connectorConfigResponse_activationId = Lens.lens (\ConnectorConfigResponse' {activationId} -> activationId) (\s@ConnectorConfigResponse' {} a -> s {activationId = a} :: ConnectorConfigResponse)++-- | The cluster\'s cloud service provider.+connectorConfigResponse_provider :: Lens.Lens' ConnectorConfigResponse (Prelude.Maybe Prelude.Text)+connectorConfigResponse_provider = Lens.lens (\ConnectorConfigResponse' {provider} -> provider) (\s@ConnectorConfigResponse' {} a -> s {provider = a} :: ConnectorConfigResponse)++-- | The Amazon Resource Name (ARN) of the role to communicate with services+-- from the connected Kubernetes cluster.+connectorConfigResponse_roleArn :: Lens.Lens' ConnectorConfigResponse (Prelude.Maybe Prelude.Text)+connectorConfigResponse_roleArn = Lens.lens (\ConnectorConfigResponse' {roleArn} -> roleArn) (\s@ConnectorConfigResponse' {} a -> s {roleArn = a} :: ConnectorConfigResponse)++instance Data.FromJSON ConnectorConfigResponse where+  parseJSON =+    Data.withObject+      "ConnectorConfigResponse"+      ( \x ->+          ConnectorConfigResponse'+            Prelude.<$> (x Data..:? "activationCode")+            Prelude.<*> (x Data..:? "activationExpiry")+            Prelude.<*> (x Data..:? "activationId")+            Prelude.<*> (x Data..:? "provider")+            Prelude.<*> (x Data..:? "roleArn")+      )++instance Prelude.Hashable ConnectorConfigResponse where+  hashWithSalt _salt ConnectorConfigResponse' {..} =+    _salt+      `Prelude.hashWithSalt` activationCode+      `Prelude.hashWithSalt` activationExpiry+      `Prelude.hashWithSalt` activationId+      `Prelude.hashWithSalt` provider+      `Prelude.hashWithSalt` roleArn++instance Prelude.NFData ConnectorConfigResponse where+  rnf ConnectorConfigResponse' {..} =+    Prelude.rnf activationCode+      `Prelude.seq` Prelude.rnf activationExpiry+      `Prelude.seq` Prelude.rnf activationId+      `Prelude.seq` Prelude.rnf provider+      `Prelude.seq` Prelude.rnf roleArn
+ gen/Amazonka/EKS/Types/ControlPlanePlacementRequest.hs view
@@ -0,0 +1,80 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.ControlPlanePlacementRequest+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.ControlPlanePlacementRequest where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The placement configuration for all the control plane instances of your+-- local Amazon EKS cluster on an Amazon Web Services Outpost. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html Capacity considerations>+-- in the /Amazon EKS User Guide/+--+-- /See:/ 'newControlPlanePlacementRequest' smart constructor.+data ControlPlanePlacementRequest = ControlPlanePlacementRequest'+  { -- | The name of the placement group for the Kubernetes control plane+    -- instances. This setting can\'t be changed after cluster creation.+    groupName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ControlPlanePlacementRequest' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'groupName', 'controlPlanePlacementRequest_groupName' - The name of the placement group for the Kubernetes control plane+-- instances. This setting can\'t be changed after cluster creation.+newControlPlanePlacementRequest ::+  ControlPlanePlacementRequest+newControlPlanePlacementRequest =+  ControlPlanePlacementRequest'+    { groupName =+        Prelude.Nothing+    }++-- | The name of the placement group for the Kubernetes control plane+-- instances. This setting can\'t be changed after cluster creation.+controlPlanePlacementRequest_groupName :: Lens.Lens' ControlPlanePlacementRequest (Prelude.Maybe Prelude.Text)+controlPlanePlacementRequest_groupName = Lens.lens (\ControlPlanePlacementRequest' {groupName} -> groupName) (\s@ControlPlanePlacementRequest' {} a -> s {groupName = a} :: ControlPlanePlacementRequest)++instance+  Prelude.Hashable+    ControlPlanePlacementRequest+  where+  hashWithSalt _salt ControlPlanePlacementRequest' {..} =+    _salt `Prelude.hashWithSalt` groupName++instance Prelude.NFData ControlPlanePlacementRequest where+  rnf ControlPlanePlacementRequest' {..} =+    Prelude.rnf groupName++instance Data.ToJSON ControlPlanePlacementRequest where+  toJSON ControlPlanePlacementRequest' {..} =+    Data.object+      ( Prelude.catMaybes+          [("groupName" Data..=) Prelude.<$> groupName]+      )
+ gen/Amazonka/EKS/Types/ControlPlanePlacementResponse.hs view
@@ -0,0 +1,82 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.ControlPlanePlacementResponse+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.ControlPlanePlacementResponse where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The placement configuration for all the control plane instances of your+-- local Amazon EKS cluster on an Amazon Web Services Outpost. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html Capacity considerations>+-- in the /Amazon EKS User Guide/.+--+-- /See:/ 'newControlPlanePlacementResponse' smart constructor.+data ControlPlanePlacementResponse = ControlPlanePlacementResponse'+  { -- | The name of the placement group for the Kubernetes control plane+    -- instances.+    groupName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ControlPlanePlacementResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'groupName', 'controlPlanePlacementResponse_groupName' - The name of the placement group for the Kubernetes control plane+-- instances.+newControlPlanePlacementResponse ::+  ControlPlanePlacementResponse+newControlPlanePlacementResponse =+  ControlPlanePlacementResponse'+    { groupName =+        Prelude.Nothing+    }++-- | The name of the placement group for the Kubernetes control plane+-- instances.+controlPlanePlacementResponse_groupName :: Lens.Lens' ControlPlanePlacementResponse (Prelude.Maybe Prelude.Text)+controlPlanePlacementResponse_groupName = Lens.lens (\ControlPlanePlacementResponse' {groupName} -> groupName) (\s@ControlPlanePlacementResponse' {} a -> s {groupName = a} :: ControlPlanePlacementResponse)++instance Data.FromJSON ControlPlanePlacementResponse where+  parseJSON =+    Data.withObject+      "ControlPlanePlacementResponse"+      ( \x ->+          ControlPlanePlacementResponse'+            Prelude.<$> (x Data..:? "groupName")+      )++instance+  Prelude.Hashable+    ControlPlanePlacementResponse+  where+  hashWithSalt _salt ControlPlanePlacementResponse' {..} =+    _salt `Prelude.hashWithSalt` groupName++instance Prelude.NFData ControlPlanePlacementResponse where+  rnf ControlPlanePlacementResponse' {..} =+    Prelude.rnf groupName
+ gen/Amazonka/EKS/Types/EKSErrorCode.hs view
@@ -0,0 +1,146 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.EKSErrorCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.EKSErrorCode+  ( EKSErrorCode+      ( ..,+        EKSErrorCode_AccessDenied,+        EKSErrorCode_AdmissionRequestDenied,+        EKSErrorCode_ClusterUnreachable,+        EKSErrorCode_ConfigurationConflict,+        EKSErrorCode_EniLimitReached,+        EKSErrorCode_InsufficientFreeAddresses,+        EKSErrorCode_InsufficientNumberOfReplicas,+        EKSErrorCode_IpNotAvailable,+        EKSErrorCode_K8sResourceNotFound,+        EKSErrorCode_NodeCreationFailure,+        EKSErrorCode_OperationNotPermitted,+        EKSErrorCode_PodEvictionFailure,+        EKSErrorCode_SecurityGroupNotFound,+        EKSErrorCode_SubnetNotFound,+        EKSErrorCode_Unknown,+        EKSErrorCode_UnsupportedAddonModification,+        EKSErrorCode_VpcIdNotFound+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype EKSErrorCode = EKSErrorCode'+  { fromEKSErrorCode ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern EKSErrorCode_AccessDenied :: EKSErrorCode+pattern EKSErrorCode_AccessDenied = EKSErrorCode' "AccessDenied"++pattern EKSErrorCode_AdmissionRequestDenied :: EKSErrorCode+pattern EKSErrorCode_AdmissionRequestDenied = EKSErrorCode' "AdmissionRequestDenied"++pattern EKSErrorCode_ClusterUnreachable :: EKSErrorCode+pattern EKSErrorCode_ClusterUnreachable = EKSErrorCode' "ClusterUnreachable"++pattern EKSErrorCode_ConfigurationConflict :: EKSErrorCode+pattern EKSErrorCode_ConfigurationConflict = EKSErrorCode' "ConfigurationConflict"++pattern EKSErrorCode_EniLimitReached :: EKSErrorCode+pattern EKSErrorCode_EniLimitReached = EKSErrorCode' "EniLimitReached"++pattern EKSErrorCode_InsufficientFreeAddresses :: EKSErrorCode+pattern EKSErrorCode_InsufficientFreeAddresses = EKSErrorCode' "InsufficientFreeAddresses"++pattern EKSErrorCode_InsufficientNumberOfReplicas :: EKSErrorCode+pattern EKSErrorCode_InsufficientNumberOfReplicas = EKSErrorCode' "InsufficientNumberOfReplicas"++pattern EKSErrorCode_IpNotAvailable :: EKSErrorCode+pattern EKSErrorCode_IpNotAvailable = EKSErrorCode' "IpNotAvailable"++pattern EKSErrorCode_K8sResourceNotFound :: EKSErrorCode+pattern EKSErrorCode_K8sResourceNotFound = EKSErrorCode' "K8sResourceNotFound"++pattern EKSErrorCode_NodeCreationFailure :: EKSErrorCode+pattern EKSErrorCode_NodeCreationFailure = EKSErrorCode' "NodeCreationFailure"++pattern EKSErrorCode_OperationNotPermitted :: EKSErrorCode+pattern EKSErrorCode_OperationNotPermitted = EKSErrorCode' "OperationNotPermitted"++pattern EKSErrorCode_PodEvictionFailure :: EKSErrorCode+pattern EKSErrorCode_PodEvictionFailure = EKSErrorCode' "PodEvictionFailure"++pattern EKSErrorCode_SecurityGroupNotFound :: EKSErrorCode+pattern EKSErrorCode_SecurityGroupNotFound = EKSErrorCode' "SecurityGroupNotFound"++pattern EKSErrorCode_SubnetNotFound :: EKSErrorCode+pattern EKSErrorCode_SubnetNotFound = EKSErrorCode' "SubnetNotFound"++pattern EKSErrorCode_Unknown :: EKSErrorCode+pattern EKSErrorCode_Unknown = EKSErrorCode' "Unknown"++pattern EKSErrorCode_UnsupportedAddonModification :: EKSErrorCode+pattern EKSErrorCode_UnsupportedAddonModification = EKSErrorCode' "UnsupportedAddonModification"++pattern EKSErrorCode_VpcIdNotFound :: EKSErrorCode+pattern EKSErrorCode_VpcIdNotFound = EKSErrorCode' "VpcIdNotFound"++{-# COMPLETE+  EKSErrorCode_AccessDenied,+  EKSErrorCode_AdmissionRequestDenied,+  EKSErrorCode_ClusterUnreachable,+  EKSErrorCode_ConfigurationConflict,+  EKSErrorCode_EniLimitReached,+  EKSErrorCode_InsufficientFreeAddresses,+  EKSErrorCode_InsufficientNumberOfReplicas,+  EKSErrorCode_IpNotAvailable,+  EKSErrorCode_K8sResourceNotFound,+  EKSErrorCode_NodeCreationFailure,+  EKSErrorCode_OperationNotPermitted,+  EKSErrorCode_PodEvictionFailure,+  EKSErrorCode_SecurityGroupNotFound,+  EKSErrorCode_SubnetNotFound,+  EKSErrorCode_Unknown,+  EKSErrorCode_UnsupportedAddonModification,+  EKSErrorCode_VpcIdNotFound,+  EKSErrorCode'+  #-}
+ gen/Amazonka/EKS/Types/EncryptionConfig.hs view
@@ -0,0 +1,100 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.EncryptionConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.EncryptionConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.Provider+import qualified Amazonka.Prelude as Prelude++-- | The encryption configuration for the cluster.+--+-- /See:/ 'newEncryptionConfig' smart constructor.+data EncryptionConfig = EncryptionConfig'+  { -- | Key Management Service (KMS) key. Either the ARN or the alias can be+    -- used.+    provider :: Prelude.Maybe Provider,+    -- | Specifies the resources to be encrypted. The only supported value is+    -- \"secrets\".+    resources :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EncryptionConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'provider', 'encryptionConfig_provider' - Key Management Service (KMS) key. Either the ARN or the alias can be+-- used.+--+-- 'resources', 'encryptionConfig_resources' - Specifies the resources to be encrypted. The only supported value is+-- \"secrets\".+newEncryptionConfig ::+  EncryptionConfig+newEncryptionConfig =+  EncryptionConfig'+    { provider = Prelude.Nothing,+      resources = Prelude.Nothing+    }++-- | Key Management Service (KMS) key. Either the ARN or the alias can be+-- used.+encryptionConfig_provider :: Lens.Lens' EncryptionConfig (Prelude.Maybe Provider)+encryptionConfig_provider = Lens.lens (\EncryptionConfig' {provider} -> provider) (\s@EncryptionConfig' {} a -> s {provider = a} :: EncryptionConfig)++-- | Specifies the resources to be encrypted. The only supported value is+-- \"secrets\".+encryptionConfig_resources :: Lens.Lens' EncryptionConfig (Prelude.Maybe [Prelude.Text])+encryptionConfig_resources = Lens.lens (\EncryptionConfig' {resources} -> resources) (\s@EncryptionConfig' {} a -> s {resources = a} :: EncryptionConfig) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON EncryptionConfig where+  parseJSON =+    Data.withObject+      "EncryptionConfig"+      ( \x ->+          EncryptionConfig'+            Prelude.<$> (x Data..:? "provider")+            Prelude.<*> (x Data..:? "resources" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable EncryptionConfig where+  hashWithSalt _salt EncryptionConfig' {..} =+    _salt+      `Prelude.hashWithSalt` provider+      `Prelude.hashWithSalt` resources++instance Prelude.NFData EncryptionConfig where+  rnf EncryptionConfig' {..} =+    Prelude.rnf provider+      `Prelude.seq` Prelude.rnf resources++instance Data.ToJSON EncryptionConfig where+  toJSON EncryptionConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("provider" Data..=) Prelude.<$> provider,+            ("resources" Data..=) Prelude.<$> resources+          ]+      )
+ gen/Amazonka/EKS/Types/ErrorDetail.hs view
@@ -0,0 +1,166 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.ErrorDetail+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.ErrorDetail where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.EKSErrorCode+import qualified Amazonka.Prelude as Prelude++-- | An object representing an error when an asynchronous operation fails.+--+-- /See:/ 'newErrorDetail' smart constructor.+data ErrorDetail = ErrorDetail'+  { -- | A brief description of the error.+    --+    -- -   __SubnetNotFound__: We couldn\'t find one of the subnets associated+    --     with the cluster.+    --+    -- -   __SecurityGroupNotFound__: We couldn\'t find one of the security+    --     groups associated with the cluster.+    --+    -- -   __EniLimitReached__: You have reached the elastic network interface+    --     limit for your account.+    --+    -- -   __IpNotAvailable__: A subnet associated with the cluster doesn\'t+    --     have any free IP addresses.+    --+    -- -   __AccessDenied__: You don\'t have permissions to perform the+    --     specified operation.+    --+    -- -   __OperationNotPermitted__: The service role associated with the+    --     cluster doesn\'t have the required access permissions for Amazon+    --     EKS.+    --+    -- -   __VpcIdNotFound__: We couldn\'t find the VPC associated with the+    --     cluster.+    errorCode :: Prelude.Maybe EKSErrorCode,+    -- | A more complete description of the error.+    errorMessage :: Prelude.Maybe Prelude.Text,+    -- | An optional field that contains the resource IDs associated with the+    -- error.+    resourceIds :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ErrorDetail' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorCode', 'errorDetail_errorCode' - A brief description of the error.+--+-- -   __SubnetNotFound__: We couldn\'t find one of the subnets associated+--     with the cluster.+--+-- -   __SecurityGroupNotFound__: We couldn\'t find one of the security+--     groups associated with the cluster.+--+-- -   __EniLimitReached__: You have reached the elastic network interface+--     limit for your account.+--+-- -   __IpNotAvailable__: A subnet associated with the cluster doesn\'t+--     have any free IP addresses.+--+-- -   __AccessDenied__: You don\'t have permissions to perform the+--     specified operation.+--+-- -   __OperationNotPermitted__: The service role associated with the+--     cluster doesn\'t have the required access permissions for Amazon+--     EKS.+--+-- -   __VpcIdNotFound__: We couldn\'t find the VPC associated with the+--     cluster.+--+-- 'errorMessage', 'errorDetail_errorMessage' - A more complete description of the error.+--+-- 'resourceIds', 'errorDetail_resourceIds' - An optional field that contains the resource IDs associated with the+-- error.+newErrorDetail ::+  ErrorDetail+newErrorDetail =+  ErrorDetail'+    { errorCode = Prelude.Nothing,+      errorMessage = Prelude.Nothing,+      resourceIds = Prelude.Nothing+    }++-- | A brief description of the error.+--+-- -   __SubnetNotFound__: We couldn\'t find one of the subnets associated+--     with the cluster.+--+-- -   __SecurityGroupNotFound__: We couldn\'t find one of the security+--     groups associated with the cluster.+--+-- -   __EniLimitReached__: You have reached the elastic network interface+--     limit for your account.+--+-- -   __IpNotAvailable__: A subnet associated with the cluster doesn\'t+--     have any free IP addresses.+--+-- -   __AccessDenied__: You don\'t have permissions to perform the+--     specified operation.+--+-- -   __OperationNotPermitted__: The service role associated with the+--     cluster doesn\'t have the required access permissions for Amazon+--     EKS.+--+-- -   __VpcIdNotFound__: We couldn\'t find the VPC associated with the+--     cluster.+errorDetail_errorCode :: Lens.Lens' ErrorDetail (Prelude.Maybe EKSErrorCode)+errorDetail_errorCode = Lens.lens (\ErrorDetail' {errorCode} -> errorCode) (\s@ErrorDetail' {} a -> s {errorCode = a} :: ErrorDetail)++-- | A more complete description of the error.+errorDetail_errorMessage :: Lens.Lens' ErrorDetail (Prelude.Maybe Prelude.Text)+errorDetail_errorMessage = Lens.lens (\ErrorDetail' {errorMessage} -> errorMessage) (\s@ErrorDetail' {} a -> s {errorMessage = a} :: ErrorDetail)++-- | An optional field that contains the resource IDs associated with the+-- error.+errorDetail_resourceIds :: Lens.Lens' ErrorDetail (Prelude.Maybe [Prelude.Text])+errorDetail_resourceIds = Lens.lens (\ErrorDetail' {resourceIds} -> resourceIds) (\s@ErrorDetail' {} a -> s {resourceIds = a} :: ErrorDetail) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ErrorDetail where+  parseJSON =+    Data.withObject+      "ErrorDetail"+      ( \x ->+          ErrorDetail'+            Prelude.<$> (x Data..:? "errorCode")+            Prelude.<*> (x Data..:? "errorMessage")+            Prelude.<*> (x Data..:? "resourceIds" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ErrorDetail where+  hashWithSalt _salt ErrorDetail' {..} =+    _salt+      `Prelude.hashWithSalt` errorCode+      `Prelude.hashWithSalt` errorMessage+      `Prelude.hashWithSalt` resourceIds++instance Prelude.NFData ErrorDetail where+  rnf ErrorDetail' {..} =+    Prelude.rnf errorCode+      `Prelude.seq` Prelude.rnf errorMessage+      `Prelude.seq` Prelude.rnf resourceIds
+ gen/Amazonka/EKS/Types/FargateProfile.hs view
@@ -0,0 +1,197 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.FargateProfile+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.FargateProfile where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.FargateProfileSelector+import Amazonka.EKS.Types.FargateProfileStatus+import qualified Amazonka.Prelude as Prelude++-- | An object representing an Fargate profile.+--+-- /See:/ 'newFargateProfile' smart constructor.+data FargateProfile = FargateProfile'+  { -- | The name of the Amazon EKS cluster that the Fargate profile belongs to.+    clusterName :: Prelude.Maybe Prelude.Text,+    -- | The Unix epoch timestamp in seconds for when the Fargate profile was+    -- created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The full Amazon Resource Name (ARN) of the Fargate profile.+    fargateProfileArn :: Prelude.Maybe Prelude.Text,+    -- | The name of the Fargate profile.+    fargateProfileName :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the pod execution role to use for pods+    -- that match the selectors in the Fargate profile. For more information,+    -- see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html Pod Execution Role>+    -- in the /Amazon EKS User Guide/.+    podExecutionRoleArn :: Prelude.Maybe Prelude.Text,+    -- | The selectors to match for pods to use this Fargate profile.+    selectors :: Prelude.Maybe [FargateProfileSelector],+    -- | The current status of the Fargate profile.+    status :: Prelude.Maybe FargateProfileStatus,+    -- | The IDs of subnets to launch pods into.+    subnets :: Prelude.Maybe [Prelude.Text],+    -- | The metadata applied to the Fargate profile to assist with+    -- categorization and organization. Each tag consists of a key and an+    -- optional value. You define both. Fargate profile tags do not propagate+    -- to any other resources associated with the Fargate profile, such as the+    -- pods that are scheduled with it.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FargateProfile' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterName', 'fargateProfile_clusterName' - The name of the Amazon EKS cluster that the Fargate profile belongs to.+--+-- 'createdAt', 'fargateProfile_createdAt' - The Unix epoch timestamp in seconds for when the Fargate profile was+-- created.+--+-- 'fargateProfileArn', 'fargateProfile_fargateProfileArn' - The full Amazon Resource Name (ARN) of the Fargate profile.+--+-- 'fargateProfileName', 'fargateProfile_fargateProfileName' - The name of the Fargate profile.+--+-- 'podExecutionRoleArn', 'fargateProfile_podExecutionRoleArn' - The Amazon Resource Name (ARN) of the pod execution role to use for pods+-- that match the selectors in the Fargate profile. For more information,+-- see+-- <https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html Pod Execution Role>+-- in the /Amazon EKS User Guide/.+--+-- 'selectors', 'fargateProfile_selectors' - The selectors to match for pods to use this Fargate profile.+--+-- 'status', 'fargateProfile_status' - The current status of the Fargate profile.+--+-- 'subnets', 'fargateProfile_subnets' - The IDs of subnets to launch pods into.+--+-- 'tags', 'fargateProfile_tags' - The metadata applied to the Fargate profile to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value. You define both. Fargate profile tags do not propagate+-- to any other resources associated with the Fargate profile, such as the+-- pods that are scheduled with it.+newFargateProfile ::+  FargateProfile+newFargateProfile =+  FargateProfile'+    { clusterName = Prelude.Nothing,+      createdAt = Prelude.Nothing,+      fargateProfileArn = Prelude.Nothing,+      fargateProfileName = Prelude.Nothing,+      podExecutionRoleArn = Prelude.Nothing,+      selectors = Prelude.Nothing,+      status = Prelude.Nothing,+      subnets = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | The name of the Amazon EKS cluster that the Fargate profile belongs to.+fargateProfile_clusterName :: Lens.Lens' FargateProfile (Prelude.Maybe Prelude.Text)+fargateProfile_clusterName = Lens.lens (\FargateProfile' {clusterName} -> clusterName) (\s@FargateProfile' {} a -> s {clusterName = a} :: FargateProfile)++-- | The Unix epoch timestamp in seconds for when the Fargate profile was+-- created.+fargateProfile_createdAt :: Lens.Lens' FargateProfile (Prelude.Maybe Prelude.UTCTime)+fargateProfile_createdAt = Lens.lens (\FargateProfile' {createdAt} -> createdAt) (\s@FargateProfile' {} a -> s {createdAt = a} :: FargateProfile) Prelude.. Lens.mapping Data._Time++-- | The full Amazon Resource Name (ARN) of the Fargate profile.+fargateProfile_fargateProfileArn :: Lens.Lens' FargateProfile (Prelude.Maybe Prelude.Text)+fargateProfile_fargateProfileArn = Lens.lens (\FargateProfile' {fargateProfileArn} -> fargateProfileArn) (\s@FargateProfile' {} a -> s {fargateProfileArn = a} :: FargateProfile)++-- | The name of the Fargate profile.+fargateProfile_fargateProfileName :: Lens.Lens' FargateProfile (Prelude.Maybe Prelude.Text)+fargateProfile_fargateProfileName = Lens.lens (\FargateProfile' {fargateProfileName} -> fargateProfileName) (\s@FargateProfile' {} a -> s {fargateProfileName = a} :: FargateProfile)++-- | The Amazon Resource Name (ARN) of the pod execution role to use for pods+-- that match the selectors in the Fargate profile. For more information,+-- see+-- <https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html Pod Execution Role>+-- in the /Amazon EKS User Guide/.+fargateProfile_podExecutionRoleArn :: Lens.Lens' FargateProfile (Prelude.Maybe Prelude.Text)+fargateProfile_podExecutionRoleArn = Lens.lens (\FargateProfile' {podExecutionRoleArn} -> podExecutionRoleArn) (\s@FargateProfile' {} a -> s {podExecutionRoleArn = a} :: FargateProfile)++-- | The selectors to match for pods to use this Fargate profile.+fargateProfile_selectors :: Lens.Lens' FargateProfile (Prelude.Maybe [FargateProfileSelector])+fargateProfile_selectors = Lens.lens (\FargateProfile' {selectors} -> selectors) (\s@FargateProfile' {} a -> s {selectors = a} :: FargateProfile) Prelude.. Lens.mapping Lens.coerced++-- | The current status of the Fargate profile.+fargateProfile_status :: Lens.Lens' FargateProfile (Prelude.Maybe FargateProfileStatus)+fargateProfile_status = Lens.lens (\FargateProfile' {status} -> status) (\s@FargateProfile' {} a -> s {status = a} :: FargateProfile)++-- | The IDs of subnets to launch pods into.+fargateProfile_subnets :: Lens.Lens' FargateProfile (Prelude.Maybe [Prelude.Text])+fargateProfile_subnets = Lens.lens (\FargateProfile' {subnets} -> subnets) (\s@FargateProfile' {} a -> s {subnets = a} :: FargateProfile) Prelude.. Lens.mapping Lens.coerced++-- | The metadata applied to the Fargate profile to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value. You define both. Fargate profile tags do not propagate+-- to any other resources associated with the Fargate profile, such as the+-- pods that are scheduled with it.+fargateProfile_tags :: Lens.Lens' FargateProfile (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+fargateProfile_tags = Lens.lens (\FargateProfile' {tags} -> tags) (\s@FargateProfile' {} a -> s {tags = a} :: FargateProfile) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON FargateProfile where+  parseJSON =+    Data.withObject+      "FargateProfile"+      ( \x ->+          FargateProfile'+            Prelude.<$> (x Data..:? "clusterName")+            Prelude.<*> (x Data..:? "createdAt")+            Prelude.<*> (x Data..:? "fargateProfileArn")+            Prelude.<*> (x Data..:? "fargateProfileName")+            Prelude.<*> (x Data..:? "podExecutionRoleArn")+            Prelude.<*> (x Data..:? "selectors" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "status")+            Prelude.<*> (x Data..:? "subnets" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable FargateProfile where+  hashWithSalt _salt FargateProfile' {..} =+    _salt+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` fargateProfileArn+      `Prelude.hashWithSalt` fargateProfileName+      `Prelude.hashWithSalt` podExecutionRoleArn+      `Prelude.hashWithSalt` selectors+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` subnets+      `Prelude.hashWithSalt` tags++instance Prelude.NFData FargateProfile where+  rnf FargateProfile' {..} =+    Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf fargateProfileArn+      `Prelude.seq` Prelude.rnf fargateProfileName+      `Prelude.seq` Prelude.rnf podExecutionRoleArn+      `Prelude.seq` Prelude.rnf selectors+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf subnets+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/EKS/Types/FargateProfileSelector.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.FargateProfileSelector+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.FargateProfileSelector where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing an Fargate profile selector.+--+-- /See:/ 'newFargateProfileSelector' smart constructor.+data FargateProfileSelector = FargateProfileSelector'+  { -- | The Kubernetes labels that the selector should match. A pod must contain+    -- all of the labels that are specified in the selector for it to be+    -- considered a match.+    labels :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The Kubernetes namespace that the selector should match.+    namespace :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FargateProfileSelector' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'labels', 'fargateProfileSelector_labels' - The Kubernetes labels that the selector should match. A pod must contain+-- all of the labels that are specified in the selector for it to be+-- considered a match.+--+-- 'namespace', 'fargateProfileSelector_namespace' - The Kubernetes namespace that the selector should match.+newFargateProfileSelector ::+  FargateProfileSelector+newFargateProfileSelector =+  FargateProfileSelector'+    { labels = Prelude.Nothing,+      namespace = Prelude.Nothing+    }++-- | The Kubernetes labels that the selector should match. A pod must contain+-- all of the labels that are specified in the selector for it to be+-- considered a match.+fargateProfileSelector_labels :: Lens.Lens' FargateProfileSelector (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+fargateProfileSelector_labels = Lens.lens (\FargateProfileSelector' {labels} -> labels) (\s@FargateProfileSelector' {} a -> s {labels = a} :: FargateProfileSelector) Prelude.. Lens.mapping Lens.coerced++-- | The Kubernetes namespace that the selector should match.+fargateProfileSelector_namespace :: Lens.Lens' FargateProfileSelector (Prelude.Maybe Prelude.Text)+fargateProfileSelector_namespace = Lens.lens (\FargateProfileSelector' {namespace} -> namespace) (\s@FargateProfileSelector' {} a -> s {namespace = a} :: FargateProfileSelector)++instance Data.FromJSON FargateProfileSelector where+  parseJSON =+    Data.withObject+      "FargateProfileSelector"+      ( \x ->+          FargateProfileSelector'+            Prelude.<$> (x Data..:? "labels" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "namespace")+      )++instance Prelude.Hashable FargateProfileSelector where+  hashWithSalt _salt FargateProfileSelector' {..} =+    _salt+      `Prelude.hashWithSalt` labels+      `Prelude.hashWithSalt` namespace++instance Prelude.NFData FargateProfileSelector where+  rnf FargateProfileSelector' {..} =+    Prelude.rnf labels+      `Prelude.seq` Prelude.rnf namespace++instance Data.ToJSON FargateProfileSelector where+  toJSON FargateProfileSelector' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("labels" Data..=) Prelude.<$> labels,+            ("namespace" Data..=) Prelude.<$> namespace+          ]+      )
+ gen/Amazonka/EKS/Types/FargateProfileStatus.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.FargateProfileStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.FargateProfileStatus+  ( FargateProfileStatus+      ( ..,+        FargateProfileStatus_ACTIVE,+        FargateProfileStatus_CREATE_FAILED,+        FargateProfileStatus_CREATING,+        FargateProfileStatus_DELETE_FAILED,+        FargateProfileStatus_DELETING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FargateProfileStatus = FargateProfileStatus'+  { fromFargateProfileStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern FargateProfileStatus_ACTIVE :: FargateProfileStatus+pattern FargateProfileStatus_ACTIVE = FargateProfileStatus' "ACTIVE"++pattern FargateProfileStatus_CREATE_FAILED :: FargateProfileStatus+pattern FargateProfileStatus_CREATE_FAILED = FargateProfileStatus' "CREATE_FAILED"++pattern FargateProfileStatus_CREATING :: FargateProfileStatus+pattern FargateProfileStatus_CREATING = FargateProfileStatus' "CREATING"++pattern FargateProfileStatus_DELETE_FAILED :: FargateProfileStatus+pattern FargateProfileStatus_DELETE_FAILED = FargateProfileStatus' "DELETE_FAILED"++pattern FargateProfileStatus_DELETING :: FargateProfileStatus+pattern FargateProfileStatus_DELETING = FargateProfileStatus' "DELETING"++{-# COMPLETE+  FargateProfileStatus_ACTIVE,+  FargateProfileStatus_CREATE_FAILED,+  FargateProfileStatus_CREATING,+  FargateProfileStatus_DELETE_FAILED,+  FargateProfileStatus_DELETING,+  FargateProfileStatus'+  #-}
+ gen/Amazonka/EKS/Types/Identity.hs view
@@ -0,0 +1,68 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.Identity+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.Identity where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.OIDC+import qualified Amazonka.Prelude as Prelude++-- | An object representing an identity provider.+--+-- /See:/ 'newIdentity' smart constructor.+data Identity = Identity'+  { -- | An object representing the <https://openid.net/connect/ OpenID Connect>+    -- identity provider information.+    oidc :: Prelude.Maybe OIDC+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Identity' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'oidc', 'identity_oidc' - An object representing the <https://openid.net/connect/ OpenID Connect>+-- identity provider information.+newIdentity ::+  Identity+newIdentity = Identity' {oidc = Prelude.Nothing}++-- | An object representing the <https://openid.net/connect/ OpenID Connect>+-- identity provider information.+identity_oidc :: Lens.Lens' Identity (Prelude.Maybe OIDC)+identity_oidc = Lens.lens (\Identity' {oidc} -> oidc) (\s@Identity' {} a -> s {oidc = a} :: Identity)++instance Data.FromJSON Identity where+  parseJSON =+    Data.withObject+      "Identity"+      (\x -> Identity' Prelude.<$> (x Data..:? "oidc"))++instance Prelude.Hashable Identity where+  hashWithSalt _salt Identity' {..} =+    _salt `Prelude.hashWithSalt` oidc++instance Prelude.NFData Identity where+  rnf Identity' {..} = Prelude.rnf oidc
+ gen/Amazonka/EKS/Types/IdentityProviderConfig.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.IdentityProviderConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.IdentityProviderConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing an identity provider configuration.+--+-- /See:/ 'newIdentityProviderConfig' smart constructor.+data IdentityProviderConfig = IdentityProviderConfig'+  { -- | The type of the identity provider configuration. The only type available+    -- is @oidc@.+    type' :: Prelude.Text,+    -- | The name of the identity provider configuration.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IdentityProviderConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'type'', 'identityProviderConfig_type' - The type of the identity provider configuration. The only type available+-- is @oidc@.+--+-- 'name', 'identityProviderConfig_name' - The name of the identity provider configuration.+newIdentityProviderConfig ::+  -- | 'type''+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  IdentityProviderConfig+newIdentityProviderConfig pType_ pName_ =+  IdentityProviderConfig'+    { type' = pType_,+      name = pName_+    }++-- | The type of the identity provider configuration. The only type available+-- is @oidc@.+identityProviderConfig_type :: Lens.Lens' IdentityProviderConfig Prelude.Text+identityProviderConfig_type = Lens.lens (\IdentityProviderConfig' {type'} -> type') (\s@IdentityProviderConfig' {} a -> s {type' = a} :: IdentityProviderConfig)++-- | The name of the identity provider configuration.+identityProviderConfig_name :: Lens.Lens' IdentityProviderConfig Prelude.Text+identityProviderConfig_name = Lens.lens (\IdentityProviderConfig' {name} -> name) (\s@IdentityProviderConfig' {} a -> s {name = a} :: IdentityProviderConfig)++instance Data.FromJSON IdentityProviderConfig where+  parseJSON =+    Data.withObject+      "IdentityProviderConfig"+      ( \x ->+          IdentityProviderConfig'+            Prelude.<$> (x Data..: "type")+            Prelude.<*> (x Data..: "name")+      )++instance Prelude.Hashable IdentityProviderConfig where+  hashWithSalt _salt IdentityProviderConfig' {..} =+    _salt+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` name++instance Prelude.NFData IdentityProviderConfig where+  rnf IdentityProviderConfig' {..} =+    Prelude.rnf type' `Prelude.seq` Prelude.rnf name++instance Data.ToJSON IdentityProviderConfig where+  toJSON IdentityProviderConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("type" Data..= type'),+            Prelude.Just ("name" Data..= name)+          ]+      )
+ gen/Amazonka/EKS/Types/IdentityProviderConfigResponse.hs view
@@ -0,0 +1,84 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.IdentityProviderConfigResponse+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.IdentityProviderConfigResponse where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.OidcIdentityProviderConfig+import qualified Amazonka.Prelude as Prelude++-- | The full description of your identity configuration.+--+-- /See:/ 'newIdentityProviderConfigResponse' smart constructor.+data IdentityProviderConfigResponse = IdentityProviderConfigResponse'+  { -- | An object representing an OpenID Connect (OIDC) identity provider+    -- configuration.+    oidc :: Prelude.Maybe OidcIdentityProviderConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IdentityProviderConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'oidc', 'identityProviderConfigResponse_oidc' - An object representing an OpenID Connect (OIDC) identity provider+-- configuration.+newIdentityProviderConfigResponse ::+  IdentityProviderConfigResponse+newIdentityProviderConfigResponse =+  IdentityProviderConfigResponse'+    { oidc =+        Prelude.Nothing+    }++-- | An object representing an OpenID Connect (OIDC) identity provider+-- configuration.+identityProviderConfigResponse_oidc :: Lens.Lens' IdentityProviderConfigResponse (Prelude.Maybe OidcIdentityProviderConfig)+identityProviderConfigResponse_oidc = Lens.lens (\IdentityProviderConfigResponse' {oidc} -> oidc) (\s@IdentityProviderConfigResponse' {} a -> s {oidc = a} :: IdentityProviderConfigResponse)++instance Data.FromJSON IdentityProviderConfigResponse where+  parseJSON =+    Data.withObject+      "IdentityProviderConfigResponse"+      ( \x ->+          IdentityProviderConfigResponse'+            Prelude.<$> (x Data..:? "oidc")+      )++instance+  Prelude.Hashable+    IdentityProviderConfigResponse+  where+  hashWithSalt+    _salt+    IdentityProviderConfigResponse' {..} =+      _salt `Prelude.hashWithSalt` oidc++instance+  Prelude.NFData+    IdentityProviderConfigResponse+  where+  rnf IdentityProviderConfigResponse' {..} =+    Prelude.rnf oidc
+ gen/Amazonka/EKS/Types/IpFamily.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.IpFamily+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.IpFamily+  ( IpFamily+      ( ..,+        IpFamily_Ipv4,+        IpFamily_Ipv6+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype IpFamily = IpFamily'+  { fromIpFamily ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern IpFamily_Ipv4 :: IpFamily+pattern IpFamily_Ipv4 = IpFamily' "ipv4"++pattern IpFamily_Ipv6 :: IpFamily+pattern IpFamily_Ipv6 = IpFamily' "ipv6"++{-# COMPLETE+  IpFamily_Ipv4,+  IpFamily_Ipv6,+  IpFamily'+  #-}
+ gen/Amazonka/EKS/Types/Issue.hs view
@@ -0,0 +1,295 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.Issue+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.Issue where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.NodegroupIssueCode+import qualified Amazonka.Prelude as Prelude++-- | An object representing an issue with an Amazon EKS resource.+--+-- /See:/ 'newIssue' smart constructor.+data Issue = Issue'+  { -- | A brief description of the error.+    --+    -- -   __AccessDenied__: Amazon EKS or one or more of your managed nodes is+    --     failing to authenticate or authorize with your Kubernetes cluster+    --     API server.+    --+    -- -   __AsgInstanceLaunchFailures__: Your Auto Scaling group is+    --     experiencing failures while attempting to launch instances.+    --+    -- -   __AutoScalingGroupNotFound__: We couldn\'t find the Auto Scaling+    --     group associated with the managed node group. You may be able to+    --     recreate an Auto Scaling group with the same settings to recover.+    --+    -- -   __ClusterUnreachable__: Amazon EKS or one or more of your managed+    --     nodes is unable to to communicate with your Kubernetes cluster API+    --     server. This can happen if there are network disruptions or if API+    --     servers are timing out processing requests.+    --+    -- -   __Ec2LaunchTemplateNotFound__: We couldn\'t find the Amazon EC2+    --     launch template for your managed node group. You may be able to+    --     recreate a launch template with the same settings to recover.+    --+    -- -   __Ec2LaunchTemplateVersionMismatch__: The Amazon EC2 launch template+    --     version for your managed node group does not match the version that+    --     Amazon EKS created. You may be able to revert to the version that+    --     Amazon EKS created to recover.+    --+    -- -   __Ec2SecurityGroupDeletionFailure__: We could not delete the remote+    --     access security group for your managed node group. Remove any+    --     dependencies from the security group.+    --+    -- -   __Ec2SecurityGroupNotFound__: We couldn\'t find the cluster security+    --     group for the cluster. You must recreate your cluster.+    --+    -- -   __Ec2SubnetInvalidConfiguration__: One or more Amazon EC2 subnets+    --     specified for a node group do not automatically assign public IP+    --     addresses to instances launched into it. If you want your instances+    --     to be assigned a public IP address, then you need to enable the+    --     @auto-assign public IP address@ setting for the subnet. See+    --     <https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip Modifying the public IPv4 addressing attribute for your subnet>+    --     in the /Amazon VPC User Guide/.+    --+    -- -   __IamInstanceProfileNotFound__: We couldn\'t find the IAM instance+    --     profile for your managed node group. You may be able to recreate an+    --     instance profile with the same settings to recover.+    --+    -- -   __IamNodeRoleNotFound__: We couldn\'t find the IAM role for your+    --     managed node group. You may be able to recreate an IAM role with the+    --     same settings to recover.+    --+    -- -   __InstanceLimitExceeded__: Your Amazon Web Services account is+    --     unable to launch any more instances of the specified instance type.+    --     You may be able to request an Amazon EC2 instance limit increase to+    --     recover.+    --+    -- -   __InsufficientFreeAddresses__: One or more of the subnets associated+    --     with your managed node group does not have enough available IP+    --     addresses for new nodes.+    --+    -- -   __InternalFailure__: These errors are usually caused by an Amazon+    --     EKS server-side issue.+    --+    -- -   __NodeCreationFailure__: Your launched instances are unable to+    --     register with your Amazon EKS cluster. Common causes of this failure+    --     are insufficient+    --     <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html node IAM role>+    --     permissions or lack of outbound internet access for the nodes.+    code :: Prelude.Maybe NodegroupIssueCode,+    -- | The error message associated with the issue.+    message :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services resources that are afflicted by this issue.+    resourceIds :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Issue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'code', 'issue_code' - A brief description of the error.+--+-- -   __AccessDenied__: Amazon EKS or one or more of your managed nodes is+--     failing to authenticate or authorize with your Kubernetes cluster+--     API server.+--+-- -   __AsgInstanceLaunchFailures__: Your Auto Scaling group is+--     experiencing failures while attempting to launch instances.+--+-- -   __AutoScalingGroupNotFound__: We couldn\'t find the Auto Scaling+--     group associated with the managed node group. You may be able to+--     recreate an Auto Scaling group with the same settings to recover.+--+-- -   __ClusterUnreachable__: Amazon EKS or one or more of your managed+--     nodes is unable to to communicate with your Kubernetes cluster API+--     server. This can happen if there are network disruptions or if API+--     servers are timing out processing requests.+--+-- -   __Ec2LaunchTemplateNotFound__: We couldn\'t find the Amazon EC2+--     launch template for your managed node group. You may be able to+--     recreate a launch template with the same settings to recover.+--+-- -   __Ec2LaunchTemplateVersionMismatch__: The Amazon EC2 launch template+--     version for your managed node group does not match the version that+--     Amazon EKS created. You may be able to revert to the version that+--     Amazon EKS created to recover.+--+-- -   __Ec2SecurityGroupDeletionFailure__: We could not delete the remote+--     access security group for your managed node group. Remove any+--     dependencies from the security group.+--+-- -   __Ec2SecurityGroupNotFound__: We couldn\'t find the cluster security+--     group for the cluster. You must recreate your cluster.+--+-- -   __Ec2SubnetInvalidConfiguration__: One or more Amazon EC2 subnets+--     specified for a node group do not automatically assign public IP+--     addresses to instances launched into it. If you want your instances+--     to be assigned a public IP address, then you need to enable the+--     @auto-assign public IP address@ setting for the subnet. See+--     <https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip Modifying the public IPv4 addressing attribute for your subnet>+--     in the /Amazon VPC User Guide/.+--+-- -   __IamInstanceProfileNotFound__: We couldn\'t find the IAM instance+--     profile for your managed node group. You may be able to recreate an+--     instance profile with the same settings to recover.+--+-- -   __IamNodeRoleNotFound__: We couldn\'t find the IAM role for your+--     managed node group. You may be able to recreate an IAM role with the+--     same settings to recover.+--+-- -   __InstanceLimitExceeded__: Your Amazon Web Services account is+--     unable to launch any more instances of the specified instance type.+--     You may be able to request an Amazon EC2 instance limit increase to+--     recover.+--+-- -   __InsufficientFreeAddresses__: One or more of the subnets associated+--     with your managed node group does not have enough available IP+--     addresses for new nodes.+--+-- -   __InternalFailure__: These errors are usually caused by an Amazon+--     EKS server-side issue.+--+-- -   __NodeCreationFailure__: Your launched instances are unable to+--     register with your Amazon EKS cluster. Common causes of this failure+--     are insufficient+--     <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html node IAM role>+--     permissions or lack of outbound internet access for the nodes.+--+-- 'message', 'issue_message' - The error message associated with the issue.+--+-- 'resourceIds', 'issue_resourceIds' - The Amazon Web Services resources that are afflicted by this issue.+newIssue ::+  Issue+newIssue =+  Issue'+    { code = Prelude.Nothing,+      message = Prelude.Nothing,+      resourceIds = Prelude.Nothing+    }++-- | A brief description of the error.+--+-- -   __AccessDenied__: Amazon EKS or one or more of your managed nodes is+--     failing to authenticate or authorize with your Kubernetes cluster+--     API server.+--+-- -   __AsgInstanceLaunchFailures__: Your Auto Scaling group is+--     experiencing failures while attempting to launch instances.+--+-- -   __AutoScalingGroupNotFound__: We couldn\'t find the Auto Scaling+--     group associated with the managed node group. You may be able to+--     recreate an Auto Scaling group with the same settings to recover.+--+-- -   __ClusterUnreachable__: Amazon EKS or one or more of your managed+--     nodes is unable to to communicate with your Kubernetes cluster API+--     server. This can happen if there are network disruptions or if API+--     servers are timing out processing requests.+--+-- -   __Ec2LaunchTemplateNotFound__: We couldn\'t find the Amazon EC2+--     launch template for your managed node group. You may be able to+--     recreate a launch template with the same settings to recover.+--+-- -   __Ec2LaunchTemplateVersionMismatch__: The Amazon EC2 launch template+--     version for your managed node group does not match the version that+--     Amazon EKS created. You may be able to revert to the version that+--     Amazon EKS created to recover.+--+-- -   __Ec2SecurityGroupDeletionFailure__: We could not delete the remote+--     access security group for your managed node group. Remove any+--     dependencies from the security group.+--+-- -   __Ec2SecurityGroupNotFound__: We couldn\'t find the cluster security+--     group for the cluster. You must recreate your cluster.+--+-- -   __Ec2SubnetInvalidConfiguration__: One or more Amazon EC2 subnets+--     specified for a node group do not automatically assign public IP+--     addresses to instances launched into it. If you want your instances+--     to be assigned a public IP address, then you need to enable the+--     @auto-assign public IP address@ setting for the subnet. See+--     <https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip Modifying the public IPv4 addressing attribute for your subnet>+--     in the /Amazon VPC User Guide/.+--+-- -   __IamInstanceProfileNotFound__: We couldn\'t find the IAM instance+--     profile for your managed node group. You may be able to recreate an+--     instance profile with the same settings to recover.+--+-- -   __IamNodeRoleNotFound__: We couldn\'t find the IAM role for your+--     managed node group. You may be able to recreate an IAM role with the+--     same settings to recover.+--+-- -   __InstanceLimitExceeded__: Your Amazon Web Services account is+--     unable to launch any more instances of the specified instance type.+--     You may be able to request an Amazon EC2 instance limit increase to+--     recover.+--+-- -   __InsufficientFreeAddresses__: One or more of the subnets associated+--     with your managed node group does not have enough available IP+--     addresses for new nodes.+--+-- -   __InternalFailure__: These errors are usually caused by an Amazon+--     EKS server-side issue.+--+-- -   __NodeCreationFailure__: Your launched instances are unable to+--     register with your Amazon EKS cluster. Common causes of this failure+--     are insufficient+--     <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html node IAM role>+--     permissions or lack of outbound internet access for the nodes.+issue_code :: Lens.Lens' Issue (Prelude.Maybe NodegroupIssueCode)+issue_code = Lens.lens (\Issue' {code} -> code) (\s@Issue' {} a -> s {code = a} :: Issue)++-- | The error message associated with the issue.+issue_message :: Lens.Lens' Issue (Prelude.Maybe Prelude.Text)+issue_message = Lens.lens (\Issue' {message} -> message) (\s@Issue' {} a -> s {message = a} :: Issue)++-- | The Amazon Web Services resources that are afflicted by this issue.+issue_resourceIds :: Lens.Lens' Issue (Prelude.Maybe [Prelude.Text])+issue_resourceIds = Lens.lens (\Issue' {resourceIds} -> resourceIds) (\s@Issue' {} a -> s {resourceIds = a} :: Issue) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON Issue where+  parseJSON =+    Data.withObject+      "Issue"+      ( \x ->+          Issue'+            Prelude.<$> (x Data..:? "code")+            Prelude.<*> (x Data..:? "message")+            Prelude.<*> (x Data..:? "resourceIds" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Issue where+  hashWithSalt _salt Issue' {..} =+    _salt+      `Prelude.hashWithSalt` code+      `Prelude.hashWithSalt` message+      `Prelude.hashWithSalt` resourceIds++instance Prelude.NFData Issue where+  rnf Issue' {..} =+    Prelude.rnf code+      `Prelude.seq` Prelude.rnf message+      `Prelude.seq` Prelude.rnf resourceIds
+ gen/Amazonka/EKS/Types/KubernetesNetworkConfigRequest.hs view
@@ -0,0 +1,193 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.KubernetesNetworkConfigRequest+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.KubernetesNetworkConfigRequest where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.IpFamily+import qualified Amazonka.Prelude as Prelude++-- | The Kubernetes network configuration for the cluster.+--+-- /See:/ 'newKubernetesNetworkConfigRequest' smart constructor.+data KubernetesNetworkConfigRequest = KubernetesNetworkConfigRequest'+  { -- | Specify which IP family is used to assign Kubernetes pod and service IP+    -- addresses. If you don\'t specify a value, @ipv4@ is used by default. You+    -- can only specify an IP family when you create a cluster and can\'t+    -- change this value once the cluster is created. If you specify @ipv6@,+    -- the VPC and subnets that you specify for cluster creation must have both+    -- @IPv4@ and @IPv6@ CIDR blocks assigned to them. You can\'t specify+    -- @ipv6@ for clusters in China Regions.+    --+    -- You can only specify @ipv6@ for @1.21@ and later clusters that use+    -- version @1.10.1@ or later of the Amazon VPC CNI add-on. If you specify+    -- @ipv6@, then ensure that your VPC meets the requirements listed in the+    -- considerations listed in+    -- <https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html Assigning IPv6 addresses to pods and services>+    -- in the Amazon EKS User Guide. Kubernetes assigns services @IPv6@+    -- addresses from the unique local address range @(fc00::\/7)@. You can\'t+    -- specify a custom @IPv6@ CIDR block. Pod addresses are assigned from the+    -- subnet\'s @IPv6@ CIDR.+    ipFamily :: Prelude.Maybe IpFamily,+    -- | Don\'t specify a value if you select @ipv6@ for __ipFamily__. The CIDR+    -- block to assign Kubernetes service IP addresses from. If you don\'t+    -- specify a block, Kubernetes assigns addresses from either the+    -- @10.100.0.0\/16@ or @172.20.0.0\/16@ CIDR blocks. We recommend that you+    -- specify a block that does not overlap with resources in other networks+    -- that are peered or connected to your VPC. The block must meet the+    -- following requirements:+    --+    -- -   Within one of the following private IP address blocks:+    --     @10.0.0.0\/8@, @172.16.0.0\/12@, or @192.168.0.0\/16@.+    --+    -- -   Doesn\'t overlap with any CIDR block assigned to the VPC that you+    --     selected for VPC.+    --+    -- -   Between \/24 and \/12.+    --+    -- You can only specify a custom CIDR block when you create a cluster and+    -- can\'t change this value once the cluster is created.+    serviceIpv4Cidr :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'KubernetesNetworkConfigRequest' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'ipFamily', 'kubernetesNetworkConfigRequest_ipFamily' - Specify which IP family is used to assign Kubernetes pod and service IP+-- addresses. If you don\'t specify a value, @ipv4@ is used by default. You+-- can only specify an IP family when you create a cluster and can\'t+-- change this value once the cluster is created. If you specify @ipv6@,+-- the VPC and subnets that you specify for cluster creation must have both+-- @IPv4@ and @IPv6@ CIDR blocks assigned to them. You can\'t specify+-- @ipv6@ for clusters in China Regions.+--+-- You can only specify @ipv6@ for @1.21@ and later clusters that use+-- version @1.10.1@ or later of the Amazon VPC CNI add-on. If you specify+-- @ipv6@, then ensure that your VPC meets the requirements listed in the+-- considerations listed in+-- <https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html Assigning IPv6 addresses to pods and services>+-- in the Amazon EKS User Guide. Kubernetes assigns services @IPv6@+-- addresses from the unique local address range @(fc00::\/7)@. You can\'t+-- specify a custom @IPv6@ CIDR block. Pod addresses are assigned from the+-- subnet\'s @IPv6@ CIDR.+--+-- 'serviceIpv4Cidr', 'kubernetesNetworkConfigRequest_serviceIpv4Cidr' - Don\'t specify a value if you select @ipv6@ for __ipFamily__. The CIDR+-- block to assign Kubernetes service IP addresses from. If you don\'t+-- specify a block, Kubernetes assigns addresses from either the+-- @10.100.0.0\/16@ or @172.20.0.0\/16@ CIDR blocks. We recommend that you+-- specify a block that does not overlap with resources in other networks+-- that are peered or connected to your VPC. The block must meet the+-- following requirements:+--+-- -   Within one of the following private IP address blocks:+--     @10.0.0.0\/8@, @172.16.0.0\/12@, or @192.168.0.0\/16@.+--+-- -   Doesn\'t overlap with any CIDR block assigned to the VPC that you+--     selected for VPC.+--+-- -   Between \/24 and \/12.+--+-- You can only specify a custom CIDR block when you create a cluster and+-- can\'t change this value once the cluster is created.+newKubernetesNetworkConfigRequest ::+  KubernetesNetworkConfigRequest+newKubernetesNetworkConfigRequest =+  KubernetesNetworkConfigRequest'+    { ipFamily =+        Prelude.Nothing,+      serviceIpv4Cidr = Prelude.Nothing+    }++-- | Specify which IP family is used to assign Kubernetes pod and service IP+-- addresses. If you don\'t specify a value, @ipv4@ is used by default. You+-- can only specify an IP family when you create a cluster and can\'t+-- change this value once the cluster is created. If you specify @ipv6@,+-- the VPC and subnets that you specify for cluster creation must have both+-- @IPv4@ and @IPv6@ CIDR blocks assigned to them. You can\'t specify+-- @ipv6@ for clusters in China Regions.+--+-- You can only specify @ipv6@ for @1.21@ and later clusters that use+-- version @1.10.1@ or later of the Amazon VPC CNI add-on. If you specify+-- @ipv6@, then ensure that your VPC meets the requirements listed in the+-- considerations listed in+-- <https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html Assigning IPv6 addresses to pods and services>+-- in the Amazon EKS User Guide. Kubernetes assigns services @IPv6@+-- addresses from the unique local address range @(fc00::\/7)@. You can\'t+-- specify a custom @IPv6@ CIDR block. Pod addresses are assigned from the+-- subnet\'s @IPv6@ CIDR.+kubernetesNetworkConfigRequest_ipFamily :: Lens.Lens' KubernetesNetworkConfigRequest (Prelude.Maybe IpFamily)+kubernetesNetworkConfigRequest_ipFamily = Lens.lens (\KubernetesNetworkConfigRequest' {ipFamily} -> ipFamily) (\s@KubernetesNetworkConfigRequest' {} a -> s {ipFamily = a} :: KubernetesNetworkConfigRequest)++-- | Don\'t specify a value if you select @ipv6@ for __ipFamily__. The CIDR+-- block to assign Kubernetes service IP addresses from. If you don\'t+-- specify a block, Kubernetes assigns addresses from either the+-- @10.100.0.0\/16@ or @172.20.0.0\/16@ CIDR blocks. We recommend that you+-- specify a block that does not overlap with resources in other networks+-- that are peered or connected to your VPC. The block must meet the+-- following requirements:+--+-- -   Within one of the following private IP address blocks:+--     @10.0.0.0\/8@, @172.16.0.0\/12@, or @192.168.0.0\/16@.+--+-- -   Doesn\'t overlap with any CIDR block assigned to the VPC that you+--     selected for VPC.+--+-- -   Between \/24 and \/12.+--+-- You can only specify a custom CIDR block when you create a cluster and+-- can\'t change this value once the cluster is created.+kubernetesNetworkConfigRequest_serviceIpv4Cidr :: Lens.Lens' KubernetesNetworkConfigRequest (Prelude.Maybe Prelude.Text)+kubernetesNetworkConfigRequest_serviceIpv4Cidr = Lens.lens (\KubernetesNetworkConfigRequest' {serviceIpv4Cidr} -> serviceIpv4Cidr) (\s@KubernetesNetworkConfigRequest' {} a -> s {serviceIpv4Cidr = a} :: KubernetesNetworkConfigRequest)++instance+  Prelude.Hashable+    KubernetesNetworkConfigRequest+  where+  hashWithSalt+    _salt+    KubernetesNetworkConfigRequest' {..} =+      _salt+        `Prelude.hashWithSalt` ipFamily+        `Prelude.hashWithSalt` serviceIpv4Cidr++instance+  Prelude.NFData+    KubernetesNetworkConfigRequest+  where+  rnf KubernetesNetworkConfigRequest' {..} =+    Prelude.rnf ipFamily+      `Prelude.seq` Prelude.rnf serviceIpv4Cidr++instance Data.ToJSON KubernetesNetworkConfigRequest where+  toJSON KubernetesNetworkConfigRequest' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ipFamily" Data..=) Prelude.<$> ipFamily,+            ("serviceIpv4Cidr" Data..=)+              Prelude.<$> serviceIpv4Cidr+          ]+      )
+ gen/Amazonka/EKS/Types/KubernetesNetworkConfigResponse.hs view
@@ -0,0 +1,153 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.KubernetesNetworkConfigResponse+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.KubernetesNetworkConfigResponse where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.IpFamily+import qualified Amazonka.Prelude as Prelude++-- | The Kubernetes network configuration for the cluster. The response+-- contains a value for __serviceIpv6Cidr__ or __serviceIpv4Cidr__, but not+-- both.+--+-- /See:/ 'newKubernetesNetworkConfigResponse' smart constructor.+data KubernetesNetworkConfigResponse = KubernetesNetworkConfigResponse'+  { -- | The IP family used to assign Kubernetes pod and service IP addresses.+    -- The IP family is always @ipv4@, unless you have a @1.21@ or later+    -- cluster running version 1.10.1 or later of the Amazon VPC CNI add-on and+    -- specified @ipv6@ when you created the cluster.+    ipFamily :: Prelude.Maybe IpFamily,+    -- | The CIDR block that Kubernetes pod and service IP addresses are assigned+    -- from. Kubernetes assigns addresses from an IPv4 CIDR block assigned to a+    -- subnet that the node is in. If you didn\'t specify a CIDR block when you+    -- created the cluster, then Kubernetes assigns addresses from either the+    -- @10.100.0.0\/16@ or @172.20.0.0\/16@ CIDR blocks. If this was specified,+    -- then it was specified when the cluster was created and it can\'t be+    -- changed.+    serviceIpv4Cidr :: Prelude.Maybe Prelude.Text,+    -- | The CIDR block that Kubernetes pod and service IP addresses are assigned+    -- from if you created a 1.21 or later cluster with version 1.10.1 or later+    -- of the Amazon VPC CNI add-on and specified @ipv6@ for __ipFamily__ when+    -- you created the cluster. Kubernetes assigns service addresses from the+    -- unique local address range (@fc00::\/7@) because you can\'t specify a+    -- custom IPv6 CIDR block when you create the cluster.+    serviceIpv6Cidr :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'KubernetesNetworkConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'ipFamily', 'kubernetesNetworkConfigResponse_ipFamily' - The IP family used to assign Kubernetes pod and service IP addresses.+-- The IP family is always @ipv4@, unless you have a @1.21@ or later+-- cluster running version 1.10.1 or later of the Amazon VPC CNI add-on and+-- specified @ipv6@ when you created the cluster.+--+-- 'serviceIpv4Cidr', 'kubernetesNetworkConfigResponse_serviceIpv4Cidr' - The CIDR block that Kubernetes pod and service IP addresses are assigned+-- from. Kubernetes assigns addresses from an IPv4 CIDR block assigned to a+-- subnet that the node is in. If you didn\'t specify a CIDR block when you+-- created the cluster, then Kubernetes assigns addresses from either the+-- @10.100.0.0\/16@ or @172.20.0.0\/16@ CIDR blocks. If this was specified,+-- then it was specified when the cluster was created and it can\'t be+-- changed.+--+-- 'serviceIpv6Cidr', 'kubernetesNetworkConfigResponse_serviceIpv6Cidr' - The CIDR block that Kubernetes pod and service IP addresses are assigned+-- from if you created a 1.21 or later cluster with version 1.10.1 or later+-- of the Amazon VPC CNI add-on and specified @ipv6@ for __ipFamily__ when+-- you created the cluster. Kubernetes assigns service addresses from the+-- unique local address range (@fc00::\/7@) because you can\'t specify a+-- custom IPv6 CIDR block when you create the cluster.+newKubernetesNetworkConfigResponse ::+  KubernetesNetworkConfigResponse+newKubernetesNetworkConfigResponse =+  KubernetesNetworkConfigResponse'+    { ipFamily =+        Prelude.Nothing,+      serviceIpv4Cidr = Prelude.Nothing,+      serviceIpv6Cidr = Prelude.Nothing+    }++-- | The IP family used to assign Kubernetes pod and service IP addresses.+-- The IP family is always @ipv4@, unless you have a @1.21@ or later+-- cluster running version 1.10.1 or later of the Amazon VPC CNI add-on and+-- specified @ipv6@ when you created the cluster.+kubernetesNetworkConfigResponse_ipFamily :: Lens.Lens' KubernetesNetworkConfigResponse (Prelude.Maybe IpFamily)+kubernetesNetworkConfigResponse_ipFamily = Lens.lens (\KubernetesNetworkConfigResponse' {ipFamily} -> ipFamily) (\s@KubernetesNetworkConfigResponse' {} a -> s {ipFamily = a} :: KubernetesNetworkConfigResponse)++-- | The CIDR block that Kubernetes pod and service IP addresses are assigned+-- from. Kubernetes assigns addresses from an IPv4 CIDR block assigned to a+-- subnet that the node is in. If you didn\'t specify a CIDR block when you+-- created the cluster, then Kubernetes assigns addresses from either the+-- @10.100.0.0\/16@ or @172.20.0.0\/16@ CIDR blocks. If this was specified,+-- then it was specified when the cluster was created and it can\'t be+-- changed.+kubernetesNetworkConfigResponse_serviceIpv4Cidr :: Lens.Lens' KubernetesNetworkConfigResponse (Prelude.Maybe Prelude.Text)+kubernetesNetworkConfigResponse_serviceIpv4Cidr = Lens.lens (\KubernetesNetworkConfigResponse' {serviceIpv4Cidr} -> serviceIpv4Cidr) (\s@KubernetesNetworkConfigResponse' {} a -> s {serviceIpv4Cidr = a} :: KubernetesNetworkConfigResponse)++-- | The CIDR block that Kubernetes pod and service IP addresses are assigned+-- from if you created a 1.21 or later cluster with version 1.10.1 or later+-- of the Amazon VPC CNI add-on and specified @ipv6@ for __ipFamily__ when+-- you created the cluster. Kubernetes assigns service addresses from the+-- unique local address range (@fc00::\/7@) because you can\'t specify a+-- custom IPv6 CIDR block when you create the cluster.+kubernetesNetworkConfigResponse_serviceIpv6Cidr :: Lens.Lens' KubernetesNetworkConfigResponse (Prelude.Maybe Prelude.Text)+kubernetesNetworkConfigResponse_serviceIpv6Cidr = Lens.lens (\KubernetesNetworkConfigResponse' {serviceIpv6Cidr} -> serviceIpv6Cidr) (\s@KubernetesNetworkConfigResponse' {} a -> s {serviceIpv6Cidr = a} :: KubernetesNetworkConfigResponse)++instance+  Data.FromJSON+    KubernetesNetworkConfigResponse+  where+  parseJSON =+    Data.withObject+      "KubernetesNetworkConfigResponse"+      ( \x ->+          KubernetesNetworkConfigResponse'+            Prelude.<$> (x Data..:? "ipFamily")+            Prelude.<*> (x Data..:? "serviceIpv4Cidr")+            Prelude.<*> (x Data..:? "serviceIpv6Cidr")+      )++instance+  Prelude.Hashable+    KubernetesNetworkConfigResponse+  where+  hashWithSalt+    _salt+    KubernetesNetworkConfigResponse' {..} =+      _salt+        `Prelude.hashWithSalt` ipFamily+        `Prelude.hashWithSalt` serviceIpv4Cidr+        `Prelude.hashWithSalt` serviceIpv6Cidr++instance+  Prelude.NFData+    KubernetesNetworkConfigResponse+  where+  rnf KubernetesNetworkConfigResponse' {..} =+    Prelude.rnf ipFamily+      `Prelude.seq` Prelude.rnf serviceIpv4Cidr+      `Prelude.seq` Prelude.rnf serviceIpv6Cidr
+ gen/Amazonka/EKS/Types/LaunchTemplateSpecification.hs view
@@ -0,0 +1,147 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.LaunchTemplateSpecification+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.LaunchTemplateSpecification where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing a node group launch template specification. The+-- launch template can\'t include+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html SubnetId>+-- ,+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html IamInstanceProfile>+-- ,+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html RequestSpotInstances>+-- ,+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_HibernationOptionsRequest.html HibernationOptions>+-- , or+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TerminateInstances.html TerminateInstances>+-- , or the node group deployment or update will fail. For more information+-- about launch templates, see+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateLaunchTemplate.html CreateLaunchTemplate>+-- in the Amazon EC2 API Reference. For more information about using launch+-- templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+--+-- You must specify either the launch template ID or the launch template+-- name in the request, but not both.+--+-- /See:/ 'newLaunchTemplateSpecification' smart constructor.+data LaunchTemplateSpecification = LaunchTemplateSpecification'+  { -- | The ID of the launch template.+    --+    -- You must specify either the launch template ID or the launch template+    -- name in the request, but not both.+    id :: Prelude.Maybe Prelude.Text,+    -- | The name of the launch template.+    --+    -- You must specify either the launch template name or the launch template+    -- ID in the request, but not both.+    name :: Prelude.Maybe Prelude.Text,+    -- | The version number of the launch template to use. If no version is+    -- specified, then the template\'s default version is used.+    version :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LaunchTemplateSpecification' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'launchTemplateSpecification_id' - The ID of the launch template.+--+-- You must specify either the launch template ID or the launch template+-- name in the request, but not both.+--+-- 'name', 'launchTemplateSpecification_name' - The name of the launch template.+--+-- You must specify either the launch template name or the launch template+-- ID in the request, but not both.+--+-- 'version', 'launchTemplateSpecification_version' - The version number of the launch template to use. If no version is+-- specified, then the template\'s default version is used.+newLaunchTemplateSpecification ::+  LaunchTemplateSpecification+newLaunchTemplateSpecification =+  LaunchTemplateSpecification'+    { id = Prelude.Nothing,+      name = Prelude.Nothing,+      version = Prelude.Nothing+    }++-- | The ID of the launch template.+--+-- You must specify either the launch template ID or the launch template+-- name in the request, but not both.+launchTemplateSpecification_id :: Lens.Lens' LaunchTemplateSpecification (Prelude.Maybe Prelude.Text)+launchTemplateSpecification_id = Lens.lens (\LaunchTemplateSpecification' {id} -> id) (\s@LaunchTemplateSpecification' {} a -> s {id = a} :: LaunchTemplateSpecification)++-- | The name of the launch template.+--+-- You must specify either the launch template name or the launch template+-- ID in the request, but not both.+launchTemplateSpecification_name :: Lens.Lens' LaunchTemplateSpecification (Prelude.Maybe Prelude.Text)+launchTemplateSpecification_name = Lens.lens (\LaunchTemplateSpecification' {name} -> name) (\s@LaunchTemplateSpecification' {} a -> s {name = a} :: LaunchTemplateSpecification)++-- | The version number of the launch template to use. If no version is+-- specified, then the template\'s default version is used.+launchTemplateSpecification_version :: Lens.Lens' LaunchTemplateSpecification (Prelude.Maybe Prelude.Text)+launchTemplateSpecification_version = Lens.lens (\LaunchTemplateSpecification' {version} -> version) (\s@LaunchTemplateSpecification' {} a -> s {version = a} :: LaunchTemplateSpecification)++instance Data.FromJSON LaunchTemplateSpecification where+  parseJSON =+    Data.withObject+      "LaunchTemplateSpecification"+      ( \x ->+          LaunchTemplateSpecification'+            Prelude.<$> (x Data..:? "id")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "version")+      )++instance Prelude.Hashable LaunchTemplateSpecification where+  hashWithSalt _salt LaunchTemplateSpecification' {..} =+    _salt+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` version++instance Prelude.NFData LaunchTemplateSpecification where+  rnf LaunchTemplateSpecification' {..} =+    Prelude.rnf id+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf version++instance Data.ToJSON LaunchTemplateSpecification where+  toJSON LaunchTemplateSpecification' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("id" Data..=) Prelude.<$> id,+            ("name" Data..=) Prelude.<$> name,+            ("version" Data..=) Prelude.<$> version+          ]+      )
+ gen/Amazonka/EKS/Types/LogSetup.hs view
@@ -0,0 +1,103 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.LogSetup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.LogSetup where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.LogType+import qualified Amazonka.Prelude as Prelude++-- | An object representing the enabled or disabled Kubernetes control plane+-- logs for your cluster.+--+-- /See:/ 'newLogSetup' smart constructor.+data LogSetup = LogSetup'+  { -- | If a log type is enabled, that log type exports its control plane logs+    -- to CloudWatch Logs. If a log type isn\'t enabled, that log type doesn\'t+    -- export its control plane logs. Each individual log type can be enabled+    -- or disabled independently.+    enabled :: Prelude.Maybe Prelude.Bool,+    -- | The available cluster control plane log types.+    types :: Prelude.Maybe [LogType]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LogSetup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'enabled', 'logSetup_enabled' - If a log type is enabled, that log type exports its control plane logs+-- to CloudWatch Logs. If a log type isn\'t enabled, that log type doesn\'t+-- export its control plane logs. Each individual log type can be enabled+-- or disabled independently.+--+-- 'types', 'logSetup_types' - The available cluster control plane log types.+newLogSetup ::+  LogSetup+newLogSetup =+  LogSetup'+    { enabled = Prelude.Nothing,+      types = Prelude.Nothing+    }++-- | If a log type is enabled, that log type exports its control plane logs+-- to CloudWatch Logs. If a log type isn\'t enabled, that log type doesn\'t+-- export its control plane logs. Each individual log type can be enabled+-- or disabled independently.+logSetup_enabled :: Lens.Lens' LogSetup (Prelude.Maybe Prelude.Bool)+logSetup_enabled = Lens.lens (\LogSetup' {enabled} -> enabled) (\s@LogSetup' {} a -> s {enabled = a} :: LogSetup)++-- | The available cluster control plane log types.+logSetup_types :: Lens.Lens' LogSetup (Prelude.Maybe [LogType])+logSetup_types = Lens.lens (\LogSetup' {types} -> types) (\s@LogSetup' {} a -> s {types = a} :: LogSetup) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON LogSetup where+  parseJSON =+    Data.withObject+      "LogSetup"+      ( \x ->+          LogSetup'+            Prelude.<$> (x Data..:? "enabled")+            Prelude.<*> (x Data..:? "types" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable LogSetup where+  hashWithSalt _salt LogSetup' {..} =+    _salt+      `Prelude.hashWithSalt` enabled+      `Prelude.hashWithSalt` types++instance Prelude.NFData LogSetup where+  rnf LogSetup' {..} =+    Prelude.rnf enabled `Prelude.seq` Prelude.rnf types++instance Data.ToJSON LogSetup where+  toJSON LogSetup' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("enabled" Data..=) Prelude.<$> enabled,+            ("types" Data..=) Prelude.<$> types+          ]+      )
+ gen/Amazonka/EKS/Types/LogType.hs view
@@ -0,0 +1,83 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.LogType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.LogType+  ( LogType+      ( ..,+        LogType_Api,+        LogType_Audit,+        LogType_Authenticator,+        LogType_ControllerManager,+        LogType_Scheduler+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LogType = LogType' {fromLogType :: Data.Text}+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern LogType_Api :: LogType+pattern LogType_Api = LogType' "api"++pattern LogType_Audit :: LogType+pattern LogType_Audit = LogType' "audit"++pattern LogType_Authenticator :: LogType+pattern LogType_Authenticator = LogType' "authenticator"++pattern LogType_ControllerManager :: LogType+pattern LogType_ControllerManager = LogType' "controllerManager"++pattern LogType_Scheduler :: LogType+pattern LogType_Scheduler = LogType' "scheduler"++{-# COMPLETE+  LogType_Api,+  LogType_Audit,+  LogType_Authenticator,+  LogType_ControllerManager,+  LogType_Scheduler,+  LogType'+  #-}
+ gen/Amazonka/EKS/Types/Logging.hs view
@@ -0,0 +1,82 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.Logging+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.Logging where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.LogSetup+import qualified Amazonka.Prelude as Prelude++-- | An object representing the logging configuration for resources in your+-- cluster.+--+-- /See:/ 'newLogging' smart constructor.+data Logging = Logging'+  { -- | The cluster control plane logging configuration for your cluster.+    clusterLogging :: Prelude.Maybe [LogSetup]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Logging' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterLogging', 'logging_clusterLogging' - The cluster control plane logging configuration for your cluster.+newLogging ::+  Logging+newLogging =+  Logging' {clusterLogging = Prelude.Nothing}++-- | The cluster control plane logging configuration for your cluster.+logging_clusterLogging :: Lens.Lens' Logging (Prelude.Maybe [LogSetup])+logging_clusterLogging = Lens.lens (\Logging' {clusterLogging} -> clusterLogging) (\s@Logging' {} a -> s {clusterLogging = a} :: Logging) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON Logging where+  parseJSON =+    Data.withObject+      "Logging"+      ( \x ->+          Logging'+            Prelude.<$> ( x+                            Data..:? "clusterLogging"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable Logging where+  hashWithSalt _salt Logging' {..} =+    _salt `Prelude.hashWithSalt` clusterLogging++instance Prelude.NFData Logging where+  rnf Logging' {..} = Prelude.rnf clusterLogging++instance Data.ToJSON Logging where+  toJSON Logging' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clusterLogging" Data..=)+              Prelude.<$> clusterLogging+          ]+      )
+ gen/Amazonka/EKS/Types/MarketplaceInformation.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.MarketplaceInformation+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.MarketplaceInformation where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Information about an Amazon EKS add-on from the Amazon Web Services+-- Marketplace.+--+-- /See:/ 'newMarketplaceInformation' smart constructor.+data MarketplaceInformation = MarketplaceInformation'+  { -- | The product ID from the Amazon Web Services Marketplace.+    productId :: Prelude.Maybe Prelude.Text,+    -- | The product URL from the Amazon Web Services Marketplace.+    productUrl :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MarketplaceInformation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'productId', 'marketplaceInformation_productId' - The product ID from the Amazon Web Services Marketplace.+--+-- 'productUrl', 'marketplaceInformation_productUrl' - The product URL from the Amazon Web Services Marketplace.+newMarketplaceInformation ::+  MarketplaceInformation+newMarketplaceInformation =+  MarketplaceInformation'+    { productId =+        Prelude.Nothing,+      productUrl = Prelude.Nothing+    }++-- | The product ID from the Amazon Web Services Marketplace.+marketplaceInformation_productId :: Lens.Lens' MarketplaceInformation (Prelude.Maybe Prelude.Text)+marketplaceInformation_productId = Lens.lens (\MarketplaceInformation' {productId} -> productId) (\s@MarketplaceInformation' {} a -> s {productId = a} :: MarketplaceInformation)++-- | The product URL from the Amazon Web Services Marketplace.+marketplaceInformation_productUrl :: Lens.Lens' MarketplaceInformation (Prelude.Maybe Prelude.Text)+marketplaceInformation_productUrl = Lens.lens (\MarketplaceInformation' {productUrl} -> productUrl) (\s@MarketplaceInformation' {} a -> s {productUrl = a} :: MarketplaceInformation)++instance Data.FromJSON MarketplaceInformation where+  parseJSON =+    Data.withObject+      "MarketplaceInformation"+      ( \x ->+          MarketplaceInformation'+            Prelude.<$> (x Data..:? "productId")+            Prelude.<*> (x Data..:? "productUrl")+      )++instance Prelude.Hashable MarketplaceInformation where+  hashWithSalt _salt MarketplaceInformation' {..} =+    _salt+      `Prelude.hashWithSalt` productId+      `Prelude.hashWithSalt` productUrl++instance Prelude.NFData MarketplaceInformation where+  rnf MarketplaceInformation' {..} =+    Prelude.rnf productId+      `Prelude.seq` Prelude.rnf productUrl
+ gen/Amazonka/EKS/Types/Nodegroup.hs view
@@ -0,0 +1,454 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.Nodegroup+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.Nodegroup where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.AMITypes+import Amazonka.EKS.Types.CapacityTypes+import Amazonka.EKS.Types.LaunchTemplateSpecification+import Amazonka.EKS.Types.NodegroupHealth+import Amazonka.EKS.Types.NodegroupResources+import Amazonka.EKS.Types.NodegroupScalingConfig+import Amazonka.EKS.Types.NodegroupStatus+import Amazonka.EKS.Types.NodegroupUpdateConfig+import Amazonka.EKS.Types.RemoteAccessConfig+import Amazonka.EKS.Types.Taint+import qualified Amazonka.Prelude as Prelude++-- | An object representing an Amazon EKS managed node group.+--+-- /See:/ 'newNodegroup' smart constructor.+data Nodegroup = Nodegroup'+  { -- | If the node group was deployed using a launch template with a custom+    -- AMI, then this is @CUSTOM@. For node groups that weren\'t deployed using+    -- a launch template, this is the AMI type that was specified in the node+    -- group configuration.+    amiType :: Prelude.Maybe AMITypes,+    -- | The capacity type of your managed node group.+    capacityType :: Prelude.Maybe CapacityTypes,+    -- | The name of the cluster that the managed node group resides in.+    clusterName :: Prelude.Maybe Prelude.Text,+    -- | The Unix epoch timestamp in seconds for when the managed node group was+    -- created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | If the node group wasn\'t deployed with a launch template, then this is+    -- the disk size in the node group configuration. If the node group was+    -- deployed with a launch template, then this is @null@.+    diskSize :: Prelude.Maybe Prelude.Int,+    -- | The health status of the node group. If there are issues with your node+    -- group\'s health, they are listed here.+    health :: Prelude.Maybe NodegroupHealth,+    -- | If the node group wasn\'t deployed with a launch template, then this is+    -- the instance type that is associated with the node group. If the node+    -- group was deployed with a launch template, then this is @null@.+    instanceTypes :: Prelude.Maybe [Prelude.Text],+    -- | The Kubernetes labels applied to the nodes in the node group.+    --+    -- Only labels that are applied with the Amazon EKS API are shown here.+    -- There may be other Kubernetes labels applied to the nodes in this group.+    labels :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | If a launch template was used to create the node group, then this is the+    -- launch template that was used.+    launchTemplate :: Prelude.Maybe LaunchTemplateSpecification,+    -- | The Unix epoch timestamp in seconds for when the managed node group was+    -- last modified.+    modifiedAt :: Prelude.Maybe Data.POSIX,+    -- | The IAM role associated with your node group. The Amazon EKS node+    -- @kubelet@ daemon makes calls to Amazon Web Services APIs on your behalf.+    -- Nodes receive permissions for these API calls through an IAM instance+    -- profile and associated policies.+    nodeRole :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) associated with the managed node group.+    nodegroupArn :: Prelude.Maybe Prelude.Text,+    -- | The name associated with an Amazon EKS managed node group.+    nodegroupName :: Prelude.Maybe Prelude.Text,+    -- | If the node group was deployed using a launch template with a custom+    -- AMI, then this is the AMI ID that was specified in the launch template.+    -- For node groups that weren\'t deployed using a launch template, this is+    -- the version of the Amazon EKS optimized AMI that the node group was+    -- deployed with.+    releaseVersion :: Prelude.Maybe Prelude.Text,+    -- | If the node group wasn\'t deployed with a launch template, then this is+    -- the remote access configuration that is associated with the node group.+    -- If the node group was deployed with a launch template, then this is+    -- @null@.+    remoteAccess :: Prelude.Maybe RemoteAccessConfig,+    -- | The resources associated with the node group, such as Auto Scaling+    -- groups and security groups for remote access.+    resources :: Prelude.Maybe NodegroupResources,+    -- | The scaling configuration details for the Auto Scaling group that is+    -- associated with your node group.+    scalingConfig :: Prelude.Maybe NodegroupScalingConfig,+    -- | The current status of the managed node group.+    status :: Prelude.Maybe NodegroupStatus,+    -- | The subnets that were specified for the Auto Scaling group that is+    -- associated with your node group.+    subnets :: Prelude.Maybe [Prelude.Text],+    -- | The metadata applied to the node group to assist with categorization and+    -- organization. Each tag consists of a key and an optional value. You+    -- define both. Node group tags do not propagate to any other resources+    -- associated with the node group, such as the Amazon EC2 instances or+    -- subnets.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The Kubernetes taints to be applied to the nodes in the node group when+    -- they are created. Effect is one of @No_Schedule@, @Prefer_No_Schedule@,+    -- or @No_Execute@. Kubernetes taints can be used together with tolerations+    -- to control how workloads are scheduled to your nodes. For more+    -- information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.+    taints :: Prelude.Maybe [Taint],+    -- | The node group update configuration.+    updateConfig :: Prelude.Maybe NodegroupUpdateConfig,+    -- | The Kubernetes version of the managed node group.+    version :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Nodegroup' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'amiType', 'nodegroup_amiType' - If the node group was deployed using a launch template with a custom+-- AMI, then this is @CUSTOM@. For node groups that weren\'t deployed using+-- a launch template, this is the AMI type that was specified in the node+-- group configuration.+--+-- 'capacityType', 'nodegroup_capacityType' - The capacity type of your managed node group.+--+-- 'clusterName', 'nodegroup_clusterName' - The name of the cluster that the managed node group resides in.+--+-- 'createdAt', 'nodegroup_createdAt' - The Unix epoch timestamp in seconds for when the managed node group was+-- created.+--+-- 'diskSize', 'nodegroup_diskSize' - If the node group wasn\'t deployed with a launch template, then this is+-- the disk size in the node group configuration. If the node group was+-- deployed with a launch template, then this is @null@.+--+-- 'health', 'nodegroup_health' - The health status of the node group. If there are issues with your node+-- group\'s health, they are listed here.+--+-- 'instanceTypes', 'nodegroup_instanceTypes' - If the node group wasn\'t deployed with a launch template, then this is+-- the instance type that is associated with the node group. If the node+-- group was deployed with a launch template, then this is @null@.+--+-- 'labels', 'nodegroup_labels' - The Kubernetes labels applied to the nodes in the node group.+--+-- Only labels that are applied with the Amazon EKS API are shown here.+-- There may be other Kubernetes labels applied to the nodes in this group.+--+-- 'launchTemplate', 'nodegroup_launchTemplate' - If a launch template was used to create the node group, then this is the+-- launch template that was used.+--+-- 'modifiedAt', 'nodegroup_modifiedAt' - The Unix epoch timestamp in seconds for when the managed node group was+-- last modified.+--+-- 'nodeRole', 'nodegroup_nodeRole' - The IAM role associated with your node group. The Amazon EKS node+-- @kubelet@ daemon makes calls to Amazon Web Services APIs on your behalf.+-- Nodes receive permissions for these API calls through an IAM instance+-- profile and associated policies.+--+-- 'nodegroupArn', 'nodegroup_nodegroupArn' - The Amazon Resource Name (ARN) associated with the managed node group.+--+-- 'nodegroupName', 'nodegroup_nodegroupName' - The name associated with an Amazon EKS managed node group.+--+-- 'releaseVersion', 'nodegroup_releaseVersion' - If the node group was deployed using a launch template with a custom+-- AMI, then this is the AMI ID that was specified in the launch template.+-- For node groups that weren\'t deployed using a launch template, this is+-- the version of the Amazon EKS optimized AMI that the node group was+-- deployed with.+--+-- 'remoteAccess', 'nodegroup_remoteAccess' - If the node group wasn\'t deployed with a launch template, then this is+-- the remote access configuration that is associated with the node group.+-- If the node group was deployed with a launch template, then this is+-- @null@.+--+-- 'resources', 'nodegroup_resources' - The resources associated with the node group, such as Auto Scaling+-- groups and security groups for remote access.+--+-- 'scalingConfig', 'nodegroup_scalingConfig' - The scaling configuration details for the Auto Scaling group that is+-- associated with your node group.+--+-- 'status', 'nodegroup_status' - The current status of the managed node group.+--+-- 'subnets', 'nodegroup_subnets' - The subnets that were specified for the Auto Scaling group that is+-- associated with your node group.+--+-- 'tags', 'nodegroup_tags' - The metadata applied to the node group to assist with categorization and+-- organization. Each tag consists of a key and an optional value. You+-- define both. Node group tags do not propagate to any other resources+-- associated with the node group, such as the Amazon EC2 instances or+-- subnets.+--+-- 'taints', 'nodegroup_taints' - The Kubernetes taints to be applied to the nodes in the node group when+-- they are created. Effect is one of @No_Schedule@, @Prefer_No_Schedule@,+-- or @No_Execute@. Kubernetes taints can be used together with tolerations+-- to control how workloads are scheduled to your nodes. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.+--+-- 'updateConfig', 'nodegroup_updateConfig' - The node group update configuration.+--+-- 'version', 'nodegroup_version' - The Kubernetes version of the managed node group.+newNodegroup ::+  Nodegroup+newNodegroup =+  Nodegroup'+    { amiType = Prelude.Nothing,+      capacityType = Prelude.Nothing,+      clusterName = Prelude.Nothing,+      createdAt = Prelude.Nothing,+      diskSize = Prelude.Nothing,+      health = Prelude.Nothing,+      instanceTypes = Prelude.Nothing,+      labels = Prelude.Nothing,+      launchTemplate = Prelude.Nothing,+      modifiedAt = Prelude.Nothing,+      nodeRole = Prelude.Nothing,+      nodegroupArn = Prelude.Nothing,+      nodegroupName = Prelude.Nothing,+      releaseVersion = Prelude.Nothing,+      remoteAccess = Prelude.Nothing,+      resources = Prelude.Nothing,+      scalingConfig = Prelude.Nothing,+      status = Prelude.Nothing,+      subnets = Prelude.Nothing,+      tags = Prelude.Nothing,+      taints = Prelude.Nothing,+      updateConfig = Prelude.Nothing,+      version = Prelude.Nothing+    }++-- | If the node group was deployed using a launch template with a custom+-- AMI, then this is @CUSTOM@. For node groups that weren\'t deployed using+-- a launch template, this is the AMI type that was specified in the node+-- group configuration.+nodegroup_amiType :: Lens.Lens' Nodegroup (Prelude.Maybe AMITypes)+nodegroup_amiType = Lens.lens (\Nodegroup' {amiType} -> amiType) (\s@Nodegroup' {} a -> s {amiType = a} :: Nodegroup)++-- | The capacity type of your managed node group.+nodegroup_capacityType :: Lens.Lens' Nodegroup (Prelude.Maybe CapacityTypes)+nodegroup_capacityType = Lens.lens (\Nodegroup' {capacityType} -> capacityType) (\s@Nodegroup' {} a -> s {capacityType = a} :: Nodegroup)++-- | The name of the cluster that the managed node group resides in.+nodegroup_clusterName :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)+nodegroup_clusterName = Lens.lens (\Nodegroup' {clusterName} -> clusterName) (\s@Nodegroup' {} a -> s {clusterName = a} :: Nodegroup)++-- | The Unix epoch timestamp in seconds for when the managed node group was+-- created.+nodegroup_createdAt :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.UTCTime)+nodegroup_createdAt = Lens.lens (\Nodegroup' {createdAt} -> createdAt) (\s@Nodegroup' {} a -> s {createdAt = a} :: Nodegroup) Prelude.. Lens.mapping Data._Time++-- | If the node group wasn\'t deployed with a launch template, then this is+-- the disk size in the node group configuration. If the node group was+-- deployed with a launch template, then this is @null@.+nodegroup_diskSize :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Int)+nodegroup_diskSize = Lens.lens (\Nodegroup' {diskSize} -> diskSize) (\s@Nodegroup' {} a -> s {diskSize = a} :: Nodegroup)++-- | The health status of the node group. If there are issues with your node+-- group\'s health, they are listed here.+nodegroup_health :: Lens.Lens' Nodegroup (Prelude.Maybe NodegroupHealth)+nodegroup_health = Lens.lens (\Nodegroup' {health} -> health) (\s@Nodegroup' {} a -> s {health = a} :: Nodegroup)++-- | If the node group wasn\'t deployed with a launch template, then this is+-- the instance type that is associated with the node group. If the node+-- group was deployed with a launch template, then this is @null@.+nodegroup_instanceTypes :: Lens.Lens' Nodegroup (Prelude.Maybe [Prelude.Text])+nodegroup_instanceTypes = Lens.lens (\Nodegroup' {instanceTypes} -> instanceTypes) (\s@Nodegroup' {} a -> s {instanceTypes = a} :: Nodegroup) Prelude.. Lens.mapping Lens.coerced++-- | The Kubernetes labels applied to the nodes in the node group.+--+-- Only labels that are applied with the Amazon EKS API are shown here.+-- There may be other Kubernetes labels applied to the nodes in this group.+nodegroup_labels :: Lens.Lens' Nodegroup (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+nodegroup_labels = Lens.lens (\Nodegroup' {labels} -> labels) (\s@Nodegroup' {} a -> s {labels = a} :: Nodegroup) Prelude.. Lens.mapping Lens.coerced++-- | If a launch template was used to create the node group, then this is the+-- launch template that was used.+nodegroup_launchTemplate :: Lens.Lens' Nodegroup (Prelude.Maybe LaunchTemplateSpecification)+nodegroup_launchTemplate = Lens.lens (\Nodegroup' {launchTemplate} -> launchTemplate) (\s@Nodegroup' {} a -> s {launchTemplate = a} :: Nodegroup)++-- | The Unix epoch timestamp in seconds for when the managed node group was+-- last modified.+nodegroup_modifiedAt :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.UTCTime)+nodegroup_modifiedAt = Lens.lens (\Nodegroup' {modifiedAt} -> modifiedAt) (\s@Nodegroup' {} a -> s {modifiedAt = a} :: Nodegroup) Prelude.. Lens.mapping Data._Time++-- | The IAM role associated with your node group. The Amazon EKS node+-- @kubelet@ daemon makes calls to Amazon Web Services APIs on your behalf.+-- Nodes receive permissions for these API calls through an IAM instance+-- profile and associated policies.+nodegroup_nodeRole :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)+nodegroup_nodeRole = Lens.lens (\Nodegroup' {nodeRole} -> nodeRole) (\s@Nodegroup' {} a -> s {nodeRole = a} :: Nodegroup)++-- | The Amazon Resource Name (ARN) associated with the managed node group.+nodegroup_nodegroupArn :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)+nodegroup_nodegroupArn = Lens.lens (\Nodegroup' {nodegroupArn} -> nodegroupArn) (\s@Nodegroup' {} a -> s {nodegroupArn = a} :: Nodegroup)++-- | The name associated with an Amazon EKS managed node group.+nodegroup_nodegroupName :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)+nodegroup_nodegroupName = Lens.lens (\Nodegroup' {nodegroupName} -> nodegroupName) (\s@Nodegroup' {} a -> s {nodegroupName = a} :: Nodegroup)++-- | If the node group was deployed using a launch template with a custom+-- AMI, then this is the AMI ID that was specified in the launch template.+-- For node groups that weren\'t deployed using a launch template, this is+-- the version of the Amazon EKS optimized AMI that the node group was+-- deployed with.+nodegroup_releaseVersion :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)+nodegroup_releaseVersion = Lens.lens (\Nodegroup' {releaseVersion} -> releaseVersion) (\s@Nodegroup' {} a -> s {releaseVersion = a} :: Nodegroup)++-- | If the node group wasn\'t deployed with a launch template, then this is+-- the remote access configuration that is associated with the node group.+-- If the node group was deployed with a launch template, then this is+-- @null@.+nodegroup_remoteAccess :: Lens.Lens' Nodegroup (Prelude.Maybe RemoteAccessConfig)+nodegroup_remoteAccess = Lens.lens (\Nodegroup' {remoteAccess} -> remoteAccess) (\s@Nodegroup' {} a -> s {remoteAccess = a} :: Nodegroup)++-- | The resources associated with the node group, such as Auto Scaling+-- groups and security groups for remote access.+nodegroup_resources :: Lens.Lens' Nodegroup (Prelude.Maybe NodegroupResources)+nodegroup_resources = Lens.lens (\Nodegroup' {resources} -> resources) (\s@Nodegroup' {} a -> s {resources = a} :: Nodegroup)++-- | The scaling configuration details for the Auto Scaling group that is+-- associated with your node group.+nodegroup_scalingConfig :: Lens.Lens' Nodegroup (Prelude.Maybe NodegroupScalingConfig)+nodegroup_scalingConfig = Lens.lens (\Nodegroup' {scalingConfig} -> scalingConfig) (\s@Nodegroup' {} a -> s {scalingConfig = a} :: Nodegroup)++-- | The current status of the managed node group.+nodegroup_status :: Lens.Lens' Nodegroup (Prelude.Maybe NodegroupStatus)+nodegroup_status = Lens.lens (\Nodegroup' {status} -> status) (\s@Nodegroup' {} a -> s {status = a} :: Nodegroup)++-- | The subnets that were specified for the Auto Scaling group that is+-- associated with your node group.+nodegroup_subnets :: Lens.Lens' Nodegroup (Prelude.Maybe [Prelude.Text])+nodegroup_subnets = Lens.lens (\Nodegroup' {subnets} -> subnets) (\s@Nodegroup' {} a -> s {subnets = a} :: Nodegroup) Prelude.. Lens.mapping Lens.coerced++-- | The metadata applied to the node group to assist with categorization and+-- organization. Each tag consists of a key and an optional value. You+-- define both. Node group tags do not propagate to any other resources+-- associated with the node group, such as the Amazon EC2 instances or+-- subnets.+nodegroup_tags :: Lens.Lens' Nodegroup (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+nodegroup_tags = Lens.lens (\Nodegroup' {tags} -> tags) (\s@Nodegroup' {} a -> s {tags = a} :: Nodegroup) Prelude.. Lens.mapping Lens.coerced++-- | The Kubernetes taints to be applied to the nodes in the node group when+-- they are created. Effect is one of @No_Schedule@, @Prefer_No_Schedule@,+-- or @No_Execute@. Kubernetes taints can be used together with tolerations+-- to control how workloads are scheduled to your nodes. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.+nodegroup_taints :: Lens.Lens' Nodegroup (Prelude.Maybe [Taint])+nodegroup_taints = Lens.lens (\Nodegroup' {taints} -> taints) (\s@Nodegroup' {} a -> s {taints = a} :: Nodegroup) Prelude.. Lens.mapping Lens.coerced++-- | The node group update configuration.+nodegroup_updateConfig :: Lens.Lens' Nodegroup (Prelude.Maybe NodegroupUpdateConfig)+nodegroup_updateConfig = Lens.lens (\Nodegroup' {updateConfig} -> updateConfig) (\s@Nodegroup' {} a -> s {updateConfig = a} :: Nodegroup)++-- | The Kubernetes version of the managed node group.+nodegroup_version :: Lens.Lens' Nodegroup (Prelude.Maybe Prelude.Text)+nodegroup_version = Lens.lens (\Nodegroup' {version} -> version) (\s@Nodegroup' {} a -> s {version = a} :: Nodegroup)++instance Data.FromJSON Nodegroup where+  parseJSON =+    Data.withObject+      "Nodegroup"+      ( \x ->+          Nodegroup'+            Prelude.<$> (x Data..:? "amiType")+            Prelude.<*> (x Data..:? "capacityType")+            Prelude.<*> (x Data..:? "clusterName")+            Prelude.<*> (x Data..:? "createdAt")+            Prelude.<*> (x Data..:? "diskSize")+            Prelude.<*> (x Data..:? "health")+            Prelude.<*> (x Data..:? "instanceTypes" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "labels" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "launchTemplate")+            Prelude.<*> (x Data..:? "modifiedAt")+            Prelude.<*> (x Data..:? "nodeRole")+            Prelude.<*> (x Data..:? "nodegroupArn")+            Prelude.<*> (x Data..:? "nodegroupName")+            Prelude.<*> (x Data..:? "releaseVersion")+            Prelude.<*> (x Data..:? "remoteAccess")+            Prelude.<*> (x Data..:? "resources")+            Prelude.<*> (x Data..:? "scalingConfig")+            Prelude.<*> (x Data..:? "status")+            Prelude.<*> (x Data..:? "subnets" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "taints" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "updateConfig")+            Prelude.<*> (x Data..:? "version")+      )++instance Prelude.Hashable Nodegroup where+  hashWithSalt _salt Nodegroup' {..} =+    _salt+      `Prelude.hashWithSalt` amiType+      `Prelude.hashWithSalt` capacityType+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` diskSize+      `Prelude.hashWithSalt` health+      `Prelude.hashWithSalt` instanceTypes+      `Prelude.hashWithSalt` labels+      `Prelude.hashWithSalt` launchTemplate+      `Prelude.hashWithSalt` modifiedAt+      `Prelude.hashWithSalt` nodeRole+      `Prelude.hashWithSalt` nodegroupArn+      `Prelude.hashWithSalt` nodegroupName+      `Prelude.hashWithSalt` releaseVersion+      `Prelude.hashWithSalt` remoteAccess+      `Prelude.hashWithSalt` resources+      `Prelude.hashWithSalt` scalingConfig+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` subnets+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` taints+      `Prelude.hashWithSalt` updateConfig+      `Prelude.hashWithSalt` version++instance Prelude.NFData Nodegroup where+  rnf Nodegroup' {..} =+    Prelude.rnf amiType+      `Prelude.seq` Prelude.rnf capacityType+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf diskSize+      `Prelude.seq` Prelude.rnf health+      `Prelude.seq` Prelude.rnf instanceTypes+      `Prelude.seq` Prelude.rnf labels+      `Prelude.seq` Prelude.rnf launchTemplate+      `Prelude.seq` Prelude.rnf modifiedAt+      `Prelude.seq` Prelude.rnf nodeRole+      `Prelude.seq` Prelude.rnf nodegroupArn+      `Prelude.seq` Prelude.rnf nodegroupName+      `Prelude.seq` Prelude.rnf releaseVersion+      `Prelude.seq` Prelude.rnf remoteAccess+      `Prelude.seq` Prelude.rnf resources+      `Prelude.seq` Prelude.rnf scalingConfig+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf subnets+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf taints+      `Prelude.seq` Prelude.rnf updateConfig+      `Prelude.seq` Prelude.rnf version
+ gen/Amazonka/EKS/Types/NodegroupHealth.hs view
@@ -0,0 +1,69 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.NodegroupHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.NodegroupHealth where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.Issue+import qualified Amazonka.Prelude as Prelude++-- | An object representing the health status of the node group.+--+-- /See:/ 'newNodegroupHealth' smart constructor.+data NodegroupHealth = NodegroupHealth'+  { -- | Any issues that are associated with the node group.+    issues :: Prelude.Maybe [Issue]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'NodegroupHealth' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'issues', 'nodegroupHealth_issues' - Any issues that are associated with the node group.+newNodegroupHealth ::+  NodegroupHealth+newNodegroupHealth =+  NodegroupHealth' {issues = Prelude.Nothing}++-- | Any issues that are associated with the node group.+nodegroupHealth_issues :: Lens.Lens' NodegroupHealth (Prelude.Maybe [Issue])+nodegroupHealth_issues = Lens.lens (\NodegroupHealth' {issues} -> issues) (\s@NodegroupHealth' {} a -> s {issues = a} :: NodegroupHealth) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON NodegroupHealth where+  parseJSON =+    Data.withObject+      "NodegroupHealth"+      ( \x ->+          NodegroupHealth'+            Prelude.<$> (x Data..:? "issues" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable NodegroupHealth where+  hashWithSalt _salt NodegroupHealth' {..} =+    _salt `Prelude.hashWithSalt` issues++instance Prelude.NFData NodegroupHealth where+  rnf NodegroupHealth' {..} = Prelude.rnf issues
+ gen/Amazonka/EKS/Types/NodegroupIssueCode.hs view
@@ -0,0 +1,156 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.NodegroupIssueCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.NodegroupIssueCode+  ( NodegroupIssueCode+      ( ..,+        NodegroupIssueCode_AccessDenied,+        NodegroupIssueCode_AsgInstanceLaunchFailures,+        NodegroupIssueCode_AutoScalingGroupInvalidConfiguration,+        NodegroupIssueCode_AutoScalingGroupNotFound,+        NodegroupIssueCode_ClusterUnreachable,+        NodegroupIssueCode_Ec2LaunchTemplateNotFound,+        NodegroupIssueCode_Ec2LaunchTemplateVersionMismatch,+        NodegroupIssueCode_Ec2SecurityGroupDeletionFailure,+        NodegroupIssueCode_Ec2SecurityGroupNotFound,+        NodegroupIssueCode_Ec2SubnetInvalidConfiguration,+        NodegroupIssueCode_Ec2SubnetMissingIpv6Assignment,+        NodegroupIssueCode_Ec2SubnetNotFound,+        NodegroupIssueCode_IamInstanceProfileNotFound,+        NodegroupIssueCode_IamLimitExceeded,+        NodegroupIssueCode_IamNodeRoleNotFound,+        NodegroupIssueCode_InstanceLimitExceeded,+        NodegroupIssueCode_InsufficientFreeAddresses,+        NodegroupIssueCode_InternalFailure,+        NodegroupIssueCode_NodeCreationFailure+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype NodegroupIssueCode = NodegroupIssueCode'+  { fromNodegroupIssueCode ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern NodegroupIssueCode_AccessDenied :: NodegroupIssueCode+pattern NodegroupIssueCode_AccessDenied = NodegroupIssueCode' "AccessDenied"++pattern NodegroupIssueCode_AsgInstanceLaunchFailures :: NodegroupIssueCode+pattern NodegroupIssueCode_AsgInstanceLaunchFailures = NodegroupIssueCode' "AsgInstanceLaunchFailures"++pattern NodegroupIssueCode_AutoScalingGroupInvalidConfiguration :: NodegroupIssueCode+pattern NodegroupIssueCode_AutoScalingGroupInvalidConfiguration = NodegroupIssueCode' "AutoScalingGroupInvalidConfiguration"++pattern NodegroupIssueCode_AutoScalingGroupNotFound :: NodegroupIssueCode+pattern NodegroupIssueCode_AutoScalingGroupNotFound = NodegroupIssueCode' "AutoScalingGroupNotFound"++pattern NodegroupIssueCode_ClusterUnreachable :: NodegroupIssueCode+pattern NodegroupIssueCode_ClusterUnreachable = NodegroupIssueCode' "ClusterUnreachable"++pattern NodegroupIssueCode_Ec2LaunchTemplateNotFound :: NodegroupIssueCode+pattern NodegroupIssueCode_Ec2LaunchTemplateNotFound = NodegroupIssueCode' "Ec2LaunchTemplateNotFound"++pattern NodegroupIssueCode_Ec2LaunchTemplateVersionMismatch :: NodegroupIssueCode+pattern NodegroupIssueCode_Ec2LaunchTemplateVersionMismatch = NodegroupIssueCode' "Ec2LaunchTemplateVersionMismatch"++pattern NodegroupIssueCode_Ec2SecurityGroupDeletionFailure :: NodegroupIssueCode+pattern NodegroupIssueCode_Ec2SecurityGroupDeletionFailure = NodegroupIssueCode' "Ec2SecurityGroupDeletionFailure"++pattern NodegroupIssueCode_Ec2SecurityGroupNotFound :: NodegroupIssueCode+pattern NodegroupIssueCode_Ec2SecurityGroupNotFound = NodegroupIssueCode' "Ec2SecurityGroupNotFound"++pattern NodegroupIssueCode_Ec2SubnetInvalidConfiguration :: NodegroupIssueCode+pattern NodegroupIssueCode_Ec2SubnetInvalidConfiguration = NodegroupIssueCode' "Ec2SubnetInvalidConfiguration"++pattern NodegroupIssueCode_Ec2SubnetMissingIpv6Assignment :: NodegroupIssueCode+pattern NodegroupIssueCode_Ec2SubnetMissingIpv6Assignment = NodegroupIssueCode' "Ec2SubnetMissingIpv6Assignment"++pattern NodegroupIssueCode_Ec2SubnetNotFound :: NodegroupIssueCode+pattern NodegroupIssueCode_Ec2SubnetNotFound = NodegroupIssueCode' "Ec2SubnetNotFound"++pattern NodegroupIssueCode_IamInstanceProfileNotFound :: NodegroupIssueCode+pattern NodegroupIssueCode_IamInstanceProfileNotFound = NodegroupIssueCode' "IamInstanceProfileNotFound"++pattern NodegroupIssueCode_IamLimitExceeded :: NodegroupIssueCode+pattern NodegroupIssueCode_IamLimitExceeded = NodegroupIssueCode' "IamLimitExceeded"++pattern NodegroupIssueCode_IamNodeRoleNotFound :: NodegroupIssueCode+pattern NodegroupIssueCode_IamNodeRoleNotFound = NodegroupIssueCode' "IamNodeRoleNotFound"++pattern NodegroupIssueCode_InstanceLimitExceeded :: NodegroupIssueCode+pattern NodegroupIssueCode_InstanceLimitExceeded = NodegroupIssueCode' "InstanceLimitExceeded"++pattern NodegroupIssueCode_InsufficientFreeAddresses :: NodegroupIssueCode+pattern NodegroupIssueCode_InsufficientFreeAddresses = NodegroupIssueCode' "InsufficientFreeAddresses"++pattern NodegroupIssueCode_InternalFailure :: NodegroupIssueCode+pattern NodegroupIssueCode_InternalFailure = NodegroupIssueCode' "InternalFailure"++pattern NodegroupIssueCode_NodeCreationFailure :: NodegroupIssueCode+pattern NodegroupIssueCode_NodeCreationFailure = NodegroupIssueCode' "NodeCreationFailure"++{-# COMPLETE+  NodegroupIssueCode_AccessDenied,+  NodegroupIssueCode_AsgInstanceLaunchFailures,+  NodegroupIssueCode_AutoScalingGroupInvalidConfiguration,+  NodegroupIssueCode_AutoScalingGroupNotFound,+  NodegroupIssueCode_ClusterUnreachable,+  NodegroupIssueCode_Ec2LaunchTemplateNotFound,+  NodegroupIssueCode_Ec2LaunchTemplateVersionMismatch,+  NodegroupIssueCode_Ec2SecurityGroupDeletionFailure,+  NodegroupIssueCode_Ec2SecurityGroupNotFound,+  NodegroupIssueCode_Ec2SubnetInvalidConfiguration,+  NodegroupIssueCode_Ec2SubnetMissingIpv6Assignment,+  NodegroupIssueCode_Ec2SubnetNotFound,+  NodegroupIssueCode_IamInstanceProfileNotFound,+  NodegroupIssueCode_IamLimitExceeded,+  NodegroupIssueCode_IamNodeRoleNotFound,+  NodegroupIssueCode_InstanceLimitExceeded,+  NodegroupIssueCode_InsufficientFreeAddresses,+  NodegroupIssueCode_InternalFailure,+  NodegroupIssueCode_NodeCreationFailure,+  NodegroupIssueCode'+  #-}
+ gen/Amazonka/EKS/Types/NodegroupResources.hs view
@@ -0,0 +1,93 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.NodegroupResources+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.NodegroupResources where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.AutoScalingGroup+import qualified Amazonka.Prelude as Prelude++-- | An object representing the resources associated with the node group,+-- such as Auto Scaling groups and security groups for remote access.+--+-- /See:/ 'newNodegroupResources' smart constructor.+data NodegroupResources = NodegroupResources'+  { -- | The Auto Scaling groups associated with the node group.+    autoScalingGroups :: Prelude.Maybe [AutoScalingGroup],+    -- | The remote access security group associated with the node group. This+    -- security group controls SSH access to the nodes.+    remoteAccessSecurityGroup :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'NodegroupResources' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'autoScalingGroups', 'nodegroupResources_autoScalingGroups' - The Auto Scaling groups associated with the node group.+--+-- 'remoteAccessSecurityGroup', 'nodegroupResources_remoteAccessSecurityGroup' - The remote access security group associated with the node group. This+-- security group controls SSH access to the nodes.+newNodegroupResources ::+  NodegroupResources+newNodegroupResources =+  NodegroupResources'+    { autoScalingGroups =+        Prelude.Nothing,+      remoteAccessSecurityGroup = Prelude.Nothing+    }++-- | The Auto Scaling groups associated with the node group.+nodegroupResources_autoScalingGroups :: Lens.Lens' NodegroupResources (Prelude.Maybe [AutoScalingGroup])+nodegroupResources_autoScalingGroups = Lens.lens (\NodegroupResources' {autoScalingGroups} -> autoScalingGroups) (\s@NodegroupResources' {} a -> s {autoScalingGroups = a} :: NodegroupResources) Prelude.. Lens.mapping Lens.coerced++-- | The remote access security group associated with the node group. This+-- security group controls SSH access to the nodes.+nodegroupResources_remoteAccessSecurityGroup :: Lens.Lens' NodegroupResources (Prelude.Maybe Prelude.Text)+nodegroupResources_remoteAccessSecurityGroup = Lens.lens (\NodegroupResources' {remoteAccessSecurityGroup} -> remoteAccessSecurityGroup) (\s@NodegroupResources' {} a -> s {remoteAccessSecurityGroup = a} :: NodegroupResources)++instance Data.FromJSON NodegroupResources where+  parseJSON =+    Data.withObject+      "NodegroupResources"+      ( \x ->+          NodegroupResources'+            Prelude.<$> ( x+                            Data..:? "autoScalingGroups"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "remoteAccessSecurityGroup")+      )++instance Prelude.Hashable NodegroupResources where+  hashWithSalt _salt NodegroupResources' {..} =+    _salt+      `Prelude.hashWithSalt` autoScalingGroups+      `Prelude.hashWithSalt` remoteAccessSecurityGroup++instance Prelude.NFData NodegroupResources where+  rnf NodegroupResources' {..} =+    Prelude.rnf autoScalingGroups+      `Prelude.seq` Prelude.rnf remoteAccessSecurityGroup
+ gen/Amazonka/EKS/Types/NodegroupScalingConfig.hs view
@@ -0,0 +1,179 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.NodegroupScalingConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.NodegroupScalingConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the scaling configuration details for the Auto+-- Scaling group that is associated with your node group. When creating a+-- node group, you must specify all or none of the properties. When+-- updating a node group, you can specify any or none of the properties.+--+-- /See:/ 'newNodegroupScalingConfig' smart constructor.+data NodegroupScalingConfig = NodegroupScalingConfig'+  { -- | The current number of nodes that the managed node group should maintain.+    --+    -- If you use Cluster Autoscaler, you shouldn\'t change the desiredSize+    -- value directly, as this can cause the Cluster Autoscaler to suddenly+    -- scale up or scale down.+    --+    -- Whenever this parameter changes, the number of worker nodes in the node+    -- group is updated to the specified size. If this parameter is given a+    -- value that is smaller than the current number of running worker nodes,+    -- the necessary number of worker nodes are terminated to match the given+    -- value. When using CloudFormation, no action occurs if you remove this+    -- parameter from your CFN template.+    --+    -- This parameter can be different from minSize in some cases, such as when+    -- starting with extra hosts for testing. This parameter can also be+    -- different when you want to start with an estimated number of needed+    -- hosts, but let Cluster Autoscaler reduce the number if there are too+    -- many. When Cluster Autoscaler is used, the desiredSize parameter is+    -- altered by Cluster Autoscaler (but can be out-of-date for short periods+    -- of time). Cluster Autoscaler doesn\'t scale a managed node group lower+    -- than minSize or higher than maxSize.+    desiredSize :: Prelude.Maybe Prelude.Natural,+    -- | The maximum number of nodes that the managed node group can scale out+    -- to. For information about the maximum number that you can specify, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html Amazon EKS service quotas>+    -- in the /Amazon EKS User Guide/.+    maxSize :: Prelude.Maybe Prelude.Natural,+    -- | The minimum number of nodes that the managed node group can scale in to.+    minSize :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'NodegroupScalingConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'desiredSize', 'nodegroupScalingConfig_desiredSize' - The current number of nodes that the managed node group should maintain.+--+-- If you use Cluster Autoscaler, you shouldn\'t change the desiredSize+-- value directly, as this can cause the Cluster Autoscaler to suddenly+-- scale up or scale down.+--+-- Whenever this parameter changes, the number of worker nodes in the node+-- group is updated to the specified size. If this parameter is given a+-- value that is smaller than the current number of running worker nodes,+-- the necessary number of worker nodes are terminated to match the given+-- value. When using CloudFormation, no action occurs if you remove this+-- parameter from your CFN template.+--+-- This parameter can be different from minSize in some cases, such as when+-- starting with extra hosts for testing. This parameter can also be+-- different when you want to start with an estimated number of needed+-- hosts, but let Cluster Autoscaler reduce the number if there are too+-- many. When Cluster Autoscaler is used, the desiredSize parameter is+-- altered by Cluster Autoscaler (but can be out-of-date for short periods+-- of time). Cluster Autoscaler doesn\'t scale a managed node group lower+-- than minSize or higher than maxSize.+--+-- 'maxSize', 'nodegroupScalingConfig_maxSize' - The maximum number of nodes that the managed node group can scale out+-- to. For information about the maximum number that you can specify, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html Amazon EKS service quotas>+-- in the /Amazon EKS User Guide/.+--+-- 'minSize', 'nodegroupScalingConfig_minSize' - The minimum number of nodes that the managed node group can scale in to.+newNodegroupScalingConfig ::+  NodegroupScalingConfig+newNodegroupScalingConfig =+  NodegroupScalingConfig'+    { desiredSize =+        Prelude.Nothing,+      maxSize = Prelude.Nothing,+      minSize = Prelude.Nothing+    }++-- | The current number of nodes that the managed node group should maintain.+--+-- If you use Cluster Autoscaler, you shouldn\'t change the desiredSize+-- value directly, as this can cause the Cluster Autoscaler to suddenly+-- scale up or scale down.+--+-- Whenever this parameter changes, the number of worker nodes in the node+-- group is updated to the specified size. If this parameter is given a+-- value that is smaller than the current number of running worker nodes,+-- the necessary number of worker nodes are terminated to match the given+-- value. When using CloudFormation, no action occurs if you remove this+-- parameter from your CFN template.+--+-- This parameter can be different from minSize in some cases, such as when+-- starting with extra hosts for testing. This parameter can also be+-- different when you want to start with an estimated number of needed+-- hosts, but let Cluster Autoscaler reduce the number if there are too+-- many. When Cluster Autoscaler is used, the desiredSize parameter is+-- altered by Cluster Autoscaler (but can be out-of-date for short periods+-- of time). Cluster Autoscaler doesn\'t scale a managed node group lower+-- than minSize or higher than maxSize.+nodegroupScalingConfig_desiredSize :: Lens.Lens' NodegroupScalingConfig (Prelude.Maybe Prelude.Natural)+nodegroupScalingConfig_desiredSize = Lens.lens (\NodegroupScalingConfig' {desiredSize} -> desiredSize) (\s@NodegroupScalingConfig' {} a -> s {desiredSize = a} :: NodegroupScalingConfig)++-- | The maximum number of nodes that the managed node group can scale out+-- to. For information about the maximum number that you can specify, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html Amazon EKS service quotas>+-- in the /Amazon EKS User Guide/.+nodegroupScalingConfig_maxSize :: Lens.Lens' NodegroupScalingConfig (Prelude.Maybe Prelude.Natural)+nodegroupScalingConfig_maxSize = Lens.lens (\NodegroupScalingConfig' {maxSize} -> maxSize) (\s@NodegroupScalingConfig' {} a -> s {maxSize = a} :: NodegroupScalingConfig)++-- | The minimum number of nodes that the managed node group can scale in to.+nodegroupScalingConfig_minSize :: Lens.Lens' NodegroupScalingConfig (Prelude.Maybe Prelude.Natural)+nodegroupScalingConfig_minSize = Lens.lens (\NodegroupScalingConfig' {minSize} -> minSize) (\s@NodegroupScalingConfig' {} a -> s {minSize = a} :: NodegroupScalingConfig)++instance Data.FromJSON NodegroupScalingConfig where+  parseJSON =+    Data.withObject+      "NodegroupScalingConfig"+      ( \x ->+          NodegroupScalingConfig'+            Prelude.<$> (x Data..:? "desiredSize")+            Prelude.<*> (x Data..:? "maxSize")+            Prelude.<*> (x Data..:? "minSize")+      )++instance Prelude.Hashable NodegroupScalingConfig where+  hashWithSalt _salt NodegroupScalingConfig' {..} =+    _salt+      `Prelude.hashWithSalt` desiredSize+      `Prelude.hashWithSalt` maxSize+      `Prelude.hashWithSalt` minSize++instance Prelude.NFData NodegroupScalingConfig where+  rnf NodegroupScalingConfig' {..} =+    Prelude.rnf desiredSize+      `Prelude.seq` Prelude.rnf maxSize+      `Prelude.seq` Prelude.rnf minSize++instance Data.ToJSON NodegroupScalingConfig where+  toJSON NodegroupScalingConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("desiredSize" Data..=) Prelude.<$> desiredSize,+            ("maxSize" Data..=) Prelude.<$> maxSize,+            ("minSize" Data..=) Prelude.<$> minSize+          ]+      )
+ gen/Amazonka/EKS/Types/NodegroupStatus.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.NodegroupStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.NodegroupStatus+  ( NodegroupStatus+      ( ..,+        NodegroupStatus_ACTIVE,+        NodegroupStatus_CREATE_FAILED,+        NodegroupStatus_CREATING,+        NodegroupStatus_DEGRADED,+        NodegroupStatus_DELETE_FAILED,+        NodegroupStatus_DELETING,+        NodegroupStatus_UPDATING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype NodegroupStatus = NodegroupStatus'+  { fromNodegroupStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern NodegroupStatus_ACTIVE :: NodegroupStatus+pattern NodegroupStatus_ACTIVE = NodegroupStatus' "ACTIVE"++pattern NodegroupStatus_CREATE_FAILED :: NodegroupStatus+pattern NodegroupStatus_CREATE_FAILED = NodegroupStatus' "CREATE_FAILED"++pattern NodegroupStatus_CREATING :: NodegroupStatus+pattern NodegroupStatus_CREATING = NodegroupStatus' "CREATING"++pattern NodegroupStatus_DEGRADED :: NodegroupStatus+pattern NodegroupStatus_DEGRADED = NodegroupStatus' "DEGRADED"++pattern NodegroupStatus_DELETE_FAILED :: NodegroupStatus+pattern NodegroupStatus_DELETE_FAILED = NodegroupStatus' "DELETE_FAILED"++pattern NodegroupStatus_DELETING :: NodegroupStatus+pattern NodegroupStatus_DELETING = NodegroupStatus' "DELETING"++pattern NodegroupStatus_UPDATING :: NodegroupStatus+pattern NodegroupStatus_UPDATING = NodegroupStatus' "UPDATING"++{-# COMPLETE+  NodegroupStatus_ACTIVE,+  NodegroupStatus_CREATE_FAILED,+  NodegroupStatus_CREATING,+  NodegroupStatus_DEGRADED,+  NodegroupStatus_DELETE_FAILED,+  NodegroupStatus_DELETING,+  NodegroupStatus_UPDATING,+  NodegroupStatus'+  #-}
+ gen/Amazonka/EKS/Types/NodegroupUpdateConfig.hs view
@@ -0,0 +1,111 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.NodegroupUpdateConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.NodegroupUpdateConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The node group update configuration.+--+-- /See:/ 'newNodegroupUpdateConfig' smart constructor.+data NodegroupUpdateConfig = NodegroupUpdateConfig'+  { -- | The maximum number of nodes unavailable at once during a version update.+    -- Nodes will be updated in parallel. This value or+    -- @maxUnavailablePercentage@ is required to have a value.The maximum+    -- number is 100.+    maxUnavailable :: Prelude.Maybe Prelude.Natural,+    -- | The maximum percentage of nodes unavailable during a version update.+    -- This percentage of nodes will be updated in parallel, up to 100 nodes at+    -- once. This value or @maxUnavailable@ is required to have a value.+    maxUnavailablePercentage :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'NodegroupUpdateConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxUnavailable', 'nodegroupUpdateConfig_maxUnavailable' - The maximum number of nodes unavailable at once during a version update.+-- Nodes will be updated in parallel. This value or+-- @maxUnavailablePercentage@ is required to have a value.The maximum+-- number is 100.+--+-- 'maxUnavailablePercentage', 'nodegroupUpdateConfig_maxUnavailablePercentage' - The maximum percentage of nodes unavailable during a version update.+-- This percentage of nodes will be updated in parallel, up to 100 nodes at+-- once. This value or @maxUnavailable@ is required to have a value.+newNodegroupUpdateConfig ::+  NodegroupUpdateConfig+newNodegroupUpdateConfig =+  NodegroupUpdateConfig'+    { maxUnavailable =+        Prelude.Nothing,+      maxUnavailablePercentage = Prelude.Nothing+    }++-- | The maximum number of nodes unavailable at once during a version update.+-- Nodes will be updated in parallel. This value or+-- @maxUnavailablePercentage@ is required to have a value.The maximum+-- number is 100.+nodegroupUpdateConfig_maxUnavailable :: Lens.Lens' NodegroupUpdateConfig (Prelude.Maybe Prelude.Natural)+nodegroupUpdateConfig_maxUnavailable = Lens.lens (\NodegroupUpdateConfig' {maxUnavailable} -> maxUnavailable) (\s@NodegroupUpdateConfig' {} a -> s {maxUnavailable = a} :: NodegroupUpdateConfig)++-- | The maximum percentage of nodes unavailable during a version update.+-- This percentage of nodes will be updated in parallel, up to 100 nodes at+-- once. This value or @maxUnavailable@ is required to have a value.+nodegroupUpdateConfig_maxUnavailablePercentage :: Lens.Lens' NodegroupUpdateConfig (Prelude.Maybe Prelude.Natural)+nodegroupUpdateConfig_maxUnavailablePercentage = Lens.lens (\NodegroupUpdateConfig' {maxUnavailablePercentage} -> maxUnavailablePercentage) (\s@NodegroupUpdateConfig' {} a -> s {maxUnavailablePercentage = a} :: NodegroupUpdateConfig)++instance Data.FromJSON NodegroupUpdateConfig where+  parseJSON =+    Data.withObject+      "NodegroupUpdateConfig"+      ( \x ->+          NodegroupUpdateConfig'+            Prelude.<$> (x Data..:? "maxUnavailable")+            Prelude.<*> (x Data..:? "maxUnavailablePercentage")+      )++instance Prelude.Hashable NodegroupUpdateConfig where+  hashWithSalt _salt NodegroupUpdateConfig' {..} =+    _salt+      `Prelude.hashWithSalt` maxUnavailable+      `Prelude.hashWithSalt` maxUnavailablePercentage++instance Prelude.NFData NodegroupUpdateConfig where+  rnf NodegroupUpdateConfig' {..} =+    Prelude.rnf maxUnavailable+      `Prelude.seq` Prelude.rnf maxUnavailablePercentage++instance Data.ToJSON NodegroupUpdateConfig where+  toJSON NodegroupUpdateConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxUnavailable" Data..=)+              Prelude.<$> maxUnavailable,+            ("maxUnavailablePercentage" Data..=)+              Prelude.<$> maxUnavailablePercentage+          ]+      )
+ gen/Amazonka/EKS/Types/OIDC.hs view
@@ -0,0 +1,65 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.OIDC+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.OIDC where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the <https://openid.net/connect/ OpenID Connect>+-- (OIDC) identity provider information for the cluster.+--+-- /See:/ 'newOIDC' smart constructor.+data OIDC = OIDC'+  { -- | The issuer URL for the OIDC identity provider.+    issuer :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OIDC' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'issuer', 'oidc_issuer' - The issuer URL for the OIDC identity provider.+newOIDC ::+  OIDC+newOIDC = OIDC' {issuer = Prelude.Nothing}++-- | The issuer URL for the OIDC identity provider.+oidc_issuer :: Lens.Lens' OIDC (Prelude.Maybe Prelude.Text)+oidc_issuer = Lens.lens (\OIDC' {issuer} -> issuer) (\s@OIDC' {} a -> s {issuer = a} :: OIDC)++instance Data.FromJSON OIDC where+  parseJSON =+    Data.withObject+      "OIDC"+      (\x -> OIDC' Prelude.<$> (x Data..:? "issuer"))++instance Prelude.Hashable OIDC where+  hashWithSalt _salt OIDC' {..} =+    _salt `Prelude.hashWithSalt` issuer++instance Prelude.NFData OIDC where+  rnf OIDC' {..} = Prelude.rnf issuer
+ gen/Amazonka/EKS/Types/OidcIdentityProviderConfig.hs view
@@ -0,0 +1,240 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.OidcIdentityProviderConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.OidcIdentityProviderConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.ConfigStatus+import qualified Amazonka.Prelude as Prelude++-- | An object representing the configuration for an OpenID Connect (OIDC)+-- identity provider.+--+-- /See:/ 'newOidcIdentityProviderConfig' smart constructor.+data OidcIdentityProviderConfig = OidcIdentityProviderConfig'+  { -- | This is also known as /audience/. The ID of the client application that+    -- makes authentication requests to the OIDC identity provider.+    clientId :: Prelude.Maybe Prelude.Text,+    -- | The cluster that the configuration is associated to.+    clusterName :: Prelude.Maybe Prelude.Text,+    -- | The JSON web token (JWT) claim that the provider uses to return your+    -- groups.+    groupsClaim :: Prelude.Maybe Prelude.Text,+    -- | The prefix that is prepended to group claims to prevent clashes with+    -- existing names (such as @system:@ groups). For example, the+    -- value@ oidc:@ creates group names like @oidc:engineering@ and+    -- @oidc:infra@. The prefix can\'t contain @system:@+    groupsPrefix :: Prelude.Maybe Prelude.Text,+    -- | The ARN of the configuration.+    identityProviderConfigArn :: Prelude.Maybe Prelude.Text,+    -- | The name of the configuration.+    identityProviderConfigName :: Prelude.Maybe Prelude.Text,+    -- | The URL of the OIDC identity provider that allows the API server to+    -- discover public signing keys for verifying tokens.+    issuerUrl :: Prelude.Maybe Prelude.Text,+    -- | The key-value pairs that describe required claims in the identity token.+    -- If set, each claim is verified to be present in the token with a+    -- matching value.+    requiredClaims :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The status of the OIDC identity provider.+    status :: Prelude.Maybe ConfigStatus,+    -- | The metadata to apply to the provider configuration to assist with+    -- categorization and organization. Each tag consists of a key and an+    -- optional value. You define both.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The JSON Web token (JWT) claim that is used as the username.+    usernameClaim :: Prelude.Maybe Prelude.Text,+    -- | The prefix that is prepended to username claims to prevent clashes with+    -- existing names. The prefix can\'t contain @system:@+    usernamePrefix :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OidcIdentityProviderConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientId', 'oidcIdentityProviderConfig_clientId' - This is also known as /audience/. The ID of the client application that+-- makes authentication requests to the OIDC identity provider.+--+-- 'clusterName', 'oidcIdentityProviderConfig_clusterName' - The cluster that the configuration is associated to.+--+-- 'groupsClaim', 'oidcIdentityProviderConfig_groupsClaim' - The JSON web token (JWT) claim that the provider uses to return your+-- groups.+--+-- 'groupsPrefix', 'oidcIdentityProviderConfig_groupsPrefix' - The prefix that is prepended to group claims to prevent clashes with+-- existing names (such as @system:@ groups). For example, the+-- value@ oidc:@ creates group names like @oidc:engineering@ and+-- @oidc:infra@. The prefix can\'t contain @system:@+--+-- 'identityProviderConfigArn', 'oidcIdentityProviderConfig_identityProviderConfigArn' - The ARN of the configuration.+--+-- 'identityProviderConfigName', 'oidcIdentityProviderConfig_identityProviderConfigName' - The name of the configuration.+--+-- 'issuerUrl', 'oidcIdentityProviderConfig_issuerUrl' - The URL of the OIDC identity provider that allows the API server to+-- discover public signing keys for verifying tokens.+--+-- 'requiredClaims', 'oidcIdentityProviderConfig_requiredClaims' - The key-value pairs that describe required claims in the identity token.+-- If set, each claim is verified to be present in the token with a+-- matching value.+--+-- 'status', 'oidcIdentityProviderConfig_status' - The status of the OIDC identity provider.+--+-- 'tags', 'oidcIdentityProviderConfig_tags' - The metadata to apply to the provider configuration to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value. You define both.+--+-- 'usernameClaim', 'oidcIdentityProviderConfig_usernameClaim' - The JSON Web token (JWT) claim that is used as the username.+--+-- 'usernamePrefix', 'oidcIdentityProviderConfig_usernamePrefix' - The prefix that is prepended to username claims to prevent clashes with+-- existing names. The prefix can\'t contain @system:@+newOidcIdentityProviderConfig ::+  OidcIdentityProviderConfig+newOidcIdentityProviderConfig =+  OidcIdentityProviderConfig'+    { clientId =+        Prelude.Nothing,+      clusterName = Prelude.Nothing,+      groupsClaim = Prelude.Nothing,+      groupsPrefix = Prelude.Nothing,+      identityProviderConfigArn = Prelude.Nothing,+      identityProviderConfigName = Prelude.Nothing,+      issuerUrl = Prelude.Nothing,+      requiredClaims = Prelude.Nothing,+      status = Prelude.Nothing,+      tags = Prelude.Nothing,+      usernameClaim = Prelude.Nothing,+      usernamePrefix = Prelude.Nothing+    }++-- | This is also known as /audience/. The ID of the client application that+-- makes authentication requests to the OIDC identity provider.+oidcIdentityProviderConfig_clientId :: Lens.Lens' OidcIdentityProviderConfig (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfig_clientId = Lens.lens (\OidcIdentityProviderConfig' {clientId} -> clientId) (\s@OidcIdentityProviderConfig' {} a -> s {clientId = a} :: OidcIdentityProviderConfig)++-- | The cluster that the configuration is associated to.+oidcIdentityProviderConfig_clusterName :: Lens.Lens' OidcIdentityProviderConfig (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfig_clusterName = Lens.lens (\OidcIdentityProviderConfig' {clusterName} -> clusterName) (\s@OidcIdentityProviderConfig' {} a -> s {clusterName = a} :: OidcIdentityProviderConfig)++-- | The JSON web token (JWT) claim that the provider uses to return your+-- groups.+oidcIdentityProviderConfig_groupsClaim :: Lens.Lens' OidcIdentityProviderConfig (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfig_groupsClaim = Lens.lens (\OidcIdentityProviderConfig' {groupsClaim} -> groupsClaim) (\s@OidcIdentityProviderConfig' {} a -> s {groupsClaim = a} :: OidcIdentityProviderConfig)++-- | The prefix that is prepended to group claims to prevent clashes with+-- existing names (such as @system:@ groups). For example, the+-- value@ oidc:@ creates group names like @oidc:engineering@ and+-- @oidc:infra@. The prefix can\'t contain @system:@+oidcIdentityProviderConfig_groupsPrefix :: Lens.Lens' OidcIdentityProviderConfig (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfig_groupsPrefix = Lens.lens (\OidcIdentityProviderConfig' {groupsPrefix} -> groupsPrefix) (\s@OidcIdentityProviderConfig' {} a -> s {groupsPrefix = a} :: OidcIdentityProviderConfig)++-- | The ARN of the configuration.+oidcIdentityProviderConfig_identityProviderConfigArn :: Lens.Lens' OidcIdentityProviderConfig (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfig_identityProviderConfigArn = Lens.lens (\OidcIdentityProviderConfig' {identityProviderConfigArn} -> identityProviderConfigArn) (\s@OidcIdentityProviderConfig' {} a -> s {identityProviderConfigArn = a} :: OidcIdentityProviderConfig)++-- | The name of the configuration.+oidcIdentityProviderConfig_identityProviderConfigName :: Lens.Lens' OidcIdentityProviderConfig (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfig_identityProviderConfigName = Lens.lens (\OidcIdentityProviderConfig' {identityProviderConfigName} -> identityProviderConfigName) (\s@OidcIdentityProviderConfig' {} a -> s {identityProviderConfigName = a} :: OidcIdentityProviderConfig)++-- | The URL of the OIDC identity provider that allows the API server to+-- discover public signing keys for verifying tokens.+oidcIdentityProviderConfig_issuerUrl :: Lens.Lens' OidcIdentityProviderConfig (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfig_issuerUrl = Lens.lens (\OidcIdentityProviderConfig' {issuerUrl} -> issuerUrl) (\s@OidcIdentityProviderConfig' {} a -> s {issuerUrl = a} :: OidcIdentityProviderConfig)++-- | The key-value pairs that describe required claims in the identity token.+-- If set, each claim is verified to be present in the token with a+-- matching value.+oidcIdentityProviderConfig_requiredClaims :: Lens.Lens' OidcIdentityProviderConfig (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+oidcIdentityProviderConfig_requiredClaims = Lens.lens (\OidcIdentityProviderConfig' {requiredClaims} -> requiredClaims) (\s@OidcIdentityProviderConfig' {} a -> s {requiredClaims = a} :: OidcIdentityProviderConfig) Prelude.. Lens.mapping Lens.coerced++-- | The status of the OIDC identity provider.+oidcIdentityProviderConfig_status :: Lens.Lens' OidcIdentityProviderConfig (Prelude.Maybe ConfigStatus)+oidcIdentityProviderConfig_status = Lens.lens (\OidcIdentityProviderConfig' {status} -> status) (\s@OidcIdentityProviderConfig' {} a -> s {status = a} :: OidcIdentityProviderConfig)++-- | The metadata to apply to the provider configuration to assist with+-- categorization and organization. Each tag consists of a key and an+-- optional value. You define both.+oidcIdentityProviderConfig_tags :: Lens.Lens' OidcIdentityProviderConfig (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+oidcIdentityProviderConfig_tags = Lens.lens (\OidcIdentityProviderConfig' {tags} -> tags) (\s@OidcIdentityProviderConfig' {} a -> s {tags = a} :: OidcIdentityProviderConfig) Prelude.. Lens.mapping Lens.coerced++-- | The JSON Web token (JWT) claim that is used as the username.+oidcIdentityProviderConfig_usernameClaim :: Lens.Lens' OidcIdentityProviderConfig (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfig_usernameClaim = Lens.lens (\OidcIdentityProviderConfig' {usernameClaim} -> usernameClaim) (\s@OidcIdentityProviderConfig' {} a -> s {usernameClaim = a} :: OidcIdentityProviderConfig)++-- | The prefix that is prepended to username claims to prevent clashes with+-- existing names. The prefix can\'t contain @system:@+oidcIdentityProviderConfig_usernamePrefix :: Lens.Lens' OidcIdentityProviderConfig (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfig_usernamePrefix = Lens.lens (\OidcIdentityProviderConfig' {usernamePrefix} -> usernamePrefix) (\s@OidcIdentityProviderConfig' {} a -> s {usernamePrefix = a} :: OidcIdentityProviderConfig)++instance Data.FromJSON OidcIdentityProviderConfig where+  parseJSON =+    Data.withObject+      "OidcIdentityProviderConfig"+      ( \x ->+          OidcIdentityProviderConfig'+            Prelude.<$> (x Data..:? "clientId")+            Prelude.<*> (x Data..:? "clusterName")+            Prelude.<*> (x Data..:? "groupsClaim")+            Prelude.<*> (x Data..:? "groupsPrefix")+            Prelude.<*> (x Data..:? "identityProviderConfigArn")+            Prelude.<*> (x Data..:? "identityProviderConfigName")+            Prelude.<*> (x Data..:? "issuerUrl")+            Prelude.<*> (x Data..:? "requiredClaims" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "status")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "usernameClaim")+            Prelude.<*> (x Data..:? "usernamePrefix")+      )++instance Prelude.Hashable OidcIdentityProviderConfig where+  hashWithSalt _salt OidcIdentityProviderConfig' {..} =+    _salt+      `Prelude.hashWithSalt` clientId+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` groupsClaim+      `Prelude.hashWithSalt` groupsPrefix+      `Prelude.hashWithSalt` identityProviderConfigArn+      `Prelude.hashWithSalt` identityProviderConfigName+      `Prelude.hashWithSalt` issuerUrl+      `Prelude.hashWithSalt` requiredClaims+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` usernameClaim+      `Prelude.hashWithSalt` usernamePrefix++instance Prelude.NFData OidcIdentityProviderConfig where+  rnf OidcIdentityProviderConfig' {..} =+    Prelude.rnf clientId+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf groupsClaim+      `Prelude.seq` Prelude.rnf groupsPrefix+      `Prelude.seq` Prelude.rnf identityProviderConfigArn+      `Prelude.seq` Prelude.rnf identityProviderConfigName+      `Prelude.seq` Prelude.rnf issuerUrl+      `Prelude.seq` Prelude.rnf requiredClaims+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf usernameClaim+      `Prelude.seq` Prelude.rnf usernamePrefix
+ gen/Amazonka/EKS/Types/OidcIdentityProviderConfigRequest.hs view
@@ -0,0 +1,258 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.OidcIdentityProviderConfigRequest+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.OidcIdentityProviderConfigRequest where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing an OpenID Connect (OIDC) configuration. Before+-- associating an OIDC identity provider to your cluster, review the+-- considerations in+-- <https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html Authenticating users for your cluster from an OpenID Connect identity provider>+-- in the /Amazon EKS User Guide/.+--+-- /See:/ 'newOidcIdentityProviderConfigRequest' smart constructor.+data OidcIdentityProviderConfigRequest = OidcIdentityProviderConfigRequest'+  { -- | The JWT claim that the provider uses to return your groups.+    groupsClaim :: Prelude.Maybe Prelude.Text,+    -- | The prefix that is prepended to group claims to prevent clashes with+    -- existing names (such as @system:@ groups). For example, the+    -- value@ oidc:@ will create group names like @oidc:engineering@ and+    -- @oidc:infra@.+    groupsPrefix :: Prelude.Maybe Prelude.Text,+    -- | The key value pairs that describe required claims in the identity token.+    -- If set, each claim is verified to be present in the token with a+    -- matching value. For the maximum number of claims that you can require,+    -- see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html Amazon EKS service quotas>+    -- in the /Amazon EKS User Guide/.+    requiredClaims :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The JSON Web Token (JWT) claim to use as the username. The default is+    -- @sub@, which is expected to be a unique identifier of the end user. You+    -- can choose other claims, such as @email@ or @name@, depending on the+    -- OpenID identity provider. Claims other than @email@ are prefixed with+    -- the issuer URL to prevent naming clashes with other plug-ins.+    usernameClaim :: Prelude.Maybe Prelude.Text,+    -- | The prefix that is prepended to username claims to prevent clashes with+    -- existing names. If you do not provide this field, and @username@ is a+    -- value other than @email@, the prefix defaults to @issuerurl#@. You can+    -- use the value @-@ to disable all prefixing.+    usernamePrefix :: Prelude.Maybe Prelude.Text,+    -- | The name of the OIDC provider configuration.+    identityProviderConfigName :: Prelude.Text,+    -- | The URL of the OpenID identity provider that allows the API server to+    -- discover public signing keys for verifying tokens. The URL must begin+    -- with @https:\/\/@ and should correspond to the @iss@ claim in the+    -- provider\'s OIDC ID tokens. Per the OIDC standard, path components are+    -- allowed but query parameters are not. Typically the URL consists of only+    -- a hostname, like @https:\/\/server.example.org@ or+    -- @https:\/\/example.com@. This URL should point to the level below+    -- @.well-known\/openid-configuration@ and must be publicly accessible over+    -- the internet.+    issuerUrl :: Prelude.Text,+    -- | This is also known as /audience/. The ID for the client application that+    -- makes authentication requests to the OpenID identity provider.+    clientId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OidcIdentityProviderConfigRequest' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'groupsClaim', 'oidcIdentityProviderConfigRequest_groupsClaim' - The JWT claim that the provider uses to return your groups.+--+-- 'groupsPrefix', 'oidcIdentityProviderConfigRequest_groupsPrefix' - The prefix that is prepended to group claims to prevent clashes with+-- existing names (such as @system:@ groups). For example, the+-- value@ oidc:@ will create group names like @oidc:engineering@ and+-- @oidc:infra@.+--+-- 'requiredClaims', 'oidcIdentityProviderConfigRequest_requiredClaims' - The key value pairs that describe required claims in the identity token.+-- If set, each claim is verified to be present in the token with a+-- matching value. For the maximum number of claims that you can require,+-- see+-- <https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html Amazon EKS service quotas>+-- in the /Amazon EKS User Guide/.+--+-- 'usernameClaim', 'oidcIdentityProviderConfigRequest_usernameClaim' - The JSON Web Token (JWT) claim to use as the username. The default is+-- @sub@, which is expected to be a unique identifier of the end user. You+-- can choose other claims, such as @email@ or @name@, depending on the+-- OpenID identity provider. Claims other than @email@ are prefixed with+-- the issuer URL to prevent naming clashes with other plug-ins.+--+-- 'usernamePrefix', 'oidcIdentityProviderConfigRequest_usernamePrefix' - The prefix that is prepended to username claims to prevent clashes with+-- existing names. If you do not provide this field, and @username@ is a+-- value other than @email@, the prefix defaults to @issuerurl#@. You can+-- use the value @-@ to disable all prefixing.+--+-- 'identityProviderConfigName', 'oidcIdentityProviderConfigRequest_identityProviderConfigName' - The name of the OIDC provider configuration.+--+-- 'issuerUrl', 'oidcIdentityProviderConfigRequest_issuerUrl' - The URL of the OpenID identity provider that allows the API server to+-- discover public signing keys for verifying tokens. The URL must begin+-- with @https:\/\/@ and should correspond to the @iss@ claim in the+-- provider\'s OIDC ID tokens. Per the OIDC standard, path components are+-- allowed but query parameters are not. Typically the URL consists of only+-- a hostname, like @https:\/\/server.example.org@ or+-- @https:\/\/example.com@. This URL should point to the level below+-- @.well-known\/openid-configuration@ and must be publicly accessible over+-- the internet.+--+-- 'clientId', 'oidcIdentityProviderConfigRequest_clientId' - This is also known as /audience/. The ID for the client application that+-- makes authentication requests to the OpenID identity provider.+newOidcIdentityProviderConfigRequest ::+  -- | 'identityProviderConfigName'+  Prelude.Text ->+  -- | 'issuerUrl'+  Prelude.Text ->+  -- | 'clientId'+  Prelude.Text ->+  OidcIdentityProviderConfigRequest+newOidcIdentityProviderConfigRequest+  pIdentityProviderConfigName_+  pIssuerUrl_+  pClientId_ =+    OidcIdentityProviderConfigRequest'+      { groupsClaim =+          Prelude.Nothing,+        groupsPrefix = Prelude.Nothing,+        requiredClaims = Prelude.Nothing,+        usernameClaim = Prelude.Nothing,+        usernamePrefix = Prelude.Nothing,+        identityProviderConfigName =+          pIdentityProviderConfigName_,+        issuerUrl = pIssuerUrl_,+        clientId = pClientId_+      }++-- | The JWT claim that the provider uses to return your groups.+oidcIdentityProviderConfigRequest_groupsClaim :: Lens.Lens' OidcIdentityProviderConfigRequest (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfigRequest_groupsClaim = Lens.lens (\OidcIdentityProviderConfigRequest' {groupsClaim} -> groupsClaim) (\s@OidcIdentityProviderConfigRequest' {} a -> s {groupsClaim = a} :: OidcIdentityProviderConfigRequest)++-- | The prefix that is prepended to group claims to prevent clashes with+-- existing names (such as @system:@ groups). For example, the+-- value@ oidc:@ will create group names like @oidc:engineering@ and+-- @oidc:infra@.+oidcIdentityProviderConfigRequest_groupsPrefix :: Lens.Lens' OidcIdentityProviderConfigRequest (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfigRequest_groupsPrefix = Lens.lens (\OidcIdentityProviderConfigRequest' {groupsPrefix} -> groupsPrefix) (\s@OidcIdentityProviderConfigRequest' {} a -> s {groupsPrefix = a} :: OidcIdentityProviderConfigRequest)++-- | The key value pairs that describe required claims in the identity token.+-- If set, each claim is verified to be present in the token with a+-- matching value. For the maximum number of claims that you can require,+-- see+-- <https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html Amazon EKS service quotas>+-- in the /Amazon EKS User Guide/.+oidcIdentityProviderConfigRequest_requiredClaims :: Lens.Lens' OidcIdentityProviderConfigRequest (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+oidcIdentityProviderConfigRequest_requiredClaims = Lens.lens (\OidcIdentityProviderConfigRequest' {requiredClaims} -> requiredClaims) (\s@OidcIdentityProviderConfigRequest' {} a -> s {requiredClaims = a} :: OidcIdentityProviderConfigRequest) Prelude.. Lens.mapping Lens.coerced++-- | The JSON Web Token (JWT) claim to use as the username. The default is+-- @sub@, which is expected to be a unique identifier of the end user. You+-- can choose other claims, such as @email@ or @name@, depending on the+-- OpenID identity provider. Claims other than @email@ are prefixed with+-- the issuer URL to prevent naming clashes with other plug-ins.+oidcIdentityProviderConfigRequest_usernameClaim :: Lens.Lens' OidcIdentityProviderConfigRequest (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfigRequest_usernameClaim = Lens.lens (\OidcIdentityProviderConfigRequest' {usernameClaim} -> usernameClaim) (\s@OidcIdentityProviderConfigRequest' {} a -> s {usernameClaim = a} :: OidcIdentityProviderConfigRequest)++-- | The prefix that is prepended to username claims to prevent clashes with+-- existing names. If you do not provide this field, and @username@ is a+-- value other than @email@, the prefix defaults to @issuerurl#@. You can+-- use the value @-@ to disable all prefixing.+oidcIdentityProviderConfigRequest_usernamePrefix :: Lens.Lens' OidcIdentityProviderConfigRequest (Prelude.Maybe Prelude.Text)+oidcIdentityProviderConfigRequest_usernamePrefix = Lens.lens (\OidcIdentityProviderConfigRequest' {usernamePrefix} -> usernamePrefix) (\s@OidcIdentityProviderConfigRequest' {} a -> s {usernamePrefix = a} :: OidcIdentityProviderConfigRequest)++-- | The name of the OIDC provider configuration.+oidcIdentityProviderConfigRequest_identityProviderConfigName :: Lens.Lens' OidcIdentityProviderConfigRequest Prelude.Text+oidcIdentityProviderConfigRequest_identityProviderConfigName = Lens.lens (\OidcIdentityProviderConfigRequest' {identityProviderConfigName} -> identityProviderConfigName) (\s@OidcIdentityProviderConfigRequest' {} a -> s {identityProviderConfigName = a} :: OidcIdentityProviderConfigRequest)++-- | The URL of the OpenID identity provider that allows the API server to+-- discover public signing keys for verifying tokens. The URL must begin+-- with @https:\/\/@ and should correspond to the @iss@ claim in the+-- provider\'s OIDC ID tokens. Per the OIDC standard, path components are+-- allowed but query parameters are not. Typically the URL consists of only+-- a hostname, like @https:\/\/server.example.org@ or+-- @https:\/\/example.com@. This URL should point to the level below+-- @.well-known\/openid-configuration@ and must be publicly accessible over+-- the internet.+oidcIdentityProviderConfigRequest_issuerUrl :: Lens.Lens' OidcIdentityProviderConfigRequest Prelude.Text+oidcIdentityProviderConfigRequest_issuerUrl = Lens.lens (\OidcIdentityProviderConfigRequest' {issuerUrl} -> issuerUrl) (\s@OidcIdentityProviderConfigRequest' {} a -> s {issuerUrl = a} :: OidcIdentityProviderConfigRequest)++-- | This is also known as /audience/. The ID for the client application that+-- makes authentication requests to the OpenID identity provider.+oidcIdentityProviderConfigRequest_clientId :: Lens.Lens' OidcIdentityProviderConfigRequest Prelude.Text+oidcIdentityProviderConfigRequest_clientId = Lens.lens (\OidcIdentityProviderConfigRequest' {clientId} -> clientId) (\s@OidcIdentityProviderConfigRequest' {} a -> s {clientId = a} :: OidcIdentityProviderConfigRequest)++instance+  Prelude.Hashable+    OidcIdentityProviderConfigRequest+  where+  hashWithSalt+    _salt+    OidcIdentityProviderConfigRequest' {..} =+      _salt+        `Prelude.hashWithSalt` groupsClaim+        `Prelude.hashWithSalt` groupsPrefix+        `Prelude.hashWithSalt` requiredClaims+        `Prelude.hashWithSalt` usernameClaim+        `Prelude.hashWithSalt` usernamePrefix+        `Prelude.hashWithSalt` identityProviderConfigName+        `Prelude.hashWithSalt` issuerUrl+        `Prelude.hashWithSalt` clientId++instance+  Prelude.NFData+    OidcIdentityProviderConfigRequest+  where+  rnf OidcIdentityProviderConfigRequest' {..} =+    Prelude.rnf groupsClaim+      `Prelude.seq` Prelude.rnf groupsPrefix+      `Prelude.seq` Prelude.rnf requiredClaims+      `Prelude.seq` Prelude.rnf usernameClaim+      `Prelude.seq` Prelude.rnf usernamePrefix+      `Prelude.seq` Prelude.rnf identityProviderConfigName+      `Prelude.seq` Prelude.rnf issuerUrl+      `Prelude.seq` Prelude.rnf clientId++instance+  Data.ToJSON+    OidcIdentityProviderConfigRequest+  where+  toJSON OidcIdentityProviderConfigRequest' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("groupsClaim" Data..=) Prelude.<$> groupsClaim,+            ("groupsPrefix" Data..=) Prelude.<$> groupsPrefix,+            ("requiredClaims" Data..=)+              Prelude.<$> requiredClaims,+            ("usernameClaim" Data..=) Prelude.<$> usernameClaim,+            ("usernamePrefix" Data..=)+              Prelude.<$> usernamePrefix,+            Prelude.Just+              ( "identityProviderConfigName"+                  Data..= identityProviderConfigName+              ),+            Prelude.Just ("issuerUrl" Data..= issuerUrl),+            Prelude.Just ("clientId" Data..= clientId)+          ]+      )
+ gen/Amazonka/EKS/Types/OutpostConfigRequest.hs view
@@ -0,0 +1,147 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.OutpostConfigRequest+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.OutpostConfigRequest where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.ControlPlanePlacementRequest+import qualified Amazonka.Prelude as Prelude++-- | The configuration of your local Amazon EKS cluster on an Amazon Web+-- Services Outpost. Before creating a cluster on an Outpost, review+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-local-cluster-create.html Creating a local cluster on an Outpost>+-- in the /Amazon EKS User Guide/. This API isn\'t available for Amazon EKS+-- clusters on the Amazon Web Services cloud.+--+-- /See:/ 'newOutpostConfigRequest' smart constructor.+data OutpostConfigRequest = OutpostConfigRequest'+  { -- | An object representing the placement configuration for all the control+    -- plane instances of your local Amazon EKS cluster on an Amazon Web+    -- Services Outpost. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html Capacity considerations>+    -- in the /Amazon EKS User Guide/.+    controlPlanePlacement :: Prelude.Maybe ControlPlanePlacementRequest,+    -- | The ARN of the Outpost that you want to use for your local Amazon EKS+    -- cluster on Outposts. Only a single Outpost ARN is supported.+    outpostArns :: [Prelude.Text],+    -- | The Amazon EC2 instance type that you want to use for your local Amazon+    -- EKS cluster on Outposts. Choose an instance type based on the number of+    -- nodes that your cluster will have. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html Capacity considerations>+    -- in the /Amazon EKS User Guide/.+    --+    -- The instance type that you specify is used for all Kubernetes control+    -- plane instances. The instance type can\'t be changed after cluster+    -- creation. The control plane is not automatically scaled by Amazon EKS.+    controlPlaneInstanceType :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OutpostConfigRequest' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'controlPlanePlacement', 'outpostConfigRequest_controlPlanePlacement' - An object representing the placement configuration for all the control+-- plane instances of your local Amazon EKS cluster on an Amazon Web+-- Services Outpost. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html Capacity considerations>+-- in the /Amazon EKS User Guide/.+--+-- 'outpostArns', 'outpostConfigRequest_outpostArns' - The ARN of the Outpost that you want to use for your local Amazon EKS+-- cluster on Outposts. Only a single Outpost ARN is supported.+--+-- 'controlPlaneInstanceType', 'outpostConfigRequest_controlPlaneInstanceType' - The Amazon EC2 instance type that you want to use for your local Amazon+-- EKS cluster on Outposts. Choose an instance type based on the number of+-- nodes that your cluster will have. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html Capacity considerations>+-- in the /Amazon EKS User Guide/.+--+-- The instance type that you specify is used for all Kubernetes control+-- plane instances. The instance type can\'t be changed after cluster+-- creation. The control plane is not automatically scaled by Amazon EKS.+newOutpostConfigRequest ::+  -- | 'controlPlaneInstanceType'+  Prelude.Text ->+  OutpostConfigRequest+newOutpostConfigRequest pControlPlaneInstanceType_ =+  OutpostConfigRequest'+    { controlPlanePlacement =+        Prelude.Nothing,+      outpostArns = Prelude.mempty,+      controlPlaneInstanceType =+        pControlPlaneInstanceType_+    }++-- | An object representing the placement configuration for all the control+-- plane instances of your local Amazon EKS cluster on an Amazon Web+-- Services Outpost. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html Capacity considerations>+-- in the /Amazon EKS User Guide/.+outpostConfigRequest_controlPlanePlacement :: Lens.Lens' OutpostConfigRequest (Prelude.Maybe ControlPlanePlacementRequest)+outpostConfigRequest_controlPlanePlacement = Lens.lens (\OutpostConfigRequest' {controlPlanePlacement} -> controlPlanePlacement) (\s@OutpostConfigRequest' {} a -> s {controlPlanePlacement = a} :: OutpostConfigRequest)++-- | The ARN of the Outpost that you want to use for your local Amazon EKS+-- cluster on Outposts. Only a single Outpost ARN is supported.+outpostConfigRequest_outpostArns :: Lens.Lens' OutpostConfigRequest [Prelude.Text]+outpostConfigRequest_outpostArns = Lens.lens (\OutpostConfigRequest' {outpostArns} -> outpostArns) (\s@OutpostConfigRequest' {} a -> s {outpostArns = a} :: OutpostConfigRequest) Prelude.. Lens.coerced++-- | The Amazon EC2 instance type that you want to use for your local Amazon+-- EKS cluster on Outposts. Choose an instance type based on the number of+-- nodes that your cluster will have. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html Capacity considerations>+-- in the /Amazon EKS User Guide/.+--+-- The instance type that you specify is used for all Kubernetes control+-- plane instances. The instance type can\'t be changed after cluster+-- creation. The control plane is not automatically scaled by Amazon EKS.+outpostConfigRequest_controlPlaneInstanceType :: Lens.Lens' OutpostConfigRequest Prelude.Text+outpostConfigRequest_controlPlaneInstanceType = Lens.lens (\OutpostConfigRequest' {controlPlaneInstanceType} -> controlPlaneInstanceType) (\s@OutpostConfigRequest' {} a -> s {controlPlaneInstanceType = a} :: OutpostConfigRequest)++instance Prelude.Hashable OutpostConfigRequest where+  hashWithSalt _salt OutpostConfigRequest' {..} =+    _salt+      `Prelude.hashWithSalt` controlPlanePlacement+      `Prelude.hashWithSalt` outpostArns+      `Prelude.hashWithSalt` controlPlaneInstanceType++instance Prelude.NFData OutpostConfigRequest where+  rnf OutpostConfigRequest' {..} =+    Prelude.rnf controlPlanePlacement+      `Prelude.seq` Prelude.rnf outpostArns+      `Prelude.seq` Prelude.rnf controlPlaneInstanceType++instance Data.ToJSON OutpostConfigRequest where+  toJSON OutpostConfigRequest' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("controlPlanePlacement" Data..=)+              Prelude.<$> controlPlanePlacement,+            Prelude.Just ("outpostArns" Data..= outpostArns),+            Prelude.Just+              ( "controlPlaneInstanceType"+                  Data..= controlPlaneInstanceType+              )+          ]+      )
+ gen/Amazonka/EKS/Types/OutpostConfigResponse.hs view
@@ -0,0 +1,121 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.OutpostConfigResponse+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.OutpostConfigResponse where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.ControlPlanePlacementResponse+import qualified Amazonka.Prelude as Prelude++-- | An object representing the configuration of your local Amazon EKS+-- cluster on an Amazon Web Services Outpost. This API isn\'t available for+-- Amazon EKS clusters on the Amazon Web Services cloud.+--+-- /See:/ 'newOutpostConfigResponse' smart constructor.+data OutpostConfigResponse = OutpostConfigResponse'+  { -- | An object representing the placement configuration for all the control+    -- plane instances of your local Amazon EKS cluster on an Amazon Web+    -- Services Outpost. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html Capacity considerations>+    -- in the /Amazon EKS User Guide/.+    controlPlanePlacement :: Prelude.Maybe ControlPlanePlacementResponse,+    -- | The ARN of the Outpost that you specified for use with your local Amazon+    -- EKS cluster on Outposts.+    outpostArns :: [Prelude.Text],+    -- | The Amazon EC2 instance type used for the control plane. The instance+    -- type is the same for all control plane instances.+    controlPlaneInstanceType :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OutpostConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'controlPlanePlacement', 'outpostConfigResponse_controlPlanePlacement' - An object representing the placement configuration for all the control+-- plane instances of your local Amazon EKS cluster on an Amazon Web+-- Services Outpost. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html Capacity considerations>+-- in the /Amazon EKS User Guide/.+--+-- 'outpostArns', 'outpostConfigResponse_outpostArns' - The ARN of the Outpost that you specified for use with your local Amazon+-- EKS cluster on Outposts.+--+-- 'controlPlaneInstanceType', 'outpostConfigResponse_controlPlaneInstanceType' - The Amazon EC2 instance type used for the control plane. The instance+-- type is the same for all control plane instances.+newOutpostConfigResponse ::+  -- | 'controlPlaneInstanceType'+  Prelude.Text ->+  OutpostConfigResponse+newOutpostConfigResponse pControlPlaneInstanceType_ =+  OutpostConfigResponse'+    { controlPlanePlacement =+        Prelude.Nothing,+      outpostArns = Prelude.mempty,+      controlPlaneInstanceType =+        pControlPlaneInstanceType_+    }++-- | An object representing the placement configuration for all the control+-- plane instances of your local Amazon EKS cluster on an Amazon Web+-- Services Outpost. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html Capacity considerations>+-- in the /Amazon EKS User Guide/.+outpostConfigResponse_controlPlanePlacement :: Lens.Lens' OutpostConfigResponse (Prelude.Maybe ControlPlanePlacementResponse)+outpostConfigResponse_controlPlanePlacement = Lens.lens (\OutpostConfigResponse' {controlPlanePlacement} -> controlPlanePlacement) (\s@OutpostConfigResponse' {} a -> s {controlPlanePlacement = a} :: OutpostConfigResponse)++-- | The ARN of the Outpost that you specified for use with your local Amazon+-- EKS cluster on Outposts.+outpostConfigResponse_outpostArns :: Lens.Lens' OutpostConfigResponse [Prelude.Text]+outpostConfigResponse_outpostArns = Lens.lens (\OutpostConfigResponse' {outpostArns} -> outpostArns) (\s@OutpostConfigResponse' {} a -> s {outpostArns = a} :: OutpostConfigResponse) Prelude.. Lens.coerced++-- | The Amazon EC2 instance type used for the control plane. The instance+-- type is the same for all control plane instances.+outpostConfigResponse_controlPlaneInstanceType :: Lens.Lens' OutpostConfigResponse Prelude.Text+outpostConfigResponse_controlPlaneInstanceType = Lens.lens (\OutpostConfigResponse' {controlPlaneInstanceType} -> controlPlaneInstanceType) (\s@OutpostConfigResponse' {} a -> s {controlPlaneInstanceType = a} :: OutpostConfigResponse)++instance Data.FromJSON OutpostConfigResponse where+  parseJSON =+    Data.withObject+      "OutpostConfigResponse"+      ( \x ->+          OutpostConfigResponse'+            Prelude.<$> (x Data..:? "controlPlanePlacement")+            Prelude.<*> (x Data..:? "outpostArns" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "controlPlaneInstanceType")+      )++instance Prelude.Hashable OutpostConfigResponse where+  hashWithSalt _salt OutpostConfigResponse' {..} =+    _salt+      `Prelude.hashWithSalt` controlPlanePlacement+      `Prelude.hashWithSalt` outpostArns+      `Prelude.hashWithSalt` controlPlaneInstanceType++instance Prelude.NFData OutpostConfigResponse where+  rnf OutpostConfigResponse' {..} =+    Prelude.rnf controlPlanePlacement+      `Prelude.seq` Prelude.rnf outpostArns+      `Prelude.seq` Prelude.rnf controlPlaneInstanceType
+ gen/Amazonka/EKS/Types/Provider.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.Provider+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.Provider where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Identifies the Key Management Service (KMS) key used to encrypt the+-- secrets.+--+-- /See:/ 'newProvider' smart constructor.+data Provider = Provider'+  { -- | Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be+    -- symmetric, created in the same region as the cluster, and if the KMS key+    -- was created in a different account, the user must have access to the KMS+    -- key. For more information, see+    -- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html Allowing Users in Other Accounts to Use a KMS key>+    -- in the /Key Management Service Developer Guide/.+    keyArn :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Provider' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'keyArn', 'provider_keyArn' - Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be+-- symmetric, created in the same region as the cluster, and if the KMS key+-- was created in a different account, the user must have access to the KMS+-- key. For more information, see+-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html Allowing Users in Other Accounts to Use a KMS key>+-- in the /Key Management Service Developer Guide/.+newProvider ::+  Provider+newProvider = Provider' {keyArn = Prelude.Nothing}++-- | Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be+-- symmetric, created in the same region as the cluster, and if the KMS key+-- was created in a different account, the user must have access to the KMS+-- key. For more information, see+-- <https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html Allowing Users in Other Accounts to Use a KMS key>+-- in the /Key Management Service Developer Guide/.+provider_keyArn :: Lens.Lens' Provider (Prelude.Maybe Prelude.Text)+provider_keyArn = Lens.lens (\Provider' {keyArn} -> keyArn) (\s@Provider' {} a -> s {keyArn = a} :: Provider)++instance Data.FromJSON Provider where+  parseJSON =+    Data.withObject+      "Provider"+      (\x -> Provider' Prelude.<$> (x Data..:? "keyArn"))++instance Prelude.Hashable Provider where+  hashWithSalt _salt Provider' {..} =+    _salt `Prelude.hashWithSalt` keyArn++instance Prelude.NFData Provider where+  rnf Provider' {..} = Prelude.rnf keyArn++instance Data.ToJSON Provider where+  toJSON Provider' {..} =+    Data.object+      ( Prelude.catMaybes+          [("keyArn" Data..=) Prelude.<$> keyArn]+      )
+ gen/Amazonka/EKS/Types/RemoteAccessConfig.hs view
@@ -0,0 +1,137 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.RemoteAccessConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.RemoteAccessConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the remote access configuration for the managed+-- node group.+--+-- /See:/ 'newRemoteAccessConfig' smart constructor.+data RemoteAccessConfig = RemoteAccessConfig'+  { -- | The Amazon EC2 SSH key name that provides access for SSH communication+    -- with the nodes in the managed node group. For more information, see+    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Amazon EC2 key pairs and Linux instances>+    -- in the /Amazon Elastic Compute Cloud User Guide for Linux Instances/.+    -- For Windows, an Amazon EC2 SSH key is used to obtain the RDP password.+    -- For more information, see+    -- <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html Amazon EC2 key pairs and Windows instances>+    -- in the /Amazon Elastic Compute Cloud User Guide for Windows Instances/.+    ec2SshKey :: Prelude.Maybe Prelude.Text,+    -- | The security group IDs that are allowed SSH access (port 22) to the+    -- nodes. For Windows, the port is 3389. If you specify an Amazon EC2 SSH+    -- key but don\'t specify a source security group when you create a managed+    -- node group, then the port on the nodes is opened to the internet+    -- (@0.0.0.0\/0@). For more information, see+    -- <https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html Security Groups for Your VPC>+    -- in the /Amazon Virtual Private Cloud User Guide/.+    sourceSecurityGroups :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RemoteAccessConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'ec2SshKey', 'remoteAccessConfig_ec2SshKey' - The Amazon EC2 SSH key name that provides access for SSH communication+-- with the nodes in the managed node group. For more information, see+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Amazon EC2 key pairs and Linux instances>+-- in the /Amazon Elastic Compute Cloud User Guide for Linux Instances/.+-- For Windows, an Amazon EC2 SSH key is used to obtain the RDP password.+-- For more information, see+-- <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html Amazon EC2 key pairs and Windows instances>+-- in the /Amazon Elastic Compute Cloud User Guide for Windows Instances/.+--+-- 'sourceSecurityGroups', 'remoteAccessConfig_sourceSecurityGroups' - The security group IDs that are allowed SSH access (port 22) to the+-- nodes. For Windows, the port is 3389. If you specify an Amazon EC2 SSH+-- key but don\'t specify a source security group when you create a managed+-- node group, then the port on the nodes is opened to the internet+-- (@0.0.0.0\/0@). For more information, see+-- <https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html Security Groups for Your VPC>+-- in the /Amazon Virtual Private Cloud User Guide/.+newRemoteAccessConfig ::+  RemoteAccessConfig+newRemoteAccessConfig =+  RemoteAccessConfig'+    { ec2SshKey = Prelude.Nothing,+      sourceSecurityGroups = Prelude.Nothing+    }++-- | The Amazon EC2 SSH key name that provides access for SSH communication+-- with the nodes in the managed node group. For more information, see+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Amazon EC2 key pairs and Linux instances>+-- in the /Amazon Elastic Compute Cloud User Guide for Linux Instances/.+-- For Windows, an Amazon EC2 SSH key is used to obtain the RDP password.+-- For more information, see+-- <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html Amazon EC2 key pairs and Windows instances>+-- in the /Amazon Elastic Compute Cloud User Guide for Windows Instances/.+remoteAccessConfig_ec2SshKey :: Lens.Lens' RemoteAccessConfig (Prelude.Maybe Prelude.Text)+remoteAccessConfig_ec2SshKey = Lens.lens (\RemoteAccessConfig' {ec2SshKey} -> ec2SshKey) (\s@RemoteAccessConfig' {} a -> s {ec2SshKey = a} :: RemoteAccessConfig)++-- | The security group IDs that are allowed SSH access (port 22) to the+-- nodes. For Windows, the port is 3389. If you specify an Amazon EC2 SSH+-- key but don\'t specify a source security group when you create a managed+-- node group, then the port on the nodes is opened to the internet+-- (@0.0.0.0\/0@). For more information, see+-- <https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html Security Groups for Your VPC>+-- in the /Amazon Virtual Private Cloud User Guide/.+remoteAccessConfig_sourceSecurityGroups :: Lens.Lens' RemoteAccessConfig (Prelude.Maybe [Prelude.Text])+remoteAccessConfig_sourceSecurityGroups = Lens.lens (\RemoteAccessConfig' {sourceSecurityGroups} -> sourceSecurityGroups) (\s@RemoteAccessConfig' {} a -> s {sourceSecurityGroups = a} :: RemoteAccessConfig) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON RemoteAccessConfig where+  parseJSON =+    Data.withObject+      "RemoteAccessConfig"+      ( \x ->+          RemoteAccessConfig'+            Prelude.<$> (x Data..:? "ec2SshKey")+            Prelude.<*> ( x+                            Data..:? "sourceSecurityGroups"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable RemoteAccessConfig where+  hashWithSalt _salt RemoteAccessConfig' {..} =+    _salt+      `Prelude.hashWithSalt` ec2SshKey+      `Prelude.hashWithSalt` sourceSecurityGroups++instance Prelude.NFData RemoteAccessConfig where+  rnf RemoteAccessConfig' {..} =+    Prelude.rnf ec2SshKey+      `Prelude.seq` Prelude.rnf sourceSecurityGroups++instance Data.ToJSON RemoteAccessConfig where+  toJSON RemoteAccessConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ec2SshKey" Data..=) Prelude.<$> ec2SshKey,+            ("sourceSecurityGroups" Data..=)+              Prelude.<$> sourceSecurityGroups+          ]+      )
+ gen/Amazonka/EKS/Types/ResolveConflicts.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.ResolveConflicts+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.ResolveConflicts+  ( ResolveConflicts+      ( ..,+        ResolveConflicts_NONE,+        ResolveConflicts_OVERWRITE,+        ResolveConflicts_PRESERVE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ResolveConflicts = ResolveConflicts'+  { fromResolveConflicts ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ResolveConflicts_NONE :: ResolveConflicts+pattern ResolveConflicts_NONE = ResolveConflicts' "NONE"++pattern ResolveConflicts_OVERWRITE :: ResolveConflicts+pattern ResolveConflicts_OVERWRITE = ResolveConflicts' "OVERWRITE"++pattern ResolveConflicts_PRESERVE :: ResolveConflicts+pattern ResolveConflicts_PRESERVE = ResolveConflicts' "PRESERVE"++{-# COMPLETE+  ResolveConflicts_NONE,+  ResolveConflicts_OVERWRITE,+  ResolveConflicts_PRESERVE,+  ResolveConflicts'+  #-}
+ gen/Amazonka/EKS/Types/Taint.hs view
@@ -0,0 +1,109 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.Taint+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.Taint where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.TaintEffect+import qualified Amazonka.Prelude as Prelude++-- | A property that allows a node to repel a set of pods. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.+--+-- /See:/ 'newTaint' smart constructor.+data Taint = Taint'+  { -- | The effect of the taint.+    effect :: Prelude.Maybe TaintEffect,+    -- | The key of the taint.+    key :: Prelude.Maybe Prelude.Text,+    -- | The value of the taint.+    value :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Taint' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'effect', 'taint_effect' - The effect of the taint.+--+-- 'key', 'taint_key' - The key of the taint.+--+-- 'value', 'taint_value' - The value of the taint.+newTaint ::+  Taint+newTaint =+  Taint'+    { effect = Prelude.Nothing,+      key = Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | The effect of the taint.+taint_effect :: Lens.Lens' Taint (Prelude.Maybe TaintEffect)+taint_effect = Lens.lens (\Taint' {effect} -> effect) (\s@Taint' {} a -> s {effect = a} :: Taint)++-- | The key of the taint.+taint_key :: Lens.Lens' Taint (Prelude.Maybe Prelude.Text)+taint_key = Lens.lens (\Taint' {key} -> key) (\s@Taint' {} a -> s {key = a} :: Taint)++-- | The value of the taint.+taint_value :: Lens.Lens' Taint (Prelude.Maybe Prelude.Text)+taint_value = Lens.lens (\Taint' {value} -> value) (\s@Taint' {} a -> s {value = a} :: Taint)++instance Data.FromJSON Taint where+  parseJSON =+    Data.withObject+      "Taint"+      ( \x ->+          Taint'+            Prelude.<$> (x Data..:? "effect")+            Prelude.<*> (x Data..:? "key")+            Prelude.<*> (x Data..:? "value")+      )++instance Prelude.Hashable Taint where+  hashWithSalt _salt Taint' {..} =+    _salt+      `Prelude.hashWithSalt` effect+      `Prelude.hashWithSalt` key+      `Prelude.hashWithSalt` value++instance Prelude.NFData Taint where+  rnf Taint' {..} =+    Prelude.rnf effect+      `Prelude.seq` Prelude.rnf key+      `Prelude.seq` Prelude.rnf value++instance Data.ToJSON Taint where+  toJSON Taint' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("effect" Data..=) Prelude.<$> effect,+            ("key" Data..=) Prelude.<$> key,+            ("value" Data..=) Prelude.<$> value+          ]+      )
+ gen/Amazonka/EKS/Types/TaintEffect.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.TaintEffect+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.TaintEffect+  ( TaintEffect+      ( ..,+        TaintEffect_NO_EXECUTE,+        TaintEffect_NO_SCHEDULE,+        TaintEffect_PREFER_NO_SCHEDULE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TaintEffect = TaintEffect'+  { fromTaintEffect ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern TaintEffect_NO_EXECUTE :: TaintEffect+pattern TaintEffect_NO_EXECUTE = TaintEffect' "NO_EXECUTE"++pattern TaintEffect_NO_SCHEDULE :: TaintEffect+pattern TaintEffect_NO_SCHEDULE = TaintEffect' "NO_SCHEDULE"++pattern TaintEffect_PREFER_NO_SCHEDULE :: TaintEffect+pattern TaintEffect_PREFER_NO_SCHEDULE = TaintEffect' "PREFER_NO_SCHEDULE"++{-# COMPLETE+  TaintEffect_NO_EXECUTE,+  TaintEffect_NO_SCHEDULE,+  TaintEffect_PREFER_NO_SCHEDULE,+  TaintEffect'+  #-}
+ gen/Amazonka/EKS/Types/Update.hs view
@@ -0,0 +1,136 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.Update+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.Update where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.ErrorDetail+import Amazonka.EKS.Types.UpdateParam+import Amazonka.EKS.Types.UpdateStatus+import Amazonka.EKS.Types.UpdateType+import qualified Amazonka.Prelude as Prelude++-- | An object representing an asynchronous update.+--+-- /See:/ 'newUpdate' smart constructor.+data Update = Update'+  { -- | The Unix epoch timestamp in seconds for when the update was created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | Any errors associated with a @Failed@ update.+    errors :: Prelude.Maybe [ErrorDetail],+    -- | A UUID that is used to track the update.+    id :: Prelude.Maybe Prelude.Text,+    -- | A key-value map that contains the parameters associated with the update.+    params :: Prelude.Maybe [UpdateParam],+    -- | The current status of the update.+    status :: Prelude.Maybe UpdateStatus,+    -- | The type of the update.+    type' :: Prelude.Maybe UpdateType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Update' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createdAt', 'update_createdAt' - The Unix epoch timestamp in seconds for when the update was created.+--+-- 'errors', 'update_errors' - Any errors associated with a @Failed@ update.+--+-- 'id', 'update_id' - A UUID that is used to track the update.+--+-- 'params', 'update_params' - A key-value map that contains the parameters associated with the update.+--+-- 'status', 'update_status' - The current status of the update.+--+-- 'type'', 'update_type' - The type of the update.+newUpdate ::+  Update+newUpdate =+  Update'+    { createdAt = Prelude.Nothing,+      errors = Prelude.Nothing,+      id = Prelude.Nothing,+      params = Prelude.Nothing,+      status = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | The Unix epoch timestamp in seconds for when the update was created.+update_createdAt :: Lens.Lens' Update (Prelude.Maybe Prelude.UTCTime)+update_createdAt = Lens.lens (\Update' {createdAt} -> createdAt) (\s@Update' {} a -> s {createdAt = a} :: Update) Prelude.. Lens.mapping Data._Time++-- | Any errors associated with a @Failed@ update.+update_errors :: Lens.Lens' Update (Prelude.Maybe [ErrorDetail])+update_errors = Lens.lens (\Update' {errors} -> errors) (\s@Update' {} a -> s {errors = a} :: Update) Prelude.. Lens.mapping Lens.coerced++-- | A UUID that is used to track the update.+update_id :: Lens.Lens' Update (Prelude.Maybe Prelude.Text)+update_id = Lens.lens (\Update' {id} -> id) (\s@Update' {} a -> s {id = a} :: Update)++-- | A key-value map that contains the parameters associated with the update.+update_params :: Lens.Lens' Update (Prelude.Maybe [UpdateParam])+update_params = Lens.lens (\Update' {params} -> params) (\s@Update' {} a -> s {params = a} :: Update) Prelude.. Lens.mapping Lens.coerced++-- | The current status of the update.+update_status :: Lens.Lens' Update (Prelude.Maybe UpdateStatus)+update_status = Lens.lens (\Update' {status} -> status) (\s@Update' {} a -> s {status = a} :: Update)++-- | The type of the update.+update_type :: Lens.Lens' Update (Prelude.Maybe UpdateType)+update_type = Lens.lens (\Update' {type'} -> type') (\s@Update' {} a -> s {type' = a} :: Update)++instance Data.FromJSON Update where+  parseJSON =+    Data.withObject+      "Update"+      ( \x ->+          Update'+            Prelude.<$> (x Data..:? "createdAt")+            Prelude.<*> (x Data..:? "errors" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "params" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "status")+            Prelude.<*> (x Data..:? "type")+      )++instance Prelude.Hashable Update where+  hashWithSalt _salt Update' {..} =+    _salt+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` errors+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` params+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` type'++instance Prelude.NFData Update where+  rnf Update' {..} =+    Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf errors+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf params+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/EKS/Types/UpdateLabelsPayload.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.UpdateLabelsPayload+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.UpdateLabelsPayload where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing a Kubernetes label change for a managed node+-- group.+--+-- /See:/ 'newUpdateLabelsPayload' smart constructor.+data UpdateLabelsPayload = UpdateLabelsPayload'+  { -- | Kubernetes labels to be added or updated.+    addOrUpdateLabels :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Kubernetes labels to be removed.+    removeLabels :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateLabelsPayload' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addOrUpdateLabels', 'updateLabelsPayload_addOrUpdateLabels' - Kubernetes labels to be added or updated.+--+-- 'removeLabels', 'updateLabelsPayload_removeLabels' - Kubernetes labels to be removed.+newUpdateLabelsPayload ::+  UpdateLabelsPayload+newUpdateLabelsPayload =+  UpdateLabelsPayload'+    { addOrUpdateLabels =+        Prelude.Nothing,+      removeLabels = Prelude.Nothing+    }++-- | Kubernetes labels to be added or updated.+updateLabelsPayload_addOrUpdateLabels :: Lens.Lens' UpdateLabelsPayload (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+updateLabelsPayload_addOrUpdateLabels = Lens.lens (\UpdateLabelsPayload' {addOrUpdateLabels} -> addOrUpdateLabels) (\s@UpdateLabelsPayload' {} a -> s {addOrUpdateLabels = a} :: UpdateLabelsPayload) Prelude.. Lens.mapping Lens.coerced++-- | Kubernetes labels to be removed.+updateLabelsPayload_removeLabels :: Lens.Lens' UpdateLabelsPayload (Prelude.Maybe [Prelude.Text])+updateLabelsPayload_removeLabels = Lens.lens (\UpdateLabelsPayload' {removeLabels} -> removeLabels) (\s@UpdateLabelsPayload' {} a -> s {removeLabels = a} :: UpdateLabelsPayload) Prelude.. Lens.mapping Lens.coerced++instance Prelude.Hashable UpdateLabelsPayload where+  hashWithSalt _salt UpdateLabelsPayload' {..} =+    _salt+      `Prelude.hashWithSalt` addOrUpdateLabels+      `Prelude.hashWithSalt` removeLabels++instance Prelude.NFData UpdateLabelsPayload where+  rnf UpdateLabelsPayload' {..} =+    Prelude.rnf addOrUpdateLabels+      `Prelude.seq` Prelude.rnf removeLabels++instance Data.ToJSON UpdateLabelsPayload where+  toJSON UpdateLabelsPayload' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("addOrUpdateLabels" Data..=)+              Prelude.<$> addOrUpdateLabels,+            ("removeLabels" Data..=) Prelude.<$> removeLabels+          ]+      )
+ gen/Amazonka/EKS/Types/UpdateParam.hs view
@@ -0,0 +1,84 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.UpdateParam+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.UpdateParam where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.UpdateParamType+import qualified Amazonka.Prelude as Prelude++-- | An object representing the details of an update request.+--+-- /See:/ 'newUpdateParam' smart constructor.+data UpdateParam = UpdateParam'+  { -- | The keys associated with an update request.+    type' :: Prelude.Maybe UpdateParamType,+    -- | The value of the keys submitted as part of an update request.+    value :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateParam' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'type'', 'updateParam_type' - The keys associated with an update request.+--+-- 'value', 'updateParam_value' - The value of the keys submitted as part of an update request.+newUpdateParam ::+  UpdateParam+newUpdateParam =+  UpdateParam'+    { type' = Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | The keys associated with an update request.+updateParam_type :: Lens.Lens' UpdateParam (Prelude.Maybe UpdateParamType)+updateParam_type = Lens.lens (\UpdateParam' {type'} -> type') (\s@UpdateParam' {} a -> s {type' = a} :: UpdateParam)++-- | The value of the keys submitted as part of an update request.+updateParam_value :: Lens.Lens' UpdateParam (Prelude.Maybe Prelude.Text)+updateParam_value = Lens.lens (\UpdateParam' {value} -> value) (\s@UpdateParam' {} a -> s {value = a} :: UpdateParam)++instance Data.FromJSON UpdateParam where+  parseJSON =+    Data.withObject+      "UpdateParam"+      ( \x ->+          UpdateParam'+            Prelude.<$> (x Data..:? "type")+            Prelude.<*> (x Data..:? "value")+      )++instance Prelude.Hashable UpdateParam where+  hashWithSalt _salt UpdateParam' {..} =+    _salt+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` value++instance Prelude.NFData UpdateParam where+  rnf UpdateParam' {..} =+    Prelude.rnf type' `Prelude.seq` Prelude.rnf value
+ gen/Amazonka/EKS/Types/UpdateParamType.hs view
@@ -0,0 +1,176 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.UpdateParamType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.UpdateParamType+  ( UpdateParamType+      ( ..,+        UpdateParamType_AddonVersion,+        UpdateParamType_ClusterLogging,+        UpdateParamType_DesiredSize,+        UpdateParamType_EncryptionConfig,+        UpdateParamType_EndpointPrivateAccess,+        UpdateParamType_EndpointPublicAccess,+        UpdateParamType_IdentityProviderConfig,+        UpdateParamType_LabelsToAdd,+        UpdateParamType_LabelsToRemove,+        UpdateParamType_LaunchTemplateName,+        UpdateParamType_LaunchTemplateVersion,+        UpdateParamType_MaxSize,+        UpdateParamType_MaxUnavailable,+        UpdateParamType_MaxUnavailablePercentage,+        UpdateParamType_MinSize,+        UpdateParamType_PlatformVersion,+        UpdateParamType_PublicAccessCidrs,+        UpdateParamType_ReleaseVersion,+        UpdateParamType_ResolveConflicts,+        UpdateParamType_ServiceAccountRoleArn,+        UpdateParamType_TaintsToAdd,+        UpdateParamType_TaintsToRemove,+        UpdateParamType_Version+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype UpdateParamType = UpdateParamType'+  { fromUpdateParamType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern UpdateParamType_AddonVersion :: UpdateParamType+pattern UpdateParamType_AddonVersion = UpdateParamType' "AddonVersion"++pattern UpdateParamType_ClusterLogging :: UpdateParamType+pattern UpdateParamType_ClusterLogging = UpdateParamType' "ClusterLogging"++pattern UpdateParamType_DesiredSize :: UpdateParamType+pattern UpdateParamType_DesiredSize = UpdateParamType' "DesiredSize"++pattern UpdateParamType_EncryptionConfig :: UpdateParamType+pattern UpdateParamType_EncryptionConfig = UpdateParamType' "EncryptionConfig"++pattern UpdateParamType_EndpointPrivateAccess :: UpdateParamType+pattern UpdateParamType_EndpointPrivateAccess = UpdateParamType' "EndpointPrivateAccess"++pattern UpdateParamType_EndpointPublicAccess :: UpdateParamType+pattern UpdateParamType_EndpointPublicAccess = UpdateParamType' "EndpointPublicAccess"++pattern UpdateParamType_IdentityProviderConfig :: UpdateParamType+pattern UpdateParamType_IdentityProviderConfig = UpdateParamType' "IdentityProviderConfig"++pattern UpdateParamType_LabelsToAdd :: UpdateParamType+pattern UpdateParamType_LabelsToAdd = UpdateParamType' "LabelsToAdd"++pattern UpdateParamType_LabelsToRemove :: UpdateParamType+pattern UpdateParamType_LabelsToRemove = UpdateParamType' "LabelsToRemove"++pattern UpdateParamType_LaunchTemplateName :: UpdateParamType+pattern UpdateParamType_LaunchTemplateName = UpdateParamType' "LaunchTemplateName"++pattern UpdateParamType_LaunchTemplateVersion :: UpdateParamType+pattern UpdateParamType_LaunchTemplateVersion = UpdateParamType' "LaunchTemplateVersion"++pattern UpdateParamType_MaxSize :: UpdateParamType+pattern UpdateParamType_MaxSize = UpdateParamType' "MaxSize"++pattern UpdateParamType_MaxUnavailable :: UpdateParamType+pattern UpdateParamType_MaxUnavailable = UpdateParamType' "MaxUnavailable"++pattern UpdateParamType_MaxUnavailablePercentage :: UpdateParamType+pattern UpdateParamType_MaxUnavailablePercentage = UpdateParamType' "MaxUnavailablePercentage"++pattern UpdateParamType_MinSize :: UpdateParamType+pattern UpdateParamType_MinSize = UpdateParamType' "MinSize"++pattern UpdateParamType_PlatformVersion :: UpdateParamType+pattern UpdateParamType_PlatformVersion = UpdateParamType' "PlatformVersion"++pattern UpdateParamType_PublicAccessCidrs :: UpdateParamType+pattern UpdateParamType_PublicAccessCidrs = UpdateParamType' "PublicAccessCidrs"++pattern UpdateParamType_ReleaseVersion :: UpdateParamType+pattern UpdateParamType_ReleaseVersion = UpdateParamType' "ReleaseVersion"++pattern UpdateParamType_ResolveConflicts :: UpdateParamType+pattern UpdateParamType_ResolveConflicts = UpdateParamType' "ResolveConflicts"++pattern UpdateParamType_ServiceAccountRoleArn :: UpdateParamType+pattern UpdateParamType_ServiceAccountRoleArn = UpdateParamType' "ServiceAccountRoleArn"++pattern UpdateParamType_TaintsToAdd :: UpdateParamType+pattern UpdateParamType_TaintsToAdd = UpdateParamType' "TaintsToAdd"++pattern UpdateParamType_TaintsToRemove :: UpdateParamType+pattern UpdateParamType_TaintsToRemove = UpdateParamType' "TaintsToRemove"++pattern UpdateParamType_Version :: UpdateParamType+pattern UpdateParamType_Version = UpdateParamType' "Version"++{-# COMPLETE+  UpdateParamType_AddonVersion,+  UpdateParamType_ClusterLogging,+  UpdateParamType_DesiredSize,+  UpdateParamType_EncryptionConfig,+  UpdateParamType_EndpointPrivateAccess,+  UpdateParamType_EndpointPublicAccess,+  UpdateParamType_IdentityProviderConfig,+  UpdateParamType_LabelsToAdd,+  UpdateParamType_LabelsToRemove,+  UpdateParamType_LaunchTemplateName,+  UpdateParamType_LaunchTemplateVersion,+  UpdateParamType_MaxSize,+  UpdateParamType_MaxUnavailable,+  UpdateParamType_MaxUnavailablePercentage,+  UpdateParamType_MinSize,+  UpdateParamType_PlatformVersion,+  UpdateParamType_PublicAccessCidrs,+  UpdateParamType_ReleaseVersion,+  UpdateParamType_ResolveConflicts,+  UpdateParamType_ServiceAccountRoleArn,+  UpdateParamType_TaintsToAdd,+  UpdateParamType_TaintsToRemove,+  UpdateParamType_Version,+  UpdateParamType'+  #-}
+ gen/Amazonka/EKS/Types/UpdateStatus.hs view
@@ -0,0 +1,81 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.UpdateStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.UpdateStatus+  ( UpdateStatus+      ( ..,+        UpdateStatus_Cancelled,+        UpdateStatus_Failed,+        UpdateStatus_InProgress,+        UpdateStatus_Successful+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype UpdateStatus = UpdateStatus'+  { fromUpdateStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern UpdateStatus_Cancelled :: UpdateStatus+pattern UpdateStatus_Cancelled = UpdateStatus' "Cancelled"++pattern UpdateStatus_Failed :: UpdateStatus+pattern UpdateStatus_Failed = UpdateStatus' "Failed"++pattern UpdateStatus_InProgress :: UpdateStatus+pattern UpdateStatus_InProgress = UpdateStatus' "InProgress"++pattern UpdateStatus_Successful :: UpdateStatus+pattern UpdateStatus_Successful = UpdateStatus' "Successful"++{-# COMPLETE+  UpdateStatus_Cancelled,+  UpdateStatus_Failed,+  UpdateStatus_InProgress,+  UpdateStatus_Successful,+  UpdateStatus'+  #-}
+ gen/Amazonka/EKS/Types/UpdateTaintsPayload.hs view
@@ -0,0 +1,88 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.UpdateTaintsPayload+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.UpdateTaintsPayload where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types.Taint+import qualified Amazonka.Prelude as Prelude++-- | An object representing the details of an update to a taints payload. For+-- more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.+--+-- /See:/ 'newUpdateTaintsPayload' smart constructor.+data UpdateTaintsPayload = UpdateTaintsPayload'+  { -- | Kubernetes taints to be added or updated.+    addOrUpdateTaints :: Prelude.Maybe [Taint],+    -- | Kubernetes taints to remove.+    removeTaints :: Prelude.Maybe [Taint]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateTaintsPayload' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addOrUpdateTaints', 'updateTaintsPayload_addOrUpdateTaints' - Kubernetes taints to be added or updated.+--+-- 'removeTaints', 'updateTaintsPayload_removeTaints' - Kubernetes taints to remove.+newUpdateTaintsPayload ::+  UpdateTaintsPayload+newUpdateTaintsPayload =+  UpdateTaintsPayload'+    { addOrUpdateTaints =+        Prelude.Nothing,+      removeTaints = Prelude.Nothing+    }++-- | Kubernetes taints to be added or updated.+updateTaintsPayload_addOrUpdateTaints :: Lens.Lens' UpdateTaintsPayload (Prelude.Maybe [Taint])+updateTaintsPayload_addOrUpdateTaints = Lens.lens (\UpdateTaintsPayload' {addOrUpdateTaints} -> addOrUpdateTaints) (\s@UpdateTaintsPayload' {} a -> s {addOrUpdateTaints = a} :: UpdateTaintsPayload) Prelude.. Lens.mapping Lens.coerced++-- | Kubernetes taints to remove.+updateTaintsPayload_removeTaints :: Lens.Lens' UpdateTaintsPayload (Prelude.Maybe [Taint])+updateTaintsPayload_removeTaints = Lens.lens (\UpdateTaintsPayload' {removeTaints} -> removeTaints) (\s@UpdateTaintsPayload' {} a -> s {removeTaints = a} :: UpdateTaintsPayload) Prelude.. Lens.mapping Lens.coerced++instance Prelude.Hashable UpdateTaintsPayload where+  hashWithSalt _salt UpdateTaintsPayload' {..} =+    _salt+      `Prelude.hashWithSalt` addOrUpdateTaints+      `Prelude.hashWithSalt` removeTaints++instance Prelude.NFData UpdateTaintsPayload where+  rnf UpdateTaintsPayload' {..} =+    Prelude.rnf addOrUpdateTaints+      `Prelude.seq` Prelude.rnf removeTaints++instance Data.ToJSON UpdateTaintsPayload where+  toJSON UpdateTaintsPayload' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("addOrUpdateTaints" Data..=)+              Prelude.<$> addOrUpdateTaints,+            ("removeTaints" Data..=) Prelude.<$> removeTaints+          ]+      )
+ gen/Amazonka/EKS/Types/UpdateType.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.UpdateType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.UpdateType+  ( UpdateType+      ( ..,+        UpdateType_AddonUpdate,+        UpdateType_AssociateEncryptionConfig,+        UpdateType_AssociateIdentityProviderConfig,+        UpdateType_ConfigUpdate,+        UpdateType_DisassociateIdentityProviderConfig,+        UpdateType_EndpointAccessUpdate,+        UpdateType_LoggingUpdate,+        UpdateType_VersionUpdate+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype UpdateType = UpdateType'+  { fromUpdateType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern UpdateType_AddonUpdate :: UpdateType+pattern UpdateType_AddonUpdate = UpdateType' "AddonUpdate"++pattern UpdateType_AssociateEncryptionConfig :: UpdateType+pattern UpdateType_AssociateEncryptionConfig = UpdateType' "AssociateEncryptionConfig"++pattern UpdateType_AssociateIdentityProviderConfig :: UpdateType+pattern UpdateType_AssociateIdentityProviderConfig = UpdateType' "AssociateIdentityProviderConfig"++pattern UpdateType_ConfigUpdate :: UpdateType+pattern UpdateType_ConfigUpdate = UpdateType' "ConfigUpdate"++pattern UpdateType_DisassociateIdentityProviderConfig :: UpdateType+pattern UpdateType_DisassociateIdentityProviderConfig = UpdateType' "DisassociateIdentityProviderConfig"++pattern UpdateType_EndpointAccessUpdate :: UpdateType+pattern UpdateType_EndpointAccessUpdate = UpdateType' "EndpointAccessUpdate"++pattern UpdateType_LoggingUpdate :: UpdateType+pattern UpdateType_LoggingUpdate = UpdateType' "LoggingUpdate"++pattern UpdateType_VersionUpdate :: UpdateType+pattern UpdateType_VersionUpdate = UpdateType' "VersionUpdate"++{-# COMPLETE+  UpdateType_AddonUpdate,+  UpdateType_AssociateEncryptionConfig,+  UpdateType_AssociateIdentityProviderConfig,+  UpdateType_ConfigUpdate,+  UpdateType_DisassociateIdentityProviderConfig,+  UpdateType_EndpointAccessUpdate,+  UpdateType_LoggingUpdate,+  UpdateType_VersionUpdate,+  UpdateType'+  #-}
+ gen/Amazonka/EKS/Types/VpcConfigRequest.hs view
@@ -0,0 +1,221 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.VpcConfigRequest+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.VpcConfigRequest where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing the VPC configuration to use for an Amazon EKS+-- cluster.+--+-- /See:/ 'newVpcConfigRequest' smart constructor.+data VpcConfigRequest = VpcConfigRequest'+  { -- | Set this value to @true@ to enable private access for your cluster\'s+    -- Kubernetes API server endpoint. If you enable private access, Kubernetes+    -- API requests from within your cluster\'s VPC use the private VPC+    -- endpoint. The default value for this parameter is @false@, which+    -- disables private access for your Kubernetes API server. If you disable+    -- private access and you have nodes or Fargate pods in the cluster, then+    -- ensure that @publicAccessCidrs@ includes the necessary CIDR blocks for+    -- communication with the nodes or Fargate pods. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+    -- in the //Amazon EKS User Guide// .+    endpointPrivateAccess :: Prelude.Maybe Prelude.Bool,+    -- | Set this value to @false@ to disable public access to your cluster\'s+    -- Kubernetes API server endpoint. If you disable public access, your+    -- cluster\'s Kubernetes API server can only receive requests from within+    -- the cluster VPC. The default value for this parameter is @true@, which+    -- enables public access for your Kubernetes API server. For more+    -- information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+    -- in the //Amazon EKS User Guide// .+    endpointPublicAccess :: Prelude.Maybe Prelude.Bool,+    -- | The CIDR blocks that are allowed access to your cluster\'s public+    -- Kubernetes API server endpoint. Communication to the endpoint from+    -- addresses outside of the CIDR blocks that you specify is denied. The+    -- default value is @0.0.0.0\/0@. If you\'ve disabled private endpoint+    -- access and you have nodes or Fargate pods in the cluster, then ensure+    -- that you specify the necessary CIDR blocks. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+    -- in the //Amazon EKS User Guide// .+    publicAccessCidrs :: Prelude.Maybe [Prelude.Text],+    -- | Specify one or more security groups for the cross-account elastic+    -- network interfaces that Amazon EKS creates to use that allow+    -- communication between your nodes and the Kubernetes control plane. If+    -- you don\'t specify any security groups, then familiarize yourself with+    -- the difference between Amazon EKS defaults for clusters deployed with+    -- Kubernetes. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html Amazon EKS security group considerations>+    -- in the //Amazon EKS User Guide// .+    securityGroupIds :: Prelude.Maybe [Prelude.Text],+    -- | Specify subnets for your Amazon EKS nodes. Amazon EKS creates+    -- cross-account elastic network interfaces in these subnets to allow+    -- communication between your nodes and the Kubernetes control plane.+    subnetIds :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VpcConfigRequest' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endpointPrivateAccess', 'vpcConfigRequest_endpointPrivateAccess' - Set this value to @true@ to enable private access for your cluster\'s+-- Kubernetes API server endpoint. If you enable private access, Kubernetes+-- API requests from within your cluster\'s VPC use the private VPC+-- endpoint. The default value for this parameter is @false@, which+-- disables private access for your Kubernetes API server. If you disable+-- private access and you have nodes or Fargate pods in the cluster, then+-- ensure that @publicAccessCidrs@ includes the necessary CIDR blocks for+-- communication with the nodes or Fargate pods. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+-- in the //Amazon EKS User Guide// .+--+-- 'endpointPublicAccess', 'vpcConfigRequest_endpointPublicAccess' - Set this value to @false@ to disable public access to your cluster\'s+-- Kubernetes API server endpoint. If you disable public access, your+-- cluster\'s Kubernetes API server can only receive requests from within+-- the cluster VPC. The default value for this parameter is @true@, which+-- enables public access for your Kubernetes API server. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+-- in the //Amazon EKS User Guide// .+--+-- 'publicAccessCidrs', 'vpcConfigRequest_publicAccessCidrs' - The CIDR blocks that are allowed access to your cluster\'s public+-- Kubernetes API server endpoint. Communication to the endpoint from+-- addresses outside of the CIDR blocks that you specify is denied. The+-- default value is @0.0.0.0\/0@. If you\'ve disabled private endpoint+-- access and you have nodes or Fargate pods in the cluster, then ensure+-- that you specify the necessary CIDR blocks. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+-- in the //Amazon EKS User Guide// .+--+-- 'securityGroupIds', 'vpcConfigRequest_securityGroupIds' - Specify one or more security groups for the cross-account elastic+-- network interfaces that Amazon EKS creates to use that allow+-- communication between your nodes and the Kubernetes control plane. If+-- you don\'t specify any security groups, then familiarize yourself with+-- the difference between Amazon EKS defaults for clusters deployed with+-- Kubernetes. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html Amazon EKS security group considerations>+-- in the //Amazon EKS User Guide// .+--+-- 'subnetIds', 'vpcConfigRequest_subnetIds' - Specify subnets for your Amazon EKS nodes. Amazon EKS creates+-- cross-account elastic network interfaces in these subnets to allow+-- communication between your nodes and the Kubernetes control plane.+newVpcConfigRequest ::+  VpcConfigRequest+newVpcConfigRequest =+  VpcConfigRequest'+    { endpointPrivateAccess =+        Prelude.Nothing,+      endpointPublicAccess = Prelude.Nothing,+      publicAccessCidrs = Prelude.Nothing,+      securityGroupIds = Prelude.Nothing,+      subnetIds = Prelude.Nothing+    }++-- | Set this value to @true@ to enable private access for your cluster\'s+-- Kubernetes API server endpoint. If you enable private access, Kubernetes+-- API requests from within your cluster\'s VPC use the private VPC+-- endpoint. The default value for this parameter is @false@, which+-- disables private access for your Kubernetes API server. If you disable+-- private access and you have nodes or Fargate pods in the cluster, then+-- ensure that @publicAccessCidrs@ includes the necessary CIDR blocks for+-- communication with the nodes or Fargate pods. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+-- in the //Amazon EKS User Guide// .+vpcConfigRequest_endpointPrivateAccess :: Lens.Lens' VpcConfigRequest (Prelude.Maybe Prelude.Bool)+vpcConfigRequest_endpointPrivateAccess = Lens.lens (\VpcConfigRequest' {endpointPrivateAccess} -> endpointPrivateAccess) (\s@VpcConfigRequest' {} a -> s {endpointPrivateAccess = a} :: VpcConfigRequest)++-- | Set this value to @false@ to disable public access to your cluster\'s+-- Kubernetes API server endpoint. If you disable public access, your+-- cluster\'s Kubernetes API server can only receive requests from within+-- the cluster VPC. The default value for this parameter is @true@, which+-- enables public access for your Kubernetes API server. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+-- in the //Amazon EKS User Guide// .+vpcConfigRequest_endpointPublicAccess :: Lens.Lens' VpcConfigRequest (Prelude.Maybe Prelude.Bool)+vpcConfigRequest_endpointPublicAccess = Lens.lens (\VpcConfigRequest' {endpointPublicAccess} -> endpointPublicAccess) (\s@VpcConfigRequest' {} a -> s {endpointPublicAccess = a} :: VpcConfigRequest)++-- | The CIDR blocks that are allowed access to your cluster\'s public+-- Kubernetes API server endpoint. Communication to the endpoint from+-- addresses outside of the CIDR blocks that you specify is denied. The+-- default value is @0.0.0.0\/0@. If you\'ve disabled private endpoint+-- access and you have nodes or Fargate pods in the cluster, then ensure+-- that you specify the necessary CIDR blocks. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+-- in the //Amazon EKS User Guide// .+vpcConfigRequest_publicAccessCidrs :: Lens.Lens' VpcConfigRequest (Prelude.Maybe [Prelude.Text])+vpcConfigRequest_publicAccessCidrs = Lens.lens (\VpcConfigRequest' {publicAccessCidrs} -> publicAccessCidrs) (\s@VpcConfigRequest' {} a -> s {publicAccessCidrs = a} :: VpcConfigRequest) Prelude.. Lens.mapping Lens.coerced++-- | Specify one or more security groups for the cross-account elastic+-- network interfaces that Amazon EKS creates to use that allow+-- communication between your nodes and the Kubernetes control plane. If+-- you don\'t specify any security groups, then familiarize yourself with+-- the difference between Amazon EKS defaults for clusters deployed with+-- Kubernetes. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html Amazon EKS security group considerations>+-- in the //Amazon EKS User Guide// .+vpcConfigRequest_securityGroupIds :: Lens.Lens' VpcConfigRequest (Prelude.Maybe [Prelude.Text])+vpcConfigRequest_securityGroupIds = Lens.lens (\VpcConfigRequest' {securityGroupIds} -> securityGroupIds) (\s@VpcConfigRequest' {} a -> s {securityGroupIds = a} :: VpcConfigRequest) Prelude.. Lens.mapping Lens.coerced++-- | Specify subnets for your Amazon EKS nodes. Amazon EKS creates+-- cross-account elastic network interfaces in these subnets to allow+-- communication between your nodes and the Kubernetes control plane.+vpcConfigRequest_subnetIds :: Lens.Lens' VpcConfigRequest (Prelude.Maybe [Prelude.Text])+vpcConfigRequest_subnetIds = Lens.lens (\VpcConfigRequest' {subnetIds} -> subnetIds) (\s@VpcConfigRequest' {} a -> s {subnetIds = a} :: VpcConfigRequest) Prelude.. Lens.mapping Lens.coerced++instance Prelude.Hashable VpcConfigRequest where+  hashWithSalt _salt VpcConfigRequest' {..} =+    _salt+      `Prelude.hashWithSalt` endpointPrivateAccess+      `Prelude.hashWithSalt` endpointPublicAccess+      `Prelude.hashWithSalt` publicAccessCidrs+      `Prelude.hashWithSalt` securityGroupIds+      `Prelude.hashWithSalt` subnetIds++instance Prelude.NFData VpcConfigRequest where+  rnf VpcConfigRequest' {..} =+    Prelude.rnf endpointPrivateAccess+      `Prelude.seq` Prelude.rnf endpointPublicAccess+      `Prelude.seq` Prelude.rnf publicAccessCidrs+      `Prelude.seq` Prelude.rnf securityGroupIds+      `Prelude.seq` Prelude.rnf subnetIds++instance Data.ToJSON VpcConfigRequest where+  toJSON VpcConfigRequest' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("endpointPrivateAccess" Data..=)+              Prelude.<$> endpointPrivateAccess,+            ("endpointPublicAccess" Data..=)+              Prelude.<$> endpointPublicAccess,+            ("publicAccessCidrs" Data..=)+              Prelude.<$> publicAccessCidrs,+            ("securityGroupIds" Data..=)+              Prelude.<$> securityGroupIds,+            ("subnetIds" Data..=) Prelude.<$> subnetIds+          ]+      )
+ gen/Amazonka/EKS/Types/VpcConfigResponse.hs view
@@ -0,0 +1,220 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Types.VpcConfigResponse+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Types.VpcConfigResponse where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing an Amazon EKS cluster VPC configuration response.+--+-- /See:/ 'newVpcConfigResponse' smart constructor.+data VpcConfigResponse = VpcConfigResponse'+  { -- | The cluster security group that was created by Amazon EKS for the+    -- cluster. Managed node groups use this security group for+    -- control-plane-to-data-plane communication.+    clusterSecurityGroupId :: Prelude.Maybe Prelude.Text,+    -- | This parameter indicates whether the Amazon EKS private API server+    -- endpoint is enabled. If the Amazon EKS private API server endpoint is+    -- enabled, Kubernetes API requests that originate from within your+    -- cluster\'s VPC use the private VPC endpoint instead of traversing the+    -- internet. If this value is disabled and you have nodes or Fargate pods+    -- in the cluster, then ensure that @publicAccessCidrs@ includes the+    -- necessary CIDR blocks for communication with the nodes or Fargate pods.+    -- For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+    -- in the //Amazon EKS User Guide// .+    endpointPrivateAccess :: Prelude.Maybe Prelude.Bool,+    -- | This parameter indicates whether the Amazon EKS public API server+    -- endpoint is enabled. If the Amazon EKS public API server endpoint is+    -- disabled, your cluster\'s Kubernetes API server can only receive+    -- requests that originate from within the cluster VPC.+    endpointPublicAccess :: Prelude.Maybe Prelude.Bool,+    -- | The CIDR blocks that are allowed access to your cluster\'s public+    -- Kubernetes API server endpoint. Communication to the endpoint from+    -- addresses outside of the listed CIDR blocks is denied. The default value+    -- is @0.0.0.0\/0@. If you\'ve disabled private endpoint access and you+    -- have nodes or Fargate pods in the cluster, then ensure that the+    -- necessary CIDR blocks are listed. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+    -- in the //Amazon EKS User Guide// .+    publicAccessCidrs :: Prelude.Maybe [Prelude.Text],+    -- | The security groups associated with the cross-account elastic network+    -- interfaces that are used to allow communication between your nodes and+    -- the Kubernetes control plane.+    securityGroupIds :: Prelude.Maybe [Prelude.Text],+    -- | The subnets associated with your cluster.+    subnetIds :: Prelude.Maybe [Prelude.Text],+    -- | The VPC associated with your cluster.+    vpcId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VpcConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clusterSecurityGroupId', 'vpcConfigResponse_clusterSecurityGroupId' - The cluster security group that was created by Amazon EKS for the+-- cluster. Managed node groups use this security group for+-- control-plane-to-data-plane communication.+--+-- 'endpointPrivateAccess', 'vpcConfigResponse_endpointPrivateAccess' - This parameter indicates whether the Amazon EKS private API server+-- endpoint is enabled. If the Amazon EKS private API server endpoint is+-- enabled, Kubernetes API requests that originate from within your+-- cluster\'s VPC use the private VPC endpoint instead of traversing the+-- internet. If this value is disabled and you have nodes or Fargate pods+-- in the cluster, then ensure that @publicAccessCidrs@ includes the+-- necessary CIDR blocks for communication with the nodes or Fargate pods.+-- For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+-- in the //Amazon EKS User Guide// .+--+-- 'endpointPublicAccess', 'vpcConfigResponse_endpointPublicAccess' - This parameter indicates whether the Amazon EKS public API server+-- endpoint is enabled. If the Amazon EKS public API server endpoint is+-- disabled, your cluster\'s Kubernetes API server can only receive+-- requests that originate from within the cluster VPC.+--+-- 'publicAccessCidrs', 'vpcConfigResponse_publicAccessCidrs' - The CIDR blocks that are allowed access to your cluster\'s public+-- Kubernetes API server endpoint. Communication to the endpoint from+-- addresses outside of the listed CIDR blocks is denied. The default value+-- is @0.0.0.0\/0@. If you\'ve disabled private endpoint access and you+-- have nodes or Fargate pods in the cluster, then ensure that the+-- necessary CIDR blocks are listed. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+-- in the //Amazon EKS User Guide// .+--+-- 'securityGroupIds', 'vpcConfigResponse_securityGroupIds' - The security groups associated with the cross-account elastic network+-- interfaces that are used to allow communication between your nodes and+-- the Kubernetes control plane.+--+-- 'subnetIds', 'vpcConfigResponse_subnetIds' - The subnets associated with your cluster.+--+-- 'vpcId', 'vpcConfigResponse_vpcId' - The VPC associated with your cluster.+newVpcConfigResponse ::+  VpcConfigResponse+newVpcConfigResponse =+  VpcConfigResponse'+    { clusterSecurityGroupId =+        Prelude.Nothing,+      endpointPrivateAccess = Prelude.Nothing,+      endpointPublicAccess = Prelude.Nothing,+      publicAccessCidrs = Prelude.Nothing,+      securityGroupIds = Prelude.Nothing,+      subnetIds = Prelude.Nothing,+      vpcId = Prelude.Nothing+    }++-- | The cluster security group that was created by Amazon EKS for the+-- cluster. Managed node groups use this security group for+-- control-plane-to-data-plane communication.+vpcConfigResponse_clusterSecurityGroupId :: Lens.Lens' VpcConfigResponse (Prelude.Maybe Prelude.Text)+vpcConfigResponse_clusterSecurityGroupId = Lens.lens (\VpcConfigResponse' {clusterSecurityGroupId} -> clusterSecurityGroupId) (\s@VpcConfigResponse' {} a -> s {clusterSecurityGroupId = a} :: VpcConfigResponse)++-- | This parameter indicates whether the Amazon EKS private API server+-- endpoint is enabled. If the Amazon EKS private API server endpoint is+-- enabled, Kubernetes API requests that originate from within your+-- cluster\'s VPC use the private VPC endpoint instead of traversing the+-- internet. If this value is disabled and you have nodes or Fargate pods+-- in the cluster, then ensure that @publicAccessCidrs@ includes the+-- necessary CIDR blocks for communication with the nodes or Fargate pods.+-- For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+-- in the //Amazon EKS User Guide// .+vpcConfigResponse_endpointPrivateAccess :: Lens.Lens' VpcConfigResponse (Prelude.Maybe Prelude.Bool)+vpcConfigResponse_endpointPrivateAccess = Lens.lens (\VpcConfigResponse' {endpointPrivateAccess} -> endpointPrivateAccess) (\s@VpcConfigResponse' {} a -> s {endpointPrivateAccess = a} :: VpcConfigResponse)++-- | This parameter indicates whether the Amazon EKS public API server+-- endpoint is enabled. If the Amazon EKS public API server endpoint is+-- disabled, your cluster\'s Kubernetes API server can only receive+-- requests that originate from within the cluster VPC.+vpcConfigResponse_endpointPublicAccess :: Lens.Lens' VpcConfigResponse (Prelude.Maybe Prelude.Bool)+vpcConfigResponse_endpointPublicAccess = Lens.lens (\VpcConfigResponse' {endpointPublicAccess} -> endpointPublicAccess) (\s@VpcConfigResponse' {} a -> s {endpointPublicAccess = a} :: VpcConfigResponse)++-- | The CIDR blocks that are allowed access to your cluster\'s public+-- Kubernetes API server endpoint. Communication to the endpoint from+-- addresses outside of the listed CIDR blocks is denied. The default value+-- is @0.0.0.0\/0@. If you\'ve disabled private endpoint access and you+-- have nodes or Fargate pods in the cluster, then ensure that the+-- necessary CIDR blocks are listed. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+-- in the //Amazon EKS User Guide// .+vpcConfigResponse_publicAccessCidrs :: Lens.Lens' VpcConfigResponse (Prelude.Maybe [Prelude.Text])+vpcConfigResponse_publicAccessCidrs = Lens.lens (\VpcConfigResponse' {publicAccessCidrs} -> publicAccessCidrs) (\s@VpcConfigResponse' {} a -> s {publicAccessCidrs = a} :: VpcConfigResponse) Prelude.. Lens.mapping Lens.coerced++-- | The security groups associated with the cross-account elastic network+-- interfaces that are used to allow communication between your nodes and+-- the Kubernetes control plane.+vpcConfigResponse_securityGroupIds :: Lens.Lens' VpcConfigResponse (Prelude.Maybe [Prelude.Text])+vpcConfigResponse_securityGroupIds = Lens.lens (\VpcConfigResponse' {securityGroupIds} -> securityGroupIds) (\s@VpcConfigResponse' {} a -> s {securityGroupIds = a} :: VpcConfigResponse) Prelude.. Lens.mapping Lens.coerced++-- | The subnets associated with your cluster.+vpcConfigResponse_subnetIds :: Lens.Lens' VpcConfigResponse (Prelude.Maybe [Prelude.Text])+vpcConfigResponse_subnetIds = Lens.lens (\VpcConfigResponse' {subnetIds} -> subnetIds) (\s@VpcConfigResponse' {} a -> s {subnetIds = a} :: VpcConfigResponse) Prelude.. Lens.mapping Lens.coerced++-- | The VPC associated with your cluster.+vpcConfigResponse_vpcId :: Lens.Lens' VpcConfigResponse (Prelude.Maybe Prelude.Text)+vpcConfigResponse_vpcId = Lens.lens (\VpcConfigResponse' {vpcId} -> vpcId) (\s@VpcConfigResponse' {} a -> s {vpcId = a} :: VpcConfigResponse)++instance Data.FromJSON VpcConfigResponse where+  parseJSON =+    Data.withObject+      "VpcConfigResponse"+      ( \x ->+          VpcConfigResponse'+            Prelude.<$> (x Data..:? "clusterSecurityGroupId")+            Prelude.<*> (x Data..:? "endpointPrivateAccess")+            Prelude.<*> (x Data..:? "endpointPublicAccess")+            Prelude.<*> ( x+                            Data..:? "publicAccessCidrs"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..:? "securityGroupIds"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "subnetIds" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "vpcId")+      )++instance Prelude.Hashable VpcConfigResponse where+  hashWithSalt _salt VpcConfigResponse' {..} =+    _salt+      `Prelude.hashWithSalt` clusterSecurityGroupId+      `Prelude.hashWithSalt` endpointPrivateAccess+      `Prelude.hashWithSalt` endpointPublicAccess+      `Prelude.hashWithSalt` publicAccessCidrs+      `Prelude.hashWithSalt` securityGroupIds+      `Prelude.hashWithSalt` subnetIds+      `Prelude.hashWithSalt` vpcId++instance Prelude.NFData VpcConfigResponse where+  rnf VpcConfigResponse' {..} =+    Prelude.rnf clusterSecurityGroupId+      `Prelude.seq` Prelude.rnf endpointPrivateAccess+      `Prelude.seq` Prelude.rnf endpointPublicAccess+      `Prelude.seq` Prelude.rnf publicAccessCidrs+      `Prelude.seq` Prelude.rnf securityGroupIds+      `Prelude.seq` Prelude.rnf subnetIds+      `Prelude.seq` Prelude.rnf vpcId
+ gen/Amazonka/EKS/UntagResource.hs view
@@ -0,0 +1,169 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.UntagResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes specified tags from a resource.+module Amazonka.EKS.UntagResource+  ( -- * Creating a Request+    UntagResource (..),+    newUntagResource,++    -- * Request Lenses+    untagResource_resourceArn,+    untagResource_tagKeys,++    -- * Destructuring the Response+    UntagResourceResponse (..),+    newUntagResourceResponse,++    -- * Response Lenses+    untagResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUntagResource' smart constructor.+data UntagResource = UntagResource'+  { -- | The Amazon Resource Name (ARN) of the resource from which to delete+    -- tags. Currently, the supported resources are Amazon EKS clusters and+    -- managed node groups.+    resourceArn :: Prelude.Text,+    -- | The keys of the tags to be removed.+    tagKeys :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource from which to delete+-- tags. Currently, the supported resources are Amazon EKS clusters and+-- managed node groups.+--+-- 'tagKeys', 'untagResource_tagKeys' - The keys of the tags to be removed.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  -- | 'tagKeys'+  Prelude.NonEmpty Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ pTagKeys_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Lens.coerced Lens.# pTagKeys_+    }++-- | The Amazon Resource Name (ARN) of the resource from which to delete+-- tags. Currently, the supported resources are Amazon EKS clusters and+-- managed node groups.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | The keys of the tags to be removed.+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty Prelude.Text)+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced++instance Core.AWSRequest UntagResource where+  type+    AWSResponse UntagResource =+      UntagResourceResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UntagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UntagResource where+  hashWithSalt _salt UntagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tagKeys++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tagKeys++instance Data.ToHeaders UntagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath UntagResource where+  toPath UntagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery UntagResource where+  toQuery UntagResource' {..} =+    Prelude.mconcat+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]++-- | /See:/ 'newUntagResourceResponse' smart constructor.+data UntagResourceResponse = UntagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.+newUntagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UntagResourceResponse+newUntagResourceResponse pHttpStatus_ =+  UntagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)++instance Prelude.NFData UntagResourceResponse where+  rnf UntagResourceResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/EKS/UpdateAddon.hs view
@@ -0,0 +1,350 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.UpdateAddon+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an Amazon EKS add-on.+module Amazonka.EKS.UpdateAddon+  ( -- * Creating a Request+    UpdateAddon (..),+    newUpdateAddon,++    -- * Request Lenses+    updateAddon_addonVersion,+    updateAddon_clientRequestToken,+    updateAddon_configurationValues,+    updateAddon_resolveConflicts,+    updateAddon_serviceAccountRoleArn,+    updateAddon_clusterName,+    updateAddon_addonName,++    -- * Destructuring the Response+    UpdateAddonResponse (..),+    newUpdateAddonResponse,++    -- * Response Lenses+    updateAddonResponse_update,+    updateAddonResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateAddon' smart constructor.+data UpdateAddon = UpdateAddon'+  { -- | The version of the add-on. The version must match one of the versions+    -- returned by+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+    -- .+    addonVersion :: Prelude.Maybe Prelude.Text,+    -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | The set of configuration values for the add-on that\'s created. The+    -- values that you provide are validated against the schema in+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonConfiguration.html DescribeAddonConfiguration>.+    configurationValues :: Prelude.Maybe Prelude.Text,+    -- | How to resolve field value conflicts for an Amazon EKS add-on if you\'ve+    -- changed a value from the Amazon EKS default value. Conflicts are handled+    -- based on the option you choose:+    --+    -- -   __None__ – Amazon EKS doesn\'t change the value. The update might+    --     fail.+    --+    -- -   __Overwrite__ – Amazon EKS overwrites the changed value back to the+    --     Amazon EKS default value.+    --+    -- -   __Preserve__ – Amazon EKS preserves the value. If you choose this+    --     option, we recommend that you test any field and value changes on a+    --     non-production cluster before updating the add-on on your production+    --     cluster.+    resolveConflicts :: Prelude.Maybe ResolveConflicts,+    -- | The Amazon Resource Name (ARN) of an existing IAM role to bind to the+    -- add-on\'s service account. The role must be assigned the IAM permissions+    -- required by the add-on. If you don\'t specify an existing IAM role, then+    -- the add-on uses the permissions assigned to the node IAM role. For more+    -- information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html Amazon EKS node IAM role>+    -- in the /Amazon EKS User Guide/.+    --+    -- To specify an existing IAM role, you must have an IAM OpenID Connect+    -- (OIDC) provider created for your cluster. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html Enabling IAM roles for service accounts on your cluster>+    -- in the /Amazon EKS User Guide/.+    serviceAccountRoleArn :: Prelude.Maybe Prelude.Text,+    -- | The name of the cluster.+    clusterName :: Prelude.Text,+    -- | The name of the add-on. The name must match one of the names returned by+    -- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+    -- .+    addonName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAddon' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addonVersion', 'updateAddon_addonVersion' - The version of the add-on. The version must match one of the versions+-- returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+-- .+--+-- 'clientRequestToken', 'updateAddon_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'configurationValues', 'updateAddon_configurationValues' - The set of configuration values for the add-on that\'s created. The+-- values that you provide are validated against the schema in+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonConfiguration.html DescribeAddonConfiguration>.+--+-- 'resolveConflicts', 'updateAddon_resolveConflicts' - How to resolve field value conflicts for an Amazon EKS add-on if you\'ve+-- changed a value from the Amazon EKS default value. Conflicts are handled+-- based on the option you choose:+--+-- -   __None__ – Amazon EKS doesn\'t change the value. The update might+--     fail.+--+-- -   __Overwrite__ – Amazon EKS overwrites the changed value back to the+--     Amazon EKS default value.+--+-- -   __Preserve__ – Amazon EKS preserves the value. If you choose this+--     option, we recommend that you test any field and value changes on a+--     non-production cluster before updating the add-on on your production+--     cluster.+--+-- 'serviceAccountRoleArn', 'updateAddon_serviceAccountRoleArn' - The Amazon Resource Name (ARN) of an existing IAM role to bind to the+-- add-on\'s service account. The role must be assigned the IAM permissions+-- required by the add-on. If you don\'t specify an existing IAM role, then+-- the add-on uses the permissions assigned to the node IAM role. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html Amazon EKS node IAM role>+-- in the /Amazon EKS User Guide/.+--+-- To specify an existing IAM role, you must have an IAM OpenID Connect+-- (OIDC) provider created for your cluster. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html Enabling IAM roles for service accounts on your cluster>+-- in the /Amazon EKS User Guide/.+--+-- 'clusterName', 'updateAddon_clusterName' - The name of the cluster.+--+-- 'addonName', 'updateAddon_addonName' - The name of the add-on. The name must match one of the names returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+-- .+newUpdateAddon ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'addonName'+  Prelude.Text ->+  UpdateAddon+newUpdateAddon pClusterName_ pAddonName_ =+  UpdateAddon'+    { addonVersion = Prelude.Nothing,+      clientRequestToken = Prelude.Nothing,+      configurationValues = Prelude.Nothing,+      resolveConflicts = Prelude.Nothing,+      serviceAccountRoleArn = Prelude.Nothing,+      clusterName = pClusterName_,+      addonName = pAddonName_+    }++-- | The version of the add-on. The version must match one of the versions+-- returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html DescribeAddonVersions>+-- .+updateAddon_addonVersion :: Lens.Lens' UpdateAddon (Prelude.Maybe Prelude.Text)+updateAddon_addonVersion = Lens.lens (\UpdateAddon' {addonVersion} -> addonVersion) (\s@UpdateAddon' {} a -> s {addonVersion = a} :: UpdateAddon)++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+updateAddon_clientRequestToken :: Lens.Lens' UpdateAddon (Prelude.Maybe Prelude.Text)+updateAddon_clientRequestToken = Lens.lens (\UpdateAddon' {clientRequestToken} -> clientRequestToken) (\s@UpdateAddon' {} a -> s {clientRequestToken = a} :: UpdateAddon)++-- | The set of configuration values for the add-on that\'s created. The+-- values that you provide are validated against the schema in+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonConfiguration.html DescribeAddonConfiguration>.+updateAddon_configurationValues :: Lens.Lens' UpdateAddon (Prelude.Maybe Prelude.Text)+updateAddon_configurationValues = Lens.lens (\UpdateAddon' {configurationValues} -> configurationValues) (\s@UpdateAddon' {} a -> s {configurationValues = a} :: UpdateAddon)++-- | How to resolve field value conflicts for an Amazon EKS add-on if you\'ve+-- changed a value from the Amazon EKS default value. Conflicts are handled+-- based on the option you choose:+--+-- -   __None__ – Amazon EKS doesn\'t change the value. The update might+--     fail.+--+-- -   __Overwrite__ – Amazon EKS overwrites the changed value back to the+--     Amazon EKS default value.+--+-- -   __Preserve__ – Amazon EKS preserves the value. If you choose this+--     option, we recommend that you test any field and value changes on a+--     non-production cluster before updating the add-on on your production+--     cluster.+updateAddon_resolveConflicts :: Lens.Lens' UpdateAddon (Prelude.Maybe ResolveConflicts)+updateAddon_resolveConflicts = Lens.lens (\UpdateAddon' {resolveConflicts} -> resolveConflicts) (\s@UpdateAddon' {} a -> s {resolveConflicts = a} :: UpdateAddon)++-- | The Amazon Resource Name (ARN) of an existing IAM role to bind to the+-- add-on\'s service account. The role must be assigned the IAM permissions+-- required by the add-on. If you don\'t specify an existing IAM role, then+-- the add-on uses the permissions assigned to the node IAM role. For more+-- information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html Amazon EKS node IAM role>+-- in the /Amazon EKS User Guide/.+--+-- To specify an existing IAM role, you must have an IAM OpenID Connect+-- (OIDC) provider created for your cluster. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html Enabling IAM roles for service accounts on your cluster>+-- in the /Amazon EKS User Guide/.+updateAddon_serviceAccountRoleArn :: Lens.Lens' UpdateAddon (Prelude.Maybe Prelude.Text)+updateAddon_serviceAccountRoleArn = Lens.lens (\UpdateAddon' {serviceAccountRoleArn} -> serviceAccountRoleArn) (\s@UpdateAddon' {} a -> s {serviceAccountRoleArn = a} :: UpdateAddon)++-- | The name of the cluster.+updateAddon_clusterName :: Lens.Lens' UpdateAddon Prelude.Text+updateAddon_clusterName = Lens.lens (\UpdateAddon' {clusterName} -> clusterName) (\s@UpdateAddon' {} a -> s {clusterName = a} :: UpdateAddon)++-- | The name of the add-on. The name must match one of the names returned by+-- <https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html ListAddons>+-- .+updateAddon_addonName :: Lens.Lens' UpdateAddon Prelude.Text+updateAddon_addonName = Lens.lens (\UpdateAddon' {addonName} -> addonName) (\s@UpdateAddon' {} a -> s {addonName = a} :: UpdateAddon)++instance Core.AWSRequest UpdateAddon where+  type AWSResponse UpdateAddon = UpdateAddonResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateAddonResponse'+            Prelude.<$> (x Data..?> "update")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateAddon where+  hashWithSalt _salt UpdateAddon' {..} =+    _salt+      `Prelude.hashWithSalt` addonVersion+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` configurationValues+      `Prelude.hashWithSalt` resolveConflicts+      `Prelude.hashWithSalt` serviceAccountRoleArn+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` addonName++instance Prelude.NFData UpdateAddon where+  rnf UpdateAddon' {..} =+    Prelude.rnf addonVersion+      `Prelude.seq` Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf configurationValues+      `Prelude.seq` Prelude.rnf resolveConflicts+      `Prelude.seq` Prelude.rnf serviceAccountRoleArn+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf addonName++instance Data.ToHeaders UpdateAddon where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateAddon where+  toJSON UpdateAddon' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("addonVersion" Data..=) Prelude.<$> addonVersion,+            ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("configurationValues" Data..=)+              Prelude.<$> configurationValues,+            ("resolveConflicts" Data..=)+              Prelude.<$> resolveConflicts,+            ("serviceAccountRoleArn" Data..=)+              Prelude.<$> serviceAccountRoleArn+          ]+      )++instance Data.ToPath UpdateAddon where+  toPath UpdateAddon' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/addons/",+        Data.toBS addonName,+        "/update"+      ]++instance Data.ToQuery UpdateAddon where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateAddonResponse' smart constructor.+data UpdateAddonResponse = UpdateAddonResponse'+  { update :: Prelude.Maybe Update,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAddonResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'update', 'updateAddonResponse_update' - Undocumented member.+--+-- 'httpStatus', 'updateAddonResponse_httpStatus' - The response's http status code.+newUpdateAddonResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateAddonResponse+newUpdateAddonResponse pHttpStatus_ =+  UpdateAddonResponse'+    { update = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+updateAddonResponse_update :: Lens.Lens' UpdateAddonResponse (Prelude.Maybe Update)+updateAddonResponse_update = Lens.lens (\UpdateAddonResponse' {update} -> update) (\s@UpdateAddonResponse' {} a -> s {update = a} :: UpdateAddonResponse)++-- | The response's http status code.+updateAddonResponse_httpStatus :: Lens.Lens' UpdateAddonResponse Prelude.Int+updateAddonResponse_httpStatus = Lens.lens (\UpdateAddonResponse' {httpStatus} -> httpStatus) (\s@UpdateAddonResponse' {} a -> s {httpStatus = a} :: UpdateAddonResponse)++instance Prelude.NFData UpdateAddonResponse where+  rnf UpdateAddonResponse' {..} =+    Prelude.rnf update+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/UpdateClusterConfig.hs view
@@ -0,0 +1,266 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.UpdateClusterConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an Amazon EKS cluster configuration. Your cluster continues to+-- function during the update. The response output includes an update ID+-- that you can use to track the status of your cluster update with the+-- DescribeUpdate API operation.+--+-- You can use this API operation to enable or disable exporting the+-- Kubernetes control plane logs for your cluster to CloudWatch Logs. By+-- default, cluster control plane logs aren\'t exported to CloudWatch Logs.+-- For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html Amazon EKS Cluster Control Plane Logs>+-- in the //Amazon EKS User Guide// .+--+-- CloudWatch Logs ingestion, archive storage, and data scanning rates+-- apply to exported control plane logs. For more information, see+-- <http://aws.amazon.com/cloudwatch/pricing/ CloudWatch Pricing>.+--+-- You can also use this API operation to enable or disable public and+-- private access to your cluster\'s Kubernetes API server endpoint. By+-- default, public access is enabled, and private access is disabled. For+-- more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html Amazon EKS cluster endpoint access control>+-- in the //Amazon EKS User Guide// .+--+-- You can\'t update the subnets or security group IDs for an existing+-- cluster.+--+-- Cluster updates are asynchronous, and they should finish within a few+-- minutes. During an update, the cluster status moves to @UPDATING@ (this+-- status transition is eventually consistent). When the update is complete+-- (either @Failed@ or @Successful@), the cluster status moves to @Active@.+module Amazonka.EKS.UpdateClusterConfig+  ( -- * Creating a Request+    UpdateClusterConfig (..),+    newUpdateClusterConfig,++    -- * Request Lenses+    updateClusterConfig_clientRequestToken,+    updateClusterConfig_logging,+    updateClusterConfig_resourcesVpcConfig,+    updateClusterConfig_name,++    -- * Destructuring the Response+    UpdateClusterConfigResponse (..),+    newUpdateClusterConfigResponse,++    -- * Response Lenses+    updateClusterConfigResponse_update,+    updateClusterConfigResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateClusterConfig' smart constructor.+data UpdateClusterConfig = UpdateClusterConfig'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | Enable or disable exporting the Kubernetes control plane logs for your+    -- cluster to CloudWatch Logs. By default, cluster control plane logs+    -- aren\'t exported to CloudWatch Logs. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html Amazon EKS cluster control plane logs>+    -- in the //Amazon EKS User Guide// .+    --+    -- CloudWatch Logs ingestion, archive storage, and data scanning rates+    -- apply to exported control plane logs. For more information, see+    -- <http://aws.amazon.com/cloudwatch/pricing/ CloudWatch Pricing>.+    logging :: Prelude.Maybe Logging,+    resourcesVpcConfig :: Prelude.Maybe VpcConfigRequest,+    -- | The name of the Amazon EKS cluster to update.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateClusterConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'updateClusterConfig_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'logging', 'updateClusterConfig_logging' - Enable or disable exporting the Kubernetes control plane logs for your+-- cluster to CloudWatch Logs. By default, cluster control plane logs+-- aren\'t exported to CloudWatch Logs. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html Amazon EKS cluster control plane logs>+-- in the //Amazon EKS User Guide// .+--+-- CloudWatch Logs ingestion, archive storage, and data scanning rates+-- apply to exported control plane logs. For more information, see+-- <http://aws.amazon.com/cloudwatch/pricing/ CloudWatch Pricing>.+--+-- 'resourcesVpcConfig', 'updateClusterConfig_resourcesVpcConfig' - Undocumented member.+--+-- 'name', 'updateClusterConfig_name' - The name of the Amazon EKS cluster to update.+newUpdateClusterConfig ::+  -- | 'name'+  Prelude.Text ->+  UpdateClusterConfig+newUpdateClusterConfig pName_ =+  UpdateClusterConfig'+    { clientRequestToken =+        Prelude.Nothing,+      logging = Prelude.Nothing,+      resourcesVpcConfig = Prelude.Nothing,+      name = pName_+    }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+updateClusterConfig_clientRequestToken :: Lens.Lens' UpdateClusterConfig (Prelude.Maybe Prelude.Text)+updateClusterConfig_clientRequestToken = Lens.lens (\UpdateClusterConfig' {clientRequestToken} -> clientRequestToken) (\s@UpdateClusterConfig' {} a -> s {clientRequestToken = a} :: UpdateClusterConfig)++-- | Enable or disable exporting the Kubernetes control plane logs for your+-- cluster to CloudWatch Logs. By default, cluster control plane logs+-- aren\'t exported to CloudWatch Logs. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html Amazon EKS cluster control plane logs>+-- in the //Amazon EKS User Guide// .+--+-- CloudWatch Logs ingestion, archive storage, and data scanning rates+-- apply to exported control plane logs. For more information, see+-- <http://aws.amazon.com/cloudwatch/pricing/ CloudWatch Pricing>.+updateClusterConfig_logging :: Lens.Lens' UpdateClusterConfig (Prelude.Maybe Logging)+updateClusterConfig_logging = Lens.lens (\UpdateClusterConfig' {logging} -> logging) (\s@UpdateClusterConfig' {} a -> s {logging = a} :: UpdateClusterConfig)++-- | Undocumented member.+updateClusterConfig_resourcesVpcConfig :: Lens.Lens' UpdateClusterConfig (Prelude.Maybe VpcConfigRequest)+updateClusterConfig_resourcesVpcConfig = Lens.lens (\UpdateClusterConfig' {resourcesVpcConfig} -> resourcesVpcConfig) (\s@UpdateClusterConfig' {} a -> s {resourcesVpcConfig = a} :: UpdateClusterConfig)++-- | The name of the Amazon EKS cluster to update.+updateClusterConfig_name :: Lens.Lens' UpdateClusterConfig Prelude.Text+updateClusterConfig_name = Lens.lens (\UpdateClusterConfig' {name} -> name) (\s@UpdateClusterConfig' {} a -> s {name = a} :: UpdateClusterConfig)++instance Core.AWSRequest UpdateClusterConfig where+  type+    AWSResponse UpdateClusterConfig =+      UpdateClusterConfigResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateClusterConfigResponse'+            Prelude.<$> (x Data..?> "update")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateClusterConfig where+  hashWithSalt _salt UpdateClusterConfig' {..} =+    _salt+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` logging+      `Prelude.hashWithSalt` resourcesVpcConfig+      `Prelude.hashWithSalt` name++instance Prelude.NFData UpdateClusterConfig where+  rnf UpdateClusterConfig' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf logging+      `Prelude.seq` Prelude.rnf resourcesVpcConfig+      `Prelude.seq` Prelude.rnf name++instance Data.ToHeaders UpdateClusterConfig where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateClusterConfig where+  toJSON UpdateClusterConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("logging" Data..=) Prelude.<$> logging,+            ("resourcesVpcConfig" Data..=)+              Prelude.<$> resourcesVpcConfig+          ]+      )++instance Data.ToPath UpdateClusterConfig where+  toPath UpdateClusterConfig' {..} =+    Prelude.mconcat+      ["/clusters/", Data.toBS name, "/update-config"]++instance Data.ToQuery UpdateClusterConfig where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateClusterConfigResponse' smart constructor.+data UpdateClusterConfigResponse = UpdateClusterConfigResponse'+  { update :: Prelude.Maybe Update,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateClusterConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'update', 'updateClusterConfigResponse_update' - Undocumented member.+--+-- 'httpStatus', 'updateClusterConfigResponse_httpStatus' - The response's http status code.+newUpdateClusterConfigResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateClusterConfigResponse+newUpdateClusterConfigResponse pHttpStatus_ =+  UpdateClusterConfigResponse'+    { update =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+updateClusterConfigResponse_update :: Lens.Lens' UpdateClusterConfigResponse (Prelude.Maybe Update)+updateClusterConfigResponse_update = Lens.lens (\UpdateClusterConfigResponse' {update} -> update) (\s@UpdateClusterConfigResponse' {} a -> s {update = a} :: UpdateClusterConfigResponse)++-- | The response's http status code.+updateClusterConfigResponse_httpStatus :: Lens.Lens' UpdateClusterConfigResponse Prelude.Int+updateClusterConfigResponse_httpStatus = Lens.lens (\UpdateClusterConfigResponse' {httpStatus} -> httpStatus) (\s@UpdateClusterConfigResponse' {} a -> s {httpStatus = a} :: UpdateClusterConfigResponse)++instance Prelude.NFData UpdateClusterConfigResponse where+  rnf UpdateClusterConfigResponse' {..} =+    Prelude.rnf update+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/UpdateClusterVersion.hs view
@@ -0,0 +1,215 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.UpdateClusterVersion+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an Amazon EKS cluster to the specified Kubernetes version. Your+-- cluster continues to function during the update. The response output+-- includes an update ID that you can use to track the status of your+-- cluster update with the DescribeUpdate API operation.+--+-- Cluster updates are asynchronous, and they should finish within a few+-- minutes. During an update, the cluster status moves to @UPDATING@ (this+-- status transition is eventually consistent). When the update is complete+-- (either @Failed@ or @Successful@), the cluster status moves to @Active@.+--+-- If your cluster has managed node groups attached to it, all of your node+-- groups’ Kubernetes versions must match the cluster’s Kubernetes version+-- in order to update the cluster to a new Kubernetes version.+module Amazonka.EKS.UpdateClusterVersion+  ( -- * Creating a Request+    UpdateClusterVersion (..),+    newUpdateClusterVersion,++    -- * Request Lenses+    updateClusterVersion_clientRequestToken,+    updateClusterVersion_name,+    updateClusterVersion_version,++    -- * Destructuring the Response+    UpdateClusterVersionResponse (..),+    newUpdateClusterVersionResponse,++    -- * Response Lenses+    updateClusterVersionResponse_update,+    updateClusterVersionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateClusterVersion' smart constructor.+data UpdateClusterVersion = UpdateClusterVersion'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | The name of the Amazon EKS cluster to update.+    name :: Prelude.Text,+    -- | The desired Kubernetes version following a successful update.+    version :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateClusterVersion' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'updateClusterVersion_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'name', 'updateClusterVersion_name' - The name of the Amazon EKS cluster to update.+--+-- 'version', 'updateClusterVersion_version' - The desired Kubernetes version following a successful update.+newUpdateClusterVersion ::+  -- | 'name'+  Prelude.Text ->+  -- | 'version'+  Prelude.Text ->+  UpdateClusterVersion+newUpdateClusterVersion pName_ pVersion_ =+  UpdateClusterVersion'+    { clientRequestToken =+        Prelude.Nothing,+      name = pName_,+      version = pVersion_+    }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+updateClusterVersion_clientRequestToken :: Lens.Lens' UpdateClusterVersion (Prelude.Maybe Prelude.Text)+updateClusterVersion_clientRequestToken = Lens.lens (\UpdateClusterVersion' {clientRequestToken} -> clientRequestToken) (\s@UpdateClusterVersion' {} a -> s {clientRequestToken = a} :: UpdateClusterVersion)++-- | The name of the Amazon EKS cluster to update.+updateClusterVersion_name :: Lens.Lens' UpdateClusterVersion Prelude.Text+updateClusterVersion_name = Lens.lens (\UpdateClusterVersion' {name} -> name) (\s@UpdateClusterVersion' {} a -> s {name = a} :: UpdateClusterVersion)++-- | The desired Kubernetes version following a successful update.+updateClusterVersion_version :: Lens.Lens' UpdateClusterVersion Prelude.Text+updateClusterVersion_version = Lens.lens (\UpdateClusterVersion' {version} -> version) (\s@UpdateClusterVersion' {} a -> s {version = a} :: UpdateClusterVersion)++instance Core.AWSRequest UpdateClusterVersion where+  type+    AWSResponse UpdateClusterVersion =+      UpdateClusterVersionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateClusterVersionResponse'+            Prelude.<$> (x Data..?> "update")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateClusterVersion where+  hashWithSalt _salt UpdateClusterVersion' {..} =+    _salt+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` version++instance Prelude.NFData UpdateClusterVersion where+  rnf UpdateClusterVersion' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf version++instance Data.ToHeaders UpdateClusterVersion where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateClusterVersion where+  toJSON UpdateClusterVersion' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            Prelude.Just ("version" Data..= version)+          ]+      )++instance Data.ToPath UpdateClusterVersion where+  toPath UpdateClusterVersion' {..} =+    Prelude.mconcat+      ["/clusters/", Data.toBS name, "/updates"]++instance Data.ToQuery UpdateClusterVersion where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateClusterVersionResponse' smart constructor.+data UpdateClusterVersionResponse = UpdateClusterVersionResponse'+  { -- | The full description of the specified update+    update :: Prelude.Maybe Update,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateClusterVersionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'update', 'updateClusterVersionResponse_update' - The full description of the specified update+--+-- 'httpStatus', 'updateClusterVersionResponse_httpStatus' - The response's http status code.+newUpdateClusterVersionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateClusterVersionResponse+newUpdateClusterVersionResponse pHttpStatus_ =+  UpdateClusterVersionResponse'+    { update =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The full description of the specified update+updateClusterVersionResponse_update :: Lens.Lens' UpdateClusterVersionResponse (Prelude.Maybe Update)+updateClusterVersionResponse_update = Lens.lens (\UpdateClusterVersionResponse' {update} -> update) (\s@UpdateClusterVersionResponse' {} a -> s {update = a} :: UpdateClusterVersionResponse)++-- | The response's http status code.+updateClusterVersionResponse_httpStatus :: Lens.Lens' UpdateClusterVersionResponse Prelude.Int+updateClusterVersionResponse_httpStatus = Lens.lens (\UpdateClusterVersionResponse' {httpStatus} -> httpStatus) (\s@UpdateClusterVersionResponse' {} a -> s {httpStatus = a} :: UpdateClusterVersionResponse)++instance Prelude.NFData UpdateClusterVersionResponse where+  rnf UpdateClusterVersionResponse' {..} =+    Prelude.rnf update+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/UpdateNodegroupConfig.hs view
@@ -0,0 +1,279 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.UpdateNodegroupConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an Amazon EKS managed node group configuration. Your node group+-- continues to function during the update. The response output includes an+-- update ID that you can use to track the status of your node group update+-- with the DescribeUpdate API operation. Currently you can update the+-- Kubernetes labels for a node group or the scaling configuration.+module Amazonka.EKS.UpdateNodegroupConfig+  ( -- * Creating a Request+    UpdateNodegroupConfig (..),+    newUpdateNodegroupConfig,++    -- * Request Lenses+    updateNodegroupConfig_clientRequestToken,+    updateNodegroupConfig_labels,+    updateNodegroupConfig_scalingConfig,+    updateNodegroupConfig_taints,+    updateNodegroupConfig_updateConfig,+    updateNodegroupConfig_clusterName,+    updateNodegroupConfig_nodegroupName,++    -- * Destructuring the Response+    UpdateNodegroupConfigResponse (..),+    newUpdateNodegroupConfigResponse,++    -- * Response Lenses+    updateNodegroupConfigResponse_update,+    updateNodegroupConfigResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateNodegroupConfig' smart constructor.+data UpdateNodegroupConfig = UpdateNodegroupConfig'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | The Kubernetes labels to be applied to the nodes in the node group after+    -- the update.+    labels :: Prelude.Maybe UpdateLabelsPayload,+    -- | The scaling configuration details for the Auto Scaling group after the+    -- update.+    scalingConfig :: Prelude.Maybe NodegroupScalingConfig,+    -- | The Kubernetes taints to be applied to the nodes in the node group after+    -- the update. For more information, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.+    taints :: Prelude.Maybe UpdateTaintsPayload,+    -- | The node group update configuration.+    updateConfig :: Prelude.Maybe NodegroupUpdateConfig,+    -- | The name of the Amazon EKS cluster that the managed node group resides+    -- in.+    clusterName :: Prelude.Text,+    -- | The name of the managed node group to update.+    nodegroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateNodegroupConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'updateNodegroupConfig_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'labels', 'updateNodegroupConfig_labels' - The Kubernetes labels to be applied to the nodes in the node group after+-- the update.+--+-- 'scalingConfig', 'updateNodegroupConfig_scalingConfig' - The scaling configuration details for the Auto Scaling group after the+-- update.+--+-- 'taints', 'updateNodegroupConfig_taints' - The Kubernetes taints to be applied to the nodes in the node group after+-- the update. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.+--+-- 'updateConfig', 'updateNodegroupConfig_updateConfig' - The node group update configuration.+--+-- 'clusterName', 'updateNodegroupConfig_clusterName' - The name of the Amazon EKS cluster that the managed node group resides+-- in.+--+-- 'nodegroupName', 'updateNodegroupConfig_nodegroupName' - The name of the managed node group to update.+newUpdateNodegroupConfig ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'nodegroupName'+  Prelude.Text ->+  UpdateNodegroupConfig+newUpdateNodegroupConfig+  pClusterName_+  pNodegroupName_ =+    UpdateNodegroupConfig'+      { clientRequestToken =+          Prelude.Nothing,+        labels = Prelude.Nothing,+        scalingConfig = Prelude.Nothing,+        taints = Prelude.Nothing,+        updateConfig = Prelude.Nothing,+        clusterName = pClusterName_,+        nodegroupName = pNodegroupName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+updateNodegroupConfig_clientRequestToken :: Lens.Lens' UpdateNodegroupConfig (Prelude.Maybe Prelude.Text)+updateNodegroupConfig_clientRequestToken = Lens.lens (\UpdateNodegroupConfig' {clientRequestToken} -> clientRequestToken) (\s@UpdateNodegroupConfig' {} a -> s {clientRequestToken = a} :: UpdateNodegroupConfig)++-- | The Kubernetes labels to be applied to the nodes in the node group after+-- the update.+updateNodegroupConfig_labels :: Lens.Lens' UpdateNodegroupConfig (Prelude.Maybe UpdateLabelsPayload)+updateNodegroupConfig_labels = Lens.lens (\UpdateNodegroupConfig' {labels} -> labels) (\s@UpdateNodegroupConfig' {} a -> s {labels = a} :: UpdateNodegroupConfig)++-- | The scaling configuration details for the Auto Scaling group after the+-- update.+updateNodegroupConfig_scalingConfig :: Lens.Lens' UpdateNodegroupConfig (Prelude.Maybe NodegroupScalingConfig)+updateNodegroupConfig_scalingConfig = Lens.lens (\UpdateNodegroupConfig' {scalingConfig} -> scalingConfig) (\s@UpdateNodegroupConfig' {} a -> s {scalingConfig = a} :: UpdateNodegroupConfig)++-- | The Kubernetes taints to be applied to the nodes in the node group after+-- the update. For more information, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html Node taints on managed node groups>.+updateNodegroupConfig_taints :: Lens.Lens' UpdateNodegroupConfig (Prelude.Maybe UpdateTaintsPayload)+updateNodegroupConfig_taints = Lens.lens (\UpdateNodegroupConfig' {taints} -> taints) (\s@UpdateNodegroupConfig' {} a -> s {taints = a} :: UpdateNodegroupConfig)++-- | The node group update configuration.+updateNodegroupConfig_updateConfig :: Lens.Lens' UpdateNodegroupConfig (Prelude.Maybe NodegroupUpdateConfig)+updateNodegroupConfig_updateConfig = Lens.lens (\UpdateNodegroupConfig' {updateConfig} -> updateConfig) (\s@UpdateNodegroupConfig' {} a -> s {updateConfig = a} :: UpdateNodegroupConfig)++-- | The name of the Amazon EKS cluster that the managed node group resides+-- in.+updateNodegroupConfig_clusterName :: Lens.Lens' UpdateNodegroupConfig Prelude.Text+updateNodegroupConfig_clusterName = Lens.lens (\UpdateNodegroupConfig' {clusterName} -> clusterName) (\s@UpdateNodegroupConfig' {} a -> s {clusterName = a} :: UpdateNodegroupConfig)++-- | The name of the managed node group to update.+updateNodegroupConfig_nodegroupName :: Lens.Lens' UpdateNodegroupConfig Prelude.Text+updateNodegroupConfig_nodegroupName = Lens.lens (\UpdateNodegroupConfig' {nodegroupName} -> nodegroupName) (\s@UpdateNodegroupConfig' {} a -> s {nodegroupName = a} :: UpdateNodegroupConfig)++instance Core.AWSRequest UpdateNodegroupConfig where+  type+    AWSResponse UpdateNodegroupConfig =+      UpdateNodegroupConfigResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateNodegroupConfigResponse'+            Prelude.<$> (x Data..?> "update")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateNodegroupConfig where+  hashWithSalt _salt UpdateNodegroupConfig' {..} =+    _salt+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` labels+      `Prelude.hashWithSalt` scalingConfig+      `Prelude.hashWithSalt` taints+      `Prelude.hashWithSalt` updateConfig+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` nodegroupName++instance Prelude.NFData UpdateNodegroupConfig where+  rnf UpdateNodegroupConfig' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf labels+      `Prelude.seq` Prelude.rnf scalingConfig+      `Prelude.seq` Prelude.rnf taints+      `Prelude.seq` Prelude.rnf updateConfig+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf nodegroupName++instance Data.ToHeaders UpdateNodegroupConfig where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateNodegroupConfig where+  toJSON UpdateNodegroupConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("labels" Data..=) Prelude.<$> labels,+            ("scalingConfig" Data..=) Prelude.<$> scalingConfig,+            ("taints" Data..=) Prelude.<$> taints,+            ("updateConfig" Data..=) Prelude.<$> updateConfig+          ]+      )++instance Data.ToPath UpdateNodegroupConfig where+  toPath UpdateNodegroupConfig' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/node-groups/",+        Data.toBS nodegroupName,+        "/update-config"+      ]++instance Data.ToQuery UpdateNodegroupConfig where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateNodegroupConfigResponse' smart constructor.+data UpdateNodegroupConfigResponse = UpdateNodegroupConfigResponse'+  { update :: Prelude.Maybe Update,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateNodegroupConfigResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'update', 'updateNodegroupConfigResponse_update' - Undocumented member.+--+-- 'httpStatus', 'updateNodegroupConfigResponse_httpStatus' - The response's http status code.+newUpdateNodegroupConfigResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateNodegroupConfigResponse+newUpdateNodegroupConfigResponse pHttpStatus_ =+  UpdateNodegroupConfigResponse'+    { update =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+updateNodegroupConfigResponse_update :: Lens.Lens' UpdateNodegroupConfigResponse (Prelude.Maybe Update)+updateNodegroupConfigResponse_update = Lens.lens (\UpdateNodegroupConfigResponse' {update} -> update) (\s@UpdateNodegroupConfigResponse' {} a -> s {update = a} :: UpdateNodegroupConfigResponse)++-- | The response's http status code.+updateNodegroupConfigResponse_httpStatus :: Lens.Lens' UpdateNodegroupConfigResponse Prelude.Int+updateNodegroupConfigResponse_httpStatus = Lens.lens (\UpdateNodegroupConfigResponse' {httpStatus} -> httpStatus) (\s@UpdateNodegroupConfigResponse' {} a -> s {httpStatus = a} :: UpdateNodegroupConfigResponse)++instance Prelude.NFData UpdateNodegroupConfigResponse where+  rnf UpdateNodegroupConfigResponse' {..} =+    Prelude.rnf update+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/UpdateNodegroupVersion.hs view
@@ -0,0 +1,381 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.UpdateNodegroupVersion+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the Kubernetes version or AMI version of an Amazon EKS managed+-- node group.+--+-- You can update a node group using a launch template only if the node+-- group was originally deployed with a launch template. If you need to+-- update a custom AMI in a node group that was deployed with a launch+-- template, then update your custom AMI, specify the new ID in a new+-- version of the launch template, and then update the node group to the+-- new version of the launch template.+--+-- If you update without a launch template, then you can update to the+-- latest available AMI version of a node group\'s current Kubernetes+-- version by not specifying a Kubernetes version in the request. You can+-- update to the latest AMI version of your cluster\'s current Kubernetes+-- version by specifying your cluster\'s Kubernetes version in the request.+-- For information about Linux versions, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html Amazon EKS optimized Amazon Linux AMI versions>+-- in the /Amazon EKS User Guide/. For information about Windows versions,+-- see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html Amazon EKS optimized Windows AMI versions>+-- in the /Amazon EKS User Guide/.+--+-- You cannot roll back a node group to an earlier Kubernetes version or+-- AMI version.+--+-- When a node in a managed node group is terminated due to a scaling+-- action or update, the pods in that node are drained first. Amazon EKS+-- attempts to drain the nodes gracefully and will fail if it is unable to+-- do so. You can @force@ the update if Amazon EKS is unable to drain the+-- nodes as a result of a pod disruption budget issue.+module Amazonka.EKS.UpdateNodegroupVersion+  ( -- * Creating a Request+    UpdateNodegroupVersion (..),+    newUpdateNodegroupVersion,++    -- * Request Lenses+    updateNodegroupVersion_clientRequestToken,+    updateNodegroupVersion_force,+    updateNodegroupVersion_launchTemplate,+    updateNodegroupVersion_releaseVersion,+    updateNodegroupVersion_version,+    updateNodegroupVersion_clusterName,+    updateNodegroupVersion_nodegroupName,++    -- * Destructuring the Response+    UpdateNodegroupVersionResponse (..),+    newUpdateNodegroupVersionResponse,++    -- * Response Lenses+    updateNodegroupVersionResponse_update,+    updateNodegroupVersionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateNodegroupVersion' smart constructor.+data UpdateNodegroupVersion = UpdateNodegroupVersion'+  { -- | Unique, case-sensitive identifier that you provide to ensure the+    -- idempotency of the request.+    clientRequestToken :: Prelude.Maybe Prelude.Text,+    -- | Force the update if the existing node group\'s pods are unable to be+    -- drained due to a pod disruption budget issue. If an update fails because+    -- pods could not be drained, you can force the update after it fails to+    -- terminate the old node whether or not any pods are running on the node.+    force :: Prelude.Maybe Prelude.Bool,+    -- | An object representing a node group\'s launch template specification.+    -- You can only update a node group using a launch template if the node+    -- group was originally deployed with a launch template.+    launchTemplate :: Prelude.Maybe LaunchTemplateSpecification,+    -- | The AMI version of the Amazon EKS optimized AMI to use for the update.+    -- By default, the latest available AMI version for the node group\'s+    -- Kubernetes version is used. For information about Linux versions, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html Amazon EKS optimized Amazon Linux AMI versions>+    -- in the /Amazon EKS User Guide/. Amazon EKS managed node groups support+    -- the November 2022 and later releases of the Windows AMIs. For+    -- information about Windows versions, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html Amazon EKS optimized Windows AMI versions>+    -- in the /Amazon EKS User Guide/.+    --+    -- If you specify @launchTemplate@, and your launch template uses a custom+    -- AMI, then don\'t specify @releaseVersion@, or the node group update will+    -- fail. For more information about using launch templates with Amazon EKS,+    -- see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+    -- in the /Amazon EKS User Guide/.+    releaseVersion :: Prelude.Maybe Prelude.Text,+    -- | The Kubernetes version to update to. If no version is specified, then+    -- the Kubernetes version of the node group does not change. You can+    -- specify the Kubernetes version of the cluster to update the node group+    -- to the latest AMI version of the cluster\'s Kubernetes version. If you+    -- specify @launchTemplate@, and your launch template uses a custom AMI,+    -- then don\'t specify @version@, or the node group update will fail. For+    -- more information about using launch templates with Amazon EKS, see+    -- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+    -- in the /Amazon EKS User Guide/.+    version :: Prelude.Maybe Prelude.Text,+    -- | The name of the Amazon EKS cluster that is associated with the managed+    -- node group to update.+    clusterName :: Prelude.Text,+    -- | The name of the managed node group to update.+    nodegroupName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateNodegroupVersion' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientRequestToken', 'updateNodegroupVersion_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+--+-- 'force', 'updateNodegroupVersion_force' - Force the update if the existing node group\'s pods are unable to be+-- drained due to a pod disruption budget issue. If an update fails because+-- pods could not be drained, you can force the update after it fails to+-- terminate the old node whether or not any pods are running on the node.+--+-- 'launchTemplate', 'updateNodegroupVersion_launchTemplate' - An object representing a node group\'s launch template specification.+-- You can only update a node group using a launch template if the node+-- group was originally deployed with a launch template.+--+-- 'releaseVersion', 'updateNodegroupVersion_releaseVersion' - The AMI version of the Amazon EKS optimized AMI to use for the update.+-- By default, the latest available AMI version for the node group\'s+-- Kubernetes version is used. For information about Linux versions, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html Amazon EKS optimized Amazon Linux AMI versions>+-- in the /Amazon EKS User Guide/. Amazon EKS managed node groups support+-- the November 2022 and later releases of the Windows AMIs. For+-- information about Windows versions, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html Amazon EKS optimized Windows AMI versions>+-- in the /Amazon EKS User Guide/.+--+-- If you specify @launchTemplate@, and your launch template uses a custom+-- AMI, then don\'t specify @releaseVersion@, or the node group update will+-- fail. For more information about using launch templates with Amazon EKS,+-- see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+--+-- 'version', 'updateNodegroupVersion_version' - The Kubernetes version to update to. If no version is specified, then+-- the Kubernetes version of the node group does not change. You can+-- specify the Kubernetes version of the cluster to update the node group+-- to the latest AMI version of the cluster\'s Kubernetes version. If you+-- specify @launchTemplate@, and your launch template uses a custom AMI,+-- then don\'t specify @version@, or the node group update will fail. For+-- more information about using launch templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+--+-- 'clusterName', 'updateNodegroupVersion_clusterName' - The name of the Amazon EKS cluster that is associated with the managed+-- node group to update.+--+-- 'nodegroupName', 'updateNodegroupVersion_nodegroupName' - The name of the managed node group to update.+newUpdateNodegroupVersion ::+  -- | 'clusterName'+  Prelude.Text ->+  -- | 'nodegroupName'+  Prelude.Text ->+  UpdateNodegroupVersion+newUpdateNodegroupVersion+  pClusterName_+  pNodegroupName_ =+    UpdateNodegroupVersion'+      { clientRequestToken =+          Prelude.Nothing,+        force = Prelude.Nothing,+        launchTemplate = Prelude.Nothing,+        releaseVersion = Prelude.Nothing,+        version = Prelude.Nothing,+        clusterName = pClusterName_,+        nodegroupName = pNodegroupName_+      }++-- | Unique, case-sensitive identifier that you provide to ensure the+-- idempotency of the request.+updateNodegroupVersion_clientRequestToken :: Lens.Lens' UpdateNodegroupVersion (Prelude.Maybe Prelude.Text)+updateNodegroupVersion_clientRequestToken = Lens.lens (\UpdateNodegroupVersion' {clientRequestToken} -> clientRequestToken) (\s@UpdateNodegroupVersion' {} a -> s {clientRequestToken = a} :: UpdateNodegroupVersion)++-- | Force the update if the existing node group\'s pods are unable to be+-- drained due to a pod disruption budget issue. If an update fails because+-- pods could not be drained, you can force the update after it fails to+-- terminate the old node whether or not any pods are running on the node.+updateNodegroupVersion_force :: Lens.Lens' UpdateNodegroupVersion (Prelude.Maybe Prelude.Bool)+updateNodegroupVersion_force = Lens.lens (\UpdateNodegroupVersion' {force} -> force) (\s@UpdateNodegroupVersion' {} a -> s {force = a} :: UpdateNodegroupVersion)++-- | An object representing a node group\'s launch template specification.+-- You can only update a node group using a launch template if the node+-- group was originally deployed with a launch template.+updateNodegroupVersion_launchTemplate :: Lens.Lens' UpdateNodegroupVersion (Prelude.Maybe LaunchTemplateSpecification)+updateNodegroupVersion_launchTemplate = Lens.lens (\UpdateNodegroupVersion' {launchTemplate} -> launchTemplate) (\s@UpdateNodegroupVersion' {} a -> s {launchTemplate = a} :: UpdateNodegroupVersion)++-- | The AMI version of the Amazon EKS optimized AMI to use for the update.+-- By default, the latest available AMI version for the node group\'s+-- Kubernetes version is used. For information about Linux versions, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html Amazon EKS optimized Amazon Linux AMI versions>+-- in the /Amazon EKS User Guide/. Amazon EKS managed node groups support+-- the November 2022 and later releases of the Windows AMIs. For+-- information about Windows versions, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html Amazon EKS optimized Windows AMI versions>+-- in the /Amazon EKS User Guide/.+--+-- If you specify @launchTemplate@, and your launch template uses a custom+-- AMI, then don\'t specify @releaseVersion@, or the node group update will+-- fail. For more information about using launch templates with Amazon EKS,+-- see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+updateNodegroupVersion_releaseVersion :: Lens.Lens' UpdateNodegroupVersion (Prelude.Maybe Prelude.Text)+updateNodegroupVersion_releaseVersion = Lens.lens (\UpdateNodegroupVersion' {releaseVersion} -> releaseVersion) (\s@UpdateNodegroupVersion' {} a -> s {releaseVersion = a} :: UpdateNodegroupVersion)++-- | The Kubernetes version to update to. If no version is specified, then+-- the Kubernetes version of the node group does not change. You can+-- specify the Kubernetes version of the cluster to update the node group+-- to the latest AMI version of the cluster\'s Kubernetes version. If you+-- specify @launchTemplate@, and your launch template uses a custom AMI,+-- then don\'t specify @version@, or the node group update will fail. For+-- more information about using launch templates with Amazon EKS, see+-- <https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html Launch template support>+-- in the /Amazon EKS User Guide/.+updateNodegroupVersion_version :: Lens.Lens' UpdateNodegroupVersion (Prelude.Maybe Prelude.Text)+updateNodegroupVersion_version = Lens.lens (\UpdateNodegroupVersion' {version} -> version) (\s@UpdateNodegroupVersion' {} a -> s {version = a} :: UpdateNodegroupVersion)++-- | The name of the Amazon EKS cluster that is associated with the managed+-- node group to update.+updateNodegroupVersion_clusterName :: Lens.Lens' UpdateNodegroupVersion Prelude.Text+updateNodegroupVersion_clusterName = Lens.lens (\UpdateNodegroupVersion' {clusterName} -> clusterName) (\s@UpdateNodegroupVersion' {} a -> s {clusterName = a} :: UpdateNodegroupVersion)++-- | The name of the managed node group to update.+updateNodegroupVersion_nodegroupName :: Lens.Lens' UpdateNodegroupVersion Prelude.Text+updateNodegroupVersion_nodegroupName = Lens.lens (\UpdateNodegroupVersion' {nodegroupName} -> nodegroupName) (\s@UpdateNodegroupVersion' {} a -> s {nodegroupName = a} :: UpdateNodegroupVersion)++instance Core.AWSRequest UpdateNodegroupVersion where+  type+    AWSResponse UpdateNodegroupVersion =+      UpdateNodegroupVersionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateNodegroupVersionResponse'+            Prelude.<$> (x Data..?> "update")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateNodegroupVersion where+  hashWithSalt _salt UpdateNodegroupVersion' {..} =+    _salt+      `Prelude.hashWithSalt` clientRequestToken+      `Prelude.hashWithSalt` force+      `Prelude.hashWithSalt` launchTemplate+      `Prelude.hashWithSalt` releaseVersion+      `Prelude.hashWithSalt` version+      `Prelude.hashWithSalt` clusterName+      `Prelude.hashWithSalt` nodegroupName++instance Prelude.NFData UpdateNodegroupVersion where+  rnf UpdateNodegroupVersion' {..} =+    Prelude.rnf clientRequestToken+      `Prelude.seq` Prelude.rnf force+      `Prelude.seq` Prelude.rnf launchTemplate+      `Prelude.seq` Prelude.rnf releaseVersion+      `Prelude.seq` Prelude.rnf version+      `Prelude.seq` Prelude.rnf clusterName+      `Prelude.seq` Prelude.rnf nodegroupName++instance Data.ToHeaders UpdateNodegroupVersion where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateNodegroupVersion where+  toJSON UpdateNodegroupVersion' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientRequestToken" Data..=)+              Prelude.<$> clientRequestToken,+            ("force" Data..=) Prelude.<$> force,+            ("launchTemplate" Data..=)+              Prelude.<$> launchTemplate,+            ("releaseVersion" Data..=)+              Prelude.<$> releaseVersion,+            ("version" Data..=) Prelude.<$> version+          ]+      )++instance Data.ToPath UpdateNodegroupVersion where+  toPath UpdateNodegroupVersion' {..} =+    Prelude.mconcat+      [ "/clusters/",+        Data.toBS clusterName,+        "/node-groups/",+        Data.toBS nodegroupName,+        "/update-version"+      ]++instance Data.ToQuery UpdateNodegroupVersion where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateNodegroupVersionResponse' smart constructor.+data UpdateNodegroupVersionResponse = UpdateNodegroupVersionResponse'+  { update :: Prelude.Maybe Update,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateNodegroupVersionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'update', 'updateNodegroupVersionResponse_update' - Undocumented member.+--+-- 'httpStatus', 'updateNodegroupVersionResponse_httpStatus' - The response's http status code.+newUpdateNodegroupVersionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateNodegroupVersionResponse+newUpdateNodegroupVersionResponse pHttpStatus_ =+  UpdateNodegroupVersionResponse'+    { update =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+updateNodegroupVersionResponse_update :: Lens.Lens' UpdateNodegroupVersionResponse (Prelude.Maybe Update)+updateNodegroupVersionResponse_update = Lens.lens (\UpdateNodegroupVersionResponse' {update} -> update) (\s@UpdateNodegroupVersionResponse' {} a -> s {update = a} :: UpdateNodegroupVersionResponse)++-- | The response's http status code.+updateNodegroupVersionResponse_httpStatus :: Lens.Lens' UpdateNodegroupVersionResponse Prelude.Int+updateNodegroupVersionResponse_httpStatus = Lens.lens (\UpdateNodegroupVersionResponse' {httpStatus} -> httpStatus) (\s@UpdateNodegroupVersionResponse' {} a -> s {httpStatus = a} :: UpdateNodegroupVersionResponse)++instance+  Prelude.NFData+    UpdateNodegroupVersionResponse+  where+  rnf UpdateNodegroupVersionResponse' {..} =+    Prelude.rnf update+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/EKS/Waiters.hs view
@@ -0,0 +1,272 @@+{-# LANGUAGE DisambiguateRecordFields #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.EKS.Waiters+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.EKS.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.EKS.DescribeAddon+import Amazonka.EKS.DescribeCluster+import Amazonka.EKS.DescribeFargateProfile+import Amazonka.EKS.DescribeNodegroup+import Amazonka.EKS.Lens+import Amazonka.EKS.Types+import qualified Amazonka.Prelude as Prelude++-- | Polls 'Amazonka.EKS.DescribeAddon' every 10 seconds until a successful state is reached. An error is returned after 60 failed checks.+newAddonActive :: Core.Wait DescribeAddon+newAddonActive =+  Core.Wait+    { Core.name = "AddonActive",+      Core.attempts = 60,+      Core.delay = 10,+      Core.acceptors =+        [ Core.matchAll+            "CREATE_FAILED"+            Core.AcceptFailure+            ( describeAddonResponse_addon+                Prelude.. Lens._Just+                Prelude.. addon_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchAll+            "DEGRADED"+            Core.AcceptFailure+            ( describeAddonResponse_addon+                Prelude.. Lens._Just+                Prelude.. addon_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchAll+            "ACTIVE"+            Core.AcceptSuccess+            ( describeAddonResponse_addon+                Prelude.. Lens._Just+                Prelude.. addon_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            )+        ]+    }++-- | Polls 'Amazonka.EKS.DescribeAddon' every 10 seconds until a successful state is reached. An error is returned after 60 failed checks.+newAddonDeleted :: Core.Wait DescribeAddon+newAddonDeleted =+  Core.Wait+    { Core.name = "AddonDeleted",+      Core.attempts = 60,+      Core.delay = 10,+      Core.acceptors =+        [ Core.matchAll+            "DELETE_FAILED"+            Core.AcceptFailure+            ( describeAddonResponse_addon+                Prelude.. Lens._Just+                Prelude.. addon_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchError+            "ResourceNotFoundException"+            Core.AcceptSuccess+        ]+    }++-- | Polls 'Amazonka.EKS.DescribeCluster' every 30 seconds until a successful state is reached. An error is returned after 40 failed checks.+newClusterActive :: Core.Wait DescribeCluster+newClusterActive =+  Core.Wait+    { Core.name = "ClusterActive",+      Core.attempts = 40,+      Core.delay = 30,+      Core.acceptors =+        [ Core.matchAll+            "DELETING"+            Core.AcceptFailure+            ( describeClusterResponse_cluster+                Prelude.. Lens._Just+                Prelude.. cluster_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchAll+            "FAILED"+            Core.AcceptFailure+            ( describeClusterResponse_cluster+                Prelude.. Lens._Just+                Prelude.. cluster_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchAll+            "ACTIVE"+            Core.AcceptSuccess+            ( describeClusterResponse_cluster+                Prelude.. Lens._Just+                Prelude.. cluster_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            )+        ]+    }++-- | Polls 'Amazonka.EKS.DescribeCluster' every 30 seconds until a successful state is reached. An error is returned after 40 failed checks.+newClusterDeleted :: Core.Wait DescribeCluster+newClusterDeleted =+  Core.Wait+    { Core.name = "ClusterDeleted",+      Core.attempts = 40,+      Core.delay = 30,+      Core.acceptors =+        [ Core.matchAll+            "ACTIVE"+            Core.AcceptFailure+            ( describeClusterResponse_cluster+                Prelude.. Lens._Just+                Prelude.. cluster_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchAll+            "CREATING"+            Core.AcceptFailure+            ( describeClusterResponse_cluster+                Prelude.. Lens._Just+                Prelude.. cluster_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchAll+            "PENDING"+            Core.AcceptFailure+            ( describeClusterResponse_cluster+                Prelude.. Lens._Just+                Prelude.. cluster_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchError+            "ResourceNotFoundException"+            Core.AcceptSuccess+        ]+    }++-- | Polls 'Amazonka.EKS.DescribeFargateProfile' every 10 seconds until a successful state is reached. An error is returned after 60 failed checks.+newFargateProfileActive :: Core.Wait DescribeFargateProfile+newFargateProfileActive =+  Core.Wait+    { Core.name = "FargateProfileActive",+      Core.attempts = 60,+      Core.delay = 10,+      Core.acceptors =+        [ Core.matchAll+            "CREATE_FAILED"+            Core.AcceptFailure+            ( describeFargateProfileResponse_fargateProfile+                Prelude.. Lens._Just+                Prelude.. fargateProfile_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchAll+            "ACTIVE"+            Core.AcceptSuccess+            ( describeFargateProfileResponse_fargateProfile+                Prelude.. Lens._Just+                Prelude.. fargateProfile_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            )+        ]+    }++-- | Polls 'Amazonka.EKS.DescribeFargateProfile' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks.+newFargateProfileDeleted :: Core.Wait DescribeFargateProfile+newFargateProfileDeleted =+  Core.Wait+    { Core.name = "FargateProfileDeleted",+      Core.attempts = 60,+      Core.delay = 30,+      Core.acceptors =+        [ Core.matchAll+            "DELETE_FAILED"+            Core.AcceptFailure+            ( describeFargateProfileResponse_fargateProfile+                Prelude.. Lens._Just+                Prelude.. fargateProfile_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchError+            "ResourceNotFoundException"+            Core.AcceptSuccess+        ]+    }++-- | Polls 'Amazonka.EKS.DescribeNodegroup' every 30 seconds until a successful state is reached. An error is returned after 80 failed checks.+newNodegroupActive :: Core.Wait DescribeNodegroup+newNodegroupActive =+  Core.Wait+    { Core.name = "NodegroupActive",+      Core.attempts = 80,+      Core.delay = 30,+      Core.acceptors =+        [ Core.matchAll+            "CREATE_FAILED"+            Core.AcceptFailure+            ( describeNodegroupResponse_nodegroup+                Prelude.. Lens._Just+                Prelude.. nodegroup_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchAll+            "ACTIVE"+            Core.AcceptSuccess+            ( describeNodegroupResponse_nodegroup+                Prelude.. Lens._Just+                Prelude.. nodegroup_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            )+        ]+    }++-- | Polls 'Amazonka.EKS.DescribeNodegroup' every 30 seconds until a successful state is reached. An error is returned after 40 failed checks.+newNodegroupDeleted :: Core.Wait DescribeNodegroup+newNodegroupDeleted =+  Core.Wait+    { Core.name = "NodegroupDeleted",+      Core.attempts = 40,+      Core.delay = 30,+      Core.acceptors =+        [ Core.matchAll+            "DELETE_FAILED"+            Core.AcceptFailure+            ( describeNodegroupResponse_nodegroup+                Prelude.. Lens._Just+                Prelude.. nodegroup_status+                Prelude.. Lens._Just+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchError+            "ResourceNotFoundException"+            Core.AcceptSuccess+        ]+    }
+ src/.gitkeep view
+ test/Main.hs view
@@ -0,0 +1,23 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Main+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Main (main) where++import Test.Amazonka.EKS+import Test.Amazonka.EKS.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "EKS"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/EKS.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.EKS+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Test.Amazonka.EKS+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/EKS/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.EKS.Internal+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Test.Amazonka.EKS.Internal where
+ test/Test/Amazonka/Gen/EKS.hs view
@@ -0,0 +1,738 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Test.Amazonka.Gen.EKS+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Test.Amazonka.Gen.EKS where++import Amazonka.EKS+import qualified Data.Proxy as Proxy+import Test.Amazonka.EKS.Internal+import Test.Amazonka.Fixture+import Test.Amazonka.Prelude+import Test.Tasty++-- Auto-generated: the actual test selection needs to be manually placed into+-- the top-level so that real test data can be incrementally added.+--+-- This commented snippet is what the entire set should look like:++-- fixtures :: TestTree+-- fixtures =+--     [ testGroup "request"+--         [ requestAssociateEncryptionConfig $+--             newAssociateEncryptionConfig+--+--         , requestAssociateIdentityProviderConfig $+--             newAssociateIdentityProviderConfig+--+--         , requestCreateAddon $+--             newCreateAddon+--+--         , requestCreateCluster $+--             newCreateCluster+--+--         , requestCreateFargateProfile $+--             newCreateFargateProfile+--+--         , requestCreateNodegroup $+--             newCreateNodegroup+--+--         , requestDeleteAddon $+--             newDeleteAddon+--+--         , requestDeleteCluster $+--             newDeleteCluster+--+--         , requestDeleteFargateProfile $+--             newDeleteFargateProfile+--+--         , requestDeleteNodegroup $+--             newDeleteNodegroup+--+--         , requestDeregisterCluster $+--             newDeregisterCluster+--+--         , requestDescribeAddon $+--             newDescribeAddon+--+--         , requestDescribeAddonConfiguration $+--             newDescribeAddonConfiguration+--+--         , requestDescribeAddonVersions $+--             newDescribeAddonVersions+--+--         , requestDescribeCluster $+--             newDescribeCluster+--+--         , requestDescribeFargateProfile $+--             newDescribeFargateProfile+--+--         , requestDescribeIdentityProviderConfig $+--             newDescribeIdentityProviderConfig+--+--         , requestDescribeNodegroup $+--             newDescribeNodegroup+--+--         , requestDescribeUpdate $+--             newDescribeUpdate+--+--         , requestDisassociateIdentityProviderConfig $+--             newDisassociateIdentityProviderConfig+--+--         , requestListAddons $+--             newListAddons+--+--         , requestListClusters $+--             newListClusters+--+--         , requestListFargateProfiles $+--             newListFargateProfiles+--+--         , requestListIdentityProviderConfigs $+--             newListIdentityProviderConfigs+--+--         , requestListNodegroups $+--             newListNodegroups+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestListUpdates $+--             newListUpdates+--+--         , requestRegisterCluster $+--             newRegisterCluster+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateAddon $+--             newUpdateAddon+--+--         , requestUpdateClusterConfig $+--             newUpdateClusterConfig+--+--         , requestUpdateClusterVersion $+--             newUpdateClusterVersion+--+--         , requestUpdateNodegroupConfig $+--             newUpdateNodegroupConfig+--+--         , requestUpdateNodegroupVersion $+--             newUpdateNodegroupVersion+--+--           ]++--     , testGroup "response"+--         [ responseAssociateEncryptionConfig $+--             newAssociateEncryptionConfigResponse+--+--         , responseAssociateIdentityProviderConfig $+--             newAssociateIdentityProviderConfigResponse+--+--         , responseCreateAddon $+--             newCreateAddonResponse+--+--         , responseCreateCluster $+--             newCreateClusterResponse+--+--         , responseCreateFargateProfile $+--             newCreateFargateProfileResponse+--+--         , responseCreateNodegroup $+--             newCreateNodegroupResponse+--+--         , responseDeleteAddon $+--             newDeleteAddonResponse+--+--         , responseDeleteCluster $+--             newDeleteClusterResponse+--+--         , responseDeleteFargateProfile $+--             newDeleteFargateProfileResponse+--+--         , responseDeleteNodegroup $+--             newDeleteNodegroupResponse+--+--         , responseDeregisterCluster $+--             newDeregisterClusterResponse+--+--         , responseDescribeAddon $+--             newDescribeAddonResponse+--+--         , responseDescribeAddonConfiguration $+--             newDescribeAddonConfigurationResponse+--+--         , responseDescribeAddonVersions $+--             newDescribeAddonVersionsResponse+--+--         , responseDescribeCluster $+--             newDescribeClusterResponse+--+--         , responseDescribeFargateProfile $+--             newDescribeFargateProfileResponse+--+--         , responseDescribeIdentityProviderConfig $+--             newDescribeIdentityProviderConfigResponse+--+--         , responseDescribeNodegroup $+--             newDescribeNodegroupResponse+--+--         , responseDescribeUpdate $+--             newDescribeUpdateResponse+--+--         , responseDisassociateIdentityProviderConfig $+--             newDisassociateIdentityProviderConfigResponse+--+--         , responseListAddons $+--             newListAddonsResponse+--+--         , responseListClusters $+--             newListClustersResponse+--+--         , responseListFargateProfiles $+--             newListFargateProfilesResponse+--+--         , responseListIdentityProviderConfigs $+--             newListIdentityProviderConfigsResponse+--+--         , responseListNodegroups $+--             newListNodegroupsResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responseListUpdates $+--             newListUpdatesResponse+--+--         , responseRegisterCluster $+--             newRegisterClusterResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateAddon $+--             newUpdateAddonResponse+--+--         , responseUpdateClusterConfig $+--             newUpdateClusterConfigResponse+--+--         , responseUpdateClusterVersion $+--             newUpdateClusterVersionResponse+--+--         , responseUpdateNodegroupConfig $+--             newUpdateNodegroupConfigResponse+--+--         , responseUpdateNodegroupVersion $+--             newUpdateNodegroupVersionResponse+--+--           ]+--     ]++-- Requests++requestAssociateEncryptionConfig :: AssociateEncryptionConfig -> TestTree+requestAssociateEncryptionConfig =+  req+    "AssociateEncryptionConfig"+    "fixture/AssociateEncryptionConfig.yaml"++requestAssociateIdentityProviderConfig :: AssociateIdentityProviderConfig -> TestTree+requestAssociateIdentityProviderConfig =+  req+    "AssociateIdentityProviderConfig"+    "fixture/AssociateIdentityProviderConfig.yaml"++requestCreateAddon :: CreateAddon -> TestTree+requestCreateAddon =+  req+    "CreateAddon"+    "fixture/CreateAddon.yaml"++requestCreateCluster :: CreateCluster -> TestTree+requestCreateCluster =+  req+    "CreateCluster"+    "fixture/CreateCluster.yaml"++requestCreateFargateProfile :: CreateFargateProfile -> TestTree+requestCreateFargateProfile =+  req+    "CreateFargateProfile"+    "fixture/CreateFargateProfile.yaml"++requestCreateNodegroup :: CreateNodegroup -> TestTree+requestCreateNodegroup =+  req+    "CreateNodegroup"+    "fixture/CreateNodegroup.yaml"++requestDeleteAddon :: DeleteAddon -> TestTree+requestDeleteAddon =+  req+    "DeleteAddon"+    "fixture/DeleteAddon.yaml"++requestDeleteCluster :: DeleteCluster -> TestTree+requestDeleteCluster =+  req+    "DeleteCluster"+    "fixture/DeleteCluster.yaml"++requestDeleteFargateProfile :: DeleteFargateProfile -> TestTree+requestDeleteFargateProfile =+  req+    "DeleteFargateProfile"+    "fixture/DeleteFargateProfile.yaml"++requestDeleteNodegroup :: DeleteNodegroup -> TestTree+requestDeleteNodegroup =+  req+    "DeleteNodegroup"+    "fixture/DeleteNodegroup.yaml"++requestDeregisterCluster :: DeregisterCluster -> TestTree+requestDeregisterCluster =+  req+    "DeregisterCluster"+    "fixture/DeregisterCluster.yaml"++requestDescribeAddon :: DescribeAddon -> TestTree+requestDescribeAddon =+  req+    "DescribeAddon"+    "fixture/DescribeAddon.yaml"++requestDescribeAddonConfiguration :: DescribeAddonConfiguration -> TestTree+requestDescribeAddonConfiguration =+  req+    "DescribeAddonConfiguration"+    "fixture/DescribeAddonConfiguration.yaml"++requestDescribeAddonVersions :: DescribeAddonVersions -> TestTree+requestDescribeAddonVersions =+  req+    "DescribeAddonVersions"+    "fixture/DescribeAddonVersions.yaml"++requestDescribeCluster :: DescribeCluster -> TestTree+requestDescribeCluster =+  req+    "DescribeCluster"+    "fixture/DescribeCluster.yaml"++requestDescribeFargateProfile :: DescribeFargateProfile -> TestTree+requestDescribeFargateProfile =+  req+    "DescribeFargateProfile"+    "fixture/DescribeFargateProfile.yaml"++requestDescribeIdentityProviderConfig :: DescribeIdentityProviderConfig -> TestTree+requestDescribeIdentityProviderConfig =+  req+    "DescribeIdentityProviderConfig"+    "fixture/DescribeIdentityProviderConfig.yaml"++requestDescribeNodegroup :: DescribeNodegroup -> TestTree+requestDescribeNodegroup =+  req+    "DescribeNodegroup"+    "fixture/DescribeNodegroup.yaml"++requestDescribeUpdate :: DescribeUpdate -> TestTree+requestDescribeUpdate =+  req+    "DescribeUpdate"+    "fixture/DescribeUpdate.yaml"++requestDisassociateIdentityProviderConfig :: DisassociateIdentityProviderConfig -> TestTree+requestDisassociateIdentityProviderConfig =+  req+    "DisassociateIdentityProviderConfig"+    "fixture/DisassociateIdentityProviderConfig.yaml"++requestListAddons :: ListAddons -> TestTree+requestListAddons =+  req+    "ListAddons"+    "fixture/ListAddons.yaml"++requestListClusters :: ListClusters -> TestTree+requestListClusters =+  req+    "ListClusters"+    "fixture/ListClusters.yaml"++requestListFargateProfiles :: ListFargateProfiles -> TestTree+requestListFargateProfiles =+  req+    "ListFargateProfiles"+    "fixture/ListFargateProfiles.yaml"++requestListIdentityProviderConfigs :: ListIdentityProviderConfigs -> TestTree+requestListIdentityProviderConfigs =+  req+    "ListIdentityProviderConfigs"+    "fixture/ListIdentityProviderConfigs.yaml"++requestListNodegroups :: ListNodegroups -> TestTree+requestListNodegroups =+  req+    "ListNodegroups"+    "fixture/ListNodegroups.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestListUpdates :: ListUpdates -> TestTree+requestListUpdates =+  req+    "ListUpdates"+    "fixture/ListUpdates.yaml"++requestRegisterCluster :: RegisterCluster -> TestTree+requestRegisterCluster =+  req+    "RegisterCluster"+    "fixture/RegisterCluster.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateAddon :: UpdateAddon -> TestTree+requestUpdateAddon =+  req+    "UpdateAddon"+    "fixture/UpdateAddon.yaml"++requestUpdateClusterConfig :: UpdateClusterConfig -> TestTree+requestUpdateClusterConfig =+  req+    "UpdateClusterConfig"+    "fixture/UpdateClusterConfig.yaml"++requestUpdateClusterVersion :: UpdateClusterVersion -> TestTree+requestUpdateClusterVersion =+  req+    "UpdateClusterVersion"+    "fixture/UpdateClusterVersion.yaml"++requestUpdateNodegroupConfig :: UpdateNodegroupConfig -> TestTree+requestUpdateNodegroupConfig =+  req+    "UpdateNodegroupConfig"+    "fixture/UpdateNodegroupConfig.yaml"++requestUpdateNodegroupVersion :: UpdateNodegroupVersion -> TestTree+requestUpdateNodegroupVersion =+  req+    "UpdateNodegroupVersion"+    "fixture/UpdateNodegroupVersion.yaml"++-- Responses++responseAssociateEncryptionConfig :: AssociateEncryptionConfigResponse -> TestTree+responseAssociateEncryptionConfig =+  res+    "AssociateEncryptionConfigResponse"+    "fixture/AssociateEncryptionConfigResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AssociateEncryptionConfig)++responseAssociateIdentityProviderConfig :: AssociateIdentityProviderConfigResponse -> TestTree+responseAssociateIdentityProviderConfig =+  res+    "AssociateIdentityProviderConfigResponse"+    "fixture/AssociateIdentityProviderConfigResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AssociateIdentityProviderConfig)++responseCreateAddon :: CreateAddonResponse -> TestTree+responseCreateAddon =+  res+    "CreateAddonResponse"+    "fixture/CreateAddonResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateAddon)++responseCreateCluster :: CreateClusterResponse -> TestTree+responseCreateCluster =+  res+    "CreateClusterResponse"+    "fixture/CreateClusterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateCluster)++responseCreateFargateProfile :: CreateFargateProfileResponse -> TestTree+responseCreateFargateProfile =+  res+    "CreateFargateProfileResponse"+    "fixture/CreateFargateProfileResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateFargateProfile)++responseCreateNodegroup :: CreateNodegroupResponse -> TestTree+responseCreateNodegroup =+  res+    "CreateNodegroupResponse"+    "fixture/CreateNodegroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateNodegroup)++responseDeleteAddon :: DeleteAddonResponse -> TestTree+responseDeleteAddon =+  res+    "DeleteAddonResponse"+    "fixture/DeleteAddonResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteAddon)++responseDeleteCluster :: DeleteClusterResponse -> TestTree+responseDeleteCluster =+  res+    "DeleteClusterResponse"+    "fixture/DeleteClusterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteCluster)++responseDeleteFargateProfile :: DeleteFargateProfileResponse -> TestTree+responseDeleteFargateProfile =+  res+    "DeleteFargateProfileResponse"+    "fixture/DeleteFargateProfileResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteFargateProfile)++responseDeleteNodegroup :: DeleteNodegroupResponse -> TestTree+responseDeleteNodegroup =+  res+    "DeleteNodegroupResponse"+    "fixture/DeleteNodegroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteNodegroup)++responseDeregisterCluster :: DeregisterClusterResponse -> TestTree+responseDeregisterCluster =+  res+    "DeregisterClusterResponse"+    "fixture/DeregisterClusterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeregisterCluster)++responseDescribeAddon :: DescribeAddonResponse -> TestTree+responseDescribeAddon =+  res+    "DescribeAddonResponse"+    "fixture/DescribeAddonResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeAddon)++responseDescribeAddonConfiguration :: DescribeAddonConfigurationResponse -> TestTree+responseDescribeAddonConfiguration =+  res+    "DescribeAddonConfigurationResponse"+    "fixture/DescribeAddonConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeAddonConfiguration)++responseDescribeAddonVersions :: DescribeAddonVersionsResponse -> TestTree+responseDescribeAddonVersions =+  res+    "DescribeAddonVersionsResponse"+    "fixture/DescribeAddonVersionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeAddonVersions)++responseDescribeCluster :: DescribeClusterResponse -> TestTree+responseDescribeCluster =+  res+    "DescribeClusterResponse"+    "fixture/DescribeClusterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeCluster)++responseDescribeFargateProfile :: DescribeFargateProfileResponse -> TestTree+responseDescribeFargateProfile =+  res+    "DescribeFargateProfileResponse"+    "fixture/DescribeFargateProfileResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeFargateProfile)++responseDescribeIdentityProviderConfig :: DescribeIdentityProviderConfigResponse -> TestTree+responseDescribeIdentityProviderConfig =+  res+    "DescribeIdentityProviderConfigResponse"+    "fixture/DescribeIdentityProviderConfigResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeIdentityProviderConfig)++responseDescribeNodegroup :: DescribeNodegroupResponse -> TestTree+responseDescribeNodegroup =+  res+    "DescribeNodegroupResponse"+    "fixture/DescribeNodegroupResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeNodegroup)++responseDescribeUpdate :: DescribeUpdateResponse -> TestTree+responseDescribeUpdate =+  res+    "DescribeUpdateResponse"+    "fixture/DescribeUpdateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeUpdate)++responseDisassociateIdentityProviderConfig :: DisassociateIdentityProviderConfigResponse -> TestTree+responseDisassociateIdentityProviderConfig =+  res+    "DisassociateIdentityProviderConfigResponse"+    "fixture/DisassociateIdentityProviderConfigResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DisassociateIdentityProviderConfig)++responseListAddons :: ListAddonsResponse -> TestTree+responseListAddons =+  res+    "ListAddonsResponse"+    "fixture/ListAddonsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAddons)++responseListClusters :: ListClustersResponse -> TestTree+responseListClusters =+  res+    "ListClustersResponse"+    "fixture/ListClustersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListClusters)++responseListFargateProfiles :: ListFargateProfilesResponse -> TestTree+responseListFargateProfiles =+  res+    "ListFargateProfilesResponse"+    "fixture/ListFargateProfilesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListFargateProfiles)++responseListIdentityProviderConfigs :: ListIdentityProviderConfigsResponse -> TestTree+responseListIdentityProviderConfigs =+  res+    "ListIdentityProviderConfigsResponse"+    "fixture/ListIdentityProviderConfigsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListIdentityProviderConfigs)++responseListNodegroups :: ListNodegroupsResponse -> TestTree+responseListNodegroups =+  res+    "ListNodegroupsResponse"+    "fixture/ListNodegroupsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListNodegroups)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responseListUpdates :: ListUpdatesResponse -> TestTree+responseListUpdates =+  res+    "ListUpdatesResponse"+    "fixture/ListUpdatesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListUpdates)++responseRegisterCluster :: RegisterClusterResponse -> TestTree+responseRegisterCluster =+  res+    "RegisterClusterResponse"+    "fixture/RegisterClusterResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy RegisterCluster)++responseTagResource :: TagResourceResponse -> TestTree+responseTagResource =+  res+    "TagResourceResponse"+    "fixture/TagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy TagResource)++responseUntagResource :: UntagResourceResponse -> TestTree+responseUntagResource =+  res+    "UntagResourceResponse"+    "fixture/UntagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UntagResource)++responseUpdateAddon :: UpdateAddonResponse -> TestTree+responseUpdateAddon =+  res+    "UpdateAddonResponse"+    "fixture/UpdateAddonResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateAddon)++responseUpdateClusterConfig :: UpdateClusterConfigResponse -> TestTree+responseUpdateClusterConfig =+  res+    "UpdateClusterConfigResponse"+    "fixture/UpdateClusterConfigResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateClusterConfig)++responseUpdateClusterVersion :: UpdateClusterVersionResponse -> TestTree+responseUpdateClusterVersion =+  res+    "UpdateClusterVersionResponse"+    "fixture/UpdateClusterVersionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateClusterVersion)++responseUpdateNodegroupConfig :: UpdateNodegroupConfigResponse -> TestTree+responseUpdateNodegroupConfig =+  res+    "UpdateNodegroupConfigResponse"+    "fixture/UpdateNodegroupConfigResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateNodegroupConfig)++responseUpdateNodegroupVersion :: UpdateNodegroupVersionResponse -> TestTree+responseUpdateNodegroupVersion =+  res+    "UpdateNodegroupVersionResponse"+    "fixture/UpdateNodegroupVersionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateNodegroupVersion)