packages feed

amazonka-drs (empty) → 2.0

raw patch · 191 files changed

+19358/−0 lines, 191 filesdep +amazonka-coredep +amazonka-drsdep +amazonka-test

Dependencies added: amazonka-core, amazonka-drs, 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 Disaster Recovery Service SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2020-02-26@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-drs)+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.DrS](http://hackage.haskell.org/package/amazonka-drs/docs/Amazonka-DrS.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-drs` 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-drs.cabal view
@@ -0,0 +1,192 @@+cabal-version:      2.2+name:               amazonka-drs+version:            2.0+synopsis:           Amazon Elastic Disaster Recovery 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 @2020-02-26@ 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.DrS.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.DrS" 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-drs++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.DrS+    Amazonka.DrS.CreateExtendedSourceServer+    Amazonka.DrS.CreateReplicationConfigurationTemplate+    Amazonka.DrS.DeleteJob+    Amazonka.DrS.DeleteRecoveryInstance+    Amazonka.DrS.DeleteReplicationConfigurationTemplate+    Amazonka.DrS.DeleteSourceServer+    Amazonka.DrS.DescribeJobLogItems+    Amazonka.DrS.DescribeJobs+    Amazonka.DrS.DescribeRecoveryInstances+    Amazonka.DrS.DescribeRecoverySnapshots+    Amazonka.DrS.DescribeReplicationConfigurationTemplates+    Amazonka.DrS.DescribeSourceServers+    Amazonka.DrS.DisconnectRecoveryInstance+    Amazonka.DrS.DisconnectSourceServer+    Amazonka.DrS.GetFailbackReplicationConfiguration+    Amazonka.DrS.GetLaunchConfiguration+    Amazonka.DrS.GetReplicationConfiguration+    Amazonka.DrS.InitializeService+    Amazonka.DrS.Lens+    Amazonka.DrS.ListExtensibleSourceServers+    Amazonka.DrS.ListStagingAccounts+    Amazonka.DrS.ListTagsForResource+    Amazonka.DrS.RetryDataReplication+    Amazonka.DrS.ReverseReplication+    Amazonka.DrS.StartFailbackLaunch+    Amazonka.DrS.StartRecovery+    Amazonka.DrS.StartReplication+    Amazonka.DrS.StopFailback+    Amazonka.DrS.StopReplication+    Amazonka.DrS.TagResource+    Amazonka.DrS.TerminateRecoveryInstances+    Amazonka.DrS.Types+    Amazonka.DrS.Types.Account+    Amazonka.DrS.Types.ConversionProperties+    Amazonka.DrS.Types.CPU+    Amazonka.DrS.Types.DataReplicationError+    Amazonka.DrS.Types.DataReplicationErrorString+    Amazonka.DrS.Types.DataReplicationInfo+    Amazonka.DrS.Types.DataReplicationInfoReplicatedDisk+    Amazonka.DrS.Types.DataReplicationInitiation+    Amazonka.DrS.Types.DataReplicationInitiationStep+    Amazonka.DrS.Types.DataReplicationInitiationStepName+    Amazonka.DrS.Types.DataReplicationInitiationStepStatus+    Amazonka.DrS.Types.DataReplicationState+    Amazonka.DrS.Types.DescribeJobsRequestFilters+    Amazonka.DrS.Types.DescribeRecoveryInstancesRequestFilters+    Amazonka.DrS.Types.DescribeRecoverySnapshotsRequestFilters+    Amazonka.DrS.Types.DescribeSourceServersRequestFilters+    Amazonka.DrS.Types.Disk+    Amazonka.DrS.Types.EC2InstanceState+    Amazonka.DrS.Types.ExtensionStatus+    Amazonka.DrS.Types.FailbackLaunchType+    Amazonka.DrS.Types.FailbackReplicationError+    Amazonka.DrS.Types.FailbackState+    Amazonka.DrS.Types.IdentificationHints+    Amazonka.DrS.Types.InitiatedBy+    Amazonka.DrS.Types.Job+    Amazonka.DrS.Types.JobLog+    Amazonka.DrS.Types.JobLogEvent+    Amazonka.DrS.Types.JobLogEventData+    Amazonka.DrS.Types.JobStatus+    Amazonka.DrS.Types.JobType+    Amazonka.DrS.Types.LastLaunchResult+    Amazonka.DrS.Types.LastLaunchType+    Amazonka.DrS.Types.LaunchConfiguration+    Amazonka.DrS.Types.LaunchDisposition+    Amazonka.DrS.Types.LaunchStatus+    Amazonka.DrS.Types.Licensing+    Amazonka.DrS.Types.LifeCycle+    Amazonka.DrS.Types.LifeCycleLastLaunch+    Amazonka.DrS.Types.LifeCycleLastLaunchInitiated+    Amazonka.DrS.Types.NetworkInterface+    Amazonka.DrS.Types.OriginEnvironment+    Amazonka.DrS.Types.OS+    Amazonka.DrS.Types.ParticipatingServer+    Amazonka.DrS.Types.PITPolicyRule+    Amazonka.DrS.Types.PITPolicyRuleUnits+    Amazonka.DrS.Types.RecoveryInstance+    Amazonka.DrS.Types.RecoveryInstanceDataReplicationError+    Amazonka.DrS.Types.RecoveryInstanceDataReplicationInfo+    Amazonka.DrS.Types.RecoveryInstanceDataReplicationInfoReplicatedDisk+    Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiation+    Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiationStep+    Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiationStepName+    Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiationStepStatus+    Amazonka.DrS.Types.RecoveryInstanceDataReplicationState+    Amazonka.DrS.Types.RecoveryInstanceDisk+    Amazonka.DrS.Types.RecoveryInstanceFailback+    Amazonka.DrS.Types.RecoveryInstanceProperties+    Amazonka.DrS.Types.RecoverySnapshot+    Amazonka.DrS.Types.RecoverySnapshotsOrder+    Amazonka.DrS.Types.ReplicationConfiguration+    Amazonka.DrS.Types.ReplicationConfigurationDataPlaneRouting+    Amazonka.DrS.Types.ReplicationConfigurationDefaultLargeStagingDiskType+    Amazonka.DrS.Types.ReplicationConfigurationEbsEncryption+    Amazonka.DrS.Types.ReplicationConfigurationReplicatedDisk+    Amazonka.DrS.Types.ReplicationConfigurationReplicatedDiskStagingDiskType+    Amazonka.DrS.Types.ReplicationConfigurationTemplate+    Amazonka.DrS.Types.ReplicationDirection+    Amazonka.DrS.Types.SourceCloudProperties+    Amazonka.DrS.Types.SourceProperties+    Amazonka.DrS.Types.SourceServer+    Amazonka.DrS.Types.StagingArea+    Amazonka.DrS.Types.StagingSourceServer+    Amazonka.DrS.Types.StartRecoveryRequestSourceServer+    Amazonka.DrS.Types.TargetInstanceTypeRightSizingMethod+    Amazonka.DrS.UntagResource+    Amazonka.DrS.UpdateFailbackReplicationConfiguration+    Amazonka.DrS.UpdateLaunchConfiguration+    Amazonka.DrS.UpdateReplicationConfiguration+    Amazonka.DrS.UpdateReplicationConfigurationTemplate+    Amazonka.DrS.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-drs-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.DrS+    Test.Amazonka.DrS.Internal+    Test.Amazonka.Gen.DrS++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-drs+    , amazonka-test         >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/CreateExtendedSourceServer.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/CreateExtendedSourceServerResponse.proto view
+ fixture/CreateReplicationConfigurationTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/CreateReplicationConfigurationTemplateResponse.proto view
+ fixture/DeleteJob.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/DeleteJobResponse.proto view
+ fixture/DeleteRecoveryInstance.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/DeleteRecoveryInstanceResponse.proto view
+ fixture/DeleteReplicationConfigurationTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/DeleteReplicationConfigurationTemplateResponse.proto view
+ fixture/DeleteSourceServer.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/DeleteSourceServerResponse.proto view
+ fixture/DescribeJobLogItems.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/DescribeJobLogItemsResponse.proto view
+ fixture/DescribeJobs.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/DescribeJobsResponse.proto view
+ fixture/DescribeRecoveryInstances.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/DescribeRecoveryInstancesResponse.proto view
+ fixture/DescribeRecoverySnapshots.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/DescribeRecoverySnapshotsResponse.proto view
+ fixture/DescribeReplicationConfigurationTemplates.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/DescribeReplicationConfigurationTemplatesResponse.proto view
+ fixture/DescribeSourceServers.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/DescribeSourceServersResponse.proto view
+ fixture/DisconnectRecoveryInstance.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/DisconnectRecoveryInstanceResponse.proto view
+ fixture/DisconnectSourceServer.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/DisconnectSourceServerResponse.proto view
+ fixture/GetFailbackReplicationConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/GetFailbackReplicationConfigurationResponse.proto view
+ fixture/GetLaunchConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/GetLaunchConfigurationResponse.proto view
+ fixture/GetReplicationConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/GetReplicationConfigurationResponse.proto view
+ fixture/InitializeService.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/InitializeServiceResponse.proto view
+ fixture/ListExtensibleSourceServers.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/ListExtensibleSourceServersResponse.proto view
+ fixture/ListStagingAccounts.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/ListStagingAccountsResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/RetryDataReplication.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/RetryDataReplicationResponse.proto view
+ fixture/ReverseReplication.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/ReverseReplicationResponse.proto view
+ fixture/StartFailbackLaunch.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/StartFailbackLaunchResponse.proto view
+ fixture/StartRecovery.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/StartRecoveryResponse.proto view
+ fixture/StartReplication.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/StartReplicationResponse.proto view
+ fixture/StopFailback.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/StopFailbackResponse.proto view
+ fixture/StopReplication.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/StopReplicationResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/TerminateRecoveryInstances.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/TerminateRecoveryInstancesResponse.proto view
+ fixture/UntagResource.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/UpdateFailbackReplicationConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/UpdateFailbackReplicationConfigurationResponse.proto view
+ fixture/UpdateLaunchConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/UpdateLaunchConfigurationResponse.proto view
+ fixture/UpdateReplicationConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/UpdateReplicationConfigurationResponse.proto view
+ fixture/UpdateReplicationConfigurationTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/drs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  drs.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/UpdateReplicationConfigurationTemplateResponse.proto view
+ gen/Amazonka/DrS.hs view
@@ -0,0 +1,597 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.DrS+-- 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 @2020-02-26@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- AWS Elastic Disaster Recovery Service.+module Amazonka.DrS+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccessDeniedException+    _AccessDeniedException,++    -- ** ConflictException+    _ConflictException,++    -- ** InternalServerException+    _InternalServerException,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ServiceQuotaExceededException+    _ServiceQuotaExceededException,++    -- ** ThrottlingException+    _ThrottlingException,++    -- ** UninitializedAccountException+    _UninitializedAccountException,++    -- ** ValidationException+    _ValidationException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** CreateExtendedSourceServer+    CreateExtendedSourceServer (CreateExtendedSourceServer'),+    newCreateExtendedSourceServer,+    CreateExtendedSourceServerResponse (CreateExtendedSourceServerResponse'),+    newCreateExtendedSourceServerResponse,++    -- ** CreateReplicationConfigurationTemplate+    CreateReplicationConfigurationTemplate (CreateReplicationConfigurationTemplate'),+    newCreateReplicationConfigurationTemplate,+    ReplicationConfigurationTemplate (ReplicationConfigurationTemplate'),+    newReplicationConfigurationTemplate,++    -- ** DeleteJob+    DeleteJob (DeleteJob'),+    newDeleteJob,+    DeleteJobResponse (DeleteJobResponse'),+    newDeleteJobResponse,++    -- ** DeleteRecoveryInstance+    DeleteRecoveryInstance (DeleteRecoveryInstance'),+    newDeleteRecoveryInstance,+    DeleteRecoveryInstanceResponse (DeleteRecoveryInstanceResponse'),+    newDeleteRecoveryInstanceResponse,++    -- ** DeleteReplicationConfigurationTemplate+    DeleteReplicationConfigurationTemplate (DeleteReplicationConfigurationTemplate'),+    newDeleteReplicationConfigurationTemplate,+    DeleteReplicationConfigurationTemplateResponse (DeleteReplicationConfigurationTemplateResponse'),+    newDeleteReplicationConfigurationTemplateResponse,++    -- ** DeleteSourceServer+    DeleteSourceServer (DeleteSourceServer'),+    newDeleteSourceServer,+    DeleteSourceServerResponse (DeleteSourceServerResponse'),+    newDeleteSourceServerResponse,++    -- ** DescribeJobLogItems (Paginated)+    DescribeJobLogItems (DescribeJobLogItems'),+    newDescribeJobLogItems,+    DescribeJobLogItemsResponse (DescribeJobLogItemsResponse'),+    newDescribeJobLogItemsResponse,++    -- ** DescribeJobs (Paginated)+    DescribeJobs (DescribeJobs'),+    newDescribeJobs,+    DescribeJobsResponse (DescribeJobsResponse'),+    newDescribeJobsResponse,++    -- ** DescribeRecoveryInstances (Paginated)+    DescribeRecoveryInstances (DescribeRecoveryInstances'),+    newDescribeRecoveryInstances,+    DescribeRecoveryInstancesResponse (DescribeRecoveryInstancesResponse'),+    newDescribeRecoveryInstancesResponse,++    -- ** DescribeRecoverySnapshots (Paginated)+    DescribeRecoverySnapshots (DescribeRecoverySnapshots'),+    newDescribeRecoverySnapshots,+    DescribeRecoverySnapshotsResponse (DescribeRecoverySnapshotsResponse'),+    newDescribeRecoverySnapshotsResponse,++    -- ** DescribeReplicationConfigurationTemplates (Paginated)+    DescribeReplicationConfigurationTemplates (DescribeReplicationConfigurationTemplates'),+    newDescribeReplicationConfigurationTemplates,+    DescribeReplicationConfigurationTemplatesResponse (DescribeReplicationConfigurationTemplatesResponse'),+    newDescribeReplicationConfigurationTemplatesResponse,++    -- ** DescribeSourceServers (Paginated)+    DescribeSourceServers (DescribeSourceServers'),+    newDescribeSourceServers,+    DescribeSourceServersResponse (DescribeSourceServersResponse'),+    newDescribeSourceServersResponse,++    -- ** DisconnectRecoveryInstance+    DisconnectRecoveryInstance (DisconnectRecoveryInstance'),+    newDisconnectRecoveryInstance,+    DisconnectRecoveryInstanceResponse (DisconnectRecoveryInstanceResponse'),+    newDisconnectRecoveryInstanceResponse,++    -- ** DisconnectSourceServer+    DisconnectSourceServer (DisconnectSourceServer'),+    newDisconnectSourceServer,+    SourceServer (SourceServer'),+    newSourceServer,++    -- ** GetFailbackReplicationConfiguration+    GetFailbackReplicationConfiguration (GetFailbackReplicationConfiguration'),+    newGetFailbackReplicationConfiguration,+    GetFailbackReplicationConfigurationResponse (GetFailbackReplicationConfigurationResponse'),+    newGetFailbackReplicationConfigurationResponse,++    -- ** GetLaunchConfiguration+    GetLaunchConfiguration (GetLaunchConfiguration'),+    newGetLaunchConfiguration,+    LaunchConfiguration (LaunchConfiguration'),+    newLaunchConfiguration,++    -- ** GetReplicationConfiguration+    GetReplicationConfiguration (GetReplicationConfiguration'),+    newGetReplicationConfiguration,+    ReplicationConfiguration (ReplicationConfiguration'),+    newReplicationConfiguration,++    -- ** InitializeService+    InitializeService (InitializeService'),+    newInitializeService,+    InitializeServiceResponse (InitializeServiceResponse'),+    newInitializeServiceResponse,++    -- ** ListExtensibleSourceServers (Paginated)+    ListExtensibleSourceServers (ListExtensibleSourceServers'),+    newListExtensibleSourceServers,+    ListExtensibleSourceServersResponse (ListExtensibleSourceServersResponse'),+    newListExtensibleSourceServersResponse,++    -- ** ListStagingAccounts (Paginated)+    ListStagingAccounts (ListStagingAccounts'),+    newListStagingAccounts,+    ListStagingAccountsResponse (ListStagingAccountsResponse'),+    newListStagingAccountsResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** RetryDataReplication+    RetryDataReplication (RetryDataReplication'),+    newRetryDataReplication,+    SourceServer (SourceServer'),+    newSourceServer,++    -- ** ReverseReplication+    ReverseReplication (ReverseReplication'),+    newReverseReplication,+    ReverseReplicationResponse (ReverseReplicationResponse'),+    newReverseReplicationResponse,++    -- ** StartFailbackLaunch+    StartFailbackLaunch (StartFailbackLaunch'),+    newStartFailbackLaunch,+    StartFailbackLaunchResponse (StartFailbackLaunchResponse'),+    newStartFailbackLaunchResponse,++    -- ** StartRecovery+    StartRecovery (StartRecovery'),+    newStartRecovery,+    StartRecoveryResponse (StartRecoveryResponse'),+    newStartRecoveryResponse,++    -- ** StartReplication+    StartReplication (StartReplication'),+    newStartReplication,+    StartReplicationResponse (StartReplicationResponse'),+    newStartReplicationResponse,++    -- ** StopFailback+    StopFailback (StopFailback'),+    newStopFailback,+    StopFailbackResponse (StopFailbackResponse'),+    newStopFailbackResponse,++    -- ** StopReplication+    StopReplication (StopReplication'),+    newStopReplication,+    StopReplicationResponse (StopReplicationResponse'),+    newStopReplicationResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** TerminateRecoveryInstances+    TerminateRecoveryInstances (TerminateRecoveryInstances'),+    newTerminateRecoveryInstances,+    TerminateRecoveryInstancesResponse (TerminateRecoveryInstancesResponse'),+    newTerminateRecoveryInstancesResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateFailbackReplicationConfiguration+    UpdateFailbackReplicationConfiguration (UpdateFailbackReplicationConfiguration'),+    newUpdateFailbackReplicationConfiguration,+    UpdateFailbackReplicationConfigurationResponse (UpdateFailbackReplicationConfigurationResponse'),+    newUpdateFailbackReplicationConfigurationResponse,++    -- ** UpdateLaunchConfiguration+    UpdateLaunchConfiguration (UpdateLaunchConfiguration'),+    newUpdateLaunchConfiguration,+    LaunchConfiguration (LaunchConfiguration'),+    newLaunchConfiguration,++    -- ** UpdateReplicationConfiguration+    UpdateReplicationConfiguration (UpdateReplicationConfiguration'),+    newUpdateReplicationConfiguration,+    ReplicationConfiguration (ReplicationConfiguration'),+    newReplicationConfiguration,++    -- ** UpdateReplicationConfigurationTemplate+    UpdateReplicationConfigurationTemplate (UpdateReplicationConfigurationTemplate'),+    newUpdateReplicationConfigurationTemplate,+    ReplicationConfigurationTemplate (ReplicationConfigurationTemplate'),+    newReplicationConfigurationTemplate,++    -- * Types++    -- ** DataReplicationErrorString+    DataReplicationErrorString (..),++    -- ** DataReplicationInitiationStepName+    DataReplicationInitiationStepName (..),++    -- ** DataReplicationInitiationStepStatus+    DataReplicationInitiationStepStatus (..),++    -- ** DataReplicationState+    DataReplicationState (..),++    -- ** EC2InstanceState+    EC2InstanceState (..),++    -- ** ExtensionStatus+    ExtensionStatus (..),++    -- ** FailbackLaunchType+    FailbackLaunchType (..),++    -- ** FailbackReplicationError+    FailbackReplicationError (..),++    -- ** FailbackState+    FailbackState (..),++    -- ** InitiatedBy+    InitiatedBy (..),++    -- ** JobLogEvent+    JobLogEvent (..),++    -- ** JobStatus+    JobStatus (..),++    -- ** JobType+    JobType (..),++    -- ** LastLaunchResult+    LastLaunchResult (..),++    -- ** LastLaunchType+    LastLaunchType (..),++    -- ** LaunchDisposition+    LaunchDisposition (..),++    -- ** LaunchStatus+    LaunchStatus (..),++    -- ** OriginEnvironment+    OriginEnvironment (..),++    -- ** PITPolicyRuleUnits+    PITPolicyRuleUnits (..),++    -- ** RecoveryInstanceDataReplicationInitiationStepName+    RecoveryInstanceDataReplicationInitiationStepName (..),++    -- ** RecoveryInstanceDataReplicationInitiationStepStatus+    RecoveryInstanceDataReplicationInitiationStepStatus (..),++    -- ** RecoveryInstanceDataReplicationState+    RecoveryInstanceDataReplicationState (..),++    -- ** RecoverySnapshotsOrder+    RecoverySnapshotsOrder (..),++    -- ** ReplicationConfigurationDataPlaneRouting+    ReplicationConfigurationDataPlaneRouting (..),++    -- ** ReplicationConfigurationDefaultLargeStagingDiskType+    ReplicationConfigurationDefaultLargeStagingDiskType (..),++    -- ** ReplicationConfigurationEbsEncryption+    ReplicationConfigurationEbsEncryption (..),++    -- ** ReplicationConfigurationReplicatedDiskStagingDiskType+    ReplicationConfigurationReplicatedDiskStagingDiskType (..),++    -- ** ReplicationDirection+    ReplicationDirection (..),++    -- ** TargetInstanceTypeRightSizingMethod+    TargetInstanceTypeRightSizingMethod (..),++    -- ** Account+    Account (Account'),+    newAccount,++    -- ** CPU+    CPU (CPU'),+    newCPU,++    -- ** ConversionProperties+    ConversionProperties (ConversionProperties'),+    newConversionProperties,++    -- ** DataReplicationError+    DataReplicationError (DataReplicationError'),+    newDataReplicationError,++    -- ** DataReplicationInfo+    DataReplicationInfo (DataReplicationInfo'),+    newDataReplicationInfo,++    -- ** DataReplicationInfoReplicatedDisk+    DataReplicationInfoReplicatedDisk (DataReplicationInfoReplicatedDisk'),+    newDataReplicationInfoReplicatedDisk,++    -- ** DataReplicationInitiation+    DataReplicationInitiation (DataReplicationInitiation'),+    newDataReplicationInitiation,++    -- ** DataReplicationInitiationStep+    DataReplicationInitiationStep (DataReplicationInitiationStep'),+    newDataReplicationInitiationStep,++    -- ** DescribeJobsRequestFilters+    DescribeJobsRequestFilters (DescribeJobsRequestFilters'),+    newDescribeJobsRequestFilters,++    -- ** DescribeRecoveryInstancesRequestFilters+    DescribeRecoveryInstancesRequestFilters (DescribeRecoveryInstancesRequestFilters'),+    newDescribeRecoveryInstancesRequestFilters,++    -- ** DescribeRecoverySnapshotsRequestFilters+    DescribeRecoverySnapshotsRequestFilters (DescribeRecoverySnapshotsRequestFilters'),+    newDescribeRecoverySnapshotsRequestFilters,++    -- ** DescribeSourceServersRequestFilters+    DescribeSourceServersRequestFilters (DescribeSourceServersRequestFilters'),+    newDescribeSourceServersRequestFilters,++    -- ** Disk+    Disk (Disk'),+    newDisk,++    -- ** IdentificationHints+    IdentificationHints (IdentificationHints'),+    newIdentificationHints,++    -- ** Job+    Job (Job'),+    newJob,++    -- ** JobLog+    JobLog (JobLog'),+    newJobLog,++    -- ** JobLogEventData+    JobLogEventData (JobLogEventData'),+    newJobLogEventData,++    -- ** LaunchConfiguration+    LaunchConfiguration (LaunchConfiguration'),+    newLaunchConfiguration,++    -- ** Licensing+    Licensing (Licensing'),+    newLicensing,++    -- ** LifeCycle+    LifeCycle (LifeCycle'),+    newLifeCycle,++    -- ** LifeCycleLastLaunch+    LifeCycleLastLaunch (LifeCycleLastLaunch'),+    newLifeCycleLastLaunch,++    -- ** LifeCycleLastLaunchInitiated+    LifeCycleLastLaunchInitiated (LifeCycleLastLaunchInitiated'),+    newLifeCycleLastLaunchInitiated,++    -- ** NetworkInterface+    NetworkInterface (NetworkInterface'),+    newNetworkInterface,++    -- ** OS+    OS (OS'),+    newOS,++    -- ** PITPolicyRule+    PITPolicyRule (PITPolicyRule'),+    newPITPolicyRule,++    -- ** ParticipatingServer+    ParticipatingServer (ParticipatingServer'),+    newParticipatingServer,++    -- ** RecoveryInstance+    RecoveryInstance (RecoveryInstance'),+    newRecoveryInstance,++    -- ** RecoveryInstanceDataReplicationError+    RecoveryInstanceDataReplicationError (RecoveryInstanceDataReplicationError'),+    newRecoveryInstanceDataReplicationError,++    -- ** RecoveryInstanceDataReplicationInfo+    RecoveryInstanceDataReplicationInfo (RecoveryInstanceDataReplicationInfo'),+    newRecoveryInstanceDataReplicationInfo,++    -- ** RecoveryInstanceDataReplicationInfoReplicatedDisk+    RecoveryInstanceDataReplicationInfoReplicatedDisk (RecoveryInstanceDataReplicationInfoReplicatedDisk'),+    newRecoveryInstanceDataReplicationInfoReplicatedDisk,++    -- ** RecoveryInstanceDataReplicationInitiation+    RecoveryInstanceDataReplicationInitiation (RecoveryInstanceDataReplicationInitiation'),+    newRecoveryInstanceDataReplicationInitiation,++    -- ** RecoveryInstanceDataReplicationInitiationStep+    RecoveryInstanceDataReplicationInitiationStep (RecoveryInstanceDataReplicationInitiationStep'),+    newRecoveryInstanceDataReplicationInitiationStep,++    -- ** RecoveryInstanceDisk+    RecoveryInstanceDisk (RecoveryInstanceDisk'),+    newRecoveryInstanceDisk,++    -- ** RecoveryInstanceFailback+    RecoveryInstanceFailback (RecoveryInstanceFailback'),+    newRecoveryInstanceFailback,++    -- ** RecoveryInstanceProperties+    RecoveryInstanceProperties (RecoveryInstanceProperties'),+    newRecoveryInstanceProperties,++    -- ** RecoverySnapshot+    RecoverySnapshot (RecoverySnapshot'),+    newRecoverySnapshot,++    -- ** ReplicationConfiguration+    ReplicationConfiguration (ReplicationConfiguration'),+    newReplicationConfiguration,++    -- ** ReplicationConfigurationReplicatedDisk+    ReplicationConfigurationReplicatedDisk (ReplicationConfigurationReplicatedDisk'),+    newReplicationConfigurationReplicatedDisk,++    -- ** ReplicationConfigurationTemplate+    ReplicationConfigurationTemplate (ReplicationConfigurationTemplate'),+    newReplicationConfigurationTemplate,++    -- ** SourceCloudProperties+    SourceCloudProperties (SourceCloudProperties'),+    newSourceCloudProperties,++    -- ** SourceProperties+    SourceProperties (SourceProperties'),+    newSourceProperties,++    -- ** SourceServer+    SourceServer (SourceServer'),+    newSourceServer,++    -- ** StagingArea+    StagingArea (StagingArea'),+    newStagingArea,++    -- ** StagingSourceServer+    StagingSourceServer (StagingSourceServer'),+    newStagingSourceServer,++    -- ** StartRecoveryRequestSourceServer+    StartRecoveryRequestSourceServer (StartRecoveryRequestSourceServer'),+    newStartRecoveryRequestSourceServer,+  )+where++import Amazonka.DrS.CreateExtendedSourceServer+import Amazonka.DrS.CreateReplicationConfigurationTemplate+import Amazonka.DrS.DeleteJob+import Amazonka.DrS.DeleteRecoveryInstance+import Amazonka.DrS.DeleteReplicationConfigurationTemplate+import Amazonka.DrS.DeleteSourceServer+import Amazonka.DrS.DescribeJobLogItems+import Amazonka.DrS.DescribeJobs+import Amazonka.DrS.DescribeRecoveryInstances+import Amazonka.DrS.DescribeRecoverySnapshots+import Amazonka.DrS.DescribeReplicationConfigurationTemplates+import Amazonka.DrS.DescribeSourceServers+import Amazonka.DrS.DisconnectRecoveryInstance+import Amazonka.DrS.DisconnectSourceServer+import Amazonka.DrS.GetFailbackReplicationConfiguration+import Amazonka.DrS.GetLaunchConfiguration+import Amazonka.DrS.GetReplicationConfiguration+import Amazonka.DrS.InitializeService+import Amazonka.DrS.Lens+import Amazonka.DrS.ListExtensibleSourceServers+import Amazonka.DrS.ListStagingAccounts+import Amazonka.DrS.ListTagsForResource+import Amazonka.DrS.RetryDataReplication+import Amazonka.DrS.ReverseReplication+import Amazonka.DrS.StartFailbackLaunch+import Amazonka.DrS.StartRecovery+import Amazonka.DrS.StartReplication+import Amazonka.DrS.StopFailback+import Amazonka.DrS.StopReplication+import Amazonka.DrS.TagResource+import Amazonka.DrS.TerminateRecoveryInstances+import Amazonka.DrS.Types+import Amazonka.DrS.UntagResource+import Amazonka.DrS.UpdateFailbackReplicationConfiguration+import Amazonka.DrS.UpdateLaunchConfiguration+import Amazonka.DrS.UpdateReplicationConfiguration+import Amazonka.DrS.UpdateReplicationConfigurationTemplate+import Amazonka.DrS.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 'DrS'.++-- $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/DrS/CreateExtendedSourceServer.hs view
@@ -0,0 +1,190 @@+{-# 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.DrS.CreateExtendedSourceServer+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Create an extended source server in the target Account based on the+-- source server in staging account.+module Amazonka.DrS.CreateExtendedSourceServer+  ( -- * Creating a Request+    CreateExtendedSourceServer (..),+    newCreateExtendedSourceServer,++    -- * Request Lenses+    createExtendedSourceServer_tags,+    createExtendedSourceServer_sourceServerArn,++    -- * Destructuring the Response+    CreateExtendedSourceServerResponse (..),+    newCreateExtendedSourceServerResponse,++    -- * Response Lenses+    createExtendedSourceServerResponse_sourceServer,+    createExtendedSourceServerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateExtendedSourceServer' smart constructor.+data CreateExtendedSourceServer = CreateExtendedSourceServer'+  { -- | A list of tags associated with the extended source server.+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | This defines the ARN of the source server in staging Account based on+    -- which you want to create an extended source server.+    sourceServerArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateExtendedSourceServer' 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', 'createExtendedSourceServer_tags' - A list of tags associated with the extended source server.+--+-- 'sourceServerArn', 'createExtendedSourceServer_sourceServerArn' - This defines the ARN of the source server in staging Account based on+-- which you want to create an extended source server.+newCreateExtendedSourceServer ::+  -- | 'sourceServerArn'+  Prelude.Text ->+  CreateExtendedSourceServer+newCreateExtendedSourceServer pSourceServerArn_ =+  CreateExtendedSourceServer'+    { tags = Prelude.Nothing,+      sourceServerArn = pSourceServerArn_+    }++-- | A list of tags associated with the extended source server.+createExtendedSourceServer_tags :: Lens.Lens' CreateExtendedSourceServer (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createExtendedSourceServer_tags = Lens.lens (\CreateExtendedSourceServer' {tags} -> tags) (\s@CreateExtendedSourceServer' {} a -> s {tags = a} :: CreateExtendedSourceServer) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | This defines the ARN of the source server in staging Account based on+-- which you want to create an extended source server.+createExtendedSourceServer_sourceServerArn :: Lens.Lens' CreateExtendedSourceServer Prelude.Text+createExtendedSourceServer_sourceServerArn = Lens.lens (\CreateExtendedSourceServer' {sourceServerArn} -> sourceServerArn) (\s@CreateExtendedSourceServer' {} a -> s {sourceServerArn = a} :: CreateExtendedSourceServer)++instance Core.AWSRequest CreateExtendedSourceServer where+  type+    AWSResponse CreateExtendedSourceServer =+      CreateExtendedSourceServerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateExtendedSourceServerResponse'+            Prelude.<$> (x Data..?> "sourceServer")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateExtendedSourceServer where+  hashWithSalt _salt CreateExtendedSourceServer' {..} =+    _salt+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` sourceServerArn++instance Prelude.NFData CreateExtendedSourceServer where+  rnf CreateExtendedSourceServer' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf sourceServerArn++instance Data.ToHeaders CreateExtendedSourceServer where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateExtendedSourceServer where+  toJSON CreateExtendedSourceServer' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("sourceServerArn" Data..= sourceServerArn)+          ]+      )++instance Data.ToPath CreateExtendedSourceServer where+  toPath = Prelude.const "/CreateExtendedSourceServer"++instance Data.ToQuery CreateExtendedSourceServer where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateExtendedSourceServerResponse' smart constructor.+data CreateExtendedSourceServerResponse = CreateExtendedSourceServerResponse'+  { -- | Created extended source server.+    sourceServer :: Prelude.Maybe SourceServer,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateExtendedSourceServerResponse' 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:+--+-- 'sourceServer', 'createExtendedSourceServerResponse_sourceServer' - Created extended source server.+--+-- 'httpStatus', 'createExtendedSourceServerResponse_httpStatus' - The response's http status code.+newCreateExtendedSourceServerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateExtendedSourceServerResponse+newCreateExtendedSourceServerResponse pHttpStatus_ =+  CreateExtendedSourceServerResponse'+    { sourceServer =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Created extended source server.+createExtendedSourceServerResponse_sourceServer :: Lens.Lens' CreateExtendedSourceServerResponse (Prelude.Maybe SourceServer)+createExtendedSourceServerResponse_sourceServer = Lens.lens (\CreateExtendedSourceServerResponse' {sourceServer} -> sourceServer) (\s@CreateExtendedSourceServerResponse' {} a -> s {sourceServer = a} :: CreateExtendedSourceServerResponse)++-- | The response's http status code.+createExtendedSourceServerResponse_httpStatus :: Lens.Lens' CreateExtendedSourceServerResponse Prelude.Int+createExtendedSourceServerResponse_httpStatus = Lens.lens (\CreateExtendedSourceServerResponse' {httpStatus} -> httpStatus) (\s@CreateExtendedSourceServerResponse' {} a -> s {httpStatus = a} :: CreateExtendedSourceServerResponse)++instance+  Prelude.NFData+    CreateExtendedSourceServerResponse+  where+  rnf CreateExtendedSourceServerResponse' {..} =+    Prelude.rnf sourceServer+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/CreateReplicationConfigurationTemplate.hs view
@@ -0,0 +1,410 @@+{-# 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.DrS.CreateReplicationConfigurationTemplate+-- 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 new ReplicationConfigurationTemplate.+module Amazonka.DrS.CreateReplicationConfigurationTemplate+  ( -- * Creating a Request+    CreateReplicationConfigurationTemplate (..),+    newCreateReplicationConfigurationTemplate,++    -- * Request Lenses+    createReplicationConfigurationTemplate_ebsEncryptionKeyArn,+    createReplicationConfigurationTemplate_tags,+    createReplicationConfigurationTemplate_associateDefaultSecurityGroup,+    createReplicationConfigurationTemplate_bandwidthThrottling,+    createReplicationConfigurationTemplate_createPublicIP,+    createReplicationConfigurationTemplate_dataPlaneRouting,+    createReplicationConfigurationTemplate_defaultLargeStagingDiskType,+    createReplicationConfigurationTemplate_ebsEncryption,+    createReplicationConfigurationTemplate_pitPolicy,+    createReplicationConfigurationTemplate_replicationServerInstanceType,+    createReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs,+    createReplicationConfigurationTemplate_stagingAreaSubnetId,+    createReplicationConfigurationTemplate_stagingAreaTags,+    createReplicationConfigurationTemplate_useDedicatedReplicationServer,++    -- * Destructuring the Response+    ReplicationConfigurationTemplate (..),+    newReplicationConfigurationTemplate,++    -- * Response Lenses+    replicationConfigurationTemplate_arn,+    replicationConfigurationTemplate_associateDefaultSecurityGroup,+    replicationConfigurationTemplate_bandwidthThrottling,+    replicationConfigurationTemplate_createPublicIP,+    replicationConfigurationTemplate_dataPlaneRouting,+    replicationConfigurationTemplate_defaultLargeStagingDiskType,+    replicationConfigurationTemplate_ebsEncryption,+    replicationConfigurationTemplate_ebsEncryptionKeyArn,+    replicationConfigurationTemplate_pitPolicy,+    replicationConfigurationTemplate_replicationServerInstanceType,+    replicationConfigurationTemplate_replicationServersSecurityGroupsIDs,+    replicationConfigurationTemplate_stagingAreaSubnetId,+    replicationConfigurationTemplate_stagingAreaTags,+    replicationConfigurationTemplate_tags,+    replicationConfigurationTemplate_useDedicatedReplicationServer,+    replicationConfigurationTemplate_replicationConfigurationTemplateID,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateReplicationConfigurationTemplate' smart constructor.+data CreateReplicationConfigurationTemplate = CreateReplicationConfigurationTemplate'+  { -- | The ARN of the EBS encryption key to be used during replication.+    ebsEncryptionKeyArn :: Prelude.Maybe Prelude.Text,+    -- | A set of tags to be associated with the Replication Configuration+    -- Template resource.+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | Whether to associate the default Elastic Disaster Recovery Security+    -- group with the Replication Configuration Template.+    associateDefaultSecurityGroup :: Prelude.Bool,+    -- | Configure bandwidth throttling for the outbound data transfer rate of+    -- the Source Server in Mbps.+    bandwidthThrottling :: Prelude.Natural,+    -- | Whether to create a Public IP for the Recovery Instance by default.+    createPublicIP :: Prelude.Bool,+    -- | The data plane routing mechanism that will be used for replication.+    dataPlaneRouting :: ReplicationConfigurationDataPlaneRouting,+    -- | The Staging Disk EBS volume type to be used during replication.+    defaultLargeStagingDiskType :: ReplicationConfigurationDefaultLargeStagingDiskType,+    -- | The type of EBS encryption to be used during replication.+    ebsEncryption :: ReplicationConfigurationEbsEncryption,+    -- | The Point in time (PIT) policy to manage snapshots taken during+    -- replication.+    pitPolicy :: Prelude.NonEmpty PITPolicyRule,+    -- | The instance type to be used for the replication server.+    replicationServerInstanceType :: Prelude.Text,+    -- | The security group IDs that will be used by the replication server.+    replicationServersSecurityGroupsIDs :: [Prelude.Text],+    -- | The subnet to be used by the replication staging area.+    stagingAreaSubnetId :: Prelude.Text,+    -- | A set of tags to be associated with all resources created in the+    -- replication staging area: EC2 replication server, EBS volumes, EBS+    -- snapshots, etc.+    stagingAreaTags :: Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Whether to use a dedicated Replication Server in the replication staging+    -- area.+    useDedicatedReplicationServer :: Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateReplicationConfigurationTemplate' 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:+--+-- 'ebsEncryptionKeyArn', 'createReplicationConfigurationTemplate_ebsEncryptionKeyArn' - The ARN of the EBS encryption key to be used during replication.+--+-- 'tags', 'createReplicationConfigurationTemplate_tags' - A set of tags to be associated with the Replication Configuration+-- Template resource.+--+-- 'associateDefaultSecurityGroup', 'createReplicationConfigurationTemplate_associateDefaultSecurityGroup' - Whether to associate the default Elastic Disaster Recovery Security+-- group with the Replication Configuration Template.+--+-- 'bandwidthThrottling', 'createReplicationConfigurationTemplate_bandwidthThrottling' - Configure bandwidth throttling for the outbound data transfer rate of+-- the Source Server in Mbps.+--+-- 'createPublicIP', 'createReplicationConfigurationTemplate_createPublicIP' - Whether to create a Public IP for the Recovery Instance by default.+--+-- 'dataPlaneRouting', 'createReplicationConfigurationTemplate_dataPlaneRouting' - The data plane routing mechanism that will be used for replication.+--+-- 'defaultLargeStagingDiskType', 'createReplicationConfigurationTemplate_defaultLargeStagingDiskType' - The Staging Disk EBS volume type to be used during replication.+--+-- 'ebsEncryption', 'createReplicationConfigurationTemplate_ebsEncryption' - The type of EBS encryption to be used during replication.+--+-- 'pitPolicy', 'createReplicationConfigurationTemplate_pitPolicy' - The Point in time (PIT) policy to manage snapshots taken during+-- replication.+--+-- 'replicationServerInstanceType', 'createReplicationConfigurationTemplate_replicationServerInstanceType' - The instance type to be used for the replication server.+--+-- 'replicationServersSecurityGroupsIDs', 'createReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs' - The security group IDs that will be used by the replication server.+--+-- 'stagingAreaSubnetId', 'createReplicationConfigurationTemplate_stagingAreaSubnetId' - The subnet to be used by the replication staging area.+--+-- 'stagingAreaTags', 'createReplicationConfigurationTemplate_stagingAreaTags' - A set of tags to be associated with all resources created in the+-- replication staging area: EC2 replication server, EBS volumes, EBS+-- snapshots, etc.+--+-- 'useDedicatedReplicationServer', 'createReplicationConfigurationTemplate_useDedicatedReplicationServer' - Whether to use a dedicated Replication Server in the replication staging+-- area.+newCreateReplicationConfigurationTemplate ::+  -- | 'associateDefaultSecurityGroup'+  Prelude.Bool ->+  -- | 'bandwidthThrottling'+  Prelude.Natural ->+  -- | 'createPublicIP'+  Prelude.Bool ->+  -- | 'dataPlaneRouting'+  ReplicationConfigurationDataPlaneRouting ->+  -- | 'defaultLargeStagingDiskType'+  ReplicationConfigurationDefaultLargeStagingDiskType ->+  -- | 'ebsEncryption'+  ReplicationConfigurationEbsEncryption ->+  -- | 'pitPolicy'+  Prelude.NonEmpty PITPolicyRule ->+  -- | 'replicationServerInstanceType'+  Prelude.Text ->+  -- | 'stagingAreaSubnetId'+  Prelude.Text ->+  -- | 'useDedicatedReplicationServer'+  Prelude.Bool ->+  CreateReplicationConfigurationTemplate+newCreateReplicationConfigurationTemplate+  pAssociateDefaultSecurityGroup_+  pBandwidthThrottling_+  pCreatePublicIP_+  pDataPlaneRouting_+  pDefaultLargeStagingDiskType_+  pEbsEncryption_+  pPitPolicy_+  pReplicationServerInstanceType_+  pStagingAreaSubnetId_+  pUseDedicatedReplicationServer_ =+    CreateReplicationConfigurationTemplate'+      { ebsEncryptionKeyArn =+          Prelude.Nothing,+        tags = Prelude.Nothing,+        associateDefaultSecurityGroup =+          pAssociateDefaultSecurityGroup_,+        bandwidthThrottling =+          pBandwidthThrottling_,+        createPublicIP = pCreatePublicIP_,+        dataPlaneRouting =+          pDataPlaneRouting_,+        defaultLargeStagingDiskType =+          pDefaultLargeStagingDiskType_,+        ebsEncryption = pEbsEncryption_,+        pitPolicy =+          Lens.coerced Lens.# pPitPolicy_,+        replicationServerInstanceType =+          pReplicationServerInstanceType_,+        replicationServersSecurityGroupsIDs =+          Prelude.mempty,+        stagingAreaSubnetId =+          pStagingAreaSubnetId_,+        stagingAreaTags = Prelude.mempty,+        useDedicatedReplicationServer =+          pUseDedicatedReplicationServer_+      }++-- | The ARN of the EBS encryption key to be used during replication.+createReplicationConfigurationTemplate_ebsEncryptionKeyArn :: Lens.Lens' CreateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)+createReplicationConfigurationTemplate_ebsEncryptionKeyArn = Lens.lens (\CreateReplicationConfigurationTemplate' {ebsEncryptionKeyArn} -> ebsEncryptionKeyArn) (\s@CreateReplicationConfigurationTemplate' {} a -> s {ebsEncryptionKeyArn = a} :: CreateReplicationConfigurationTemplate)++-- | A set of tags to be associated with the Replication Configuration+-- Template resource.+createReplicationConfigurationTemplate_tags :: Lens.Lens' CreateReplicationConfigurationTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createReplicationConfigurationTemplate_tags = Lens.lens (\CreateReplicationConfigurationTemplate' {tags} -> tags) (\s@CreateReplicationConfigurationTemplate' {} a -> s {tags = a} :: CreateReplicationConfigurationTemplate) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | Whether to associate the default Elastic Disaster Recovery Security+-- group with the Replication Configuration Template.+createReplicationConfigurationTemplate_associateDefaultSecurityGroup :: Lens.Lens' CreateReplicationConfigurationTemplate Prelude.Bool+createReplicationConfigurationTemplate_associateDefaultSecurityGroup = Lens.lens (\CreateReplicationConfigurationTemplate' {associateDefaultSecurityGroup} -> associateDefaultSecurityGroup) (\s@CreateReplicationConfigurationTemplate' {} a -> s {associateDefaultSecurityGroup = a} :: CreateReplicationConfigurationTemplate)++-- | Configure bandwidth throttling for the outbound data transfer rate of+-- the Source Server in Mbps.+createReplicationConfigurationTemplate_bandwidthThrottling :: Lens.Lens' CreateReplicationConfigurationTemplate Prelude.Natural+createReplicationConfigurationTemplate_bandwidthThrottling = Lens.lens (\CreateReplicationConfigurationTemplate' {bandwidthThrottling} -> bandwidthThrottling) (\s@CreateReplicationConfigurationTemplate' {} a -> s {bandwidthThrottling = a} :: CreateReplicationConfigurationTemplate)++-- | Whether to create a Public IP for the Recovery Instance by default.+createReplicationConfigurationTemplate_createPublicIP :: Lens.Lens' CreateReplicationConfigurationTemplate Prelude.Bool+createReplicationConfigurationTemplate_createPublicIP = Lens.lens (\CreateReplicationConfigurationTemplate' {createPublicIP} -> createPublicIP) (\s@CreateReplicationConfigurationTemplate' {} a -> s {createPublicIP = a} :: CreateReplicationConfigurationTemplate)++-- | The data plane routing mechanism that will be used for replication.+createReplicationConfigurationTemplate_dataPlaneRouting :: Lens.Lens' CreateReplicationConfigurationTemplate ReplicationConfigurationDataPlaneRouting+createReplicationConfigurationTemplate_dataPlaneRouting = Lens.lens (\CreateReplicationConfigurationTemplate' {dataPlaneRouting} -> dataPlaneRouting) (\s@CreateReplicationConfigurationTemplate' {} a -> s {dataPlaneRouting = a} :: CreateReplicationConfigurationTemplate)++-- | The Staging Disk EBS volume type to be used during replication.+createReplicationConfigurationTemplate_defaultLargeStagingDiskType :: Lens.Lens' CreateReplicationConfigurationTemplate ReplicationConfigurationDefaultLargeStagingDiskType+createReplicationConfigurationTemplate_defaultLargeStagingDiskType = Lens.lens (\CreateReplicationConfigurationTemplate' {defaultLargeStagingDiskType} -> defaultLargeStagingDiskType) (\s@CreateReplicationConfigurationTemplate' {} a -> s {defaultLargeStagingDiskType = a} :: CreateReplicationConfigurationTemplate)++-- | The type of EBS encryption to be used during replication.+createReplicationConfigurationTemplate_ebsEncryption :: Lens.Lens' CreateReplicationConfigurationTemplate ReplicationConfigurationEbsEncryption+createReplicationConfigurationTemplate_ebsEncryption = Lens.lens (\CreateReplicationConfigurationTemplate' {ebsEncryption} -> ebsEncryption) (\s@CreateReplicationConfigurationTemplate' {} a -> s {ebsEncryption = a} :: CreateReplicationConfigurationTemplate)++-- | The Point in time (PIT) policy to manage snapshots taken during+-- replication.+createReplicationConfigurationTemplate_pitPolicy :: Lens.Lens' CreateReplicationConfigurationTemplate (Prelude.NonEmpty PITPolicyRule)+createReplicationConfigurationTemplate_pitPolicy = Lens.lens (\CreateReplicationConfigurationTemplate' {pitPolicy} -> pitPolicy) (\s@CreateReplicationConfigurationTemplate' {} a -> s {pitPolicy = a} :: CreateReplicationConfigurationTemplate) Prelude.. Lens.coerced++-- | The instance type to be used for the replication server.+createReplicationConfigurationTemplate_replicationServerInstanceType :: Lens.Lens' CreateReplicationConfigurationTemplate Prelude.Text+createReplicationConfigurationTemplate_replicationServerInstanceType = Lens.lens (\CreateReplicationConfigurationTemplate' {replicationServerInstanceType} -> replicationServerInstanceType) (\s@CreateReplicationConfigurationTemplate' {} a -> s {replicationServerInstanceType = a} :: CreateReplicationConfigurationTemplate)++-- | The security group IDs that will be used by the replication server.+createReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs :: Lens.Lens' CreateReplicationConfigurationTemplate [Prelude.Text]+createReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs = Lens.lens (\CreateReplicationConfigurationTemplate' {replicationServersSecurityGroupsIDs} -> replicationServersSecurityGroupsIDs) (\s@CreateReplicationConfigurationTemplate' {} a -> s {replicationServersSecurityGroupsIDs = a} :: CreateReplicationConfigurationTemplate) Prelude.. Lens.coerced++-- | The subnet to be used by the replication staging area.+createReplicationConfigurationTemplate_stagingAreaSubnetId :: Lens.Lens' CreateReplicationConfigurationTemplate Prelude.Text+createReplicationConfigurationTemplate_stagingAreaSubnetId = Lens.lens (\CreateReplicationConfigurationTemplate' {stagingAreaSubnetId} -> stagingAreaSubnetId) (\s@CreateReplicationConfigurationTemplate' {} a -> s {stagingAreaSubnetId = a} :: CreateReplicationConfigurationTemplate)++-- | A set of tags to be associated with all resources created in the+-- replication staging area: EC2 replication server, EBS volumes, EBS+-- snapshots, etc.+createReplicationConfigurationTemplate_stagingAreaTags :: Lens.Lens' CreateReplicationConfigurationTemplate (Prelude.HashMap Prelude.Text Prelude.Text)+createReplicationConfigurationTemplate_stagingAreaTags = Lens.lens (\CreateReplicationConfigurationTemplate' {stagingAreaTags} -> stagingAreaTags) (\s@CreateReplicationConfigurationTemplate' {} a -> s {stagingAreaTags = a} :: CreateReplicationConfigurationTemplate) Prelude.. Data._Sensitive Prelude.. Lens.coerced++-- | Whether to use a dedicated Replication Server in the replication staging+-- area.+createReplicationConfigurationTemplate_useDedicatedReplicationServer :: Lens.Lens' CreateReplicationConfigurationTemplate Prelude.Bool+createReplicationConfigurationTemplate_useDedicatedReplicationServer = Lens.lens (\CreateReplicationConfigurationTemplate' {useDedicatedReplicationServer} -> useDedicatedReplicationServer) (\s@CreateReplicationConfigurationTemplate' {} a -> s {useDedicatedReplicationServer = a} :: CreateReplicationConfigurationTemplate)++instance+  Core.AWSRequest+    CreateReplicationConfigurationTemplate+  where+  type+    AWSResponse+      CreateReplicationConfigurationTemplate =+      ReplicationConfigurationTemplate+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      (\s h x -> Data.eitherParseJSON x)++instance+  Prelude.Hashable+    CreateReplicationConfigurationTemplate+  where+  hashWithSalt+    _salt+    CreateReplicationConfigurationTemplate' {..} =+      _salt+        `Prelude.hashWithSalt` ebsEncryptionKeyArn+        `Prelude.hashWithSalt` tags+        `Prelude.hashWithSalt` associateDefaultSecurityGroup+        `Prelude.hashWithSalt` bandwidthThrottling+        `Prelude.hashWithSalt` createPublicIP+        `Prelude.hashWithSalt` dataPlaneRouting+        `Prelude.hashWithSalt` defaultLargeStagingDiskType+        `Prelude.hashWithSalt` ebsEncryption+        `Prelude.hashWithSalt` pitPolicy+        `Prelude.hashWithSalt` replicationServerInstanceType+        `Prelude.hashWithSalt` replicationServersSecurityGroupsIDs+        `Prelude.hashWithSalt` stagingAreaSubnetId+        `Prelude.hashWithSalt` stagingAreaTags+        `Prelude.hashWithSalt` useDedicatedReplicationServer++instance+  Prelude.NFData+    CreateReplicationConfigurationTemplate+  where+  rnf CreateReplicationConfigurationTemplate' {..} =+    Prelude.rnf ebsEncryptionKeyArn+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf associateDefaultSecurityGroup+      `Prelude.seq` Prelude.rnf bandwidthThrottling+      `Prelude.seq` Prelude.rnf createPublicIP+      `Prelude.seq` Prelude.rnf dataPlaneRouting+      `Prelude.seq` Prelude.rnf defaultLargeStagingDiskType+      `Prelude.seq` Prelude.rnf ebsEncryption+      `Prelude.seq` Prelude.rnf pitPolicy+      `Prelude.seq` Prelude.rnf replicationServerInstanceType+      `Prelude.seq` Prelude.rnf replicationServersSecurityGroupsIDs+      `Prelude.seq` Prelude.rnf stagingAreaSubnetId+      `Prelude.seq` Prelude.rnf stagingAreaTags+      `Prelude.seq` Prelude.rnf useDedicatedReplicationServer++instance+  Data.ToHeaders+    CreateReplicationConfigurationTemplate+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    CreateReplicationConfigurationTemplate+  where+  toJSON CreateReplicationConfigurationTemplate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ebsEncryptionKeyArn" Data..=)+              Prelude.<$> ebsEncryptionKeyArn,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ( "associateDefaultSecurityGroup"+                  Data..= associateDefaultSecurityGroup+              ),+            Prelude.Just+              ("bandwidthThrottling" Data..= bandwidthThrottling),+            Prelude.Just+              ("createPublicIP" Data..= createPublicIP),+            Prelude.Just+              ("dataPlaneRouting" Data..= dataPlaneRouting),+            Prelude.Just+              ( "defaultLargeStagingDiskType"+                  Data..= defaultLargeStagingDiskType+              ),+            Prelude.Just ("ebsEncryption" Data..= ebsEncryption),+            Prelude.Just ("pitPolicy" Data..= pitPolicy),+            Prelude.Just+              ( "replicationServerInstanceType"+                  Data..= replicationServerInstanceType+              ),+            Prelude.Just+              ( "replicationServersSecurityGroupsIDs"+                  Data..= replicationServersSecurityGroupsIDs+              ),+            Prelude.Just+              ("stagingAreaSubnetId" Data..= stagingAreaSubnetId),+            Prelude.Just+              ("stagingAreaTags" Data..= stagingAreaTags),+            Prelude.Just+              ( "useDedicatedReplicationServer"+                  Data..= useDedicatedReplicationServer+              )+          ]+      )++instance+  Data.ToPath+    CreateReplicationConfigurationTemplate+  where+  toPath =+    Prelude.const+      "/CreateReplicationConfigurationTemplate"++instance+  Data.ToQuery+    CreateReplicationConfigurationTemplate+  where+  toQuery = Prelude.const Prelude.mempty
+ gen/Amazonka/DrS/DeleteJob.hs view
@@ -0,0 +1,145 @@+{-# 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.DrS.DeleteJob+-- 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 a single Job by ID.+module Amazonka.DrS.DeleteJob+  ( -- * Creating a Request+    DeleteJob (..),+    newDeleteJob,++    -- * Request Lenses+    deleteJob_jobID,++    -- * Destructuring the Response+    DeleteJobResponse (..),+    newDeleteJobResponse,++    -- * Response Lenses+    deleteJobResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteJob' smart constructor.+data DeleteJob = DeleteJob'+  { -- | The ID of the Job to be deleted.+    jobID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteJob' 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:+--+-- 'jobID', 'deleteJob_jobID' - The ID of the Job to be deleted.+newDeleteJob ::+  -- | 'jobID'+  Prelude.Text ->+  DeleteJob+newDeleteJob pJobID_ = DeleteJob' {jobID = pJobID_}++-- | The ID of the Job to be deleted.+deleteJob_jobID :: Lens.Lens' DeleteJob Prelude.Text+deleteJob_jobID = Lens.lens (\DeleteJob' {jobID} -> jobID) (\s@DeleteJob' {} a -> s {jobID = a} :: DeleteJob)++instance Core.AWSRequest DeleteJob where+  type AWSResponse DeleteJob = DeleteJobResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteJobResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteJob where+  hashWithSalt _salt DeleteJob' {..} =+    _salt `Prelude.hashWithSalt` jobID++instance Prelude.NFData DeleteJob where+  rnf DeleteJob' {..} = Prelude.rnf jobID++instance Data.ToHeaders DeleteJob where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteJob where+  toJSON DeleteJob' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("jobID" Data..= jobID)]+      )++instance Data.ToPath DeleteJob where+  toPath = Prelude.const "/DeleteJob"++instance Data.ToQuery DeleteJob where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteJobResponse' smart constructor.+data DeleteJobResponse = DeleteJobResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteJobResponse' 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', 'deleteJobResponse_httpStatus' - The response's http status code.+newDeleteJobResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteJobResponse+newDeleteJobResponse pHttpStatus_ =+  DeleteJobResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteJobResponse_httpStatus :: Lens.Lens' DeleteJobResponse Prelude.Int+deleteJobResponse_httpStatus = Lens.lens (\DeleteJobResponse' {httpStatus} -> httpStatus) (\s@DeleteJobResponse' {} a -> s {httpStatus = a} :: DeleteJobResponse)++instance Prelude.NFData DeleteJobResponse where+  rnf DeleteJobResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/DrS/DeleteRecoveryInstance.hs view
@@ -0,0 +1,141 @@+{-# 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.DrS.DeleteRecoveryInstance+-- 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 a single Recovery Instance by ID. This deletes the Recovery+-- Instance resource from Elastic Disaster Recovery. The Recovery Instance+-- must be disconnected first in order to delete it.+module Amazonka.DrS.DeleteRecoveryInstance+  ( -- * Creating a Request+    DeleteRecoveryInstance (..),+    newDeleteRecoveryInstance,++    -- * Request Lenses+    deleteRecoveryInstance_recoveryInstanceID,++    -- * Destructuring the Response+    DeleteRecoveryInstanceResponse (..),+    newDeleteRecoveryInstanceResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteRecoveryInstance' smart constructor.+data DeleteRecoveryInstance = DeleteRecoveryInstance'+  { -- | The ID of the Recovery Instance to be deleted.+    recoveryInstanceID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteRecoveryInstance' 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:+--+-- 'recoveryInstanceID', 'deleteRecoveryInstance_recoveryInstanceID' - The ID of the Recovery Instance to be deleted.+newDeleteRecoveryInstance ::+  -- | 'recoveryInstanceID'+  Prelude.Text ->+  DeleteRecoveryInstance+newDeleteRecoveryInstance pRecoveryInstanceID_ =+  DeleteRecoveryInstance'+    { recoveryInstanceID =+        pRecoveryInstanceID_+    }++-- | The ID of the Recovery Instance to be deleted.+deleteRecoveryInstance_recoveryInstanceID :: Lens.Lens' DeleteRecoveryInstance Prelude.Text+deleteRecoveryInstance_recoveryInstanceID = Lens.lens (\DeleteRecoveryInstance' {recoveryInstanceID} -> recoveryInstanceID) (\s@DeleteRecoveryInstance' {} a -> s {recoveryInstanceID = a} :: DeleteRecoveryInstance)++instance Core.AWSRequest DeleteRecoveryInstance where+  type+    AWSResponse DeleteRecoveryInstance =+      DeleteRecoveryInstanceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull+      DeleteRecoveryInstanceResponse'++instance Prelude.Hashable DeleteRecoveryInstance where+  hashWithSalt _salt DeleteRecoveryInstance' {..} =+    _salt `Prelude.hashWithSalt` recoveryInstanceID++instance Prelude.NFData DeleteRecoveryInstance where+  rnf DeleteRecoveryInstance' {..} =+    Prelude.rnf recoveryInstanceID++instance Data.ToHeaders DeleteRecoveryInstance where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteRecoveryInstance where+  toJSON DeleteRecoveryInstance' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("recoveryInstanceID" Data..= recoveryInstanceID)+          ]+      )++instance Data.ToPath DeleteRecoveryInstance where+  toPath = Prelude.const "/DeleteRecoveryInstance"++instance Data.ToQuery DeleteRecoveryInstance where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteRecoveryInstanceResponse' smart constructor.+data DeleteRecoveryInstanceResponse = DeleteRecoveryInstanceResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteRecoveryInstanceResponse' 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.+newDeleteRecoveryInstanceResponse ::+  DeleteRecoveryInstanceResponse+newDeleteRecoveryInstanceResponse =+  DeleteRecoveryInstanceResponse'++instance+  Prelude.NFData+    DeleteRecoveryInstanceResponse+  where+  rnf _ = ()
+ gen/Amazonka/DrS/DeleteReplicationConfigurationTemplate.hs view
@@ -0,0 +1,193 @@+{-# 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.DrS.DeleteReplicationConfigurationTemplate+-- 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 a single Replication Configuration Template by ID+module Amazonka.DrS.DeleteReplicationConfigurationTemplate+  ( -- * Creating a Request+    DeleteReplicationConfigurationTemplate (..),+    newDeleteReplicationConfigurationTemplate,++    -- * Request Lenses+    deleteReplicationConfigurationTemplate_replicationConfigurationTemplateID,++    -- * Destructuring the Response+    DeleteReplicationConfigurationTemplateResponse (..),+    newDeleteReplicationConfigurationTemplateResponse,++    -- * Response Lenses+    deleteReplicationConfigurationTemplateResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteReplicationConfigurationTemplate' smart constructor.+data DeleteReplicationConfigurationTemplate = DeleteReplicationConfigurationTemplate'+  { -- | The ID of the Replication Configuration Template to be deleted.+    replicationConfigurationTemplateID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteReplicationConfigurationTemplate' 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:+--+-- 'replicationConfigurationTemplateID', 'deleteReplicationConfigurationTemplate_replicationConfigurationTemplateID' - The ID of the Replication Configuration Template to be deleted.+newDeleteReplicationConfigurationTemplate ::+  -- | 'replicationConfigurationTemplateID'+  Prelude.Text ->+  DeleteReplicationConfigurationTemplate+newDeleteReplicationConfigurationTemplate+  pReplicationConfigurationTemplateID_ =+    DeleteReplicationConfigurationTemplate'+      { replicationConfigurationTemplateID =+          pReplicationConfigurationTemplateID_+      }++-- | The ID of the Replication Configuration Template to be deleted.+deleteReplicationConfigurationTemplate_replicationConfigurationTemplateID :: Lens.Lens' DeleteReplicationConfigurationTemplate Prelude.Text+deleteReplicationConfigurationTemplate_replicationConfigurationTemplateID = Lens.lens (\DeleteReplicationConfigurationTemplate' {replicationConfigurationTemplateID} -> replicationConfigurationTemplateID) (\s@DeleteReplicationConfigurationTemplate' {} a -> s {replicationConfigurationTemplateID = a} :: DeleteReplicationConfigurationTemplate)++instance+  Core.AWSRequest+    DeleteReplicationConfigurationTemplate+  where+  type+    AWSResponse+      DeleteReplicationConfigurationTemplate =+      DeleteReplicationConfigurationTemplateResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteReplicationConfigurationTemplateResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DeleteReplicationConfigurationTemplate+  where+  hashWithSalt+    _salt+    DeleteReplicationConfigurationTemplate' {..} =+      _salt+        `Prelude.hashWithSalt` replicationConfigurationTemplateID++instance+  Prelude.NFData+    DeleteReplicationConfigurationTemplate+  where+  rnf DeleteReplicationConfigurationTemplate' {..} =+    Prelude.rnf replicationConfigurationTemplateID++instance+  Data.ToHeaders+    DeleteReplicationConfigurationTemplate+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    DeleteReplicationConfigurationTemplate+  where+  toJSON DeleteReplicationConfigurationTemplate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "replicationConfigurationTemplateID"+                  Data..= replicationConfigurationTemplateID+              )+          ]+      )++instance+  Data.ToPath+    DeleteReplicationConfigurationTemplate+  where+  toPath =+    Prelude.const+      "/DeleteReplicationConfigurationTemplate"++instance+  Data.ToQuery+    DeleteReplicationConfigurationTemplate+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteReplicationConfigurationTemplateResponse' smart constructor.+data DeleteReplicationConfigurationTemplateResponse = DeleteReplicationConfigurationTemplateResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteReplicationConfigurationTemplateResponse' 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', 'deleteReplicationConfigurationTemplateResponse_httpStatus' - The response's http status code.+newDeleteReplicationConfigurationTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteReplicationConfigurationTemplateResponse+newDeleteReplicationConfigurationTemplateResponse+  pHttpStatus_ =+    DeleteReplicationConfigurationTemplateResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+deleteReplicationConfigurationTemplateResponse_httpStatus :: Lens.Lens' DeleteReplicationConfigurationTemplateResponse Prelude.Int+deleteReplicationConfigurationTemplateResponse_httpStatus = Lens.lens (\DeleteReplicationConfigurationTemplateResponse' {httpStatus} -> httpStatus) (\s@DeleteReplicationConfigurationTemplateResponse' {} a -> s {httpStatus = a} :: DeleteReplicationConfigurationTemplateResponse)++instance+  Prelude.NFData+    DeleteReplicationConfigurationTemplateResponse+  where+  rnf+    DeleteReplicationConfigurationTemplateResponse' {..} =+      Prelude.rnf httpStatus
+ gen/Amazonka/DrS/DeleteSourceServer.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.DrS.DeleteSourceServer+-- 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 a single Source Server by ID. The Source Server must be+-- disconnected first.+module Amazonka.DrS.DeleteSourceServer+  ( -- * Creating a Request+    DeleteSourceServer (..),+    newDeleteSourceServer,++    -- * Request Lenses+    deleteSourceServer_sourceServerID,++    -- * Destructuring the Response+    DeleteSourceServerResponse (..),+    newDeleteSourceServerResponse,++    -- * Response Lenses+    deleteSourceServerResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteSourceServer' smart constructor.+data DeleteSourceServer = DeleteSourceServer'+  { -- | The ID of the Source Server to be deleted.+    sourceServerID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteSourceServer' 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:+--+-- 'sourceServerID', 'deleteSourceServer_sourceServerID' - The ID of the Source Server to be deleted.+newDeleteSourceServer ::+  -- | 'sourceServerID'+  Prelude.Text ->+  DeleteSourceServer+newDeleteSourceServer pSourceServerID_ =+  DeleteSourceServer'+    { sourceServerID =+        pSourceServerID_+    }++-- | The ID of the Source Server to be deleted.+deleteSourceServer_sourceServerID :: Lens.Lens' DeleteSourceServer Prelude.Text+deleteSourceServer_sourceServerID = Lens.lens (\DeleteSourceServer' {sourceServerID} -> sourceServerID) (\s@DeleteSourceServer' {} a -> s {sourceServerID = a} :: DeleteSourceServer)++instance Core.AWSRequest DeleteSourceServer where+  type+    AWSResponse DeleteSourceServer =+      DeleteSourceServerResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteSourceServerResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteSourceServer where+  hashWithSalt _salt DeleteSourceServer' {..} =+    _salt `Prelude.hashWithSalt` sourceServerID++instance Prelude.NFData DeleteSourceServer where+  rnf DeleteSourceServer' {..} =+    Prelude.rnf sourceServerID++instance Data.ToHeaders DeleteSourceServer where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteSourceServer where+  toJSON DeleteSourceServer' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("sourceServerID" Data..= sourceServerID)+          ]+      )++instance Data.ToPath DeleteSourceServer where+  toPath = Prelude.const "/DeleteSourceServer"++instance Data.ToQuery DeleteSourceServer where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteSourceServerResponse' smart constructor.+data DeleteSourceServerResponse = DeleteSourceServerResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteSourceServerResponse' 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', 'deleteSourceServerResponse_httpStatus' - The response's http status code.+newDeleteSourceServerResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteSourceServerResponse+newDeleteSourceServerResponse pHttpStatus_ =+  DeleteSourceServerResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteSourceServerResponse_httpStatus :: Lens.Lens' DeleteSourceServerResponse Prelude.Int+deleteSourceServerResponse_httpStatus = Lens.lens (\DeleteSourceServerResponse' {httpStatus} -> httpStatus) (\s@DeleteSourceServerResponse' {} a -> s {httpStatus = a} :: DeleteSourceServerResponse)++instance Prelude.NFData DeleteSourceServerResponse where+  rnf DeleteSourceServerResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/DrS/DescribeJobLogItems.hs view
@@ -0,0 +1,231 @@+{-# 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.DrS.DescribeJobLogItems+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves a detailed Job log with pagination.+--+-- This operation returns paginated results.+module Amazonka.DrS.DescribeJobLogItems+  ( -- * Creating a Request+    DescribeJobLogItems (..),+    newDescribeJobLogItems,++    -- * Request Lenses+    describeJobLogItems_maxResults,+    describeJobLogItems_nextToken,+    describeJobLogItems_jobID,++    -- * Destructuring the Response+    DescribeJobLogItemsResponse (..),+    newDescribeJobLogItemsResponse,++    -- * Response Lenses+    describeJobLogItemsResponse_items,+    describeJobLogItemsResponse_nextToken,+    describeJobLogItemsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeJobLogItems' smart constructor.+data DescribeJobLogItems = DescribeJobLogItems'+  { -- | Maximum number of Job log items to retrieve.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token of the next Job log items to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the Job for which Job log items will be retrieved.+    jobID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeJobLogItems' 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', 'describeJobLogItems_maxResults' - Maximum number of Job log items to retrieve.+--+-- 'nextToken', 'describeJobLogItems_nextToken' - The token of the next Job log items to retrieve.+--+-- 'jobID', 'describeJobLogItems_jobID' - The ID of the Job for which Job log items will be retrieved.+newDescribeJobLogItems ::+  -- | 'jobID'+  Prelude.Text ->+  DescribeJobLogItems+newDescribeJobLogItems pJobID_ =+  DescribeJobLogItems'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      jobID = pJobID_+    }++-- | Maximum number of Job log items to retrieve.+describeJobLogItems_maxResults :: Lens.Lens' DescribeJobLogItems (Prelude.Maybe Prelude.Natural)+describeJobLogItems_maxResults = Lens.lens (\DescribeJobLogItems' {maxResults} -> maxResults) (\s@DescribeJobLogItems' {} a -> s {maxResults = a} :: DescribeJobLogItems)++-- | The token of the next Job log items to retrieve.+describeJobLogItems_nextToken :: Lens.Lens' DescribeJobLogItems (Prelude.Maybe Prelude.Text)+describeJobLogItems_nextToken = Lens.lens (\DescribeJobLogItems' {nextToken} -> nextToken) (\s@DescribeJobLogItems' {} a -> s {nextToken = a} :: DescribeJobLogItems)++-- | The ID of the Job for which Job log items will be retrieved.+describeJobLogItems_jobID :: Lens.Lens' DescribeJobLogItems Prelude.Text+describeJobLogItems_jobID = Lens.lens (\DescribeJobLogItems' {jobID} -> jobID) (\s@DescribeJobLogItems' {} a -> s {jobID = a} :: DescribeJobLogItems)++instance Core.AWSPager DescribeJobLogItems where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeJobLogItemsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeJobLogItemsResponse_items+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeJobLogItems_nextToken+          Lens..~ rs+          Lens.^? describeJobLogItemsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeJobLogItems where+  type+    AWSResponse DescribeJobLogItems =+      DescribeJobLogItemsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeJobLogItemsResponse'+            Prelude.<$> (x Data..?> "items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeJobLogItems where+  hashWithSalt _salt DescribeJobLogItems' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` jobID++instance Prelude.NFData DescribeJobLogItems where+  rnf DescribeJobLogItems' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf jobID++instance Data.ToHeaders DescribeJobLogItems where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeJobLogItems where+  toJSON DescribeJobLogItems' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("jobID" Data..= jobID)+          ]+      )++instance Data.ToPath DescribeJobLogItems where+  toPath = Prelude.const "/DescribeJobLogItems"++instance Data.ToQuery DescribeJobLogItems where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeJobLogItemsResponse' smart constructor.+data DescribeJobLogItemsResponse = DescribeJobLogItemsResponse'+  { -- | An array of Job log items.+    items :: Prelude.Maybe [JobLog],+    -- | The token of the next Job log items to retrieve.+    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 'DescribeJobLogItemsResponse' 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:+--+-- 'items', 'describeJobLogItemsResponse_items' - An array of Job log items.+--+-- 'nextToken', 'describeJobLogItemsResponse_nextToken' - The token of the next Job log items to retrieve.+--+-- 'httpStatus', 'describeJobLogItemsResponse_httpStatus' - The response's http status code.+newDescribeJobLogItemsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeJobLogItemsResponse+newDescribeJobLogItemsResponse pHttpStatus_ =+  DescribeJobLogItemsResponse'+    { items =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array of Job log items.+describeJobLogItemsResponse_items :: Lens.Lens' DescribeJobLogItemsResponse (Prelude.Maybe [JobLog])+describeJobLogItemsResponse_items = Lens.lens (\DescribeJobLogItemsResponse' {items} -> items) (\s@DescribeJobLogItemsResponse' {} a -> s {items = a} :: DescribeJobLogItemsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token of the next Job log items to retrieve.+describeJobLogItemsResponse_nextToken :: Lens.Lens' DescribeJobLogItemsResponse (Prelude.Maybe Prelude.Text)+describeJobLogItemsResponse_nextToken = Lens.lens (\DescribeJobLogItemsResponse' {nextToken} -> nextToken) (\s@DescribeJobLogItemsResponse' {} a -> s {nextToken = a} :: DescribeJobLogItemsResponse)++-- | The response's http status code.+describeJobLogItemsResponse_httpStatus :: Lens.Lens' DescribeJobLogItemsResponse Prelude.Int+describeJobLogItemsResponse_httpStatus = Lens.lens (\DescribeJobLogItemsResponse' {httpStatus} -> httpStatus) (\s@DescribeJobLogItemsResponse' {} a -> s {httpStatus = a} :: DescribeJobLogItemsResponse)++instance Prelude.NFData DescribeJobLogItemsResponse where+  rnf DescribeJobLogItemsResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/DescribeJobs.hs view
@@ -0,0 +1,232 @@+{-# 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.DrS.DescribeJobs+-- 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 a list of Jobs. Use the JobsID and fromDate and toDate filters+-- to limit which jobs are returned. The response is sorted by+-- creationDataTime - latest date first. Jobs are created by the+-- StartRecovery, TerminateRecoveryInstances and StartFailbackLaunch APIs.+-- Jobs are also created by DiagnosticLaunch and+-- TerminateDiagnosticInstances, which are APIs available only to *Support*+-- and only used in response to relevant support tickets.+--+-- This operation returns paginated results.+module Amazonka.DrS.DescribeJobs+  ( -- * Creating a Request+    DescribeJobs (..),+    newDescribeJobs,++    -- * Request Lenses+    describeJobs_filters,+    describeJobs_maxResults,+    describeJobs_nextToken,++    -- * Destructuring the Response+    DescribeJobsResponse (..),+    newDescribeJobsResponse,++    -- * Response Lenses+    describeJobsResponse_items,+    describeJobsResponse_nextToken,+    describeJobsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeJobs' smart constructor.+data DescribeJobs = DescribeJobs'+  { -- | A set of filters by which to return Jobs.+    filters :: Prelude.Maybe DescribeJobsRequestFilters,+    -- | Maximum number of Jobs to retrieve.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token of the next Job to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeJobs' 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:+--+-- 'filters', 'describeJobs_filters' - A set of filters by which to return Jobs.+--+-- 'maxResults', 'describeJobs_maxResults' - Maximum number of Jobs to retrieve.+--+-- 'nextToken', 'describeJobs_nextToken' - The token of the next Job to retrieve.+newDescribeJobs ::+  DescribeJobs+newDescribeJobs =+  DescribeJobs'+    { filters = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | A set of filters by which to return Jobs.+describeJobs_filters :: Lens.Lens' DescribeJobs (Prelude.Maybe DescribeJobsRequestFilters)+describeJobs_filters = Lens.lens (\DescribeJobs' {filters} -> filters) (\s@DescribeJobs' {} a -> s {filters = a} :: DescribeJobs)++-- | Maximum number of Jobs to retrieve.+describeJobs_maxResults :: Lens.Lens' DescribeJobs (Prelude.Maybe Prelude.Natural)+describeJobs_maxResults = Lens.lens (\DescribeJobs' {maxResults} -> maxResults) (\s@DescribeJobs' {} a -> s {maxResults = a} :: DescribeJobs)++-- | The token of the next Job to retrieve.+describeJobs_nextToken :: Lens.Lens' DescribeJobs (Prelude.Maybe Prelude.Text)+describeJobs_nextToken = Lens.lens (\DescribeJobs' {nextToken} -> nextToken) (\s@DescribeJobs' {} a -> s {nextToken = a} :: DescribeJobs)++instance Core.AWSPager DescribeJobs where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeJobsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeJobsResponse_items+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeJobs_nextToken+          Lens..~ rs+          Lens.^? describeJobsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeJobs where+  type AWSResponse DescribeJobs = DescribeJobsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeJobsResponse'+            Prelude.<$> (x Data..?> "items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeJobs where+  hashWithSalt _salt DescribeJobs' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData DescribeJobs where+  rnf DescribeJobs' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders DescribeJobs where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeJobs where+  toJSON DescribeJobs' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath DescribeJobs where+  toPath = Prelude.const "/DescribeJobs"++instance Data.ToQuery DescribeJobs where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeJobsResponse' smart constructor.+data DescribeJobsResponse = DescribeJobsResponse'+  { -- | An array of Jobs.+    items :: Prelude.Maybe [Job],+    -- | The token of the next Job to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeJobsResponse' 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:+--+-- 'items', 'describeJobsResponse_items' - An array of Jobs.+--+-- 'nextToken', 'describeJobsResponse_nextToken' - The token of the next Job to retrieve.+--+-- 'httpStatus', 'describeJobsResponse_httpStatus' - The response's http status code.+newDescribeJobsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeJobsResponse+newDescribeJobsResponse pHttpStatus_ =+  DescribeJobsResponse'+    { items = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array of Jobs.+describeJobsResponse_items :: Lens.Lens' DescribeJobsResponse (Prelude.Maybe [Job])+describeJobsResponse_items = Lens.lens (\DescribeJobsResponse' {items} -> items) (\s@DescribeJobsResponse' {} a -> s {items = a} :: DescribeJobsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token of the next Job to retrieve.+describeJobsResponse_nextToken :: Lens.Lens' DescribeJobsResponse (Prelude.Maybe Prelude.Text)+describeJobsResponse_nextToken = Lens.lens (\DescribeJobsResponse' {nextToken} -> nextToken) (\s@DescribeJobsResponse' {} a -> s {nextToken = a} :: DescribeJobsResponse)++-- | The response's http status code.+describeJobsResponse_httpStatus :: Lens.Lens' DescribeJobsResponse Prelude.Int+describeJobsResponse_httpStatus = Lens.lens (\DescribeJobsResponse' {httpStatus} -> httpStatus) (\s@DescribeJobsResponse' {} a -> s {httpStatus = a} :: DescribeJobsResponse)++instance Prelude.NFData DescribeJobsResponse where+  rnf DescribeJobsResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/DescribeRecoveryInstances.hs view
@@ -0,0 +1,233 @@+{-# 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.DrS.DescribeRecoveryInstances+-- 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 all Recovery Instances or multiple Recovery Instances by ID.+--+-- This operation returns paginated results.+module Amazonka.DrS.DescribeRecoveryInstances+  ( -- * Creating a Request+    DescribeRecoveryInstances (..),+    newDescribeRecoveryInstances,++    -- * Request Lenses+    describeRecoveryInstances_filters,+    describeRecoveryInstances_maxResults,+    describeRecoveryInstances_nextToken,++    -- * Destructuring the Response+    DescribeRecoveryInstancesResponse (..),+    newDescribeRecoveryInstancesResponse,++    -- * Response Lenses+    describeRecoveryInstancesResponse_items,+    describeRecoveryInstancesResponse_nextToken,+    describeRecoveryInstancesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeRecoveryInstances' smart constructor.+data DescribeRecoveryInstances = DescribeRecoveryInstances'+  { -- | A set of filters by which to return Recovery Instances.+    filters :: Prelude.Maybe DescribeRecoveryInstancesRequestFilters,+    -- | Maximum number of Recovery Instances to retrieve.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token of the next Recovery Instance to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRecoveryInstances' 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:+--+-- 'filters', 'describeRecoveryInstances_filters' - A set of filters by which to return Recovery Instances.+--+-- 'maxResults', 'describeRecoveryInstances_maxResults' - Maximum number of Recovery Instances to retrieve.+--+-- 'nextToken', 'describeRecoveryInstances_nextToken' - The token of the next Recovery Instance to retrieve.+newDescribeRecoveryInstances ::+  DescribeRecoveryInstances+newDescribeRecoveryInstances =+  DescribeRecoveryInstances'+    { filters =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | A set of filters by which to return Recovery Instances.+describeRecoveryInstances_filters :: Lens.Lens' DescribeRecoveryInstances (Prelude.Maybe DescribeRecoveryInstancesRequestFilters)+describeRecoveryInstances_filters = Lens.lens (\DescribeRecoveryInstances' {filters} -> filters) (\s@DescribeRecoveryInstances' {} a -> s {filters = a} :: DescribeRecoveryInstances)++-- | Maximum number of Recovery Instances to retrieve.+describeRecoveryInstances_maxResults :: Lens.Lens' DescribeRecoveryInstances (Prelude.Maybe Prelude.Natural)+describeRecoveryInstances_maxResults = Lens.lens (\DescribeRecoveryInstances' {maxResults} -> maxResults) (\s@DescribeRecoveryInstances' {} a -> s {maxResults = a} :: DescribeRecoveryInstances)++-- | The token of the next Recovery Instance to retrieve.+describeRecoveryInstances_nextToken :: Lens.Lens' DescribeRecoveryInstances (Prelude.Maybe Prelude.Text)+describeRecoveryInstances_nextToken = Lens.lens (\DescribeRecoveryInstances' {nextToken} -> nextToken) (\s@DescribeRecoveryInstances' {} a -> s {nextToken = a} :: DescribeRecoveryInstances)++instance Core.AWSPager DescribeRecoveryInstances where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeRecoveryInstancesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeRecoveryInstancesResponse_items+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeRecoveryInstances_nextToken+          Lens..~ rs+          Lens.^? describeRecoveryInstancesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeRecoveryInstances where+  type+    AWSResponse DescribeRecoveryInstances =+      DescribeRecoveryInstancesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeRecoveryInstancesResponse'+            Prelude.<$> (x Data..?> "items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeRecoveryInstances where+  hashWithSalt _salt DescribeRecoveryInstances' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData DescribeRecoveryInstances where+  rnf DescribeRecoveryInstances' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders DescribeRecoveryInstances where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeRecoveryInstances where+  toJSON DescribeRecoveryInstances' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath DescribeRecoveryInstances where+  toPath = Prelude.const "/DescribeRecoveryInstances"++instance Data.ToQuery DescribeRecoveryInstances where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeRecoveryInstancesResponse' smart constructor.+data DescribeRecoveryInstancesResponse = DescribeRecoveryInstancesResponse'+  { -- | An array of Recovery Instances.+    items :: Prelude.Maybe [RecoveryInstance],+    -- | The token of the next Recovery Instance to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRecoveryInstancesResponse' 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:+--+-- 'items', 'describeRecoveryInstancesResponse_items' - An array of Recovery Instances.+--+-- 'nextToken', 'describeRecoveryInstancesResponse_nextToken' - The token of the next Recovery Instance to retrieve.+--+-- 'httpStatus', 'describeRecoveryInstancesResponse_httpStatus' - The response's http status code.+newDescribeRecoveryInstancesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeRecoveryInstancesResponse+newDescribeRecoveryInstancesResponse pHttpStatus_ =+  DescribeRecoveryInstancesResponse'+    { items =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array of Recovery Instances.+describeRecoveryInstancesResponse_items :: Lens.Lens' DescribeRecoveryInstancesResponse (Prelude.Maybe [RecoveryInstance])+describeRecoveryInstancesResponse_items = Lens.lens (\DescribeRecoveryInstancesResponse' {items} -> items) (\s@DescribeRecoveryInstancesResponse' {} a -> s {items = a} :: DescribeRecoveryInstancesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token of the next Recovery Instance to retrieve.+describeRecoveryInstancesResponse_nextToken :: Lens.Lens' DescribeRecoveryInstancesResponse (Prelude.Maybe Prelude.Text)+describeRecoveryInstancesResponse_nextToken = Lens.lens (\DescribeRecoveryInstancesResponse' {nextToken} -> nextToken) (\s@DescribeRecoveryInstancesResponse' {} a -> s {nextToken = a} :: DescribeRecoveryInstancesResponse)++-- | The response's http status code.+describeRecoveryInstancesResponse_httpStatus :: Lens.Lens' DescribeRecoveryInstancesResponse Prelude.Int+describeRecoveryInstancesResponse_httpStatus = Lens.lens (\DescribeRecoveryInstancesResponse' {httpStatus} -> httpStatus) (\s@DescribeRecoveryInstancesResponse' {} a -> s {httpStatus = a} :: DescribeRecoveryInstancesResponse)++instance+  Prelude.NFData+    DescribeRecoveryInstancesResponse+  where+  rnf DescribeRecoveryInstancesResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/DescribeRecoverySnapshots.hs view
@@ -0,0 +1,262 @@+{-# 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.DrS.DescribeRecoverySnapshots+-- 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 all Recovery Snapshots for a single Source Server.+--+-- This operation returns paginated results.+module Amazonka.DrS.DescribeRecoverySnapshots+  ( -- * Creating a Request+    DescribeRecoverySnapshots (..),+    newDescribeRecoverySnapshots,++    -- * Request Lenses+    describeRecoverySnapshots_filters,+    describeRecoverySnapshots_maxResults,+    describeRecoverySnapshots_nextToken,+    describeRecoverySnapshots_order,+    describeRecoverySnapshots_sourceServerID,++    -- * Destructuring the Response+    DescribeRecoverySnapshotsResponse (..),+    newDescribeRecoverySnapshotsResponse,++    -- * Response Lenses+    describeRecoverySnapshotsResponse_items,+    describeRecoverySnapshotsResponse_nextToken,+    describeRecoverySnapshotsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeRecoverySnapshots' smart constructor.+data DescribeRecoverySnapshots = DescribeRecoverySnapshots'+  { -- | A set of filters by which to return Recovery Snapshots.+    filters :: Prelude.Maybe DescribeRecoverySnapshotsRequestFilters,+    -- | Maximum number of Recovery Snapshots to retrieve.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token of the next Recovery Snapshot to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The sorted ordering by which to return Recovery Snapshots.+    order :: Prelude.Maybe RecoverySnapshotsOrder,+    -- | Filter Recovery Snapshots by Source Server ID.+    sourceServerID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRecoverySnapshots' 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:+--+-- 'filters', 'describeRecoverySnapshots_filters' - A set of filters by which to return Recovery Snapshots.+--+-- 'maxResults', 'describeRecoverySnapshots_maxResults' - Maximum number of Recovery Snapshots to retrieve.+--+-- 'nextToken', 'describeRecoverySnapshots_nextToken' - The token of the next Recovery Snapshot to retrieve.+--+-- 'order', 'describeRecoverySnapshots_order' - The sorted ordering by which to return Recovery Snapshots.+--+-- 'sourceServerID', 'describeRecoverySnapshots_sourceServerID' - Filter Recovery Snapshots by Source Server ID.+newDescribeRecoverySnapshots ::+  -- | 'sourceServerID'+  Prelude.Text ->+  DescribeRecoverySnapshots+newDescribeRecoverySnapshots pSourceServerID_ =+  DescribeRecoverySnapshots'+    { filters =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      order = Prelude.Nothing,+      sourceServerID = pSourceServerID_+    }++-- | A set of filters by which to return Recovery Snapshots.+describeRecoverySnapshots_filters :: Lens.Lens' DescribeRecoverySnapshots (Prelude.Maybe DescribeRecoverySnapshotsRequestFilters)+describeRecoverySnapshots_filters = Lens.lens (\DescribeRecoverySnapshots' {filters} -> filters) (\s@DescribeRecoverySnapshots' {} a -> s {filters = a} :: DescribeRecoverySnapshots)++-- | Maximum number of Recovery Snapshots to retrieve.+describeRecoverySnapshots_maxResults :: Lens.Lens' DescribeRecoverySnapshots (Prelude.Maybe Prelude.Natural)+describeRecoverySnapshots_maxResults = Lens.lens (\DescribeRecoverySnapshots' {maxResults} -> maxResults) (\s@DescribeRecoverySnapshots' {} a -> s {maxResults = a} :: DescribeRecoverySnapshots)++-- | The token of the next Recovery Snapshot to retrieve.+describeRecoverySnapshots_nextToken :: Lens.Lens' DescribeRecoverySnapshots (Prelude.Maybe Prelude.Text)+describeRecoverySnapshots_nextToken = Lens.lens (\DescribeRecoverySnapshots' {nextToken} -> nextToken) (\s@DescribeRecoverySnapshots' {} a -> s {nextToken = a} :: DescribeRecoverySnapshots)++-- | The sorted ordering by which to return Recovery Snapshots.+describeRecoverySnapshots_order :: Lens.Lens' DescribeRecoverySnapshots (Prelude.Maybe RecoverySnapshotsOrder)+describeRecoverySnapshots_order = Lens.lens (\DescribeRecoverySnapshots' {order} -> order) (\s@DescribeRecoverySnapshots' {} a -> s {order = a} :: DescribeRecoverySnapshots)++-- | Filter Recovery Snapshots by Source Server ID.+describeRecoverySnapshots_sourceServerID :: Lens.Lens' DescribeRecoverySnapshots Prelude.Text+describeRecoverySnapshots_sourceServerID = Lens.lens (\DescribeRecoverySnapshots' {sourceServerID} -> sourceServerID) (\s@DescribeRecoverySnapshots' {} a -> s {sourceServerID = a} :: DescribeRecoverySnapshots)++instance Core.AWSPager DescribeRecoverySnapshots where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeRecoverySnapshotsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeRecoverySnapshotsResponse_items+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeRecoverySnapshots_nextToken+          Lens..~ rs+          Lens.^? describeRecoverySnapshotsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeRecoverySnapshots where+  type+    AWSResponse DescribeRecoverySnapshots =+      DescribeRecoverySnapshotsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeRecoverySnapshotsResponse'+            Prelude.<$> (x Data..?> "items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeRecoverySnapshots where+  hashWithSalt _salt DescribeRecoverySnapshots' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` order+      `Prelude.hashWithSalt` sourceServerID++instance Prelude.NFData DescribeRecoverySnapshots where+  rnf DescribeRecoverySnapshots' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf order+      `Prelude.seq` Prelude.rnf sourceServerID++instance Data.ToHeaders DescribeRecoverySnapshots where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeRecoverySnapshots where+  toJSON DescribeRecoverySnapshots' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            ("order" Data..=) Prelude.<$> order,+            Prelude.Just+              ("sourceServerID" Data..= sourceServerID)+          ]+      )++instance Data.ToPath DescribeRecoverySnapshots where+  toPath = Prelude.const "/DescribeRecoverySnapshots"++instance Data.ToQuery DescribeRecoverySnapshots where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeRecoverySnapshotsResponse' smart constructor.+data DescribeRecoverySnapshotsResponse = DescribeRecoverySnapshotsResponse'+  { -- | An array of Recovery Snapshots.+    items :: Prelude.Maybe [RecoverySnapshot],+    -- | The token of the next Recovery Snapshot to retrieve.+    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 'DescribeRecoverySnapshotsResponse' 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:+--+-- 'items', 'describeRecoverySnapshotsResponse_items' - An array of Recovery Snapshots.+--+-- 'nextToken', 'describeRecoverySnapshotsResponse_nextToken' - The token of the next Recovery Snapshot to retrieve.+--+-- 'httpStatus', 'describeRecoverySnapshotsResponse_httpStatus' - The response's http status code.+newDescribeRecoverySnapshotsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeRecoverySnapshotsResponse+newDescribeRecoverySnapshotsResponse pHttpStatus_ =+  DescribeRecoverySnapshotsResponse'+    { items =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array of Recovery Snapshots.+describeRecoverySnapshotsResponse_items :: Lens.Lens' DescribeRecoverySnapshotsResponse (Prelude.Maybe [RecoverySnapshot])+describeRecoverySnapshotsResponse_items = Lens.lens (\DescribeRecoverySnapshotsResponse' {items} -> items) (\s@DescribeRecoverySnapshotsResponse' {} a -> s {items = a} :: DescribeRecoverySnapshotsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token of the next Recovery Snapshot to retrieve.+describeRecoverySnapshotsResponse_nextToken :: Lens.Lens' DescribeRecoverySnapshotsResponse (Prelude.Maybe Prelude.Text)+describeRecoverySnapshotsResponse_nextToken = Lens.lens (\DescribeRecoverySnapshotsResponse' {nextToken} -> nextToken) (\s@DescribeRecoverySnapshotsResponse' {} a -> s {nextToken = a} :: DescribeRecoverySnapshotsResponse)++-- | The response's http status code.+describeRecoverySnapshotsResponse_httpStatus :: Lens.Lens' DescribeRecoverySnapshotsResponse Prelude.Int+describeRecoverySnapshotsResponse_httpStatus = Lens.lens (\DescribeRecoverySnapshotsResponse' {httpStatus} -> httpStatus) (\s@DescribeRecoverySnapshotsResponse' {} a -> s {httpStatus = a} :: DescribeRecoverySnapshotsResponse)++instance+  Prelude.NFData+    DescribeRecoverySnapshotsResponse+  where+  rnf DescribeRecoverySnapshotsResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/DescribeReplicationConfigurationTemplates.hs view
@@ -0,0 +1,272 @@+{-# 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.DrS.DescribeReplicationConfigurationTemplates+-- 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 all ReplicationConfigurationTemplates, filtered by Source Server+-- IDs.+--+-- This operation returns paginated results.+module Amazonka.DrS.DescribeReplicationConfigurationTemplates+  ( -- * Creating a Request+    DescribeReplicationConfigurationTemplates (..),+    newDescribeReplicationConfigurationTemplates,++    -- * Request Lenses+    describeReplicationConfigurationTemplates_maxResults,+    describeReplicationConfigurationTemplates_nextToken,+    describeReplicationConfigurationTemplates_replicationConfigurationTemplateIDs,++    -- * Destructuring the Response+    DescribeReplicationConfigurationTemplatesResponse (..),+    newDescribeReplicationConfigurationTemplatesResponse,++    -- * Response Lenses+    describeReplicationConfigurationTemplatesResponse_items,+    describeReplicationConfigurationTemplatesResponse_nextToken,+    describeReplicationConfigurationTemplatesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeReplicationConfigurationTemplates' smart constructor.+data DescribeReplicationConfigurationTemplates = DescribeReplicationConfigurationTemplates'+  { -- | Maximum number of Replication Configuration Templates to retrieve.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token of the next Replication Configuration Template to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The IDs of the Replication Configuration Templates to retrieve. An empty+    -- list means all Replication Configuration Templates.+    replicationConfigurationTemplateIDs :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeReplicationConfigurationTemplates' 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', 'describeReplicationConfigurationTemplates_maxResults' - Maximum number of Replication Configuration Templates to retrieve.+--+-- 'nextToken', 'describeReplicationConfigurationTemplates_nextToken' - The token of the next Replication Configuration Template to retrieve.+--+-- 'replicationConfigurationTemplateIDs', 'describeReplicationConfigurationTemplates_replicationConfigurationTemplateIDs' - The IDs of the Replication Configuration Templates to retrieve. An empty+-- list means all Replication Configuration Templates.+newDescribeReplicationConfigurationTemplates ::+  DescribeReplicationConfigurationTemplates+newDescribeReplicationConfigurationTemplates =+  DescribeReplicationConfigurationTemplates'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      replicationConfigurationTemplateIDs =+        Prelude.Nothing+    }++-- | Maximum number of Replication Configuration Templates to retrieve.+describeReplicationConfigurationTemplates_maxResults :: Lens.Lens' DescribeReplicationConfigurationTemplates (Prelude.Maybe Prelude.Natural)+describeReplicationConfigurationTemplates_maxResults = Lens.lens (\DescribeReplicationConfigurationTemplates' {maxResults} -> maxResults) (\s@DescribeReplicationConfigurationTemplates' {} a -> s {maxResults = a} :: DescribeReplicationConfigurationTemplates)++-- | The token of the next Replication Configuration Template to retrieve.+describeReplicationConfigurationTemplates_nextToken :: Lens.Lens' DescribeReplicationConfigurationTemplates (Prelude.Maybe Prelude.Text)+describeReplicationConfigurationTemplates_nextToken = Lens.lens (\DescribeReplicationConfigurationTemplates' {nextToken} -> nextToken) (\s@DescribeReplicationConfigurationTemplates' {} a -> s {nextToken = a} :: DescribeReplicationConfigurationTemplates)++-- | The IDs of the Replication Configuration Templates to retrieve. An empty+-- list means all Replication Configuration Templates.+describeReplicationConfigurationTemplates_replicationConfigurationTemplateIDs :: Lens.Lens' DescribeReplicationConfigurationTemplates (Prelude.Maybe [Prelude.Text])+describeReplicationConfigurationTemplates_replicationConfigurationTemplateIDs = Lens.lens (\DescribeReplicationConfigurationTemplates' {replicationConfigurationTemplateIDs} -> replicationConfigurationTemplateIDs) (\s@DescribeReplicationConfigurationTemplates' {} a -> s {replicationConfigurationTemplateIDs = a} :: DescribeReplicationConfigurationTemplates) Prelude.. Lens.mapping Lens.coerced++instance+  Core.AWSPager+    DescribeReplicationConfigurationTemplates+  where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeReplicationConfigurationTemplatesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeReplicationConfigurationTemplatesResponse_items+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeReplicationConfigurationTemplates_nextToken+          Lens..~ rs+          Lens.^? describeReplicationConfigurationTemplatesResponse_nextToken+          Prelude.. Lens._Just++instance+  Core.AWSRequest+    DescribeReplicationConfigurationTemplates+  where+  type+    AWSResponse+      DescribeReplicationConfigurationTemplates =+      DescribeReplicationConfigurationTemplatesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeReplicationConfigurationTemplatesResponse'+            Prelude.<$> (x Data..?> "items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DescribeReplicationConfigurationTemplates+  where+  hashWithSalt+    _salt+    DescribeReplicationConfigurationTemplates' {..} =+      _salt+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` replicationConfigurationTemplateIDs++instance+  Prelude.NFData+    DescribeReplicationConfigurationTemplates+  where+  rnf DescribeReplicationConfigurationTemplates' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf replicationConfigurationTemplateIDs++instance+  Data.ToHeaders+    DescribeReplicationConfigurationTemplates+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    DescribeReplicationConfigurationTemplates+  where+  toJSON DescribeReplicationConfigurationTemplates' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            ("replicationConfigurationTemplateIDs" Data..=)+              Prelude.<$> replicationConfigurationTemplateIDs+          ]+      )++instance+  Data.ToPath+    DescribeReplicationConfigurationTemplates+  where+  toPath =+    Prelude.const+      "/DescribeReplicationConfigurationTemplates"++instance+  Data.ToQuery+    DescribeReplicationConfigurationTemplates+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeReplicationConfigurationTemplatesResponse' smart constructor.+data DescribeReplicationConfigurationTemplatesResponse = DescribeReplicationConfigurationTemplatesResponse'+  { -- | An array of Replication Configuration Templates.+    items :: Prelude.Maybe [ReplicationConfigurationTemplate],+    -- | The token of the next Replication Configuration Template to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeReplicationConfigurationTemplatesResponse' 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:+--+-- 'items', 'describeReplicationConfigurationTemplatesResponse_items' - An array of Replication Configuration Templates.+--+-- 'nextToken', 'describeReplicationConfigurationTemplatesResponse_nextToken' - The token of the next Replication Configuration Template to retrieve.+--+-- 'httpStatus', 'describeReplicationConfigurationTemplatesResponse_httpStatus' - The response's http status code.+newDescribeReplicationConfigurationTemplatesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeReplicationConfigurationTemplatesResponse+newDescribeReplicationConfigurationTemplatesResponse+  pHttpStatus_ =+    DescribeReplicationConfigurationTemplatesResponse'+      { items =+          Prelude.Nothing,+        nextToken =+          Prelude.Nothing,+        httpStatus =+          pHttpStatus_+      }++-- | An array of Replication Configuration Templates.+describeReplicationConfigurationTemplatesResponse_items :: Lens.Lens' DescribeReplicationConfigurationTemplatesResponse (Prelude.Maybe [ReplicationConfigurationTemplate])+describeReplicationConfigurationTemplatesResponse_items = Lens.lens (\DescribeReplicationConfigurationTemplatesResponse' {items} -> items) (\s@DescribeReplicationConfigurationTemplatesResponse' {} a -> s {items = a} :: DescribeReplicationConfigurationTemplatesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token of the next Replication Configuration Template to retrieve.+describeReplicationConfigurationTemplatesResponse_nextToken :: Lens.Lens' DescribeReplicationConfigurationTemplatesResponse (Prelude.Maybe Prelude.Text)+describeReplicationConfigurationTemplatesResponse_nextToken = Lens.lens (\DescribeReplicationConfigurationTemplatesResponse' {nextToken} -> nextToken) (\s@DescribeReplicationConfigurationTemplatesResponse' {} a -> s {nextToken = a} :: DescribeReplicationConfigurationTemplatesResponse)++-- | The response's http status code.+describeReplicationConfigurationTemplatesResponse_httpStatus :: Lens.Lens' DescribeReplicationConfigurationTemplatesResponse Prelude.Int+describeReplicationConfigurationTemplatesResponse_httpStatus = Lens.lens (\DescribeReplicationConfigurationTemplatesResponse' {httpStatus} -> httpStatus) (\s@DescribeReplicationConfigurationTemplatesResponse' {} a -> s {httpStatus = a} :: DescribeReplicationConfigurationTemplatesResponse)++instance+  Prelude.NFData+    DescribeReplicationConfigurationTemplatesResponse+  where+  rnf+    DescribeReplicationConfigurationTemplatesResponse' {..} =+      Prelude.rnf items+        `Prelude.seq` Prelude.rnf nextToken+        `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/DescribeSourceServers.hs view
@@ -0,0 +1,229 @@+{-# 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.DrS.DescribeSourceServers+-- 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 all Source Servers or multiple Source Servers filtered by ID.+--+-- This operation returns paginated results.+module Amazonka.DrS.DescribeSourceServers+  ( -- * Creating a Request+    DescribeSourceServers (..),+    newDescribeSourceServers,++    -- * Request Lenses+    describeSourceServers_filters,+    describeSourceServers_maxResults,+    describeSourceServers_nextToken,++    -- * Destructuring the Response+    DescribeSourceServersResponse (..),+    newDescribeSourceServersResponse,++    -- * Response Lenses+    describeSourceServersResponse_items,+    describeSourceServersResponse_nextToken,+    describeSourceServersResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeSourceServers' smart constructor.+data DescribeSourceServers = DescribeSourceServers'+  { -- | A set of filters by which to return Source Servers.+    filters :: Prelude.Maybe DescribeSourceServersRequestFilters,+    -- | Maximum number of Source Servers to retrieve.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token of the next Source Server to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeSourceServers' 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:+--+-- 'filters', 'describeSourceServers_filters' - A set of filters by which to return Source Servers.+--+-- 'maxResults', 'describeSourceServers_maxResults' - Maximum number of Source Servers to retrieve.+--+-- 'nextToken', 'describeSourceServers_nextToken' - The token of the next Source Server to retrieve.+newDescribeSourceServers ::+  DescribeSourceServers+newDescribeSourceServers =+  DescribeSourceServers'+    { filters = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | A set of filters by which to return Source Servers.+describeSourceServers_filters :: Lens.Lens' DescribeSourceServers (Prelude.Maybe DescribeSourceServersRequestFilters)+describeSourceServers_filters = Lens.lens (\DescribeSourceServers' {filters} -> filters) (\s@DescribeSourceServers' {} a -> s {filters = a} :: DescribeSourceServers)++-- | Maximum number of Source Servers to retrieve.+describeSourceServers_maxResults :: Lens.Lens' DescribeSourceServers (Prelude.Maybe Prelude.Natural)+describeSourceServers_maxResults = Lens.lens (\DescribeSourceServers' {maxResults} -> maxResults) (\s@DescribeSourceServers' {} a -> s {maxResults = a} :: DescribeSourceServers)++-- | The token of the next Source Server to retrieve.+describeSourceServers_nextToken :: Lens.Lens' DescribeSourceServers (Prelude.Maybe Prelude.Text)+describeSourceServers_nextToken = Lens.lens (\DescribeSourceServers' {nextToken} -> nextToken) (\s@DescribeSourceServers' {} a -> s {nextToken = a} :: DescribeSourceServers)++instance Core.AWSPager DescribeSourceServers where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeSourceServersResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeSourceServersResponse_items+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeSourceServers_nextToken+          Lens..~ rs+          Lens.^? describeSourceServersResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeSourceServers where+  type+    AWSResponse DescribeSourceServers =+      DescribeSourceServersResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeSourceServersResponse'+            Prelude.<$> (x Data..?> "items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeSourceServers where+  hashWithSalt _salt DescribeSourceServers' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData DescribeSourceServers where+  rnf DescribeSourceServers' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders DescribeSourceServers where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeSourceServers where+  toJSON DescribeSourceServers' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath DescribeSourceServers where+  toPath = Prelude.const "/DescribeSourceServers"++instance Data.ToQuery DescribeSourceServers where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeSourceServersResponse' smart constructor.+data DescribeSourceServersResponse = DescribeSourceServersResponse'+  { -- | An array of Source Servers.+    items :: Prelude.Maybe [SourceServer],+    -- | The token of the next Source Server to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeSourceServersResponse' 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:+--+-- 'items', 'describeSourceServersResponse_items' - An array of Source Servers.+--+-- 'nextToken', 'describeSourceServersResponse_nextToken' - The token of the next Source Server to retrieve.+--+-- 'httpStatus', 'describeSourceServersResponse_httpStatus' - The response's http status code.+newDescribeSourceServersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeSourceServersResponse+newDescribeSourceServersResponse pHttpStatus_ =+  DescribeSourceServersResponse'+    { items =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array of Source Servers.+describeSourceServersResponse_items :: Lens.Lens' DescribeSourceServersResponse (Prelude.Maybe [SourceServer])+describeSourceServersResponse_items = Lens.lens (\DescribeSourceServersResponse' {items} -> items) (\s@DescribeSourceServersResponse' {} a -> s {items = a} :: DescribeSourceServersResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token of the next Source Server to retrieve.+describeSourceServersResponse_nextToken :: Lens.Lens' DescribeSourceServersResponse (Prelude.Maybe Prelude.Text)+describeSourceServersResponse_nextToken = Lens.lens (\DescribeSourceServersResponse' {nextToken} -> nextToken) (\s@DescribeSourceServersResponse' {} a -> s {nextToken = a} :: DescribeSourceServersResponse)++-- | The response's http status code.+describeSourceServersResponse_httpStatus :: Lens.Lens' DescribeSourceServersResponse Prelude.Int+describeSourceServersResponse_httpStatus = Lens.lens (\DescribeSourceServersResponse' {httpStatus} -> httpStatus) (\s@DescribeSourceServersResponse' {} a -> s {httpStatus = a} :: DescribeSourceServersResponse)++instance Prelude.NFData DescribeSourceServersResponse where+  rnf DescribeSourceServersResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/DisconnectRecoveryInstance.hs view
@@ -0,0 +1,151 @@+{-# 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.DrS.DisconnectRecoveryInstance+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Disconnect a Recovery Instance from Elastic Disaster Recovery. Data+-- replication is stopped immediately. All AWS resources created by Elastic+-- Disaster Recovery for enabling the replication of the Recovery Instance+-- will be terminated \/ deleted within 90 minutes. If the agent on the+-- Recovery Instance has not been prevented from communicating with the+-- Elastic Disaster Recovery service, then it will receive a command to+-- uninstall itself (within approximately 10 minutes). The following+-- properties of the Recovery Instance will be changed immediately:+-- dataReplicationInfo.dataReplicationState will be set to DISCONNECTED;+-- The totalStorageBytes property for each of+-- dataReplicationInfo.replicatedDisks will be set to zero;+-- dataReplicationInfo.lagDuration and dataReplicationInfo.lagDuration will+-- be nullified.+module Amazonka.DrS.DisconnectRecoveryInstance+  ( -- * Creating a Request+    DisconnectRecoveryInstance (..),+    newDisconnectRecoveryInstance,++    -- * Request Lenses+    disconnectRecoveryInstance_recoveryInstanceID,++    -- * Destructuring the Response+    DisconnectRecoveryInstanceResponse (..),+    newDisconnectRecoveryInstanceResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDisconnectRecoveryInstance' smart constructor.+data DisconnectRecoveryInstance = DisconnectRecoveryInstance'+  { -- | The ID of the Recovery Instance to disconnect.+    recoveryInstanceID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisconnectRecoveryInstance' 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:+--+-- 'recoveryInstanceID', 'disconnectRecoveryInstance_recoveryInstanceID' - The ID of the Recovery Instance to disconnect.+newDisconnectRecoveryInstance ::+  -- | 'recoveryInstanceID'+  Prelude.Text ->+  DisconnectRecoveryInstance+newDisconnectRecoveryInstance pRecoveryInstanceID_ =+  DisconnectRecoveryInstance'+    { recoveryInstanceID =+        pRecoveryInstanceID_+    }++-- | The ID of the Recovery Instance to disconnect.+disconnectRecoveryInstance_recoveryInstanceID :: Lens.Lens' DisconnectRecoveryInstance Prelude.Text+disconnectRecoveryInstance_recoveryInstanceID = Lens.lens (\DisconnectRecoveryInstance' {recoveryInstanceID} -> recoveryInstanceID) (\s@DisconnectRecoveryInstance' {} a -> s {recoveryInstanceID = a} :: DisconnectRecoveryInstance)++instance Core.AWSRequest DisconnectRecoveryInstance where+  type+    AWSResponse DisconnectRecoveryInstance =+      DisconnectRecoveryInstanceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull+      DisconnectRecoveryInstanceResponse'++instance Prelude.Hashable DisconnectRecoveryInstance where+  hashWithSalt _salt DisconnectRecoveryInstance' {..} =+    _salt `Prelude.hashWithSalt` recoveryInstanceID++instance Prelude.NFData DisconnectRecoveryInstance where+  rnf DisconnectRecoveryInstance' {..} =+    Prelude.rnf recoveryInstanceID++instance Data.ToHeaders DisconnectRecoveryInstance where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DisconnectRecoveryInstance where+  toJSON DisconnectRecoveryInstance' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("recoveryInstanceID" Data..= recoveryInstanceID)+          ]+      )++instance Data.ToPath DisconnectRecoveryInstance where+  toPath = Prelude.const "/DisconnectRecoveryInstance"++instance Data.ToQuery DisconnectRecoveryInstance where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDisconnectRecoveryInstanceResponse' smart constructor.+data DisconnectRecoveryInstanceResponse = DisconnectRecoveryInstanceResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisconnectRecoveryInstanceResponse' 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.+newDisconnectRecoveryInstanceResponse ::+  DisconnectRecoveryInstanceResponse+newDisconnectRecoveryInstanceResponse =+  DisconnectRecoveryInstanceResponse'++instance+  Prelude.NFData+    DisconnectRecoveryInstanceResponse+  where+  rnf _ = ()
+ gen/Amazonka/DrS/DisconnectSourceServer.hs view
@@ -0,0 +1,145 @@+{-# 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.DrS.DisconnectSourceServer+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Disconnects a specific Source Server from Elastic Disaster Recovery.+-- Data replication is stopped immediately. All AWS resources created by+-- Elastic Disaster Recovery for enabling the replication of the Source+-- Server will be terminated \/ deleted within 90 minutes. You cannot+-- disconnect a Source Server if it has a Recovery Instance. If the agent+-- on the Source Server has not been prevented from communicating with the+-- Elastic Disaster Recovery service, then it will receive a command to+-- uninstall itself (within approximately 10 minutes). The following+-- properties of the SourceServer will be changed immediately:+-- dataReplicationInfo.dataReplicationState will be set to DISCONNECTED;+-- The totalStorageBytes property for each of+-- dataReplicationInfo.replicatedDisks will be set to zero;+-- dataReplicationInfo.lagDuration and dataReplicationInfo.lagDuration will+-- be nullified.+module Amazonka.DrS.DisconnectSourceServer+  ( -- * Creating a Request+    DisconnectSourceServer (..),+    newDisconnectSourceServer,++    -- * Request Lenses+    disconnectSourceServer_sourceServerID,++    -- * Destructuring the Response+    SourceServer (..),+    newSourceServer,++    -- * Response Lenses+    sourceServer_arn,+    sourceServer_dataReplicationInfo,+    sourceServer_lastLaunchResult,+    sourceServer_lifeCycle,+    sourceServer_recoveryInstanceId,+    sourceServer_replicationDirection,+    sourceServer_reversedDirectionSourceServerArn,+    sourceServer_sourceCloudProperties,+    sourceServer_sourceProperties,+    sourceServer_sourceServerID,+    sourceServer_stagingArea,+    sourceServer_tags,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDisconnectSourceServer' smart constructor.+data DisconnectSourceServer = DisconnectSourceServer'+  { -- | The ID of the Source Server to disconnect.+    sourceServerID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisconnectSourceServer' 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:+--+-- 'sourceServerID', 'disconnectSourceServer_sourceServerID' - The ID of the Source Server to disconnect.+newDisconnectSourceServer ::+  -- | 'sourceServerID'+  Prelude.Text ->+  DisconnectSourceServer+newDisconnectSourceServer pSourceServerID_ =+  DisconnectSourceServer'+    { sourceServerID =+        pSourceServerID_+    }++-- | The ID of the Source Server to disconnect.+disconnectSourceServer_sourceServerID :: Lens.Lens' DisconnectSourceServer Prelude.Text+disconnectSourceServer_sourceServerID = Lens.lens (\DisconnectSourceServer' {sourceServerID} -> sourceServerID) (\s@DisconnectSourceServer' {} a -> s {sourceServerID = a} :: DisconnectSourceServer)++instance Core.AWSRequest DisconnectSourceServer where+  type+    AWSResponse DisconnectSourceServer =+      SourceServer+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      (\s h x -> Data.eitherParseJSON x)++instance Prelude.Hashable DisconnectSourceServer where+  hashWithSalt _salt DisconnectSourceServer' {..} =+    _salt `Prelude.hashWithSalt` sourceServerID++instance Prelude.NFData DisconnectSourceServer where+  rnf DisconnectSourceServer' {..} =+    Prelude.rnf sourceServerID++instance Data.ToHeaders DisconnectSourceServer where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DisconnectSourceServer where+  toJSON DisconnectSourceServer' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("sourceServerID" Data..= sourceServerID)+          ]+      )++instance Data.ToPath DisconnectSourceServer where+  toPath = Prelude.const "/DisconnectSourceServer"++instance Data.ToQuery DisconnectSourceServer where+  toQuery = Prelude.const Prelude.mempty
+ gen/Amazonka/DrS/GetFailbackReplicationConfiguration.hs view
@@ -0,0 +1,250 @@+{-# 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.DrS.GetFailbackReplicationConfiguration+-- 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 all Failback ReplicationConfigurations, filtered by Recovery+-- Instance ID.+module Amazonka.DrS.GetFailbackReplicationConfiguration+  ( -- * Creating a Request+    GetFailbackReplicationConfiguration (..),+    newGetFailbackReplicationConfiguration,++    -- * Request Lenses+    getFailbackReplicationConfiguration_recoveryInstanceID,++    -- * Destructuring the Response+    GetFailbackReplicationConfigurationResponse (..),+    newGetFailbackReplicationConfigurationResponse,++    -- * Response Lenses+    getFailbackReplicationConfigurationResponse_bandwidthThrottling,+    getFailbackReplicationConfigurationResponse_name,+    getFailbackReplicationConfigurationResponse_usePrivateIP,+    getFailbackReplicationConfigurationResponse_httpStatus,+    getFailbackReplicationConfigurationResponse_recoveryInstanceID,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetFailbackReplicationConfiguration' smart constructor.+data GetFailbackReplicationConfiguration = GetFailbackReplicationConfiguration'+  { -- | The ID of the Recovery Instance whose failback replication configuration+    -- should be returned.+    recoveryInstanceID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetFailbackReplicationConfiguration' 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:+--+-- 'recoveryInstanceID', 'getFailbackReplicationConfiguration_recoveryInstanceID' - The ID of the Recovery Instance whose failback replication configuration+-- should be returned.+newGetFailbackReplicationConfiguration ::+  -- | 'recoveryInstanceID'+  Prelude.Text ->+  GetFailbackReplicationConfiguration+newGetFailbackReplicationConfiguration+  pRecoveryInstanceID_ =+    GetFailbackReplicationConfiguration'+      { recoveryInstanceID =+          pRecoveryInstanceID_+      }++-- | The ID of the Recovery Instance whose failback replication configuration+-- should be returned.+getFailbackReplicationConfiguration_recoveryInstanceID :: Lens.Lens' GetFailbackReplicationConfiguration Prelude.Text+getFailbackReplicationConfiguration_recoveryInstanceID = Lens.lens (\GetFailbackReplicationConfiguration' {recoveryInstanceID} -> recoveryInstanceID) (\s@GetFailbackReplicationConfiguration' {} a -> s {recoveryInstanceID = a} :: GetFailbackReplicationConfiguration)++instance+  Core.AWSRequest+    GetFailbackReplicationConfiguration+  where+  type+    AWSResponse GetFailbackReplicationConfiguration =+      GetFailbackReplicationConfigurationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetFailbackReplicationConfigurationResponse'+            Prelude.<$> (x Data..?> "bandwidthThrottling")+            Prelude.<*> (x Data..?> "name")+            Prelude.<*> (x Data..?> "usePrivateIP")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "recoveryInstanceID")+      )++instance+  Prelude.Hashable+    GetFailbackReplicationConfiguration+  where+  hashWithSalt+    _salt+    GetFailbackReplicationConfiguration' {..} =+      _salt `Prelude.hashWithSalt` recoveryInstanceID++instance+  Prelude.NFData+    GetFailbackReplicationConfiguration+  where+  rnf GetFailbackReplicationConfiguration' {..} =+    Prelude.rnf recoveryInstanceID++instance+  Data.ToHeaders+    GetFailbackReplicationConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    GetFailbackReplicationConfiguration+  where+  toJSON GetFailbackReplicationConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("recoveryInstanceID" Data..= recoveryInstanceID)+          ]+      )++instance+  Data.ToPath+    GetFailbackReplicationConfiguration+  where+  toPath =+    Prelude.const+      "/GetFailbackReplicationConfiguration"++instance+  Data.ToQuery+    GetFailbackReplicationConfiguration+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetFailbackReplicationConfigurationResponse' smart constructor.+data GetFailbackReplicationConfigurationResponse = GetFailbackReplicationConfigurationResponse'+  { -- | Configure bandwidth throttling for the outbound data transfer rate of+    -- the Recovery Instance in Mbps.+    bandwidthThrottling :: Prelude.Maybe Prelude.Natural,+    -- | The name of the Failback Replication Configuration.+    name :: Prelude.Maybe Prelude.Text,+    -- | Whether to use Private IP for the failback replication of the Recovery+    -- Instance.+    usePrivateIP :: Prelude.Maybe Prelude.Bool,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the Recovery Instance.+    recoveryInstanceID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetFailbackReplicationConfigurationResponse' 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:+--+-- 'bandwidthThrottling', 'getFailbackReplicationConfigurationResponse_bandwidthThrottling' - Configure bandwidth throttling for the outbound data transfer rate of+-- the Recovery Instance in Mbps.+--+-- 'name', 'getFailbackReplicationConfigurationResponse_name' - The name of the Failback Replication Configuration.+--+-- 'usePrivateIP', 'getFailbackReplicationConfigurationResponse_usePrivateIP' - Whether to use Private IP for the failback replication of the Recovery+-- Instance.+--+-- 'httpStatus', 'getFailbackReplicationConfigurationResponse_httpStatus' - The response's http status code.+--+-- 'recoveryInstanceID', 'getFailbackReplicationConfigurationResponse_recoveryInstanceID' - The ID of the Recovery Instance.+newGetFailbackReplicationConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'recoveryInstanceID'+  Prelude.Text ->+  GetFailbackReplicationConfigurationResponse+newGetFailbackReplicationConfigurationResponse+  pHttpStatus_+  pRecoveryInstanceID_ =+    GetFailbackReplicationConfigurationResponse'+      { bandwidthThrottling =+          Prelude.Nothing,+        name = Prelude.Nothing,+        usePrivateIP = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        recoveryInstanceID =+          pRecoveryInstanceID_+      }++-- | Configure bandwidth throttling for the outbound data transfer rate of+-- the Recovery Instance in Mbps.+getFailbackReplicationConfigurationResponse_bandwidthThrottling :: Lens.Lens' GetFailbackReplicationConfigurationResponse (Prelude.Maybe Prelude.Natural)+getFailbackReplicationConfigurationResponse_bandwidthThrottling = Lens.lens (\GetFailbackReplicationConfigurationResponse' {bandwidthThrottling} -> bandwidthThrottling) (\s@GetFailbackReplicationConfigurationResponse' {} a -> s {bandwidthThrottling = a} :: GetFailbackReplicationConfigurationResponse)++-- | The name of the Failback Replication Configuration.+getFailbackReplicationConfigurationResponse_name :: Lens.Lens' GetFailbackReplicationConfigurationResponse (Prelude.Maybe Prelude.Text)+getFailbackReplicationConfigurationResponse_name = Lens.lens (\GetFailbackReplicationConfigurationResponse' {name} -> name) (\s@GetFailbackReplicationConfigurationResponse' {} a -> s {name = a} :: GetFailbackReplicationConfigurationResponse)++-- | Whether to use Private IP for the failback replication of the Recovery+-- Instance.+getFailbackReplicationConfigurationResponse_usePrivateIP :: Lens.Lens' GetFailbackReplicationConfigurationResponse (Prelude.Maybe Prelude.Bool)+getFailbackReplicationConfigurationResponse_usePrivateIP = Lens.lens (\GetFailbackReplicationConfigurationResponse' {usePrivateIP} -> usePrivateIP) (\s@GetFailbackReplicationConfigurationResponse' {} a -> s {usePrivateIP = a} :: GetFailbackReplicationConfigurationResponse)++-- | The response's http status code.+getFailbackReplicationConfigurationResponse_httpStatus :: Lens.Lens' GetFailbackReplicationConfigurationResponse Prelude.Int+getFailbackReplicationConfigurationResponse_httpStatus = Lens.lens (\GetFailbackReplicationConfigurationResponse' {httpStatus} -> httpStatus) (\s@GetFailbackReplicationConfigurationResponse' {} a -> s {httpStatus = a} :: GetFailbackReplicationConfigurationResponse)++-- | The ID of the Recovery Instance.+getFailbackReplicationConfigurationResponse_recoveryInstanceID :: Lens.Lens' GetFailbackReplicationConfigurationResponse Prelude.Text+getFailbackReplicationConfigurationResponse_recoveryInstanceID = Lens.lens (\GetFailbackReplicationConfigurationResponse' {recoveryInstanceID} -> recoveryInstanceID) (\s@GetFailbackReplicationConfigurationResponse' {} a -> s {recoveryInstanceID = a} :: GetFailbackReplicationConfigurationResponse)++instance+  Prelude.NFData+    GetFailbackReplicationConfigurationResponse+  where+  rnf GetFailbackReplicationConfigurationResponse' {..} =+    Prelude.rnf bandwidthThrottling+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf usePrivateIP+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf recoveryInstanceID
+ gen/Amazonka/DrS/GetLaunchConfiguration.hs view
@@ -0,0 +1,131 @@+{-# 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.DrS.GetLaunchConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets a LaunchConfiguration, filtered by Source Server IDs.+module Amazonka.DrS.GetLaunchConfiguration+  ( -- * Creating a Request+    GetLaunchConfiguration (..),+    newGetLaunchConfiguration,++    -- * Request Lenses+    getLaunchConfiguration_sourceServerID,++    -- * Destructuring the Response+    LaunchConfiguration (..),+    newLaunchConfiguration,++    -- * Response Lenses+    launchConfiguration_copyPrivateIp,+    launchConfiguration_copyTags,+    launchConfiguration_ec2LaunchTemplateID,+    launchConfiguration_launchDisposition,+    launchConfiguration_licensing,+    launchConfiguration_name,+    launchConfiguration_sourceServerID,+    launchConfiguration_targetInstanceTypeRightSizingMethod,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetLaunchConfiguration' smart constructor.+data GetLaunchConfiguration = GetLaunchConfiguration'+  { -- | The ID of the Source Server that we want to retrieve a Launch+    -- Configuration for.+    sourceServerID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetLaunchConfiguration' 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:+--+-- 'sourceServerID', 'getLaunchConfiguration_sourceServerID' - The ID of the Source Server that we want to retrieve a Launch+-- Configuration for.+newGetLaunchConfiguration ::+  -- | 'sourceServerID'+  Prelude.Text ->+  GetLaunchConfiguration+newGetLaunchConfiguration pSourceServerID_ =+  GetLaunchConfiguration'+    { sourceServerID =+        pSourceServerID_+    }++-- | The ID of the Source Server that we want to retrieve a Launch+-- Configuration for.+getLaunchConfiguration_sourceServerID :: Lens.Lens' GetLaunchConfiguration Prelude.Text+getLaunchConfiguration_sourceServerID = Lens.lens (\GetLaunchConfiguration' {sourceServerID} -> sourceServerID) (\s@GetLaunchConfiguration' {} a -> s {sourceServerID = a} :: GetLaunchConfiguration)++instance Core.AWSRequest GetLaunchConfiguration where+  type+    AWSResponse GetLaunchConfiguration =+      LaunchConfiguration+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      (\s h x -> Data.eitherParseJSON x)++instance Prelude.Hashable GetLaunchConfiguration where+  hashWithSalt _salt GetLaunchConfiguration' {..} =+    _salt `Prelude.hashWithSalt` sourceServerID++instance Prelude.NFData GetLaunchConfiguration where+  rnf GetLaunchConfiguration' {..} =+    Prelude.rnf sourceServerID++instance Data.ToHeaders GetLaunchConfiguration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetLaunchConfiguration where+  toJSON GetLaunchConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("sourceServerID" Data..= sourceServerID)+          ]+      )++instance Data.ToPath GetLaunchConfiguration where+  toPath = Prelude.const "/GetLaunchConfiguration"++instance Data.ToQuery GetLaunchConfiguration where+  toQuery = Prelude.const Prelude.mempty
+ gen/Amazonka/DrS/GetReplicationConfiguration.hs view
@@ -0,0 +1,136 @@+{-# 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.DrS.GetReplicationConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets a ReplicationConfiguration, filtered by Source Server ID.+module Amazonka.DrS.GetReplicationConfiguration+  ( -- * Creating a Request+    GetReplicationConfiguration (..),+    newGetReplicationConfiguration,++    -- * Request Lenses+    getReplicationConfiguration_sourceServerID,++    -- * Destructuring the Response+    ReplicationConfiguration (..),+    newReplicationConfiguration,++    -- * Response Lenses+    replicationConfiguration_associateDefaultSecurityGroup,+    replicationConfiguration_bandwidthThrottling,+    replicationConfiguration_createPublicIP,+    replicationConfiguration_dataPlaneRouting,+    replicationConfiguration_defaultLargeStagingDiskType,+    replicationConfiguration_ebsEncryption,+    replicationConfiguration_ebsEncryptionKeyArn,+    replicationConfiguration_name,+    replicationConfiguration_pitPolicy,+    replicationConfiguration_replicatedDisks,+    replicationConfiguration_replicationServerInstanceType,+    replicationConfiguration_replicationServersSecurityGroupsIDs,+    replicationConfiguration_sourceServerID,+    replicationConfiguration_stagingAreaSubnetId,+    replicationConfiguration_stagingAreaTags,+    replicationConfiguration_useDedicatedReplicationServer,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetReplicationConfiguration' smart constructor.+data GetReplicationConfiguration = GetReplicationConfiguration'+  { -- | The ID of the Source Serve for this Replication Configuration.r+    sourceServerID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetReplicationConfiguration' 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:+--+-- 'sourceServerID', 'getReplicationConfiguration_sourceServerID' - The ID of the Source Serve for this Replication Configuration.r+newGetReplicationConfiguration ::+  -- | 'sourceServerID'+  Prelude.Text ->+  GetReplicationConfiguration+newGetReplicationConfiguration pSourceServerID_ =+  GetReplicationConfiguration'+    { sourceServerID =+        pSourceServerID_+    }++-- | The ID of the Source Serve for this Replication Configuration.r+getReplicationConfiguration_sourceServerID :: Lens.Lens' GetReplicationConfiguration Prelude.Text+getReplicationConfiguration_sourceServerID = Lens.lens (\GetReplicationConfiguration' {sourceServerID} -> sourceServerID) (\s@GetReplicationConfiguration' {} a -> s {sourceServerID = a} :: GetReplicationConfiguration)++instance Core.AWSRequest GetReplicationConfiguration where+  type+    AWSResponse GetReplicationConfiguration =+      ReplicationConfiguration+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      (\s h x -> Data.eitherParseJSON x)++instance Prelude.Hashable GetReplicationConfiguration where+  hashWithSalt _salt GetReplicationConfiguration' {..} =+    _salt `Prelude.hashWithSalt` sourceServerID++instance Prelude.NFData GetReplicationConfiguration where+  rnf GetReplicationConfiguration' {..} =+    Prelude.rnf sourceServerID++instance Data.ToHeaders GetReplicationConfiguration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetReplicationConfiguration where+  toJSON GetReplicationConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("sourceServerID" Data..= sourceServerID)+          ]+      )++instance Data.ToPath GetReplicationConfiguration where+  toPath = Prelude.const "/GetReplicationConfiguration"++instance Data.ToQuery GetReplicationConfiguration where+  toQuery = Prelude.const Prelude.mempty
+ gen/Amazonka/DrS/InitializeService.hs view
@@ -0,0 +1,132 @@+{-# 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.DrS.InitializeService+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Initialize Elastic Disaster Recovery.+module Amazonka.DrS.InitializeService+  ( -- * Creating a Request+    InitializeService (..),+    newInitializeService,++    -- * Destructuring the Response+    InitializeServiceResponse (..),+    newInitializeServiceResponse,++    -- * Response Lenses+    initializeServiceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newInitializeService' smart constructor.+data InitializeService = InitializeService'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InitializeService' 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.+newInitializeService ::+  InitializeService+newInitializeService = InitializeService'++instance Core.AWSRequest InitializeService where+  type+    AWSResponse InitializeService =+      InitializeServiceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          InitializeServiceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable InitializeService where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData InitializeService where+  rnf _ = ()++instance Data.ToHeaders InitializeService where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON InitializeService where+  toJSON = Prelude.const (Data.Object Prelude.mempty)++instance Data.ToPath InitializeService where+  toPath = Prelude.const "/InitializeService"++instance Data.ToQuery InitializeService where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newInitializeServiceResponse' smart constructor.+data InitializeServiceResponse = InitializeServiceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InitializeServiceResponse' 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', 'initializeServiceResponse_httpStatus' - The response's http status code.+newInitializeServiceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  InitializeServiceResponse+newInitializeServiceResponse pHttpStatus_ =+  InitializeServiceResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+initializeServiceResponse_httpStatus :: Lens.Lens' InitializeServiceResponse Prelude.Int+initializeServiceResponse_httpStatus = Lens.lens (\InitializeServiceResponse' {httpStatus} -> httpStatus) (\s@InitializeServiceResponse' {} a -> s {httpStatus = a} :: InitializeServiceResponse)++instance Prelude.NFData InitializeServiceResponse where+  rnf InitializeServiceResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/DrS/Lens.hs view
@@ -0,0 +1,735 @@+{-# 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.DrS.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.DrS.Lens+  ( -- * Operations++    -- ** CreateExtendedSourceServer+    createExtendedSourceServer_tags,+    createExtendedSourceServer_sourceServerArn,+    createExtendedSourceServerResponse_sourceServer,+    createExtendedSourceServerResponse_httpStatus,++    -- ** CreateReplicationConfigurationTemplate+    createReplicationConfigurationTemplate_ebsEncryptionKeyArn,+    createReplicationConfigurationTemplate_tags,+    createReplicationConfigurationTemplate_associateDefaultSecurityGroup,+    createReplicationConfigurationTemplate_bandwidthThrottling,+    createReplicationConfigurationTemplate_createPublicIP,+    createReplicationConfigurationTemplate_dataPlaneRouting,+    createReplicationConfigurationTemplate_defaultLargeStagingDiskType,+    createReplicationConfigurationTemplate_ebsEncryption,+    createReplicationConfigurationTemplate_pitPolicy,+    createReplicationConfigurationTemplate_replicationServerInstanceType,+    createReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs,+    createReplicationConfigurationTemplate_stagingAreaSubnetId,+    createReplicationConfigurationTemplate_stagingAreaTags,+    createReplicationConfigurationTemplate_useDedicatedReplicationServer,+    replicationConfigurationTemplate_arn,+    replicationConfigurationTemplate_associateDefaultSecurityGroup,+    replicationConfigurationTemplate_bandwidthThrottling,+    replicationConfigurationTemplate_createPublicIP,+    replicationConfigurationTemplate_dataPlaneRouting,+    replicationConfigurationTemplate_defaultLargeStagingDiskType,+    replicationConfigurationTemplate_ebsEncryption,+    replicationConfigurationTemplate_ebsEncryptionKeyArn,+    replicationConfigurationTemplate_pitPolicy,+    replicationConfigurationTemplate_replicationServerInstanceType,+    replicationConfigurationTemplate_replicationServersSecurityGroupsIDs,+    replicationConfigurationTemplate_stagingAreaSubnetId,+    replicationConfigurationTemplate_stagingAreaTags,+    replicationConfigurationTemplate_tags,+    replicationConfigurationTemplate_useDedicatedReplicationServer,+    replicationConfigurationTemplate_replicationConfigurationTemplateID,++    -- ** DeleteJob+    deleteJob_jobID,+    deleteJobResponse_httpStatus,++    -- ** DeleteRecoveryInstance+    deleteRecoveryInstance_recoveryInstanceID,++    -- ** DeleteReplicationConfigurationTemplate+    deleteReplicationConfigurationTemplate_replicationConfigurationTemplateID,+    deleteReplicationConfigurationTemplateResponse_httpStatus,++    -- ** DeleteSourceServer+    deleteSourceServer_sourceServerID,+    deleteSourceServerResponse_httpStatus,++    -- ** DescribeJobLogItems+    describeJobLogItems_maxResults,+    describeJobLogItems_nextToken,+    describeJobLogItems_jobID,+    describeJobLogItemsResponse_items,+    describeJobLogItemsResponse_nextToken,+    describeJobLogItemsResponse_httpStatus,++    -- ** DescribeJobs+    describeJobs_filters,+    describeJobs_maxResults,+    describeJobs_nextToken,+    describeJobsResponse_items,+    describeJobsResponse_nextToken,+    describeJobsResponse_httpStatus,++    -- ** DescribeRecoveryInstances+    describeRecoveryInstances_filters,+    describeRecoveryInstances_maxResults,+    describeRecoveryInstances_nextToken,+    describeRecoveryInstancesResponse_items,+    describeRecoveryInstancesResponse_nextToken,+    describeRecoveryInstancesResponse_httpStatus,++    -- ** DescribeRecoverySnapshots+    describeRecoverySnapshots_filters,+    describeRecoverySnapshots_maxResults,+    describeRecoverySnapshots_nextToken,+    describeRecoverySnapshots_order,+    describeRecoverySnapshots_sourceServerID,+    describeRecoverySnapshotsResponse_items,+    describeRecoverySnapshotsResponse_nextToken,+    describeRecoverySnapshotsResponse_httpStatus,++    -- ** DescribeReplicationConfigurationTemplates+    describeReplicationConfigurationTemplates_maxResults,+    describeReplicationConfigurationTemplates_nextToken,+    describeReplicationConfigurationTemplates_replicationConfigurationTemplateIDs,+    describeReplicationConfigurationTemplatesResponse_items,+    describeReplicationConfigurationTemplatesResponse_nextToken,+    describeReplicationConfigurationTemplatesResponse_httpStatus,++    -- ** DescribeSourceServers+    describeSourceServers_filters,+    describeSourceServers_maxResults,+    describeSourceServers_nextToken,+    describeSourceServersResponse_items,+    describeSourceServersResponse_nextToken,+    describeSourceServersResponse_httpStatus,++    -- ** DisconnectRecoveryInstance+    disconnectRecoveryInstance_recoveryInstanceID,++    -- ** DisconnectSourceServer+    disconnectSourceServer_sourceServerID,+    sourceServer_arn,+    sourceServer_dataReplicationInfo,+    sourceServer_lastLaunchResult,+    sourceServer_lifeCycle,+    sourceServer_recoveryInstanceId,+    sourceServer_replicationDirection,+    sourceServer_reversedDirectionSourceServerArn,+    sourceServer_sourceCloudProperties,+    sourceServer_sourceProperties,+    sourceServer_sourceServerID,+    sourceServer_stagingArea,+    sourceServer_tags,++    -- ** GetFailbackReplicationConfiguration+    getFailbackReplicationConfiguration_recoveryInstanceID,+    getFailbackReplicationConfigurationResponse_bandwidthThrottling,+    getFailbackReplicationConfigurationResponse_name,+    getFailbackReplicationConfigurationResponse_usePrivateIP,+    getFailbackReplicationConfigurationResponse_httpStatus,+    getFailbackReplicationConfigurationResponse_recoveryInstanceID,++    -- ** GetLaunchConfiguration+    getLaunchConfiguration_sourceServerID,+    launchConfiguration_copyPrivateIp,+    launchConfiguration_copyTags,+    launchConfiguration_ec2LaunchTemplateID,+    launchConfiguration_launchDisposition,+    launchConfiguration_licensing,+    launchConfiguration_name,+    launchConfiguration_sourceServerID,+    launchConfiguration_targetInstanceTypeRightSizingMethod,++    -- ** GetReplicationConfiguration+    getReplicationConfiguration_sourceServerID,+    replicationConfiguration_associateDefaultSecurityGroup,+    replicationConfiguration_bandwidthThrottling,+    replicationConfiguration_createPublicIP,+    replicationConfiguration_dataPlaneRouting,+    replicationConfiguration_defaultLargeStagingDiskType,+    replicationConfiguration_ebsEncryption,+    replicationConfiguration_ebsEncryptionKeyArn,+    replicationConfiguration_name,+    replicationConfiguration_pitPolicy,+    replicationConfiguration_replicatedDisks,+    replicationConfiguration_replicationServerInstanceType,+    replicationConfiguration_replicationServersSecurityGroupsIDs,+    replicationConfiguration_sourceServerID,+    replicationConfiguration_stagingAreaSubnetId,+    replicationConfiguration_stagingAreaTags,+    replicationConfiguration_useDedicatedReplicationServer,++    -- ** InitializeService+    initializeServiceResponse_httpStatus,++    -- ** ListExtensibleSourceServers+    listExtensibleSourceServers_maxResults,+    listExtensibleSourceServers_nextToken,+    listExtensibleSourceServers_stagingAccountID,+    listExtensibleSourceServersResponse_items,+    listExtensibleSourceServersResponse_nextToken,+    listExtensibleSourceServersResponse_httpStatus,++    -- ** ListStagingAccounts+    listStagingAccounts_maxResults,+    listStagingAccounts_nextToken,+    listStagingAccountsResponse_accounts,+    listStagingAccountsResponse_nextToken,+    listStagingAccountsResponse_httpStatus,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** RetryDataReplication+    retryDataReplication_sourceServerID,+    sourceServer_arn,+    sourceServer_dataReplicationInfo,+    sourceServer_lastLaunchResult,+    sourceServer_lifeCycle,+    sourceServer_recoveryInstanceId,+    sourceServer_replicationDirection,+    sourceServer_reversedDirectionSourceServerArn,+    sourceServer_sourceCloudProperties,+    sourceServer_sourceProperties,+    sourceServer_sourceServerID,+    sourceServer_stagingArea,+    sourceServer_tags,++    -- ** ReverseReplication+    reverseReplication_recoveryInstanceID,+    reverseReplicationResponse_reversedDirectionSourceServerArn,+    reverseReplicationResponse_httpStatus,++    -- ** StartFailbackLaunch+    startFailbackLaunch_tags,+    startFailbackLaunch_recoveryInstanceIDs,+    startFailbackLaunchResponse_job,+    startFailbackLaunchResponse_httpStatus,++    -- ** StartRecovery+    startRecovery_isDrill,+    startRecovery_tags,+    startRecovery_sourceServers,+    startRecoveryResponse_job,+    startRecoveryResponse_httpStatus,++    -- ** StartReplication+    startReplication_sourceServerID,+    startReplicationResponse_sourceServer,+    startReplicationResponse_httpStatus,++    -- ** StopFailback+    stopFailback_recoveryInstanceID,++    -- ** StopReplication+    stopReplication_sourceServerID,+    stopReplicationResponse_sourceServer,+    stopReplicationResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,++    -- ** TerminateRecoveryInstances+    terminateRecoveryInstances_recoveryInstanceIDs,+    terminateRecoveryInstancesResponse_job,+    terminateRecoveryInstancesResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,++    -- ** UpdateFailbackReplicationConfiguration+    updateFailbackReplicationConfiguration_bandwidthThrottling,+    updateFailbackReplicationConfiguration_name,+    updateFailbackReplicationConfiguration_usePrivateIP,+    updateFailbackReplicationConfiguration_recoveryInstanceID,++    -- ** UpdateLaunchConfiguration+    updateLaunchConfiguration_copyPrivateIp,+    updateLaunchConfiguration_copyTags,+    updateLaunchConfiguration_launchDisposition,+    updateLaunchConfiguration_licensing,+    updateLaunchConfiguration_name,+    updateLaunchConfiguration_targetInstanceTypeRightSizingMethod,+    updateLaunchConfiguration_sourceServerID,+    launchConfiguration_copyPrivateIp,+    launchConfiguration_copyTags,+    launchConfiguration_ec2LaunchTemplateID,+    launchConfiguration_launchDisposition,+    launchConfiguration_licensing,+    launchConfiguration_name,+    launchConfiguration_sourceServerID,+    launchConfiguration_targetInstanceTypeRightSizingMethod,++    -- ** UpdateReplicationConfiguration+    updateReplicationConfiguration_associateDefaultSecurityGroup,+    updateReplicationConfiguration_bandwidthThrottling,+    updateReplicationConfiguration_createPublicIP,+    updateReplicationConfiguration_dataPlaneRouting,+    updateReplicationConfiguration_defaultLargeStagingDiskType,+    updateReplicationConfiguration_ebsEncryption,+    updateReplicationConfiguration_ebsEncryptionKeyArn,+    updateReplicationConfiguration_name,+    updateReplicationConfiguration_pitPolicy,+    updateReplicationConfiguration_replicatedDisks,+    updateReplicationConfiguration_replicationServerInstanceType,+    updateReplicationConfiguration_replicationServersSecurityGroupsIDs,+    updateReplicationConfiguration_stagingAreaSubnetId,+    updateReplicationConfiguration_stagingAreaTags,+    updateReplicationConfiguration_useDedicatedReplicationServer,+    updateReplicationConfiguration_sourceServerID,+    replicationConfiguration_associateDefaultSecurityGroup,+    replicationConfiguration_bandwidthThrottling,+    replicationConfiguration_createPublicIP,+    replicationConfiguration_dataPlaneRouting,+    replicationConfiguration_defaultLargeStagingDiskType,+    replicationConfiguration_ebsEncryption,+    replicationConfiguration_ebsEncryptionKeyArn,+    replicationConfiguration_name,+    replicationConfiguration_pitPolicy,+    replicationConfiguration_replicatedDisks,+    replicationConfiguration_replicationServerInstanceType,+    replicationConfiguration_replicationServersSecurityGroupsIDs,+    replicationConfiguration_sourceServerID,+    replicationConfiguration_stagingAreaSubnetId,+    replicationConfiguration_stagingAreaTags,+    replicationConfiguration_useDedicatedReplicationServer,++    -- ** UpdateReplicationConfigurationTemplate+    updateReplicationConfigurationTemplate_arn,+    updateReplicationConfigurationTemplate_associateDefaultSecurityGroup,+    updateReplicationConfigurationTemplate_bandwidthThrottling,+    updateReplicationConfigurationTemplate_createPublicIP,+    updateReplicationConfigurationTemplate_dataPlaneRouting,+    updateReplicationConfigurationTemplate_defaultLargeStagingDiskType,+    updateReplicationConfigurationTemplate_ebsEncryption,+    updateReplicationConfigurationTemplate_ebsEncryptionKeyArn,+    updateReplicationConfigurationTemplate_pitPolicy,+    updateReplicationConfigurationTemplate_replicationServerInstanceType,+    updateReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs,+    updateReplicationConfigurationTemplate_stagingAreaSubnetId,+    updateReplicationConfigurationTemplate_stagingAreaTags,+    updateReplicationConfigurationTemplate_useDedicatedReplicationServer,+    updateReplicationConfigurationTemplate_replicationConfigurationTemplateID,+    replicationConfigurationTemplate_arn,+    replicationConfigurationTemplate_associateDefaultSecurityGroup,+    replicationConfigurationTemplate_bandwidthThrottling,+    replicationConfigurationTemplate_createPublicIP,+    replicationConfigurationTemplate_dataPlaneRouting,+    replicationConfigurationTemplate_defaultLargeStagingDiskType,+    replicationConfigurationTemplate_ebsEncryption,+    replicationConfigurationTemplate_ebsEncryptionKeyArn,+    replicationConfigurationTemplate_pitPolicy,+    replicationConfigurationTemplate_replicationServerInstanceType,+    replicationConfigurationTemplate_replicationServersSecurityGroupsIDs,+    replicationConfigurationTemplate_stagingAreaSubnetId,+    replicationConfigurationTemplate_stagingAreaTags,+    replicationConfigurationTemplate_tags,+    replicationConfigurationTemplate_useDedicatedReplicationServer,+    replicationConfigurationTemplate_replicationConfigurationTemplateID,++    -- * Types++    -- ** Account+    account_accountID,++    -- ** CPU+    cpu_cores,+    cpu_modelName,++    -- ** ConversionProperties+    conversionProperties_dataTimestamp,+    conversionProperties_forceUefi,+    conversionProperties_rootVolumeName,+    conversionProperties_volumeToConversionMap,+    conversionProperties_volumeToVolumeSize,++    -- ** DataReplicationError+    dataReplicationError_error,+    dataReplicationError_rawError,++    -- ** DataReplicationInfo+    dataReplicationInfo_dataReplicationError,+    dataReplicationInfo_dataReplicationInitiation,+    dataReplicationInfo_dataReplicationState,+    dataReplicationInfo_etaDateTime,+    dataReplicationInfo_lagDuration,+    dataReplicationInfo_replicatedDisks,++    -- ** DataReplicationInfoReplicatedDisk+    dataReplicationInfoReplicatedDisk_backloggedStorageBytes,+    dataReplicationInfoReplicatedDisk_deviceName,+    dataReplicationInfoReplicatedDisk_replicatedStorageBytes,+    dataReplicationInfoReplicatedDisk_rescannedStorageBytes,+    dataReplicationInfoReplicatedDisk_totalStorageBytes,++    -- ** DataReplicationInitiation+    dataReplicationInitiation_nextAttemptDateTime,+    dataReplicationInitiation_startDateTime,+    dataReplicationInitiation_steps,++    -- ** DataReplicationInitiationStep+    dataReplicationInitiationStep_name,+    dataReplicationInitiationStep_status,++    -- ** DescribeJobsRequestFilters+    describeJobsRequestFilters_fromDate,+    describeJobsRequestFilters_jobIDs,+    describeJobsRequestFilters_toDate,++    -- ** DescribeRecoveryInstancesRequestFilters+    describeRecoveryInstancesRequestFilters_recoveryInstanceIDs,+    describeRecoveryInstancesRequestFilters_sourceServerIDs,++    -- ** DescribeRecoverySnapshotsRequestFilters+    describeRecoverySnapshotsRequestFilters_fromDateTime,+    describeRecoverySnapshotsRequestFilters_toDateTime,++    -- ** DescribeSourceServersRequestFilters+    describeSourceServersRequestFilters_hardwareId,+    describeSourceServersRequestFilters_sourceServerIDs,+    describeSourceServersRequestFilters_stagingAccountIDs,++    -- ** Disk+    disk_bytes,+    disk_deviceName,++    -- ** IdentificationHints+    identificationHints_awsInstanceID,+    identificationHints_fqdn,+    identificationHints_hostname,+    identificationHints_vmWareUuid,++    -- ** Job+    job_arn,+    job_creationDateTime,+    job_endDateTime,+    job_initiatedBy,+    job_participatingServers,+    job_status,+    job_tags,+    job_type,+    job_jobID,++    -- ** JobLog+    jobLog_event,+    jobLog_eventData,+    jobLog_logDateTime,++    -- ** JobLogEventData+    jobLogEventData_conversionProperties,+    jobLogEventData_conversionServerID,+    jobLogEventData_rawError,+    jobLogEventData_sourceServerID,+    jobLogEventData_targetInstanceID,++    -- ** LaunchConfiguration+    launchConfiguration_copyPrivateIp,+    launchConfiguration_copyTags,+    launchConfiguration_ec2LaunchTemplateID,+    launchConfiguration_launchDisposition,+    launchConfiguration_licensing,+    launchConfiguration_name,+    launchConfiguration_sourceServerID,+    launchConfiguration_targetInstanceTypeRightSizingMethod,++    -- ** Licensing+    licensing_osByol,++    -- ** LifeCycle+    lifeCycle_addedToServiceDateTime,+    lifeCycle_elapsedReplicationDuration,+    lifeCycle_firstByteDateTime,+    lifeCycle_lastLaunch,+    lifeCycle_lastSeenByServiceDateTime,++    -- ** LifeCycleLastLaunch+    lifeCycleLastLaunch_initiated,++    -- ** LifeCycleLastLaunchInitiated+    lifeCycleLastLaunchInitiated_apiCallDateTime,+    lifeCycleLastLaunchInitiated_jobID,+    lifeCycleLastLaunchInitiated_type,++    -- ** NetworkInterface+    networkInterface_ips,+    networkInterface_isPrimary,+    networkInterface_macAddress,++    -- ** OS+    os_fullString,++    -- ** PITPolicyRule+    pITPolicyRule_enabled,+    pITPolicyRule_ruleID,+    pITPolicyRule_interval,+    pITPolicyRule_retentionDuration,+    pITPolicyRule_units,++    -- ** ParticipatingServer+    participatingServer_launchStatus,+    participatingServer_recoveryInstanceID,+    participatingServer_sourceServerID,++    -- ** RecoveryInstance+    recoveryInstance_arn,+    recoveryInstance_dataReplicationInfo,+    recoveryInstance_ec2InstanceID,+    recoveryInstance_ec2InstanceState,+    recoveryInstance_failback,+    recoveryInstance_isDrill,+    recoveryInstance_jobID,+    recoveryInstance_originEnvironment,+    recoveryInstance_pointInTimeSnapshotDateTime,+    recoveryInstance_recoveryInstanceID,+    recoveryInstance_recoveryInstanceProperties,+    recoveryInstance_sourceServerID,+    recoveryInstance_tags,++    -- ** RecoveryInstanceDataReplicationError+    recoveryInstanceDataReplicationError_error,+    recoveryInstanceDataReplicationError_rawError,++    -- ** RecoveryInstanceDataReplicationInfo+    recoveryInstanceDataReplicationInfo_dataReplicationError,+    recoveryInstanceDataReplicationInfo_dataReplicationInitiation,+    recoveryInstanceDataReplicationInfo_dataReplicationState,+    recoveryInstanceDataReplicationInfo_etaDateTime,+    recoveryInstanceDataReplicationInfo_lagDuration,+    recoveryInstanceDataReplicationInfo_replicatedDisks,++    -- ** RecoveryInstanceDataReplicationInfoReplicatedDisk+    recoveryInstanceDataReplicationInfoReplicatedDisk_backloggedStorageBytes,+    recoveryInstanceDataReplicationInfoReplicatedDisk_deviceName,+    recoveryInstanceDataReplicationInfoReplicatedDisk_replicatedStorageBytes,+    recoveryInstanceDataReplicationInfoReplicatedDisk_rescannedStorageBytes,+    recoveryInstanceDataReplicationInfoReplicatedDisk_totalStorageBytes,++    -- ** RecoveryInstanceDataReplicationInitiation+    recoveryInstanceDataReplicationInitiation_startDateTime,+    recoveryInstanceDataReplicationInitiation_steps,++    -- ** RecoveryInstanceDataReplicationInitiationStep+    recoveryInstanceDataReplicationInitiationStep_name,+    recoveryInstanceDataReplicationInitiationStep_status,++    -- ** RecoveryInstanceDisk+    recoveryInstanceDisk_bytes,+    recoveryInstanceDisk_ebsVolumeID,+    recoveryInstanceDisk_internalDeviceName,++    -- ** RecoveryInstanceFailback+    recoveryInstanceFailback_agentLastSeenByServiceDateTime,+    recoveryInstanceFailback_elapsedReplicationDuration,+    recoveryInstanceFailback_failbackClientID,+    recoveryInstanceFailback_failbackClientLastSeenByServiceDateTime,+    recoveryInstanceFailback_failbackInitiationTime,+    recoveryInstanceFailback_failbackJobID,+    recoveryInstanceFailback_failbackLaunchType,+    recoveryInstanceFailback_failbackToOriginalServer,+    recoveryInstanceFailback_firstByteDateTime,+    recoveryInstanceFailback_state,++    -- ** RecoveryInstanceProperties+    recoveryInstanceProperties_cpus,+    recoveryInstanceProperties_disks,+    recoveryInstanceProperties_identificationHints,+    recoveryInstanceProperties_lastUpdatedDateTime,+    recoveryInstanceProperties_networkInterfaces,+    recoveryInstanceProperties_os,+    recoveryInstanceProperties_ramBytes,++    -- ** RecoverySnapshot+    recoverySnapshot_ebsSnapshots,+    recoverySnapshot_timestamp,+    recoverySnapshot_expectedTimestamp,+    recoverySnapshot_snapshotID,+    recoverySnapshot_sourceServerID,++    -- ** ReplicationConfiguration+    replicationConfiguration_associateDefaultSecurityGroup,+    replicationConfiguration_bandwidthThrottling,+    replicationConfiguration_createPublicIP,+    replicationConfiguration_dataPlaneRouting,+    replicationConfiguration_defaultLargeStagingDiskType,+    replicationConfiguration_ebsEncryption,+    replicationConfiguration_ebsEncryptionKeyArn,+    replicationConfiguration_name,+    replicationConfiguration_pitPolicy,+    replicationConfiguration_replicatedDisks,+    replicationConfiguration_replicationServerInstanceType,+    replicationConfiguration_replicationServersSecurityGroupsIDs,+    replicationConfiguration_sourceServerID,+    replicationConfiguration_stagingAreaSubnetId,+    replicationConfiguration_stagingAreaTags,+    replicationConfiguration_useDedicatedReplicationServer,++    -- ** ReplicationConfigurationReplicatedDisk+    replicationConfigurationReplicatedDisk_deviceName,+    replicationConfigurationReplicatedDisk_iops,+    replicationConfigurationReplicatedDisk_isBootDisk,+    replicationConfigurationReplicatedDisk_optimizedStagingDiskType,+    replicationConfigurationReplicatedDisk_stagingDiskType,+    replicationConfigurationReplicatedDisk_throughput,++    -- ** ReplicationConfigurationTemplate+    replicationConfigurationTemplate_arn,+    replicationConfigurationTemplate_associateDefaultSecurityGroup,+    replicationConfigurationTemplate_bandwidthThrottling,+    replicationConfigurationTemplate_createPublicIP,+    replicationConfigurationTemplate_dataPlaneRouting,+    replicationConfigurationTemplate_defaultLargeStagingDiskType,+    replicationConfigurationTemplate_ebsEncryption,+    replicationConfigurationTemplate_ebsEncryptionKeyArn,+    replicationConfigurationTemplate_pitPolicy,+    replicationConfigurationTemplate_replicationServerInstanceType,+    replicationConfigurationTemplate_replicationServersSecurityGroupsIDs,+    replicationConfigurationTemplate_stagingAreaSubnetId,+    replicationConfigurationTemplate_stagingAreaTags,+    replicationConfigurationTemplate_tags,+    replicationConfigurationTemplate_useDedicatedReplicationServer,+    replicationConfigurationTemplate_replicationConfigurationTemplateID,++    -- ** SourceCloudProperties+    sourceCloudProperties_originAccountID,+    sourceCloudProperties_originAvailabilityZone,+    sourceCloudProperties_originRegion,++    -- ** SourceProperties+    sourceProperties_cpus,+    sourceProperties_disks,+    sourceProperties_identificationHints,+    sourceProperties_lastUpdatedDateTime,+    sourceProperties_networkInterfaces,+    sourceProperties_os,+    sourceProperties_ramBytes,+    sourceProperties_recommendedInstanceType,++    -- ** SourceServer+    sourceServer_arn,+    sourceServer_dataReplicationInfo,+    sourceServer_lastLaunchResult,+    sourceServer_lifeCycle,+    sourceServer_recoveryInstanceId,+    sourceServer_replicationDirection,+    sourceServer_reversedDirectionSourceServerArn,+    sourceServer_sourceCloudProperties,+    sourceServer_sourceProperties,+    sourceServer_sourceServerID,+    sourceServer_stagingArea,+    sourceServer_tags,++    -- ** StagingArea+    stagingArea_errorMessage,+    stagingArea_stagingAccountID,+    stagingArea_stagingSourceServerArn,+    stagingArea_status,++    -- ** StagingSourceServer+    stagingSourceServer_arn,+    stagingSourceServer_hostname,+    stagingSourceServer_tags,++    -- ** StartRecoveryRequestSourceServer+    startRecoveryRequestSourceServer_recoverySnapshotID,+    startRecoveryRequestSourceServer_sourceServerID,+  )+where++import Amazonka.DrS.CreateExtendedSourceServer+import Amazonka.DrS.CreateReplicationConfigurationTemplate+import Amazonka.DrS.DeleteJob+import Amazonka.DrS.DeleteRecoveryInstance+import Amazonka.DrS.DeleteReplicationConfigurationTemplate+import Amazonka.DrS.DeleteSourceServer+import Amazonka.DrS.DescribeJobLogItems+import Amazonka.DrS.DescribeJobs+import Amazonka.DrS.DescribeRecoveryInstances+import Amazonka.DrS.DescribeRecoverySnapshots+import Amazonka.DrS.DescribeReplicationConfigurationTemplates+import Amazonka.DrS.DescribeSourceServers+import Amazonka.DrS.DisconnectRecoveryInstance+import Amazonka.DrS.DisconnectSourceServer+import Amazonka.DrS.GetFailbackReplicationConfiguration+import Amazonka.DrS.GetLaunchConfiguration+import Amazonka.DrS.GetReplicationConfiguration+import Amazonka.DrS.InitializeService+import Amazonka.DrS.ListExtensibleSourceServers+import Amazonka.DrS.ListStagingAccounts+import Amazonka.DrS.ListTagsForResource+import Amazonka.DrS.RetryDataReplication+import Amazonka.DrS.ReverseReplication+import Amazonka.DrS.StartFailbackLaunch+import Amazonka.DrS.StartRecovery+import Amazonka.DrS.StartReplication+import Amazonka.DrS.StopFailback+import Amazonka.DrS.StopReplication+import Amazonka.DrS.TagResource+import Amazonka.DrS.TerminateRecoveryInstances+import Amazonka.DrS.Types.Account+import Amazonka.DrS.Types.CPU+import Amazonka.DrS.Types.ConversionProperties+import Amazonka.DrS.Types.DataReplicationError+import Amazonka.DrS.Types.DataReplicationInfo+import Amazonka.DrS.Types.DataReplicationInfoReplicatedDisk+import Amazonka.DrS.Types.DataReplicationInitiation+import Amazonka.DrS.Types.DataReplicationInitiationStep+import Amazonka.DrS.Types.DescribeJobsRequestFilters+import Amazonka.DrS.Types.DescribeRecoveryInstancesRequestFilters+import Amazonka.DrS.Types.DescribeRecoverySnapshotsRequestFilters+import Amazonka.DrS.Types.DescribeSourceServersRequestFilters+import Amazonka.DrS.Types.Disk+import Amazonka.DrS.Types.IdentificationHints+import Amazonka.DrS.Types.Job+import Amazonka.DrS.Types.JobLog+import Amazonka.DrS.Types.JobLogEventData+import Amazonka.DrS.Types.LaunchConfiguration+import Amazonka.DrS.Types.Licensing+import Amazonka.DrS.Types.LifeCycle+import Amazonka.DrS.Types.LifeCycleLastLaunch+import Amazonka.DrS.Types.LifeCycleLastLaunchInitiated+import Amazonka.DrS.Types.NetworkInterface+import Amazonka.DrS.Types.OS+import Amazonka.DrS.Types.PITPolicyRule+import Amazonka.DrS.Types.ParticipatingServer+import Amazonka.DrS.Types.RecoveryInstance+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationError+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInfo+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInfoReplicatedDisk+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiation+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiationStep+import Amazonka.DrS.Types.RecoveryInstanceDisk+import Amazonka.DrS.Types.RecoveryInstanceFailback+import Amazonka.DrS.Types.RecoveryInstanceProperties+import Amazonka.DrS.Types.RecoverySnapshot+import Amazonka.DrS.Types.ReplicationConfiguration+import Amazonka.DrS.Types.ReplicationConfigurationReplicatedDisk+import Amazonka.DrS.Types.ReplicationConfigurationTemplate+import Amazonka.DrS.Types.SourceCloudProperties+import Amazonka.DrS.Types.SourceProperties+import Amazonka.DrS.Types.SourceServer+import Amazonka.DrS.Types.StagingArea+import Amazonka.DrS.Types.StagingSourceServer+import Amazonka.DrS.Types.StartRecoveryRequestSourceServer+import Amazonka.DrS.UntagResource+import Amazonka.DrS.UpdateFailbackReplicationConfiguration+import Amazonka.DrS.UpdateLaunchConfiguration+import Amazonka.DrS.UpdateReplicationConfiguration+import Amazonka.DrS.UpdateReplicationConfigurationTemplate
+ gen/Amazonka/DrS/ListExtensibleSourceServers.hs view
@@ -0,0 +1,242 @@+{-# 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.DrS.ListExtensibleSourceServers+-- 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 a list of source servers on a staging account that are+-- extensible, which means that: a. The source server is not already+-- extended into this Account. b. The source server on the Account we’re+-- reading from is not an extension of another source server.+--+-- This operation returns paginated results.+module Amazonka.DrS.ListExtensibleSourceServers+  ( -- * Creating a Request+    ListExtensibleSourceServers (..),+    newListExtensibleSourceServers,++    -- * Request Lenses+    listExtensibleSourceServers_maxResults,+    listExtensibleSourceServers_nextToken,+    listExtensibleSourceServers_stagingAccountID,++    -- * Destructuring the Response+    ListExtensibleSourceServersResponse (..),+    newListExtensibleSourceServersResponse,++    -- * Response Lenses+    listExtensibleSourceServersResponse_items,+    listExtensibleSourceServersResponse_nextToken,+    listExtensibleSourceServersResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListExtensibleSourceServers' smart constructor.+data ListExtensibleSourceServers = ListExtensibleSourceServers'+  { -- | The maximum number of extensible source servers to retrieve.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token of the next extensible source server to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The Id of the staging Account to retrieve extensible source servers+    -- from.+    stagingAccountID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListExtensibleSourceServers' 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', 'listExtensibleSourceServers_maxResults' - The maximum number of extensible source servers to retrieve.+--+-- 'nextToken', 'listExtensibleSourceServers_nextToken' - The token of the next extensible source server to retrieve.+--+-- 'stagingAccountID', 'listExtensibleSourceServers_stagingAccountID' - The Id of the staging Account to retrieve extensible source servers+-- from.+newListExtensibleSourceServers ::+  -- | 'stagingAccountID'+  Prelude.Text ->+  ListExtensibleSourceServers+newListExtensibleSourceServers pStagingAccountID_ =+  ListExtensibleSourceServers'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      stagingAccountID = pStagingAccountID_+    }++-- | The maximum number of extensible source servers to retrieve.+listExtensibleSourceServers_maxResults :: Lens.Lens' ListExtensibleSourceServers (Prelude.Maybe Prelude.Natural)+listExtensibleSourceServers_maxResults = Lens.lens (\ListExtensibleSourceServers' {maxResults} -> maxResults) (\s@ListExtensibleSourceServers' {} a -> s {maxResults = a} :: ListExtensibleSourceServers)++-- | The token of the next extensible source server to retrieve.+listExtensibleSourceServers_nextToken :: Lens.Lens' ListExtensibleSourceServers (Prelude.Maybe Prelude.Text)+listExtensibleSourceServers_nextToken = Lens.lens (\ListExtensibleSourceServers' {nextToken} -> nextToken) (\s@ListExtensibleSourceServers' {} a -> s {nextToken = a} :: ListExtensibleSourceServers)++-- | The Id of the staging Account to retrieve extensible source servers+-- from.+listExtensibleSourceServers_stagingAccountID :: Lens.Lens' ListExtensibleSourceServers Prelude.Text+listExtensibleSourceServers_stagingAccountID = Lens.lens (\ListExtensibleSourceServers' {stagingAccountID} -> stagingAccountID) (\s@ListExtensibleSourceServers' {} a -> s {stagingAccountID = a} :: ListExtensibleSourceServers)++instance Core.AWSPager ListExtensibleSourceServers where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listExtensibleSourceServersResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listExtensibleSourceServersResponse_items+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listExtensibleSourceServers_nextToken+          Lens..~ rs+          Lens.^? listExtensibleSourceServersResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListExtensibleSourceServers where+  type+    AWSResponse ListExtensibleSourceServers =+      ListExtensibleSourceServersResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListExtensibleSourceServersResponse'+            Prelude.<$> (x Data..?> "items" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListExtensibleSourceServers where+  hashWithSalt _salt ListExtensibleSourceServers' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` stagingAccountID++instance Prelude.NFData ListExtensibleSourceServers where+  rnf ListExtensibleSourceServers' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf stagingAccountID++instance Data.ToHeaders ListExtensibleSourceServers where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListExtensibleSourceServers where+  toJSON ListExtensibleSourceServers' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just+              ("stagingAccountID" Data..= stagingAccountID)+          ]+      )++instance Data.ToPath ListExtensibleSourceServers where+  toPath = Prelude.const "/ListExtensibleSourceServers"++instance Data.ToQuery ListExtensibleSourceServers where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListExtensibleSourceServersResponse' smart constructor.+data ListExtensibleSourceServersResponse = ListExtensibleSourceServersResponse'+  { -- | A list of source servers on a staging Account that are extensible.+    items :: Prelude.Maybe [StagingSourceServer],+    -- | The token of the next extensible source server to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListExtensibleSourceServersResponse' 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:+--+-- 'items', 'listExtensibleSourceServersResponse_items' - A list of source servers on a staging Account that are extensible.+--+-- 'nextToken', 'listExtensibleSourceServersResponse_nextToken' - The token of the next extensible source server to retrieve.+--+-- 'httpStatus', 'listExtensibleSourceServersResponse_httpStatus' - The response's http status code.+newListExtensibleSourceServersResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListExtensibleSourceServersResponse+newListExtensibleSourceServersResponse pHttpStatus_ =+  ListExtensibleSourceServersResponse'+    { items =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of source servers on a staging Account that are extensible.+listExtensibleSourceServersResponse_items :: Lens.Lens' ListExtensibleSourceServersResponse (Prelude.Maybe [StagingSourceServer])+listExtensibleSourceServersResponse_items = Lens.lens (\ListExtensibleSourceServersResponse' {items} -> items) (\s@ListExtensibleSourceServersResponse' {} a -> s {items = a} :: ListExtensibleSourceServersResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token of the next extensible source server to retrieve.+listExtensibleSourceServersResponse_nextToken :: Lens.Lens' ListExtensibleSourceServersResponse (Prelude.Maybe Prelude.Text)+listExtensibleSourceServersResponse_nextToken = Lens.lens (\ListExtensibleSourceServersResponse' {nextToken} -> nextToken) (\s@ListExtensibleSourceServersResponse' {} a -> s {nextToken = a} :: ListExtensibleSourceServersResponse)++-- | The response's http status code.+listExtensibleSourceServersResponse_httpStatus :: Lens.Lens' ListExtensibleSourceServersResponse Prelude.Int+listExtensibleSourceServersResponse_httpStatus = Lens.lens (\ListExtensibleSourceServersResponse' {httpStatus} -> httpStatus) (\s@ListExtensibleSourceServersResponse' {} a -> s {httpStatus = a} :: ListExtensibleSourceServersResponse)++instance+  Prelude.NFData+    ListExtensibleSourceServersResponse+  where+  rnf ListExtensibleSourceServersResponse' {..} =+    Prelude.rnf items+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/ListStagingAccounts.hs view
@@ -0,0 +1,212 @@+{-# 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.DrS.ListStagingAccounts+-- 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 an array of staging accounts for existing extended source+-- servers.+--+-- This operation returns paginated results.+module Amazonka.DrS.ListStagingAccounts+  ( -- * Creating a Request+    ListStagingAccounts (..),+    newListStagingAccounts,++    -- * Request Lenses+    listStagingAccounts_maxResults,+    listStagingAccounts_nextToken,++    -- * Destructuring the Response+    ListStagingAccountsResponse (..),+    newListStagingAccountsResponse,++    -- * Response Lenses+    listStagingAccountsResponse_accounts,+    listStagingAccountsResponse_nextToken,+    listStagingAccountsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListStagingAccounts' smart constructor.+data ListStagingAccounts = ListStagingAccounts'+  { -- | The maximum number of staging Accounts to retrieve.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token of the next staging Account to retrieve.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListStagingAccounts' 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', 'listStagingAccounts_maxResults' - The maximum number of staging Accounts to retrieve.+--+-- 'nextToken', 'listStagingAccounts_nextToken' - The token of the next staging Account to retrieve.+newListStagingAccounts ::+  ListStagingAccounts+newListStagingAccounts =+  ListStagingAccounts'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of staging Accounts to retrieve.+listStagingAccounts_maxResults :: Lens.Lens' ListStagingAccounts (Prelude.Maybe Prelude.Natural)+listStagingAccounts_maxResults = Lens.lens (\ListStagingAccounts' {maxResults} -> maxResults) (\s@ListStagingAccounts' {} a -> s {maxResults = a} :: ListStagingAccounts)++-- | The token of the next staging Account to retrieve.+listStagingAccounts_nextToken :: Lens.Lens' ListStagingAccounts (Prelude.Maybe Prelude.Text)+listStagingAccounts_nextToken = Lens.lens (\ListStagingAccounts' {nextToken} -> nextToken) (\s@ListStagingAccounts' {} a -> s {nextToken = a} :: ListStagingAccounts)++instance Core.AWSPager ListStagingAccounts where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listStagingAccountsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listStagingAccountsResponse_accounts+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listStagingAccounts_nextToken+          Lens..~ rs+          Lens.^? listStagingAccountsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListStagingAccounts where+  type+    AWSResponse ListStagingAccounts =+      ListStagingAccountsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListStagingAccountsResponse'+            Prelude.<$> (x Data..?> "accounts" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListStagingAccounts where+  hashWithSalt _salt ListStagingAccounts' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListStagingAccounts where+  rnf ListStagingAccounts' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListStagingAccounts where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListStagingAccounts where+  toPath = Prelude.const "/ListStagingAccounts"++instance Data.ToQuery ListStagingAccounts where+  toQuery ListStagingAccounts' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListStagingAccountsResponse' smart constructor.+data ListStagingAccountsResponse = ListStagingAccountsResponse'+  { -- | An array of staging AWS Accounts.+    accounts :: Prelude.Maybe [Account],+    -- | The token of the next staging Account to retrieve.+    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 'ListStagingAccountsResponse' 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:+--+-- 'accounts', 'listStagingAccountsResponse_accounts' - An array of staging AWS Accounts.+--+-- 'nextToken', 'listStagingAccountsResponse_nextToken' - The token of the next staging Account to retrieve.+--+-- 'httpStatus', 'listStagingAccountsResponse_httpStatus' - The response's http status code.+newListStagingAccountsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListStagingAccountsResponse+newListStagingAccountsResponse pHttpStatus_ =+  ListStagingAccountsResponse'+    { accounts =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array of staging AWS Accounts.+listStagingAccountsResponse_accounts :: Lens.Lens' ListStagingAccountsResponse (Prelude.Maybe [Account])+listStagingAccountsResponse_accounts = Lens.lens (\ListStagingAccountsResponse' {accounts} -> accounts) (\s@ListStagingAccountsResponse' {} a -> s {accounts = a} :: ListStagingAccountsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token of the next staging Account to retrieve.+listStagingAccountsResponse_nextToken :: Lens.Lens' ListStagingAccountsResponse (Prelude.Maybe Prelude.Text)+listStagingAccountsResponse_nextToken = Lens.lens (\ListStagingAccountsResponse' {nextToken} -> nextToken) (\s@ListStagingAccountsResponse' {} a -> s {nextToken = a} :: ListStagingAccountsResponse)++-- | The response's http status code.+listStagingAccountsResponse_httpStatus :: Lens.Lens' ListStagingAccountsResponse Prelude.Int+listStagingAccountsResponse_httpStatus = Lens.lens (\ListStagingAccountsResponse' {httpStatus} -> httpStatus) (\s@ListStagingAccountsResponse' {} a -> s {httpStatus = a} :: ListStagingAccountsResponse)++instance Prelude.NFData ListStagingAccountsResponse where+  rnf ListStagingAccountsResponse' {..} =+    Prelude.rnf accounts+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/ListTagsForResource.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.DrS.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 all tags for your Elastic Disaster Recovery resources.+module Amazonka.DrS.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.DrS.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 ARN of the resource whose tags should be returned.+    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 ARN of the resource whose tags should be returned.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The ARN of the resource whose tags should be returned.+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 of the requested resource.+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, 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 of the requested 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 of the requested 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 (Data._Sensitive Prelude.. 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/DrS/RetryDataReplication.hs view
@@ -0,0 +1,133 @@+{-# 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.DrS.RetryDataReplication+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Causes the data replication initiation sequence to begin immediately+-- upon next Handshake for the specified Source Server ID, regardless of+-- when the previous initiation started. This command will work only if the+-- Source Server is stalled or is in a DISCONNECTED or STOPPED state.+module Amazonka.DrS.RetryDataReplication+  ( -- * Creating a Request+    RetryDataReplication (..),+    newRetryDataReplication,++    -- * Request Lenses+    retryDataReplication_sourceServerID,++    -- * Destructuring the Response+    SourceServer (..),+    newSourceServer,++    -- * Response Lenses+    sourceServer_arn,+    sourceServer_dataReplicationInfo,+    sourceServer_lastLaunchResult,+    sourceServer_lifeCycle,+    sourceServer_recoveryInstanceId,+    sourceServer_replicationDirection,+    sourceServer_reversedDirectionSourceServerArn,+    sourceServer_sourceCloudProperties,+    sourceServer_sourceProperties,+    sourceServer_sourceServerID,+    sourceServer_stagingArea,+    sourceServer_tags,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newRetryDataReplication' smart constructor.+data RetryDataReplication = RetryDataReplication'+  { -- | The ID of the Source Server whose data replication should be retried.+    sourceServerID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RetryDataReplication' 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:+--+-- 'sourceServerID', 'retryDataReplication_sourceServerID' - The ID of the Source Server whose data replication should be retried.+newRetryDataReplication ::+  -- | 'sourceServerID'+  Prelude.Text ->+  RetryDataReplication+newRetryDataReplication pSourceServerID_ =+  RetryDataReplication'+    { sourceServerID =+        pSourceServerID_+    }++-- | The ID of the Source Server whose data replication should be retried.+retryDataReplication_sourceServerID :: Lens.Lens' RetryDataReplication Prelude.Text+retryDataReplication_sourceServerID = Lens.lens (\RetryDataReplication' {sourceServerID} -> sourceServerID) (\s@RetryDataReplication' {} a -> s {sourceServerID = a} :: RetryDataReplication)++instance Core.AWSRequest RetryDataReplication where+  type AWSResponse RetryDataReplication = SourceServer+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      (\s h x -> Data.eitherParseJSON x)++instance Prelude.Hashable RetryDataReplication where+  hashWithSalt _salt RetryDataReplication' {..} =+    _salt `Prelude.hashWithSalt` sourceServerID++instance Prelude.NFData RetryDataReplication where+  rnf RetryDataReplication' {..} =+    Prelude.rnf sourceServerID++instance Data.ToHeaders RetryDataReplication where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON RetryDataReplication where+  toJSON RetryDataReplication' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("sourceServerID" Data..= sourceServerID)+          ]+      )++instance Data.ToPath RetryDataReplication where+  toPath = Prelude.const "/RetryDataReplication"++instance Data.ToQuery RetryDataReplication where+  toQuery = Prelude.const Prelude.mempty
+ gen/Amazonka/DrS/ReverseReplication.hs view
@@ -0,0 +1,177 @@+{-# 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.DrS.ReverseReplication+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Start replication to origin \/ target region - applies only to protected+-- instances that originated in EC2. For recovery instances on target+-- region - starts replication back to origin region. For failback+-- instances on origin region - starts replication to target region to+-- re-protect them.+module Amazonka.DrS.ReverseReplication+  ( -- * Creating a Request+    ReverseReplication (..),+    newReverseReplication,++    -- * Request Lenses+    reverseReplication_recoveryInstanceID,++    -- * Destructuring the Response+    ReverseReplicationResponse (..),+    newReverseReplicationResponse,++    -- * Response Lenses+    reverseReplicationResponse_reversedDirectionSourceServerArn,+    reverseReplicationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newReverseReplication' smart constructor.+data ReverseReplication = ReverseReplication'+  { -- | The ID of the Recovery Instance that we want to reverse the replication+    -- for.+    recoveryInstanceID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReverseReplication' 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:+--+-- 'recoveryInstanceID', 'reverseReplication_recoveryInstanceID' - The ID of the Recovery Instance that we want to reverse the replication+-- for.+newReverseReplication ::+  -- | 'recoveryInstanceID'+  Prelude.Text ->+  ReverseReplication+newReverseReplication pRecoveryInstanceID_ =+  ReverseReplication'+    { recoveryInstanceID =+        pRecoveryInstanceID_+    }++-- | The ID of the Recovery Instance that we want to reverse the replication+-- for.+reverseReplication_recoveryInstanceID :: Lens.Lens' ReverseReplication Prelude.Text+reverseReplication_recoveryInstanceID = Lens.lens (\ReverseReplication' {recoveryInstanceID} -> recoveryInstanceID) (\s@ReverseReplication' {} a -> s {recoveryInstanceID = a} :: ReverseReplication)++instance Core.AWSRequest ReverseReplication where+  type+    AWSResponse ReverseReplication =+      ReverseReplicationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ReverseReplicationResponse'+            Prelude.<$> (x Data..?> "reversedDirectionSourceServerArn")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ReverseReplication where+  hashWithSalt _salt ReverseReplication' {..} =+    _salt `Prelude.hashWithSalt` recoveryInstanceID++instance Prelude.NFData ReverseReplication where+  rnf ReverseReplication' {..} =+    Prelude.rnf recoveryInstanceID++instance Data.ToHeaders ReverseReplication where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ReverseReplication where+  toJSON ReverseReplication' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("recoveryInstanceID" Data..= recoveryInstanceID)+          ]+      )++instance Data.ToPath ReverseReplication where+  toPath = Prelude.const "/ReverseReplication"++instance Data.ToQuery ReverseReplication where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newReverseReplicationResponse' smart constructor.+data ReverseReplicationResponse = ReverseReplicationResponse'+  { -- | ARN of created SourceServer.+    reversedDirectionSourceServerArn :: 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 'ReverseReplicationResponse' 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:+--+-- 'reversedDirectionSourceServerArn', 'reverseReplicationResponse_reversedDirectionSourceServerArn' - ARN of created SourceServer.+--+-- 'httpStatus', 'reverseReplicationResponse_httpStatus' - The response's http status code.+newReverseReplicationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ReverseReplicationResponse+newReverseReplicationResponse pHttpStatus_ =+  ReverseReplicationResponse'+    { reversedDirectionSourceServerArn =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | ARN of created SourceServer.+reverseReplicationResponse_reversedDirectionSourceServerArn :: Lens.Lens' ReverseReplicationResponse (Prelude.Maybe Prelude.Text)+reverseReplicationResponse_reversedDirectionSourceServerArn = Lens.lens (\ReverseReplicationResponse' {reversedDirectionSourceServerArn} -> reversedDirectionSourceServerArn) (\s@ReverseReplicationResponse' {} a -> s {reversedDirectionSourceServerArn = a} :: ReverseReplicationResponse)++-- | The response's http status code.+reverseReplicationResponse_httpStatus :: Lens.Lens' ReverseReplicationResponse Prelude.Int+reverseReplicationResponse_httpStatus = Lens.lens (\ReverseReplicationResponse' {httpStatus} -> httpStatus) (\s@ReverseReplicationResponse' {} a -> s {httpStatus = a} :: ReverseReplicationResponse)++instance Prelude.NFData ReverseReplicationResponse where+  rnf ReverseReplicationResponse' {..} =+    Prelude.rnf reversedDirectionSourceServerArn+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/StartFailbackLaunch.hs view
@@ -0,0 +1,189 @@+{-# 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.DrS.StartFailbackLaunch+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Initiates a Job for launching the machine that is being failed back to+-- from the specified Recovery Instance. This will run conversion on the+-- failback client and will reboot your machine, thus completing the+-- failback process.+module Amazonka.DrS.StartFailbackLaunch+  ( -- * Creating a Request+    StartFailbackLaunch (..),+    newStartFailbackLaunch,++    -- * Request Lenses+    startFailbackLaunch_tags,+    startFailbackLaunch_recoveryInstanceIDs,++    -- * Destructuring the Response+    StartFailbackLaunchResponse (..),+    newStartFailbackLaunchResponse,++    -- * Response Lenses+    startFailbackLaunchResponse_job,+    startFailbackLaunchResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStartFailbackLaunch' smart constructor.+data StartFailbackLaunch = StartFailbackLaunch'+  { -- | The tags to be associated with the failback launch Job.+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | The IDs of the Recovery Instance whose failback launch we want to+    -- request.+    recoveryInstanceIDs :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartFailbackLaunch' 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', 'startFailbackLaunch_tags' - The tags to be associated with the failback launch Job.+--+-- 'recoveryInstanceIDs', 'startFailbackLaunch_recoveryInstanceIDs' - The IDs of the Recovery Instance whose failback launch we want to+-- request.+newStartFailbackLaunch ::+  -- | 'recoveryInstanceIDs'+  Prelude.NonEmpty Prelude.Text ->+  StartFailbackLaunch+newStartFailbackLaunch pRecoveryInstanceIDs_ =+  StartFailbackLaunch'+    { tags = Prelude.Nothing,+      recoveryInstanceIDs =+        Lens.coerced Lens.# pRecoveryInstanceIDs_+    }++-- | The tags to be associated with the failback launch Job.+startFailbackLaunch_tags :: Lens.Lens' StartFailbackLaunch (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+startFailbackLaunch_tags = Lens.lens (\StartFailbackLaunch' {tags} -> tags) (\s@StartFailbackLaunch' {} a -> s {tags = a} :: StartFailbackLaunch) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | The IDs of the Recovery Instance whose failback launch we want to+-- request.+startFailbackLaunch_recoveryInstanceIDs :: Lens.Lens' StartFailbackLaunch (Prelude.NonEmpty Prelude.Text)+startFailbackLaunch_recoveryInstanceIDs = Lens.lens (\StartFailbackLaunch' {recoveryInstanceIDs} -> recoveryInstanceIDs) (\s@StartFailbackLaunch' {} a -> s {recoveryInstanceIDs = a} :: StartFailbackLaunch) Prelude.. Lens.coerced++instance Core.AWSRequest StartFailbackLaunch where+  type+    AWSResponse StartFailbackLaunch =+      StartFailbackLaunchResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartFailbackLaunchResponse'+            Prelude.<$> (x Data..?> "job")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartFailbackLaunch where+  hashWithSalt _salt StartFailbackLaunch' {..} =+    _salt+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` recoveryInstanceIDs++instance Prelude.NFData StartFailbackLaunch where+  rnf StartFailbackLaunch' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf recoveryInstanceIDs++instance Data.ToHeaders StartFailbackLaunch where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartFailbackLaunch where+  toJSON StartFailbackLaunch' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("recoveryInstanceIDs" Data..= recoveryInstanceIDs)+          ]+      )++instance Data.ToPath StartFailbackLaunch where+  toPath = Prelude.const "/StartFailbackLaunch"++instance Data.ToQuery StartFailbackLaunch where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartFailbackLaunchResponse' smart constructor.+data StartFailbackLaunchResponse = StartFailbackLaunchResponse'+  { -- | The failback launch Job.+    job :: Prelude.Maybe Job,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartFailbackLaunchResponse' 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:+--+-- 'job', 'startFailbackLaunchResponse_job' - The failback launch Job.+--+-- 'httpStatus', 'startFailbackLaunchResponse_httpStatus' - The response's http status code.+newStartFailbackLaunchResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartFailbackLaunchResponse+newStartFailbackLaunchResponse pHttpStatus_ =+  StartFailbackLaunchResponse'+    { job = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The failback launch Job.+startFailbackLaunchResponse_job :: Lens.Lens' StartFailbackLaunchResponse (Prelude.Maybe Job)+startFailbackLaunchResponse_job = Lens.lens (\StartFailbackLaunchResponse' {job} -> job) (\s@StartFailbackLaunchResponse' {} a -> s {job = a} :: StartFailbackLaunchResponse)++-- | The response's http status code.+startFailbackLaunchResponse_httpStatus :: Lens.Lens' StartFailbackLaunchResponse Prelude.Int+startFailbackLaunchResponse_httpStatus = Lens.lens (\StartFailbackLaunchResponse' {httpStatus} -> httpStatus) (\s@StartFailbackLaunchResponse' {} a -> s {httpStatus = a} :: StartFailbackLaunchResponse)++instance Prelude.NFData StartFailbackLaunchResponse where+  rnf StartFailbackLaunchResponse' {..} =+    Prelude.rnf job+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/StartRecovery.hs view
@@ -0,0 +1,197 @@+{-# 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.DrS.StartRecovery+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Launches Recovery Instances for the specified Source Servers. For each+-- Source Server you may choose a point in time snapshot to launch from, or+-- use an on demand snapshot.+module Amazonka.DrS.StartRecovery+  ( -- * Creating a Request+    StartRecovery (..),+    newStartRecovery,++    -- * Request Lenses+    startRecovery_isDrill,+    startRecovery_tags,+    startRecovery_sourceServers,++    -- * Destructuring the Response+    StartRecoveryResponse (..),+    newStartRecoveryResponse,++    -- * Response Lenses+    startRecoveryResponse_job,+    startRecoveryResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStartRecovery' smart constructor.+data StartRecovery = StartRecovery'+  { -- | Whether this Source Server Recovery operation is a drill or not.+    isDrill :: Prelude.Maybe Prelude.Bool,+    -- | The tags to be associated with the Recovery Job.+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | The Source Servers that we want to start a Recovery Job for.+    sourceServers :: Prelude.NonEmpty StartRecoveryRequestSourceServer+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartRecovery' 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:+--+-- 'isDrill', 'startRecovery_isDrill' - Whether this Source Server Recovery operation is a drill or not.+--+-- 'tags', 'startRecovery_tags' - The tags to be associated with the Recovery Job.+--+-- 'sourceServers', 'startRecovery_sourceServers' - The Source Servers that we want to start a Recovery Job for.+newStartRecovery ::+  -- | 'sourceServers'+  Prelude.NonEmpty StartRecoveryRequestSourceServer ->+  StartRecovery+newStartRecovery pSourceServers_ =+  StartRecovery'+    { isDrill = Prelude.Nothing,+      tags = Prelude.Nothing,+      sourceServers = Lens.coerced Lens.# pSourceServers_+    }++-- | Whether this Source Server Recovery operation is a drill or not.+startRecovery_isDrill :: Lens.Lens' StartRecovery (Prelude.Maybe Prelude.Bool)+startRecovery_isDrill = Lens.lens (\StartRecovery' {isDrill} -> isDrill) (\s@StartRecovery' {} a -> s {isDrill = a} :: StartRecovery)++-- | The tags to be associated with the Recovery Job.+startRecovery_tags :: Lens.Lens' StartRecovery (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+startRecovery_tags = Lens.lens (\StartRecovery' {tags} -> tags) (\s@StartRecovery' {} a -> s {tags = a} :: StartRecovery) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | The Source Servers that we want to start a Recovery Job for.+startRecovery_sourceServers :: Lens.Lens' StartRecovery (Prelude.NonEmpty StartRecoveryRequestSourceServer)+startRecovery_sourceServers = Lens.lens (\StartRecovery' {sourceServers} -> sourceServers) (\s@StartRecovery' {} a -> s {sourceServers = a} :: StartRecovery) Prelude.. Lens.coerced++instance Core.AWSRequest StartRecovery where+  type+    AWSResponse StartRecovery =+      StartRecoveryResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartRecoveryResponse'+            Prelude.<$> (x Data..?> "job")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartRecovery where+  hashWithSalt _salt StartRecovery' {..} =+    _salt+      `Prelude.hashWithSalt` isDrill+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` sourceServers++instance Prelude.NFData StartRecovery where+  rnf StartRecovery' {..} =+    Prelude.rnf isDrill+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf sourceServers++instance Data.ToHeaders StartRecovery where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartRecovery where+  toJSON StartRecovery' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("isDrill" Data..=) Prelude.<$> isDrill,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("sourceServers" Data..= sourceServers)+          ]+      )++instance Data.ToPath StartRecovery where+  toPath = Prelude.const "/StartRecovery"++instance Data.ToQuery StartRecovery where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartRecoveryResponse' smart constructor.+data StartRecoveryResponse = StartRecoveryResponse'+  { -- | The Recovery Job.+    job :: Prelude.Maybe Job,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartRecoveryResponse' 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:+--+-- 'job', 'startRecoveryResponse_job' - The Recovery Job.+--+-- 'httpStatus', 'startRecoveryResponse_httpStatus' - The response's http status code.+newStartRecoveryResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartRecoveryResponse+newStartRecoveryResponse pHttpStatus_ =+  StartRecoveryResponse'+    { job = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Recovery Job.+startRecoveryResponse_job :: Lens.Lens' StartRecoveryResponse (Prelude.Maybe Job)+startRecoveryResponse_job = Lens.lens (\StartRecoveryResponse' {job} -> job) (\s@StartRecoveryResponse' {} a -> s {job = a} :: StartRecoveryResponse)++-- | The response's http status code.+startRecoveryResponse_httpStatus :: Lens.Lens' StartRecoveryResponse Prelude.Int+startRecoveryResponse_httpStatus = Lens.lens (\StartRecoveryResponse' {httpStatus} -> httpStatus) (\s@StartRecoveryResponse' {} a -> s {httpStatus = a} :: StartRecoveryResponse)++instance Prelude.NFData StartRecoveryResponse where+  rnf StartRecoveryResponse' {..} =+    Prelude.rnf job+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/StartReplication.hs view
@@ -0,0 +1,171 @@+{-# 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.DrS.StartReplication+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Starts replication for a stopped Source Server. This action would make+-- the Source Server protected again and restart billing for it.+module Amazonka.DrS.StartReplication+  ( -- * Creating a Request+    StartReplication (..),+    newStartReplication,++    -- * Request Lenses+    startReplication_sourceServerID,++    -- * Destructuring the Response+    StartReplicationResponse (..),+    newStartReplicationResponse,++    -- * Response Lenses+    startReplicationResponse_sourceServer,+    startReplicationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStartReplication' smart constructor.+data StartReplication = StartReplication'+  { -- | The ID of the Source Server to start replication for.+    sourceServerID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartReplication' 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:+--+-- 'sourceServerID', 'startReplication_sourceServerID' - The ID of the Source Server to start replication for.+newStartReplication ::+  -- | 'sourceServerID'+  Prelude.Text ->+  StartReplication+newStartReplication pSourceServerID_ =+  StartReplication'+    { sourceServerID =+        pSourceServerID_+    }++-- | The ID of the Source Server to start replication for.+startReplication_sourceServerID :: Lens.Lens' StartReplication Prelude.Text+startReplication_sourceServerID = Lens.lens (\StartReplication' {sourceServerID} -> sourceServerID) (\s@StartReplication' {} a -> s {sourceServerID = a} :: StartReplication)++instance Core.AWSRequest StartReplication where+  type+    AWSResponse StartReplication =+      StartReplicationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartReplicationResponse'+            Prelude.<$> (x Data..?> "sourceServer")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartReplication where+  hashWithSalt _salt StartReplication' {..} =+    _salt `Prelude.hashWithSalt` sourceServerID++instance Prelude.NFData StartReplication where+  rnf StartReplication' {..} =+    Prelude.rnf sourceServerID++instance Data.ToHeaders StartReplication where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartReplication where+  toJSON StartReplication' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("sourceServerID" Data..= sourceServerID)+          ]+      )++instance Data.ToPath StartReplication where+  toPath = Prelude.const "/StartReplication"++instance Data.ToQuery StartReplication where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartReplicationResponse' smart constructor.+data StartReplicationResponse = StartReplicationResponse'+  { -- | The Source Server that this action was targeted on.+    sourceServer :: Prelude.Maybe SourceServer,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartReplicationResponse' 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:+--+-- 'sourceServer', 'startReplicationResponse_sourceServer' - The Source Server that this action was targeted on.+--+-- 'httpStatus', 'startReplicationResponse_httpStatus' - The response's http status code.+newStartReplicationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartReplicationResponse+newStartReplicationResponse pHttpStatus_ =+  StartReplicationResponse'+    { sourceServer =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Source Server that this action was targeted on.+startReplicationResponse_sourceServer :: Lens.Lens' StartReplicationResponse (Prelude.Maybe SourceServer)+startReplicationResponse_sourceServer = Lens.lens (\StartReplicationResponse' {sourceServer} -> sourceServer) (\s@StartReplicationResponse' {} a -> s {sourceServer = a} :: StartReplicationResponse)++-- | The response's http status code.+startReplicationResponse_httpStatus :: Lens.Lens' StartReplicationResponse Prelude.Int+startReplicationResponse_httpStatus = Lens.lens (\StartReplicationResponse' {httpStatus} -> httpStatus) (\s@StartReplicationResponse' {} a -> s {httpStatus = a} :: StartReplicationResponse)++instance Prelude.NFData StartReplicationResponse where+  rnf StartReplicationResponse' {..} =+    Prelude.rnf sourceServer+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/StopFailback.hs view
@@ -0,0 +1,133 @@+{-# 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.DrS.StopFailback+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Stops the failback process for a specified Recovery Instance. This+-- changes the Failback State of the Recovery Instance back to+-- FAILBACK_NOT_STARTED.+module Amazonka.DrS.StopFailback+  ( -- * Creating a Request+    StopFailback (..),+    newStopFailback,++    -- * Request Lenses+    stopFailback_recoveryInstanceID,++    -- * Destructuring the Response+    StopFailbackResponse (..),+    newStopFailbackResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStopFailback' smart constructor.+data StopFailback = StopFailback'+  { -- | The ID of the Recovery Instance we want to stop failback for.+    recoveryInstanceID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StopFailback' 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:+--+-- 'recoveryInstanceID', 'stopFailback_recoveryInstanceID' - The ID of the Recovery Instance we want to stop failback for.+newStopFailback ::+  -- | 'recoveryInstanceID'+  Prelude.Text ->+  StopFailback+newStopFailback pRecoveryInstanceID_ =+  StopFailback'+    { recoveryInstanceID =+        pRecoveryInstanceID_+    }++-- | The ID of the Recovery Instance we want to stop failback for.+stopFailback_recoveryInstanceID :: Lens.Lens' StopFailback Prelude.Text+stopFailback_recoveryInstanceID = Lens.lens (\StopFailback' {recoveryInstanceID} -> recoveryInstanceID) (\s@StopFailback' {} a -> s {recoveryInstanceID = a} :: StopFailback)++instance Core.AWSRequest StopFailback where+  type AWSResponse StopFailback = StopFailbackResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response = Response.receiveNull StopFailbackResponse'++instance Prelude.Hashable StopFailback where+  hashWithSalt _salt StopFailback' {..} =+    _salt `Prelude.hashWithSalt` recoveryInstanceID++instance Prelude.NFData StopFailback where+  rnf StopFailback' {..} =+    Prelude.rnf recoveryInstanceID++instance Data.ToHeaders StopFailback where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StopFailback where+  toJSON StopFailback' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("recoveryInstanceID" Data..= recoveryInstanceID)+          ]+      )++instance Data.ToPath StopFailback where+  toPath = Prelude.const "/StopFailback"++instance Data.ToQuery StopFailback where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStopFailbackResponse' smart constructor.+data StopFailbackResponse = StopFailbackResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StopFailbackResponse' 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.+newStopFailbackResponse ::+  StopFailbackResponse+newStopFailbackResponse = StopFailbackResponse'++instance Prelude.NFData StopFailbackResponse where+  rnf _ = ()
+ gen/Amazonka/DrS/StopReplication.hs view
@@ -0,0 +1,168 @@+{-# 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.DrS.StopReplication+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Stops replication for a Source Server. This action would make the Source+-- Server unprotected, delete its existing snapshots and stop billing for+-- it.+module Amazonka.DrS.StopReplication+  ( -- * Creating a Request+    StopReplication (..),+    newStopReplication,++    -- * Request Lenses+    stopReplication_sourceServerID,++    -- * Destructuring the Response+    StopReplicationResponse (..),+    newStopReplicationResponse,++    -- * Response Lenses+    stopReplicationResponse_sourceServer,+    stopReplicationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStopReplication' smart constructor.+data StopReplication = StopReplication'+  { -- | The ID of the Source Server to stop replication for.+    sourceServerID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StopReplication' 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:+--+-- 'sourceServerID', 'stopReplication_sourceServerID' - The ID of the Source Server to stop replication for.+newStopReplication ::+  -- | 'sourceServerID'+  Prelude.Text ->+  StopReplication+newStopReplication pSourceServerID_ =+  StopReplication' {sourceServerID = pSourceServerID_}++-- | The ID of the Source Server to stop replication for.+stopReplication_sourceServerID :: Lens.Lens' StopReplication Prelude.Text+stopReplication_sourceServerID = Lens.lens (\StopReplication' {sourceServerID} -> sourceServerID) (\s@StopReplication' {} a -> s {sourceServerID = a} :: StopReplication)++instance Core.AWSRequest StopReplication where+  type+    AWSResponse StopReplication =+      StopReplicationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StopReplicationResponse'+            Prelude.<$> (x Data..?> "sourceServer")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StopReplication where+  hashWithSalt _salt StopReplication' {..} =+    _salt `Prelude.hashWithSalt` sourceServerID++instance Prelude.NFData StopReplication where+  rnf StopReplication' {..} = Prelude.rnf sourceServerID++instance Data.ToHeaders StopReplication where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StopReplication where+  toJSON StopReplication' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("sourceServerID" Data..= sourceServerID)+          ]+      )++instance Data.ToPath StopReplication where+  toPath = Prelude.const "/StopReplication"++instance Data.ToQuery StopReplication where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStopReplicationResponse' smart constructor.+data StopReplicationResponse = StopReplicationResponse'+  { -- | The Source Server that this action was targeted on.+    sourceServer :: Prelude.Maybe SourceServer,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StopReplicationResponse' 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:+--+-- 'sourceServer', 'stopReplicationResponse_sourceServer' - The Source Server that this action was targeted on.+--+-- 'httpStatus', 'stopReplicationResponse_httpStatus' - The response's http status code.+newStopReplicationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StopReplicationResponse+newStopReplicationResponse pHttpStatus_ =+  StopReplicationResponse'+    { sourceServer =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Source Server that this action was targeted on.+stopReplicationResponse_sourceServer :: Lens.Lens' StopReplicationResponse (Prelude.Maybe SourceServer)+stopReplicationResponse_sourceServer = Lens.lens (\StopReplicationResponse' {sourceServer} -> sourceServer) (\s@StopReplicationResponse' {} a -> s {sourceServer = a} :: StopReplicationResponse)++-- | The response's http status code.+stopReplicationResponse_httpStatus :: Lens.Lens' StopReplicationResponse Prelude.Int+stopReplicationResponse_httpStatus = Lens.lens (\StopReplicationResponse' {httpStatus} -> httpStatus) (\s@StopReplicationResponse' {} a -> s {httpStatus = a} :: StopReplicationResponse)++instance Prelude.NFData StopReplicationResponse where+  rnf StopReplicationResponse' {..} =+    Prelude.rnf sourceServer+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/TagResource.hs view
@@ -0,0 +1,146 @@+{-# 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.DrS.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)+--+-- Adds or overwrites only the specified tags for the specified Elastic+-- Disaster Recovery resource or resources. When you specify an existing+-- tag key, the value is overwritten with the new value. Each resource can+-- have a maximum of 50 tags. Each tag consists of a key and optional+-- value.+module Amazonka.DrS.TagResource+  ( -- * Creating a Request+    TagResource (..),+    newTagResource,++    -- * Request Lenses+    tagResource_resourceArn,+    tagResource_tags,++    -- * Destructuring the Response+    TagResourceResponse (..),+    newTagResourceResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.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'+  { -- | ARN of the resource for which tags are to be added or updated.+    resourceArn :: Prelude.Text,+    -- | Array of tags to be added or updated.+    tags :: Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, 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' - ARN of the resource for which tags are to be added or updated.+--+-- 'tags', 'tagResource_tags' - Array of tags to be added or updated.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | ARN of the resource for which tags are to be added or updated.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | Array of tags to be added or updated.+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.. Data._Sensitive Prelude.. Lens.coerced++instance Core.AWSRequest TagResource where+  type AWSResponse TagResource = TagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response = Response.receiveNull TagResourceResponse'++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'+  {+  }+  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.+newTagResourceResponse ::+  TagResourceResponse+newTagResourceResponse = TagResourceResponse'++instance Prelude.NFData TagResourceResponse where+  rnf _ = ()
+ gen/Amazonka/DrS/TerminateRecoveryInstances.hs view
@@ -0,0 +1,175 @@+{-# 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.DrS.TerminateRecoveryInstances+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Initiates a Job for terminating the EC2 resources associated with the+-- specified Recovery Instances, and then will delete the Recovery+-- Instances from the Elastic Disaster Recovery service.+module Amazonka.DrS.TerminateRecoveryInstances+  ( -- * Creating a Request+    TerminateRecoveryInstances (..),+    newTerminateRecoveryInstances,++    -- * Request Lenses+    terminateRecoveryInstances_recoveryInstanceIDs,++    -- * Destructuring the Response+    TerminateRecoveryInstancesResponse (..),+    newTerminateRecoveryInstancesResponse,++    -- * Response Lenses+    terminateRecoveryInstancesResponse_job,+    terminateRecoveryInstancesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newTerminateRecoveryInstances' smart constructor.+data TerminateRecoveryInstances = TerminateRecoveryInstances'+  { -- | The IDs of the Recovery Instances that should be terminated.+    recoveryInstanceIDs :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TerminateRecoveryInstances' 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:+--+-- 'recoveryInstanceIDs', 'terminateRecoveryInstances_recoveryInstanceIDs' - The IDs of the Recovery Instances that should be terminated.+newTerminateRecoveryInstances ::+  -- | 'recoveryInstanceIDs'+  Prelude.NonEmpty Prelude.Text ->+  TerminateRecoveryInstances+newTerminateRecoveryInstances pRecoveryInstanceIDs_ =+  TerminateRecoveryInstances'+    { recoveryInstanceIDs =+        Lens.coerced Lens.# pRecoveryInstanceIDs_+    }++-- | The IDs of the Recovery Instances that should be terminated.+terminateRecoveryInstances_recoveryInstanceIDs :: Lens.Lens' TerminateRecoveryInstances (Prelude.NonEmpty Prelude.Text)+terminateRecoveryInstances_recoveryInstanceIDs = Lens.lens (\TerminateRecoveryInstances' {recoveryInstanceIDs} -> recoveryInstanceIDs) (\s@TerminateRecoveryInstances' {} a -> s {recoveryInstanceIDs = a} :: TerminateRecoveryInstances) Prelude.. Lens.coerced++instance Core.AWSRequest TerminateRecoveryInstances where+  type+    AWSResponse TerminateRecoveryInstances =+      TerminateRecoveryInstancesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          TerminateRecoveryInstancesResponse'+            Prelude.<$> (x Data..?> "job")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable TerminateRecoveryInstances where+  hashWithSalt _salt TerminateRecoveryInstances' {..} =+    _salt `Prelude.hashWithSalt` recoveryInstanceIDs++instance Prelude.NFData TerminateRecoveryInstances where+  rnf TerminateRecoveryInstances' {..} =+    Prelude.rnf recoveryInstanceIDs++instance Data.ToHeaders TerminateRecoveryInstances where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TerminateRecoveryInstances where+  toJSON TerminateRecoveryInstances' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("recoveryInstanceIDs" Data..= recoveryInstanceIDs)+          ]+      )++instance Data.ToPath TerminateRecoveryInstances where+  toPath = Prelude.const "/TerminateRecoveryInstances"++instance Data.ToQuery TerminateRecoveryInstances where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newTerminateRecoveryInstancesResponse' smart constructor.+data TerminateRecoveryInstancesResponse = TerminateRecoveryInstancesResponse'+  { -- | The Job for terminating the Recovery Instances.+    job :: Prelude.Maybe Job,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TerminateRecoveryInstancesResponse' 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:+--+-- 'job', 'terminateRecoveryInstancesResponse_job' - The Job for terminating the Recovery Instances.+--+-- 'httpStatus', 'terminateRecoveryInstancesResponse_httpStatus' - The response's http status code.+newTerminateRecoveryInstancesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  TerminateRecoveryInstancesResponse+newTerminateRecoveryInstancesResponse pHttpStatus_ =+  TerminateRecoveryInstancesResponse'+    { job =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Job for terminating the Recovery Instances.+terminateRecoveryInstancesResponse_job :: Lens.Lens' TerminateRecoveryInstancesResponse (Prelude.Maybe Job)+terminateRecoveryInstancesResponse_job = Lens.lens (\TerminateRecoveryInstancesResponse' {job} -> job) (\s@TerminateRecoveryInstancesResponse' {} a -> s {job = a} :: TerminateRecoveryInstancesResponse)++-- | The response's http status code.+terminateRecoveryInstancesResponse_httpStatus :: Lens.Lens' TerminateRecoveryInstancesResponse Prelude.Int+terminateRecoveryInstancesResponse_httpStatus = Lens.lens (\TerminateRecoveryInstancesResponse' {httpStatus} -> httpStatus) (\s@TerminateRecoveryInstancesResponse' {} a -> s {httpStatus = a} :: TerminateRecoveryInstancesResponse)++instance+  Prelude.NFData+    TerminateRecoveryInstancesResponse+  where+  rnf TerminateRecoveryInstancesResponse' {..} =+    Prelude.rnf job+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/DrS/Types.hs view
@@ -0,0 +1,727 @@+{-# 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.DrS.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.DrS.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccessDeniedException,+    _ConflictException,+    _InternalServerException,+    _ResourceNotFoundException,+    _ServiceQuotaExceededException,+    _ThrottlingException,+    _UninitializedAccountException,+    _ValidationException,++    -- * DataReplicationErrorString+    DataReplicationErrorString (..),++    -- * DataReplicationInitiationStepName+    DataReplicationInitiationStepName (..),++    -- * DataReplicationInitiationStepStatus+    DataReplicationInitiationStepStatus (..),++    -- * DataReplicationState+    DataReplicationState (..),++    -- * EC2InstanceState+    EC2InstanceState (..),++    -- * ExtensionStatus+    ExtensionStatus (..),++    -- * FailbackLaunchType+    FailbackLaunchType (..),++    -- * FailbackReplicationError+    FailbackReplicationError (..),++    -- * FailbackState+    FailbackState (..),++    -- * InitiatedBy+    InitiatedBy (..),++    -- * JobLogEvent+    JobLogEvent (..),++    -- * JobStatus+    JobStatus (..),++    -- * JobType+    JobType (..),++    -- * LastLaunchResult+    LastLaunchResult (..),++    -- * LastLaunchType+    LastLaunchType (..),++    -- * LaunchDisposition+    LaunchDisposition (..),++    -- * LaunchStatus+    LaunchStatus (..),++    -- * OriginEnvironment+    OriginEnvironment (..),++    -- * PITPolicyRuleUnits+    PITPolicyRuleUnits (..),++    -- * RecoveryInstanceDataReplicationInitiationStepName+    RecoveryInstanceDataReplicationInitiationStepName (..),++    -- * RecoveryInstanceDataReplicationInitiationStepStatus+    RecoveryInstanceDataReplicationInitiationStepStatus (..),++    -- * RecoveryInstanceDataReplicationState+    RecoveryInstanceDataReplicationState (..),++    -- * RecoverySnapshotsOrder+    RecoverySnapshotsOrder (..),++    -- * ReplicationConfigurationDataPlaneRouting+    ReplicationConfigurationDataPlaneRouting (..),++    -- * ReplicationConfigurationDefaultLargeStagingDiskType+    ReplicationConfigurationDefaultLargeStagingDiskType (..),++    -- * ReplicationConfigurationEbsEncryption+    ReplicationConfigurationEbsEncryption (..),++    -- * ReplicationConfigurationReplicatedDiskStagingDiskType+    ReplicationConfigurationReplicatedDiskStagingDiskType (..),++    -- * ReplicationDirection+    ReplicationDirection (..),++    -- * TargetInstanceTypeRightSizingMethod+    TargetInstanceTypeRightSizingMethod (..),++    -- * Account+    Account (..),+    newAccount,+    account_accountID,++    -- * CPU+    CPU (..),+    newCPU,+    cpu_cores,+    cpu_modelName,++    -- * ConversionProperties+    ConversionProperties (..),+    newConversionProperties,+    conversionProperties_dataTimestamp,+    conversionProperties_forceUefi,+    conversionProperties_rootVolumeName,+    conversionProperties_volumeToConversionMap,+    conversionProperties_volumeToVolumeSize,++    -- * DataReplicationError+    DataReplicationError (..),+    newDataReplicationError,+    dataReplicationError_error,+    dataReplicationError_rawError,++    -- * DataReplicationInfo+    DataReplicationInfo (..),+    newDataReplicationInfo,+    dataReplicationInfo_dataReplicationError,+    dataReplicationInfo_dataReplicationInitiation,+    dataReplicationInfo_dataReplicationState,+    dataReplicationInfo_etaDateTime,+    dataReplicationInfo_lagDuration,+    dataReplicationInfo_replicatedDisks,++    -- * DataReplicationInfoReplicatedDisk+    DataReplicationInfoReplicatedDisk (..),+    newDataReplicationInfoReplicatedDisk,+    dataReplicationInfoReplicatedDisk_backloggedStorageBytes,+    dataReplicationInfoReplicatedDisk_deviceName,+    dataReplicationInfoReplicatedDisk_replicatedStorageBytes,+    dataReplicationInfoReplicatedDisk_rescannedStorageBytes,+    dataReplicationInfoReplicatedDisk_totalStorageBytes,++    -- * DataReplicationInitiation+    DataReplicationInitiation (..),+    newDataReplicationInitiation,+    dataReplicationInitiation_nextAttemptDateTime,+    dataReplicationInitiation_startDateTime,+    dataReplicationInitiation_steps,++    -- * DataReplicationInitiationStep+    DataReplicationInitiationStep (..),+    newDataReplicationInitiationStep,+    dataReplicationInitiationStep_name,+    dataReplicationInitiationStep_status,++    -- * DescribeJobsRequestFilters+    DescribeJobsRequestFilters (..),+    newDescribeJobsRequestFilters,+    describeJobsRequestFilters_fromDate,+    describeJobsRequestFilters_jobIDs,+    describeJobsRequestFilters_toDate,++    -- * DescribeRecoveryInstancesRequestFilters+    DescribeRecoveryInstancesRequestFilters (..),+    newDescribeRecoveryInstancesRequestFilters,+    describeRecoveryInstancesRequestFilters_recoveryInstanceIDs,+    describeRecoveryInstancesRequestFilters_sourceServerIDs,++    -- * DescribeRecoverySnapshotsRequestFilters+    DescribeRecoverySnapshotsRequestFilters (..),+    newDescribeRecoverySnapshotsRequestFilters,+    describeRecoverySnapshotsRequestFilters_fromDateTime,+    describeRecoverySnapshotsRequestFilters_toDateTime,++    -- * DescribeSourceServersRequestFilters+    DescribeSourceServersRequestFilters (..),+    newDescribeSourceServersRequestFilters,+    describeSourceServersRequestFilters_hardwareId,+    describeSourceServersRequestFilters_sourceServerIDs,+    describeSourceServersRequestFilters_stagingAccountIDs,++    -- * Disk+    Disk (..),+    newDisk,+    disk_bytes,+    disk_deviceName,++    -- * IdentificationHints+    IdentificationHints (..),+    newIdentificationHints,+    identificationHints_awsInstanceID,+    identificationHints_fqdn,+    identificationHints_hostname,+    identificationHints_vmWareUuid,++    -- * Job+    Job (..),+    newJob,+    job_arn,+    job_creationDateTime,+    job_endDateTime,+    job_initiatedBy,+    job_participatingServers,+    job_status,+    job_tags,+    job_type,+    job_jobID,++    -- * JobLog+    JobLog (..),+    newJobLog,+    jobLog_event,+    jobLog_eventData,+    jobLog_logDateTime,++    -- * JobLogEventData+    JobLogEventData (..),+    newJobLogEventData,+    jobLogEventData_conversionProperties,+    jobLogEventData_conversionServerID,+    jobLogEventData_rawError,+    jobLogEventData_sourceServerID,+    jobLogEventData_targetInstanceID,++    -- * LaunchConfiguration+    LaunchConfiguration (..),+    newLaunchConfiguration,+    launchConfiguration_copyPrivateIp,+    launchConfiguration_copyTags,+    launchConfiguration_ec2LaunchTemplateID,+    launchConfiguration_launchDisposition,+    launchConfiguration_licensing,+    launchConfiguration_name,+    launchConfiguration_sourceServerID,+    launchConfiguration_targetInstanceTypeRightSizingMethod,++    -- * Licensing+    Licensing (..),+    newLicensing,+    licensing_osByol,++    -- * LifeCycle+    LifeCycle (..),+    newLifeCycle,+    lifeCycle_addedToServiceDateTime,+    lifeCycle_elapsedReplicationDuration,+    lifeCycle_firstByteDateTime,+    lifeCycle_lastLaunch,+    lifeCycle_lastSeenByServiceDateTime,++    -- * LifeCycleLastLaunch+    LifeCycleLastLaunch (..),+    newLifeCycleLastLaunch,+    lifeCycleLastLaunch_initiated,++    -- * LifeCycleLastLaunchInitiated+    LifeCycleLastLaunchInitiated (..),+    newLifeCycleLastLaunchInitiated,+    lifeCycleLastLaunchInitiated_apiCallDateTime,+    lifeCycleLastLaunchInitiated_jobID,+    lifeCycleLastLaunchInitiated_type,++    -- * NetworkInterface+    NetworkInterface (..),+    newNetworkInterface,+    networkInterface_ips,+    networkInterface_isPrimary,+    networkInterface_macAddress,++    -- * OS+    OS (..),+    newOS,+    os_fullString,++    -- * PITPolicyRule+    PITPolicyRule (..),+    newPITPolicyRule,+    pITPolicyRule_enabled,+    pITPolicyRule_ruleID,+    pITPolicyRule_interval,+    pITPolicyRule_retentionDuration,+    pITPolicyRule_units,++    -- * ParticipatingServer+    ParticipatingServer (..),+    newParticipatingServer,+    participatingServer_launchStatus,+    participatingServer_recoveryInstanceID,+    participatingServer_sourceServerID,++    -- * RecoveryInstance+    RecoveryInstance (..),+    newRecoveryInstance,+    recoveryInstance_arn,+    recoveryInstance_dataReplicationInfo,+    recoveryInstance_ec2InstanceID,+    recoveryInstance_ec2InstanceState,+    recoveryInstance_failback,+    recoveryInstance_isDrill,+    recoveryInstance_jobID,+    recoveryInstance_originEnvironment,+    recoveryInstance_pointInTimeSnapshotDateTime,+    recoveryInstance_recoveryInstanceID,+    recoveryInstance_recoveryInstanceProperties,+    recoveryInstance_sourceServerID,+    recoveryInstance_tags,++    -- * RecoveryInstanceDataReplicationError+    RecoveryInstanceDataReplicationError (..),+    newRecoveryInstanceDataReplicationError,+    recoveryInstanceDataReplicationError_error,+    recoveryInstanceDataReplicationError_rawError,++    -- * RecoveryInstanceDataReplicationInfo+    RecoveryInstanceDataReplicationInfo (..),+    newRecoveryInstanceDataReplicationInfo,+    recoveryInstanceDataReplicationInfo_dataReplicationError,+    recoveryInstanceDataReplicationInfo_dataReplicationInitiation,+    recoveryInstanceDataReplicationInfo_dataReplicationState,+    recoveryInstanceDataReplicationInfo_etaDateTime,+    recoveryInstanceDataReplicationInfo_lagDuration,+    recoveryInstanceDataReplicationInfo_replicatedDisks,++    -- * RecoveryInstanceDataReplicationInfoReplicatedDisk+    RecoveryInstanceDataReplicationInfoReplicatedDisk (..),+    newRecoveryInstanceDataReplicationInfoReplicatedDisk,+    recoveryInstanceDataReplicationInfoReplicatedDisk_backloggedStorageBytes,+    recoveryInstanceDataReplicationInfoReplicatedDisk_deviceName,+    recoveryInstanceDataReplicationInfoReplicatedDisk_replicatedStorageBytes,+    recoveryInstanceDataReplicationInfoReplicatedDisk_rescannedStorageBytes,+    recoveryInstanceDataReplicationInfoReplicatedDisk_totalStorageBytes,++    -- * RecoveryInstanceDataReplicationInitiation+    RecoveryInstanceDataReplicationInitiation (..),+    newRecoveryInstanceDataReplicationInitiation,+    recoveryInstanceDataReplicationInitiation_startDateTime,+    recoveryInstanceDataReplicationInitiation_steps,++    -- * RecoveryInstanceDataReplicationInitiationStep+    RecoveryInstanceDataReplicationInitiationStep (..),+    newRecoveryInstanceDataReplicationInitiationStep,+    recoveryInstanceDataReplicationInitiationStep_name,+    recoveryInstanceDataReplicationInitiationStep_status,++    -- * RecoveryInstanceDisk+    RecoveryInstanceDisk (..),+    newRecoveryInstanceDisk,+    recoveryInstanceDisk_bytes,+    recoveryInstanceDisk_ebsVolumeID,+    recoveryInstanceDisk_internalDeviceName,++    -- * RecoveryInstanceFailback+    RecoveryInstanceFailback (..),+    newRecoveryInstanceFailback,+    recoveryInstanceFailback_agentLastSeenByServiceDateTime,+    recoveryInstanceFailback_elapsedReplicationDuration,+    recoveryInstanceFailback_failbackClientID,+    recoveryInstanceFailback_failbackClientLastSeenByServiceDateTime,+    recoveryInstanceFailback_failbackInitiationTime,+    recoveryInstanceFailback_failbackJobID,+    recoveryInstanceFailback_failbackLaunchType,+    recoveryInstanceFailback_failbackToOriginalServer,+    recoveryInstanceFailback_firstByteDateTime,+    recoveryInstanceFailback_state,++    -- * RecoveryInstanceProperties+    RecoveryInstanceProperties (..),+    newRecoveryInstanceProperties,+    recoveryInstanceProperties_cpus,+    recoveryInstanceProperties_disks,+    recoveryInstanceProperties_identificationHints,+    recoveryInstanceProperties_lastUpdatedDateTime,+    recoveryInstanceProperties_networkInterfaces,+    recoveryInstanceProperties_os,+    recoveryInstanceProperties_ramBytes,++    -- * RecoverySnapshot+    RecoverySnapshot (..),+    newRecoverySnapshot,+    recoverySnapshot_ebsSnapshots,+    recoverySnapshot_timestamp,+    recoverySnapshot_expectedTimestamp,+    recoverySnapshot_snapshotID,+    recoverySnapshot_sourceServerID,++    -- * ReplicationConfiguration+    ReplicationConfiguration (..),+    newReplicationConfiguration,+    replicationConfiguration_associateDefaultSecurityGroup,+    replicationConfiguration_bandwidthThrottling,+    replicationConfiguration_createPublicIP,+    replicationConfiguration_dataPlaneRouting,+    replicationConfiguration_defaultLargeStagingDiskType,+    replicationConfiguration_ebsEncryption,+    replicationConfiguration_ebsEncryptionKeyArn,+    replicationConfiguration_name,+    replicationConfiguration_pitPolicy,+    replicationConfiguration_replicatedDisks,+    replicationConfiguration_replicationServerInstanceType,+    replicationConfiguration_replicationServersSecurityGroupsIDs,+    replicationConfiguration_sourceServerID,+    replicationConfiguration_stagingAreaSubnetId,+    replicationConfiguration_stagingAreaTags,+    replicationConfiguration_useDedicatedReplicationServer,++    -- * ReplicationConfigurationReplicatedDisk+    ReplicationConfigurationReplicatedDisk (..),+    newReplicationConfigurationReplicatedDisk,+    replicationConfigurationReplicatedDisk_deviceName,+    replicationConfigurationReplicatedDisk_iops,+    replicationConfigurationReplicatedDisk_isBootDisk,+    replicationConfigurationReplicatedDisk_optimizedStagingDiskType,+    replicationConfigurationReplicatedDisk_stagingDiskType,+    replicationConfigurationReplicatedDisk_throughput,++    -- * ReplicationConfigurationTemplate+    ReplicationConfigurationTemplate (..),+    newReplicationConfigurationTemplate,+    replicationConfigurationTemplate_arn,+    replicationConfigurationTemplate_associateDefaultSecurityGroup,+    replicationConfigurationTemplate_bandwidthThrottling,+    replicationConfigurationTemplate_createPublicIP,+    replicationConfigurationTemplate_dataPlaneRouting,+    replicationConfigurationTemplate_defaultLargeStagingDiskType,+    replicationConfigurationTemplate_ebsEncryption,+    replicationConfigurationTemplate_ebsEncryptionKeyArn,+    replicationConfigurationTemplate_pitPolicy,+    replicationConfigurationTemplate_replicationServerInstanceType,+    replicationConfigurationTemplate_replicationServersSecurityGroupsIDs,+    replicationConfigurationTemplate_stagingAreaSubnetId,+    replicationConfigurationTemplate_stagingAreaTags,+    replicationConfigurationTemplate_tags,+    replicationConfigurationTemplate_useDedicatedReplicationServer,+    replicationConfigurationTemplate_replicationConfigurationTemplateID,++    -- * SourceCloudProperties+    SourceCloudProperties (..),+    newSourceCloudProperties,+    sourceCloudProperties_originAccountID,+    sourceCloudProperties_originAvailabilityZone,+    sourceCloudProperties_originRegion,++    -- * SourceProperties+    SourceProperties (..),+    newSourceProperties,+    sourceProperties_cpus,+    sourceProperties_disks,+    sourceProperties_identificationHints,+    sourceProperties_lastUpdatedDateTime,+    sourceProperties_networkInterfaces,+    sourceProperties_os,+    sourceProperties_ramBytes,+    sourceProperties_recommendedInstanceType,++    -- * SourceServer+    SourceServer (..),+    newSourceServer,+    sourceServer_arn,+    sourceServer_dataReplicationInfo,+    sourceServer_lastLaunchResult,+    sourceServer_lifeCycle,+    sourceServer_recoveryInstanceId,+    sourceServer_replicationDirection,+    sourceServer_reversedDirectionSourceServerArn,+    sourceServer_sourceCloudProperties,+    sourceServer_sourceProperties,+    sourceServer_sourceServerID,+    sourceServer_stagingArea,+    sourceServer_tags,++    -- * StagingArea+    StagingArea (..),+    newStagingArea,+    stagingArea_errorMessage,+    stagingArea_stagingAccountID,+    stagingArea_stagingSourceServerArn,+    stagingArea_status,++    -- * StagingSourceServer+    StagingSourceServer (..),+    newStagingSourceServer,+    stagingSourceServer_arn,+    stagingSourceServer_hostname,+    stagingSourceServer_tags,++    -- * StartRecoveryRequestSourceServer+    StartRecoveryRequestSourceServer (..),+    newStartRecoveryRequestSourceServer,+    startRecoveryRequestSourceServer_recoverySnapshotID,+    startRecoveryRequestSourceServer_sourceServerID,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.DrS.Types.Account+import Amazonka.DrS.Types.CPU+import Amazonka.DrS.Types.ConversionProperties+import Amazonka.DrS.Types.DataReplicationError+import Amazonka.DrS.Types.DataReplicationErrorString+import Amazonka.DrS.Types.DataReplicationInfo+import Amazonka.DrS.Types.DataReplicationInfoReplicatedDisk+import Amazonka.DrS.Types.DataReplicationInitiation+import Amazonka.DrS.Types.DataReplicationInitiationStep+import Amazonka.DrS.Types.DataReplicationInitiationStepName+import Amazonka.DrS.Types.DataReplicationInitiationStepStatus+import Amazonka.DrS.Types.DataReplicationState+import Amazonka.DrS.Types.DescribeJobsRequestFilters+import Amazonka.DrS.Types.DescribeRecoveryInstancesRequestFilters+import Amazonka.DrS.Types.DescribeRecoverySnapshotsRequestFilters+import Amazonka.DrS.Types.DescribeSourceServersRequestFilters+import Amazonka.DrS.Types.Disk+import Amazonka.DrS.Types.EC2InstanceState+import Amazonka.DrS.Types.ExtensionStatus+import Amazonka.DrS.Types.FailbackLaunchType+import Amazonka.DrS.Types.FailbackReplicationError+import Amazonka.DrS.Types.FailbackState+import Amazonka.DrS.Types.IdentificationHints+import Amazonka.DrS.Types.InitiatedBy+import Amazonka.DrS.Types.Job+import Amazonka.DrS.Types.JobLog+import Amazonka.DrS.Types.JobLogEvent+import Amazonka.DrS.Types.JobLogEventData+import Amazonka.DrS.Types.JobStatus+import Amazonka.DrS.Types.JobType+import Amazonka.DrS.Types.LastLaunchResult+import Amazonka.DrS.Types.LastLaunchType+import Amazonka.DrS.Types.LaunchConfiguration+import Amazonka.DrS.Types.LaunchDisposition+import Amazonka.DrS.Types.LaunchStatus+import Amazonka.DrS.Types.Licensing+import Amazonka.DrS.Types.LifeCycle+import Amazonka.DrS.Types.LifeCycleLastLaunch+import Amazonka.DrS.Types.LifeCycleLastLaunchInitiated+import Amazonka.DrS.Types.NetworkInterface+import Amazonka.DrS.Types.OS+import Amazonka.DrS.Types.OriginEnvironment+import Amazonka.DrS.Types.PITPolicyRule+import Amazonka.DrS.Types.PITPolicyRuleUnits+import Amazonka.DrS.Types.ParticipatingServer+import Amazonka.DrS.Types.RecoveryInstance+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationError+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInfo+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInfoReplicatedDisk+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiation+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiationStep+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiationStepName+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiationStepStatus+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationState+import Amazonka.DrS.Types.RecoveryInstanceDisk+import Amazonka.DrS.Types.RecoveryInstanceFailback+import Amazonka.DrS.Types.RecoveryInstanceProperties+import Amazonka.DrS.Types.RecoverySnapshot+import Amazonka.DrS.Types.RecoverySnapshotsOrder+import Amazonka.DrS.Types.ReplicationConfiguration+import Amazonka.DrS.Types.ReplicationConfigurationDataPlaneRouting+import Amazonka.DrS.Types.ReplicationConfigurationDefaultLargeStagingDiskType+import Amazonka.DrS.Types.ReplicationConfigurationEbsEncryption+import Amazonka.DrS.Types.ReplicationConfigurationReplicatedDisk+import Amazonka.DrS.Types.ReplicationConfigurationReplicatedDiskStagingDiskType+import Amazonka.DrS.Types.ReplicationConfigurationTemplate+import Amazonka.DrS.Types.ReplicationDirection+import Amazonka.DrS.Types.SourceCloudProperties+import Amazonka.DrS.Types.SourceProperties+import Amazonka.DrS.Types.SourceServer+import Amazonka.DrS.Types.StagingArea+import Amazonka.DrS.Types.StagingSourceServer+import Amazonka.DrS.Types.StartRecoveryRequestSourceServer+import Amazonka.DrS.Types.TargetInstanceTypeRightSizingMethod+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2020-02-26@ of the Amazon Elastic Disaster Recovery Service SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "DrS",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "drs",+      Core.signingName = "drs",+      Core.version = "2020-02-26",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "DrS",+      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 do not have sufficient access to perform this action.+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccessDeniedException =+  Core._MatchServiceError+    defaultService+    "AccessDeniedException"+    Prelude.. Core.hasStatus 403++-- | The request could not be completed due to a conflict with the current+-- state of the target resource.+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictException =+  Core._MatchServiceError+    defaultService+    "ConflictException"+    Prelude.. Core.hasStatus 409++-- | The request processing has failed because of an unknown error, exception+-- or failure.+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServerException =+  Core._MatchServiceError+    defaultService+    "InternalServerException"+    Prelude.. Core.hasStatus 500++-- | The resource for this operation was not found.+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotFoundException =+  Core._MatchServiceError+    defaultService+    "ResourceNotFoundException"+    Prelude.. Core.hasStatus 404++-- | The request could not be completed because its exceeded the service+-- quota.+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceQuotaExceededException =+  Core._MatchServiceError+    defaultService+    "ServiceQuotaExceededException"+    Prelude.. Core.hasStatus 402++-- | The request was denied due to request throttling.+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ThrottlingException =+  Core._MatchServiceError+    defaultService+    "ThrottlingException"+    Prelude.. Core.hasStatus 429++-- | The account performing the request has not been initialized.+_UninitializedAccountException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_UninitializedAccountException =+  Core._MatchServiceError+    defaultService+    "UninitializedAccountException"+    Prelude.. Core.hasStatus 400++-- | The input fails to satisfy the constraints specified by the AWS service.+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ValidationException =+  Core._MatchServiceError+    defaultService+    "ValidationException"+    Prelude.. Core.hasStatus 400
+ gen/Amazonka/DrS/Types/Account.hs view
@@ -0,0 +1,66 @@+{-# 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.DrS.Types.Account+-- 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.DrS.Types.Account 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++-- | AWS account.+--+-- /See:/ 'newAccount' smart constructor.+data Account = Account'+  { -- | Account ID of AWS account.+    accountID :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Account' 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:+--+-- 'accountID', 'account_accountID' - Account ID of AWS account.+newAccount ::+  Account+newAccount = Account' {accountID = Prelude.Nothing}++-- | Account ID of AWS account.+account_accountID :: Lens.Lens' Account (Prelude.Maybe Prelude.Text)+account_accountID = Lens.lens (\Account' {accountID} -> accountID) (\s@Account' {} a -> s {accountID = a} :: Account)++instance Data.FromJSON Account where+  parseJSON =+    Data.withObject+      "Account"+      ( \x ->+          Account' Prelude.<$> (x Data..:? "accountID")+      )++instance Prelude.Hashable Account where+  hashWithSalt _salt Account' {..} =+    _salt `Prelude.hashWithSalt` accountID++instance Prelude.NFData Account where+  rnf Account' {..} = Prelude.rnf accountID
+ gen/Amazonka/DrS/Types/CPU.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.DrS.Types.CPU+-- 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.DrS.Types.CPU 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 a server\'s CPU.+--+-- /See:/ 'newCPU' smart constructor.+data CPU = CPU'+  { -- | The number of CPU cores.+    cores :: Prelude.Maybe Prelude.Natural,+    -- | The model name of the CPU.+    modelName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CPU' 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:+--+-- 'cores', 'cpu_cores' - The number of CPU cores.+--+-- 'modelName', 'cpu_modelName' - The model name of the CPU.+newCPU ::+  CPU+newCPU =+  CPU'+    { cores = Prelude.Nothing,+      modelName = Prelude.Nothing+    }++-- | The number of CPU cores.+cpu_cores :: Lens.Lens' CPU (Prelude.Maybe Prelude.Natural)+cpu_cores = Lens.lens (\CPU' {cores} -> cores) (\s@CPU' {} a -> s {cores = a} :: CPU)++-- | The model name of the CPU.+cpu_modelName :: Lens.Lens' CPU (Prelude.Maybe Prelude.Text)+cpu_modelName = Lens.lens (\CPU' {modelName} -> modelName) (\s@CPU' {} a -> s {modelName = a} :: CPU)++instance Data.FromJSON CPU where+  parseJSON =+    Data.withObject+      "CPU"+      ( \x ->+          CPU'+            Prelude.<$> (x Data..:? "cores")+            Prelude.<*> (x Data..:? "modelName")+      )++instance Prelude.Hashable CPU where+  hashWithSalt _salt CPU' {..} =+    _salt+      `Prelude.hashWithSalt` cores+      `Prelude.hashWithSalt` modelName++instance Prelude.NFData CPU where+  rnf CPU' {..} =+    Prelude.rnf cores+      `Prelude.seq` Prelude.rnf modelName
+ gen/Amazonka/DrS/Types/ConversionProperties.hs view
@@ -0,0 +1,130 @@+{-# 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.DrS.Types.ConversionProperties+-- 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.DrS.Types.ConversionProperties 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++-- | Properties of a conversion job+--+-- /See:/ 'newConversionProperties' smart constructor.+data ConversionProperties = ConversionProperties'+  { -- | The timestamp of when the snapshot being converted was taken+    dataTimestamp :: Prelude.Maybe Prelude.Text,+    -- | Whether the volume being converted uses UEFI or not+    forceUefi :: Prelude.Maybe Prelude.Bool,+    -- | The root volume name of a conversion job+    rootVolumeName :: Prelude.Maybe Prelude.Text,+    -- | A mapping between the volumes being converted and the converted snapshot+    -- ids+    volumeToConversionMap :: Prelude.Maybe (Prelude.HashMap Prelude.Text (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | A mapping between the volumes and their sizes+    volumeToVolumeSize :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Natural)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ConversionProperties' 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:+--+-- 'dataTimestamp', 'conversionProperties_dataTimestamp' - The timestamp of when the snapshot being converted was taken+--+-- 'forceUefi', 'conversionProperties_forceUefi' - Whether the volume being converted uses UEFI or not+--+-- 'rootVolumeName', 'conversionProperties_rootVolumeName' - The root volume name of a conversion job+--+-- 'volumeToConversionMap', 'conversionProperties_volumeToConversionMap' - A mapping between the volumes being converted and the converted snapshot+-- ids+--+-- 'volumeToVolumeSize', 'conversionProperties_volumeToVolumeSize' - A mapping between the volumes and their sizes+newConversionProperties ::+  ConversionProperties+newConversionProperties =+  ConversionProperties'+    { dataTimestamp =+        Prelude.Nothing,+      forceUefi = Prelude.Nothing,+      rootVolumeName = Prelude.Nothing,+      volumeToConversionMap = Prelude.Nothing,+      volumeToVolumeSize = Prelude.Nothing+    }++-- | The timestamp of when the snapshot being converted was taken+conversionProperties_dataTimestamp :: Lens.Lens' ConversionProperties (Prelude.Maybe Prelude.Text)+conversionProperties_dataTimestamp = Lens.lens (\ConversionProperties' {dataTimestamp} -> dataTimestamp) (\s@ConversionProperties' {} a -> s {dataTimestamp = a} :: ConversionProperties)++-- | Whether the volume being converted uses UEFI or not+conversionProperties_forceUefi :: Lens.Lens' ConversionProperties (Prelude.Maybe Prelude.Bool)+conversionProperties_forceUefi = Lens.lens (\ConversionProperties' {forceUefi} -> forceUefi) (\s@ConversionProperties' {} a -> s {forceUefi = a} :: ConversionProperties)++-- | The root volume name of a conversion job+conversionProperties_rootVolumeName :: Lens.Lens' ConversionProperties (Prelude.Maybe Prelude.Text)+conversionProperties_rootVolumeName = Lens.lens (\ConversionProperties' {rootVolumeName} -> rootVolumeName) (\s@ConversionProperties' {} a -> s {rootVolumeName = a} :: ConversionProperties)++-- | A mapping between the volumes being converted and the converted snapshot+-- ids+conversionProperties_volumeToConversionMap :: Lens.Lens' ConversionProperties (Prelude.Maybe (Prelude.HashMap Prelude.Text (Prelude.HashMap Prelude.Text Prelude.Text)))+conversionProperties_volumeToConversionMap = Lens.lens (\ConversionProperties' {volumeToConversionMap} -> volumeToConversionMap) (\s@ConversionProperties' {} a -> s {volumeToConversionMap = a} :: ConversionProperties) Prelude.. Lens.mapping Lens.coerced++-- | A mapping between the volumes and their sizes+conversionProperties_volumeToVolumeSize :: Lens.Lens' ConversionProperties (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Natural))+conversionProperties_volumeToVolumeSize = Lens.lens (\ConversionProperties' {volumeToVolumeSize} -> volumeToVolumeSize) (\s@ConversionProperties' {} a -> s {volumeToVolumeSize = a} :: ConversionProperties) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ConversionProperties where+  parseJSON =+    Data.withObject+      "ConversionProperties"+      ( \x ->+          ConversionProperties'+            Prelude.<$> (x Data..:? "dataTimestamp")+            Prelude.<*> (x Data..:? "forceUefi")+            Prelude.<*> (x Data..:? "rootVolumeName")+            Prelude.<*> ( x+                            Data..:? "volumeToConversionMap"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..:? "volumeToVolumeSize"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable ConversionProperties where+  hashWithSalt _salt ConversionProperties' {..} =+    _salt+      `Prelude.hashWithSalt` dataTimestamp+      `Prelude.hashWithSalt` forceUefi+      `Prelude.hashWithSalt` rootVolumeName+      `Prelude.hashWithSalt` volumeToConversionMap+      `Prelude.hashWithSalt` volumeToVolumeSize++instance Prelude.NFData ConversionProperties where+  rnf ConversionProperties' {..} =+    Prelude.rnf dataTimestamp+      `Prelude.seq` Prelude.rnf forceUefi+      `Prelude.seq` Prelude.rnf rootVolumeName+      `Prelude.seq` Prelude.rnf volumeToConversionMap+      `Prelude.seq` Prelude.rnf volumeToVolumeSize
+ gen/Amazonka/DrS/Types/DataReplicationError.hs view
@@ -0,0 +1,85 @@+{-# 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.DrS.Types.DataReplicationError+-- 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.DrS.Types.DataReplicationError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.DataReplicationErrorString+import qualified Amazonka.Prelude as Prelude++-- | Error in data replication.+--+-- /See:/ 'newDataReplicationError' smart constructor.+data DataReplicationError = DataReplicationError'+  { -- | Error in data replication.+    error :: Prelude.Maybe DataReplicationErrorString,+    -- | Error in data replication.+    rawError :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DataReplicationError' 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:+--+-- 'error', 'dataReplicationError_error' - Error in data replication.+--+-- 'rawError', 'dataReplicationError_rawError' - Error in data replication.+newDataReplicationError ::+  DataReplicationError+newDataReplicationError =+  DataReplicationError'+    { error = Prelude.Nothing,+      rawError = Prelude.Nothing+    }++-- | Error in data replication.+dataReplicationError_error :: Lens.Lens' DataReplicationError (Prelude.Maybe DataReplicationErrorString)+dataReplicationError_error = Lens.lens (\DataReplicationError' {error} -> error) (\s@DataReplicationError' {} a -> s {error = a} :: DataReplicationError)++-- | Error in data replication.+dataReplicationError_rawError :: Lens.Lens' DataReplicationError (Prelude.Maybe Prelude.Text)+dataReplicationError_rawError = Lens.lens (\DataReplicationError' {rawError} -> rawError) (\s@DataReplicationError' {} a -> s {rawError = a} :: DataReplicationError)++instance Data.FromJSON DataReplicationError where+  parseJSON =+    Data.withObject+      "DataReplicationError"+      ( \x ->+          DataReplicationError'+            Prelude.<$> (x Data..:? "error")+            Prelude.<*> (x Data..:? "rawError")+      )++instance Prelude.Hashable DataReplicationError where+  hashWithSalt _salt DataReplicationError' {..} =+    _salt+      `Prelude.hashWithSalt` error+      `Prelude.hashWithSalt` rawError++instance Prelude.NFData DataReplicationError where+  rnf DataReplicationError' {..} =+    Prelude.rnf error+      `Prelude.seq` Prelude.rnf rawError
+ gen/Amazonka/DrS/Types/DataReplicationErrorString.hs view
@@ -0,0 +1,131 @@+{-# 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.DrS.Types.DataReplicationErrorString+-- 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.DrS.Types.DataReplicationErrorString+  ( DataReplicationErrorString+      ( ..,+        DataReplicationErrorString_AGENT_NOT_SEEN,+        DataReplicationErrorString_FAILED_TO_ATTACH_STAGING_DISKS,+        DataReplicationErrorString_FAILED_TO_AUTHENTICATE_WITH_SERVICE,+        DataReplicationErrorString_FAILED_TO_BOOT_REPLICATION_SERVER,+        DataReplicationErrorString_FAILED_TO_CONNECT_AGENT_TO_REPLICATION_SERVER,+        DataReplicationErrorString_FAILED_TO_CREATE_SECURITY_GROUP,+        DataReplicationErrorString_FAILED_TO_CREATE_STAGING_DISKS,+        DataReplicationErrorString_FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE,+        DataReplicationErrorString_FAILED_TO_LAUNCH_REPLICATION_SERVER,+        DataReplicationErrorString_FAILED_TO_PAIR_REPLICATION_SERVER_WITH_AGENT,+        DataReplicationErrorString_FAILED_TO_START_DATA_TRANSFER,+        DataReplicationErrorString_NOT_CONVERGING,+        DataReplicationErrorString_SNAPSHOTS_FAILURE,+        DataReplicationErrorString_UNSTABLE_NETWORK+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DataReplicationErrorString = DataReplicationErrorString'+  { fromDataReplicationErrorString ::+      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 DataReplicationErrorString_AGENT_NOT_SEEN :: DataReplicationErrorString+pattern DataReplicationErrorString_AGENT_NOT_SEEN = DataReplicationErrorString' "AGENT_NOT_SEEN"++pattern DataReplicationErrorString_FAILED_TO_ATTACH_STAGING_DISKS :: DataReplicationErrorString+pattern DataReplicationErrorString_FAILED_TO_ATTACH_STAGING_DISKS = DataReplicationErrorString' "FAILED_TO_ATTACH_STAGING_DISKS"++pattern DataReplicationErrorString_FAILED_TO_AUTHENTICATE_WITH_SERVICE :: DataReplicationErrorString+pattern DataReplicationErrorString_FAILED_TO_AUTHENTICATE_WITH_SERVICE = DataReplicationErrorString' "FAILED_TO_AUTHENTICATE_WITH_SERVICE"++pattern DataReplicationErrorString_FAILED_TO_BOOT_REPLICATION_SERVER :: DataReplicationErrorString+pattern DataReplicationErrorString_FAILED_TO_BOOT_REPLICATION_SERVER = DataReplicationErrorString' "FAILED_TO_BOOT_REPLICATION_SERVER"++pattern DataReplicationErrorString_FAILED_TO_CONNECT_AGENT_TO_REPLICATION_SERVER :: DataReplicationErrorString+pattern DataReplicationErrorString_FAILED_TO_CONNECT_AGENT_TO_REPLICATION_SERVER = DataReplicationErrorString' "FAILED_TO_CONNECT_AGENT_TO_REPLICATION_SERVER"++pattern DataReplicationErrorString_FAILED_TO_CREATE_SECURITY_GROUP :: DataReplicationErrorString+pattern DataReplicationErrorString_FAILED_TO_CREATE_SECURITY_GROUP = DataReplicationErrorString' "FAILED_TO_CREATE_SECURITY_GROUP"++pattern DataReplicationErrorString_FAILED_TO_CREATE_STAGING_DISKS :: DataReplicationErrorString+pattern DataReplicationErrorString_FAILED_TO_CREATE_STAGING_DISKS = DataReplicationErrorString' "FAILED_TO_CREATE_STAGING_DISKS"++pattern DataReplicationErrorString_FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE :: DataReplicationErrorString+pattern DataReplicationErrorString_FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE = DataReplicationErrorString' "FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE"++pattern DataReplicationErrorString_FAILED_TO_LAUNCH_REPLICATION_SERVER :: DataReplicationErrorString+pattern DataReplicationErrorString_FAILED_TO_LAUNCH_REPLICATION_SERVER = DataReplicationErrorString' "FAILED_TO_LAUNCH_REPLICATION_SERVER"++pattern DataReplicationErrorString_FAILED_TO_PAIR_REPLICATION_SERVER_WITH_AGENT :: DataReplicationErrorString+pattern DataReplicationErrorString_FAILED_TO_PAIR_REPLICATION_SERVER_WITH_AGENT = DataReplicationErrorString' "FAILED_TO_PAIR_REPLICATION_SERVER_WITH_AGENT"++pattern DataReplicationErrorString_FAILED_TO_START_DATA_TRANSFER :: DataReplicationErrorString+pattern DataReplicationErrorString_FAILED_TO_START_DATA_TRANSFER = DataReplicationErrorString' "FAILED_TO_START_DATA_TRANSFER"++pattern DataReplicationErrorString_NOT_CONVERGING :: DataReplicationErrorString+pattern DataReplicationErrorString_NOT_CONVERGING = DataReplicationErrorString' "NOT_CONVERGING"++pattern DataReplicationErrorString_SNAPSHOTS_FAILURE :: DataReplicationErrorString+pattern DataReplicationErrorString_SNAPSHOTS_FAILURE = DataReplicationErrorString' "SNAPSHOTS_FAILURE"++pattern DataReplicationErrorString_UNSTABLE_NETWORK :: DataReplicationErrorString+pattern DataReplicationErrorString_UNSTABLE_NETWORK = DataReplicationErrorString' "UNSTABLE_NETWORK"++{-# COMPLETE+  DataReplicationErrorString_AGENT_NOT_SEEN,+  DataReplicationErrorString_FAILED_TO_ATTACH_STAGING_DISKS,+  DataReplicationErrorString_FAILED_TO_AUTHENTICATE_WITH_SERVICE,+  DataReplicationErrorString_FAILED_TO_BOOT_REPLICATION_SERVER,+  DataReplicationErrorString_FAILED_TO_CONNECT_AGENT_TO_REPLICATION_SERVER,+  DataReplicationErrorString_FAILED_TO_CREATE_SECURITY_GROUP,+  DataReplicationErrorString_FAILED_TO_CREATE_STAGING_DISKS,+  DataReplicationErrorString_FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE,+  DataReplicationErrorString_FAILED_TO_LAUNCH_REPLICATION_SERVER,+  DataReplicationErrorString_FAILED_TO_PAIR_REPLICATION_SERVER_WITH_AGENT,+  DataReplicationErrorString_FAILED_TO_START_DATA_TRANSFER,+  DataReplicationErrorString_NOT_CONVERGING,+  DataReplicationErrorString_SNAPSHOTS_FAILURE,+  DataReplicationErrorString_UNSTABLE_NETWORK,+  DataReplicationErrorString'+  #-}
+ gen/Amazonka/DrS/Types/DataReplicationInfo.hs view
@@ -0,0 +1,140 @@+{-# 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.DrS.Types.DataReplicationInfo+-- 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.DrS.Types.DataReplicationInfo where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.DataReplicationError+import Amazonka.DrS.Types.DataReplicationInfoReplicatedDisk+import Amazonka.DrS.Types.DataReplicationInitiation+import Amazonka.DrS.Types.DataReplicationState+import qualified Amazonka.Prelude as Prelude++-- | Information about Data Replication+--+-- /See:/ 'newDataReplicationInfo' smart constructor.+data DataReplicationInfo = DataReplicationInfo'+  { -- | Error in data replication.+    dataReplicationError :: Prelude.Maybe DataReplicationError,+    -- | Information about whether the data replication has been initiated.+    dataReplicationInitiation :: Prelude.Maybe DataReplicationInitiation,+    -- | The state of the data replication.+    dataReplicationState :: Prelude.Maybe DataReplicationState,+    -- | An estimate of when the data replication will be completed.+    etaDateTime :: Prelude.Maybe Prelude.Text,+    -- | Data replication lag duration.+    lagDuration :: Prelude.Maybe Prelude.Text,+    -- | The disks that should be replicated.+    replicatedDisks :: Prelude.Maybe [DataReplicationInfoReplicatedDisk]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DataReplicationInfo' 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:+--+-- 'dataReplicationError', 'dataReplicationInfo_dataReplicationError' - Error in data replication.+--+-- 'dataReplicationInitiation', 'dataReplicationInfo_dataReplicationInitiation' - Information about whether the data replication has been initiated.+--+-- 'dataReplicationState', 'dataReplicationInfo_dataReplicationState' - The state of the data replication.+--+-- 'etaDateTime', 'dataReplicationInfo_etaDateTime' - An estimate of when the data replication will be completed.+--+-- 'lagDuration', 'dataReplicationInfo_lagDuration' - Data replication lag duration.+--+-- 'replicatedDisks', 'dataReplicationInfo_replicatedDisks' - The disks that should be replicated.+newDataReplicationInfo ::+  DataReplicationInfo+newDataReplicationInfo =+  DataReplicationInfo'+    { dataReplicationError =+        Prelude.Nothing,+      dataReplicationInitiation = Prelude.Nothing,+      dataReplicationState = Prelude.Nothing,+      etaDateTime = Prelude.Nothing,+      lagDuration = Prelude.Nothing,+      replicatedDisks = Prelude.Nothing+    }++-- | Error in data replication.+dataReplicationInfo_dataReplicationError :: Lens.Lens' DataReplicationInfo (Prelude.Maybe DataReplicationError)+dataReplicationInfo_dataReplicationError = Lens.lens (\DataReplicationInfo' {dataReplicationError} -> dataReplicationError) (\s@DataReplicationInfo' {} a -> s {dataReplicationError = a} :: DataReplicationInfo)++-- | Information about whether the data replication has been initiated.+dataReplicationInfo_dataReplicationInitiation :: Lens.Lens' DataReplicationInfo (Prelude.Maybe DataReplicationInitiation)+dataReplicationInfo_dataReplicationInitiation = Lens.lens (\DataReplicationInfo' {dataReplicationInitiation} -> dataReplicationInitiation) (\s@DataReplicationInfo' {} a -> s {dataReplicationInitiation = a} :: DataReplicationInfo)++-- | The state of the data replication.+dataReplicationInfo_dataReplicationState :: Lens.Lens' DataReplicationInfo (Prelude.Maybe DataReplicationState)+dataReplicationInfo_dataReplicationState = Lens.lens (\DataReplicationInfo' {dataReplicationState} -> dataReplicationState) (\s@DataReplicationInfo' {} a -> s {dataReplicationState = a} :: DataReplicationInfo)++-- | An estimate of when the data replication will be completed.+dataReplicationInfo_etaDateTime :: Lens.Lens' DataReplicationInfo (Prelude.Maybe Prelude.Text)+dataReplicationInfo_etaDateTime = Lens.lens (\DataReplicationInfo' {etaDateTime} -> etaDateTime) (\s@DataReplicationInfo' {} a -> s {etaDateTime = a} :: DataReplicationInfo)++-- | Data replication lag duration.+dataReplicationInfo_lagDuration :: Lens.Lens' DataReplicationInfo (Prelude.Maybe Prelude.Text)+dataReplicationInfo_lagDuration = Lens.lens (\DataReplicationInfo' {lagDuration} -> lagDuration) (\s@DataReplicationInfo' {} a -> s {lagDuration = a} :: DataReplicationInfo)++-- | The disks that should be replicated.+dataReplicationInfo_replicatedDisks :: Lens.Lens' DataReplicationInfo (Prelude.Maybe [DataReplicationInfoReplicatedDisk])+dataReplicationInfo_replicatedDisks = Lens.lens (\DataReplicationInfo' {replicatedDisks} -> replicatedDisks) (\s@DataReplicationInfo' {} a -> s {replicatedDisks = a} :: DataReplicationInfo) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON DataReplicationInfo where+  parseJSON =+    Data.withObject+      "DataReplicationInfo"+      ( \x ->+          DataReplicationInfo'+            Prelude.<$> (x Data..:? "dataReplicationError")+            Prelude.<*> (x Data..:? "dataReplicationInitiation")+            Prelude.<*> (x Data..:? "dataReplicationState")+            Prelude.<*> (x Data..:? "etaDateTime")+            Prelude.<*> (x Data..:? "lagDuration")+            Prelude.<*> ( x+                            Data..:? "replicatedDisks"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable DataReplicationInfo where+  hashWithSalt _salt DataReplicationInfo' {..} =+    _salt+      `Prelude.hashWithSalt` dataReplicationError+      `Prelude.hashWithSalt` dataReplicationInitiation+      `Prelude.hashWithSalt` dataReplicationState+      `Prelude.hashWithSalt` etaDateTime+      `Prelude.hashWithSalt` lagDuration+      `Prelude.hashWithSalt` replicatedDisks++instance Prelude.NFData DataReplicationInfo where+  rnf DataReplicationInfo' {..} =+    Prelude.rnf dataReplicationError+      `Prelude.seq` Prelude.rnf dataReplicationInitiation+      `Prelude.seq` Prelude.rnf dataReplicationState+      `Prelude.seq` Prelude.rnf etaDateTime+      `Prelude.seq` Prelude.rnf lagDuration+      `Prelude.seq` Prelude.rnf replicatedDisks
+ gen/Amazonka/DrS/Types/DataReplicationInfoReplicatedDisk.hs view
@@ -0,0 +1,132 @@+{-# 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.DrS.Types.DataReplicationInfoReplicatedDisk+-- 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.DrS.Types.DataReplicationInfoReplicatedDisk 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++-- | A disk that should be replicated.+--+-- /See:/ 'newDataReplicationInfoReplicatedDisk' smart constructor.+data DataReplicationInfoReplicatedDisk = DataReplicationInfoReplicatedDisk'+  { -- | The size of the replication backlog in bytes.+    backloggedStorageBytes :: Prelude.Maybe Prelude.Natural,+    -- | The name of the device.+    deviceName :: Prelude.Maybe Prelude.Text,+    -- | The amount of data replicated so far in bytes.+    replicatedStorageBytes :: Prelude.Maybe Prelude.Natural,+    -- | The amount of data to be rescanned in bytes.+    rescannedStorageBytes :: Prelude.Maybe Prelude.Natural,+    -- | The total amount of data to be replicated in bytes.+    totalStorageBytes :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DataReplicationInfoReplicatedDisk' 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:+--+-- 'backloggedStorageBytes', 'dataReplicationInfoReplicatedDisk_backloggedStorageBytes' - The size of the replication backlog in bytes.+--+-- 'deviceName', 'dataReplicationInfoReplicatedDisk_deviceName' - The name of the device.+--+-- 'replicatedStorageBytes', 'dataReplicationInfoReplicatedDisk_replicatedStorageBytes' - The amount of data replicated so far in bytes.+--+-- 'rescannedStorageBytes', 'dataReplicationInfoReplicatedDisk_rescannedStorageBytes' - The amount of data to be rescanned in bytes.+--+-- 'totalStorageBytes', 'dataReplicationInfoReplicatedDisk_totalStorageBytes' - The total amount of data to be replicated in bytes.+newDataReplicationInfoReplicatedDisk ::+  DataReplicationInfoReplicatedDisk+newDataReplicationInfoReplicatedDisk =+  DataReplicationInfoReplicatedDisk'+    { backloggedStorageBytes =+        Prelude.Nothing,+      deviceName = Prelude.Nothing,+      replicatedStorageBytes = Prelude.Nothing,+      rescannedStorageBytes = Prelude.Nothing,+      totalStorageBytes = Prelude.Nothing+    }++-- | The size of the replication backlog in bytes.+dataReplicationInfoReplicatedDisk_backloggedStorageBytes :: Lens.Lens' DataReplicationInfoReplicatedDisk (Prelude.Maybe Prelude.Natural)+dataReplicationInfoReplicatedDisk_backloggedStorageBytes = Lens.lens (\DataReplicationInfoReplicatedDisk' {backloggedStorageBytes} -> backloggedStorageBytes) (\s@DataReplicationInfoReplicatedDisk' {} a -> s {backloggedStorageBytes = a} :: DataReplicationInfoReplicatedDisk)++-- | The name of the device.+dataReplicationInfoReplicatedDisk_deviceName :: Lens.Lens' DataReplicationInfoReplicatedDisk (Prelude.Maybe Prelude.Text)+dataReplicationInfoReplicatedDisk_deviceName = Lens.lens (\DataReplicationInfoReplicatedDisk' {deviceName} -> deviceName) (\s@DataReplicationInfoReplicatedDisk' {} a -> s {deviceName = a} :: DataReplicationInfoReplicatedDisk)++-- | The amount of data replicated so far in bytes.+dataReplicationInfoReplicatedDisk_replicatedStorageBytes :: Lens.Lens' DataReplicationInfoReplicatedDisk (Prelude.Maybe Prelude.Natural)+dataReplicationInfoReplicatedDisk_replicatedStorageBytes = Lens.lens (\DataReplicationInfoReplicatedDisk' {replicatedStorageBytes} -> replicatedStorageBytes) (\s@DataReplicationInfoReplicatedDisk' {} a -> s {replicatedStorageBytes = a} :: DataReplicationInfoReplicatedDisk)++-- | The amount of data to be rescanned in bytes.+dataReplicationInfoReplicatedDisk_rescannedStorageBytes :: Lens.Lens' DataReplicationInfoReplicatedDisk (Prelude.Maybe Prelude.Natural)+dataReplicationInfoReplicatedDisk_rescannedStorageBytes = Lens.lens (\DataReplicationInfoReplicatedDisk' {rescannedStorageBytes} -> rescannedStorageBytes) (\s@DataReplicationInfoReplicatedDisk' {} a -> s {rescannedStorageBytes = a} :: DataReplicationInfoReplicatedDisk)++-- | The total amount of data to be replicated in bytes.+dataReplicationInfoReplicatedDisk_totalStorageBytes :: Lens.Lens' DataReplicationInfoReplicatedDisk (Prelude.Maybe Prelude.Natural)+dataReplicationInfoReplicatedDisk_totalStorageBytes = Lens.lens (\DataReplicationInfoReplicatedDisk' {totalStorageBytes} -> totalStorageBytes) (\s@DataReplicationInfoReplicatedDisk' {} a -> s {totalStorageBytes = a} :: DataReplicationInfoReplicatedDisk)++instance+  Data.FromJSON+    DataReplicationInfoReplicatedDisk+  where+  parseJSON =+    Data.withObject+      "DataReplicationInfoReplicatedDisk"+      ( \x ->+          DataReplicationInfoReplicatedDisk'+            Prelude.<$> (x Data..:? "backloggedStorageBytes")+            Prelude.<*> (x Data..:? "deviceName")+            Prelude.<*> (x Data..:? "replicatedStorageBytes")+            Prelude.<*> (x Data..:? "rescannedStorageBytes")+            Prelude.<*> (x Data..:? "totalStorageBytes")+      )++instance+  Prelude.Hashable+    DataReplicationInfoReplicatedDisk+  where+  hashWithSalt+    _salt+    DataReplicationInfoReplicatedDisk' {..} =+      _salt+        `Prelude.hashWithSalt` backloggedStorageBytes+        `Prelude.hashWithSalt` deviceName+        `Prelude.hashWithSalt` replicatedStorageBytes+        `Prelude.hashWithSalt` rescannedStorageBytes+        `Prelude.hashWithSalt` totalStorageBytes++instance+  Prelude.NFData+    DataReplicationInfoReplicatedDisk+  where+  rnf DataReplicationInfoReplicatedDisk' {..} =+    Prelude.rnf backloggedStorageBytes+      `Prelude.seq` Prelude.rnf deviceName+      `Prelude.seq` Prelude.rnf replicatedStorageBytes+      `Prelude.seq` Prelude.rnf rescannedStorageBytes+      `Prelude.seq` Prelude.rnf totalStorageBytes
+ gen/Amazonka/DrS/Types/DataReplicationInitiation.hs view
@@ -0,0 +1,98 @@+{-# 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.DrS.Types.DataReplicationInitiation+-- 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.DrS.Types.DataReplicationInitiation where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.DataReplicationInitiationStep+import qualified Amazonka.Prelude as Prelude++-- | Data replication initiation.+--+-- /See:/ 'newDataReplicationInitiation' smart constructor.+data DataReplicationInitiation = DataReplicationInitiation'+  { -- | The date and time of the next attempt to initiate data replication.+    nextAttemptDateTime :: Prelude.Maybe Prelude.Text,+    -- | The date and time of the current attempt to initiate data replication.+    startDateTime :: Prelude.Maybe Prelude.Text,+    -- | The steps of the current attempt to initiate data replication.+    steps :: Prelude.Maybe [DataReplicationInitiationStep]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DataReplicationInitiation' 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:+--+-- 'nextAttemptDateTime', 'dataReplicationInitiation_nextAttemptDateTime' - The date and time of the next attempt to initiate data replication.+--+-- 'startDateTime', 'dataReplicationInitiation_startDateTime' - The date and time of the current attempt to initiate data replication.+--+-- 'steps', 'dataReplicationInitiation_steps' - The steps of the current attempt to initiate data replication.+newDataReplicationInitiation ::+  DataReplicationInitiation+newDataReplicationInitiation =+  DataReplicationInitiation'+    { nextAttemptDateTime =+        Prelude.Nothing,+      startDateTime = Prelude.Nothing,+      steps = Prelude.Nothing+    }++-- | The date and time of the next attempt to initiate data replication.+dataReplicationInitiation_nextAttemptDateTime :: Lens.Lens' DataReplicationInitiation (Prelude.Maybe Prelude.Text)+dataReplicationInitiation_nextAttemptDateTime = Lens.lens (\DataReplicationInitiation' {nextAttemptDateTime} -> nextAttemptDateTime) (\s@DataReplicationInitiation' {} a -> s {nextAttemptDateTime = a} :: DataReplicationInitiation)++-- | The date and time of the current attempt to initiate data replication.+dataReplicationInitiation_startDateTime :: Lens.Lens' DataReplicationInitiation (Prelude.Maybe Prelude.Text)+dataReplicationInitiation_startDateTime = Lens.lens (\DataReplicationInitiation' {startDateTime} -> startDateTime) (\s@DataReplicationInitiation' {} a -> s {startDateTime = a} :: DataReplicationInitiation)++-- | The steps of the current attempt to initiate data replication.+dataReplicationInitiation_steps :: Lens.Lens' DataReplicationInitiation (Prelude.Maybe [DataReplicationInitiationStep])+dataReplicationInitiation_steps = Lens.lens (\DataReplicationInitiation' {steps} -> steps) (\s@DataReplicationInitiation' {} a -> s {steps = a} :: DataReplicationInitiation) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON DataReplicationInitiation where+  parseJSON =+    Data.withObject+      "DataReplicationInitiation"+      ( \x ->+          DataReplicationInitiation'+            Prelude.<$> (x Data..:? "nextAttemptDateTime")+            Prelude.<*> (x Data..:? "startDateTime")+            Prelude.<*> (x Data..:? "steps" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable DataReplicationInitiation where+  hashWithSalt _salt DataReplicationInitiation' {..} =+    _salt+      `Prelude.hashWithSalt` nextAttemptDateTime+      `Prelude.hashWithSalt` startDateTime+      `Prelude.hashWithSalt` steps++instance Prelude.NFData DataReplicationInitiation where+  rnf DataReplicationInitiation' {..} =+    Prelude.rnf nextAttemptDateTime+      `Prelude.seq` Prelude.rnf startDateTime+      `Prelude.seq` Prelude.rnf steps
+ gen/Amazonka/DrS/Types/DataReplicationInitiationStep.hs view
@@ -0,0 +1,89 @@+{-# 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.DrS.Types.DataReplicationInitiationStep+-- 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.DrS.Types.DataReplicationInitiationStep where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.DataReplicationInitiationStepName+import Amazonka.DrS.Types.DataReplicationInitiationStepStatus+import qualified Amazonka.Prelude as Prelude++-- | Data replication initiation step.+--+-- /See:/ 'newDataReplicationInitiationStep' smart constructor.+data DataReplicationInitiationStep = DataReplicationInitiationStep'+  { -- | The name of the step.+    name :: Prelude.Maybe DataReplicationInitiationStepName,+    -- | The status of the step.+    status :: Prelude.Maybe DataReplicationInitiationStepStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DataReplicationInitiationStep' 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', 'dataReplicationInitiationStep_name' - The name of the step.+--+-- 'status', 'dataReplicationInitiationStep_status' - The status of the step.+newDataReplicationInitiationStep ::+  DataReplicationInitiationStep+newDataReplicationInitiationStep =+  DataReplicationInitiationStep'+    { name =+        Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The name of the step.+dataReplicationInitiationStep_name :: Lens.Lens' DataReplicationInitiationStep (Prelude.Maybe DataReplicationInitiationStepName)+dataReplicationInitiationStep_name = Lens.lens (\DataReplicationInitiationStep' {name} -> name) (\s@DataReplicationInitiationStep' {} a -> s {name = a} :: DataReplicationInitiationStep)++-- | The status of the step.+dataReplicationInitiationStep_status :: Lens.Lens' DataReplicationInitiationStep (Prelude.Maybe DataReplicationInitiationStepStatus)+dataReplicationInitiationStep_status = Lens.lens (\DataReplicationInitiationStep' {status} -> status) (\s@DataReplicationInitiationStep' {} a -> s {status = a} :: DataReplicationInitiationStep)++instance Data.FromJSON DataReplicationInitiationStep where+  parseJSON =+    Data.withObject+      "DataReplicationInitiationStep"+      ( \x ->+          DataReplicationInitiationStep'+            Prelude.<$> (x Data..:? "name")+            Prelude.<*> (x Data..:? "status")+      )++instance+  Prelude.Hashable+    DataReplicationInitiationStep+  where+  hashWithSalt _salt DataReplicationInitiationStep' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status++instance Prelude.NFData DataReplicationInitiationStep where+  rnf DataReplicationInitiationStep' {..} =+    Prelude.rnf name `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/DrS/Types/DataReplicationInitiationStepName.hs view
@@ -0,0 +1,116 @@+{-# 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.DrS.Types.DataReplicationInitiationStepName+-- 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.DrS.Types.DataReplicationInitiationStepName+  ( DataReplicationInitiationStepName+      ( ..,+        DataReplicationInitiationStepName_ATTACH_STAGING_DISKS,+        DataReplicationInitiationStepName_AUTHENTICATE_WITH_SERVICE,+        DataReplicationInitiationStepName_BOOT_REPLICATION_SERVER,+        DataReplicationInitiationStepName_CONNECT_AGENT_TO_REPLICATION_SERVER,+        DataReplicationInitiationStepName_CREATE_SECURITY_GROUP,+        DataReplicationInitiationStepName_CREATE_STAGING_DISKS,+        DataReplicationInitiationStepName_DOWNLOAD_REPLICATION_SOFTWARE,+        DataReplicationInitiationStepName_LAUNCH_REPLICATION_SERVER,+        DataReplicationInitiationStepName_PAIR_REPLICATION_SERVER_WITH_AGENT,+        DataReplicationInitiationStepName_START_DATA_TRANSFER,+        DataReplicationInitiationStepName_WAIT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DataReplicationInitiationStepName = DataReplicationInitiationStepName'+  { fromDataReplicationInitiationStepName ::+      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 DataReplicationInitiationStepName_ATTACH_STAGING_DISKS :: DataReplicationInitiationStepName+pattern DataReplicationInitiationStepName_ATTACH_STAGING_DISKS = DataReplicationInitiationStepName' "ATTACH_STAGING_DISKS"++pattern DataReplicationInitiationStepName_AUTHENTICATE_WITH_SERVICE :: DataReplicationInitiationStepName+pattern DataReplicationInitiationStepName_AUTHENTICATE_WITH_SERVICE = DataReplicationInitiationStepName' "AUTHENTICATE_WITH_SERVICE"++pattern DataReplicationInitiationStepName_BOOT_REPLICATION_SERVER :: DataReplicationInitiationStepName+pattern DataReplicationInitiationStepName_BOOT_REPLICATION_SERVER = DataReplicationInitiationStepName' "BOOT_REPLICATION_SERVER"++pattern DataReplicationInitiationStepName_CONNECT_AGENT_TO_REPLICATION_SERVER :: DataReplicationInitiationStepName+pattern DataReplicationInitiationStepName_CONNECT_AGENT_TO_REPLICATION_SERVER = DataReplicationInitiationStepName' "CONNECT_AGENT_TO_REPLICATION_SERVER"++pattern DataReplicationInitiationStepName_CREATE_SECURITY_GROUP :: DataReplicationInitiationStepName+pattern DataReplicationInitiationStepName_CREATE_SECURITY_GROUP = DataReplicationInitiationStepName' "CREATE_SECURITY_GROUP"++pattern DataReplicationInitiationStepName_CREATE_STAGING_DISKS :: DataReplicationInitiationStepName+pattern DataReplicationInitiationStepName_CREATE_STAGING_DISKS = DataReplicationInitiationStepName' "CREATE_STAGING_DISKS"++pattern DataReplicationInitiationStepName_DOWNLOAD_REPLICATION_SOFTWARE :: DataReplicationInitiationStepName+pattern DataReplicationInitiationStepName_DOWNLOAD_REPLICATION_SOFTWARE = DataReplicationInitiationStepName' "DOWNLOAD_REPLICATION_SOFTWARE"++pattern DataReplicationInitiationStepName_LAUNCH_REPLICATION_SERVER :: DataReplicationInitiationStepName+pattern DataReplicationInitiationStepName_LAUNCH_REPLICATION_SERVER = DataReplicationInitiationStepName' "LAUNCH_REPLICATION_SERVER"++pattern DataReplicationInitiationStepName_PAIR_REPLICATION_SERVER_WITH_AGENT :: DataReplicationInitiationStepName+pattern DataReplicationInitiationStepName_PAIR_REPLICATION_SERVER_WITH_AGENT = DataReplicationInitiationStepName' "PAIR_REPLICATION_SERVER_WITH_AGENT"++pattern DataReplicationInitiationStepName_START_DATA_TRANSFER :: DataReplicationInitiationStepName+pattern DataReplicationInitiationStepName_START_DATA_TRANSFER = DataReplicationInitiationStepName' "START_DATA_TRANSFER"++pattern DataReplicationInitiationStepName_WAIT :: DataReplicationInitiationStepName+pattern DataReplicationInitiationStepName_WAIT = DataReplicationInitiationStepName' "WAIT"++{-# COMPLETE+  DataReplicationInitiationStepName_ATTACH_STAGING_DISKS,+  DataReplicationInitiationStepName_AUTHENTICATE_WITH_SERVICE,+  DataReplicationInitiationStepName_BOOT_REPLICATION_SERVER,+  DataReplicationInitiationStepName_CONNECT_AGENT_TO_REPLICATION_SERVER,+  DataReplicationInitiationStepName_CREATE_SECURITY_GROUP,+  DataReplicationInitiationStepName_CREATE_STAGING_DISKS,+  DataReplicationInitiationStepName_DOWNLOAD_REPLICATION_SOFTWARE,+  DataReplicationInitiationStepName_LAUNCH_REPLICATION_SERVER,+  DataReplicationInitiationStepName_PAIR_REPLICATION_SERVER_WITH_AGENT,+  DataReplicationInitiationStepName_START_DATA_TRANSFER,+  DataReplicationInitiationStepName_WAIT,+  DataReplicationInitiationStepName'+  #-}
+ gen/Amazonka/DrS/Types/DataReplicationInitiationStepStatus.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.DrS.Types.DataReplicationInitiationStepStatus+-- 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.DrS.Types.DataReplicationInitiationStepStatus+  ( DataReplicationInitiationStepStatus+      ( ..,+        DataReplicationInitiationStepStatus_FAILED,+        DataReplicationInitiationStepStatus_IN_PROGRESS,+        DataReplicationInitiationStepStatus_NOT_STARTED,+        DataReplicationInitiationStepStatus_SKIPPED,+        DataReplicationInitiationStepStatus_SUCCEEDED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DataReplicationInitiationStepStatus = DataReplicationInitiationStepStatus'+  { fromDataReplicationInitiationStepStatus ::+      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 DataReplicationInitiationStepStatus_FAILED :: DataReplicationInitiationStepStatus+pattern DataReplicationInitiationStepStatus_FAILED = DataReplicationInitiationStepStatus' "FAILED"++pattern DataReplicationInitiationStepStatus_IN_PROGRESS :: DataReplicationInitiationStepStatus+pattern DataReplicationInitiationStepStatus_IN_PROGRESS = DataReplicationInitiationStepStatus' "IN_PROGRESS"++pattern DataReplicationInitiationStepStatus_NOT_STARTED :: DataReplicationInitiationStepStatus+pattern DataReplicationInitiationStepStatus_NOT_STARTED = DataReplicationInitiationStepStatus' "NOT_STARTED"++pattern DataReplicationInitiationStepStatus_SKIPPED :: DataReplicationInitiationStepStatus+pattern DataReplicationInitiationStepStatus_SKIPPED = DataReplicationInitiationStepStatus' "SKIPPED"++pattern DataReplicationInitiationStepStatus_SUCCEEDED :: DataReplicationInitiationStepStatus+pattern DataReplicationInitiationStepStatus_SUCCEEDED = DataReplicationInitiationStepStatus' "SUCCEEDED"++{-# COMPLETE+  DataReplicationInitiationStepStatus_FAILED,+  DataReplicationInitiationStepStatus_IN_PROGRESS,+  DataReplicationInitiationStepStatus_NOT_STARTED,+  DataReplicationInitiationStepStatus_SKIPPED,+  DataReplicationInitiationStepStatus_SUCCEEDED,+  DataReplicationInitiationStepStatus'+  #-}
+ gen/Amazonka/DrS/Types/DataReplicationState.hs view
@@ -0,0 +1,111 @@+{-# 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.DrS.Types.DataReplicationState+-- 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.DrS.Types.DataReplicationState+  ( DataReplicationState+      ( ..,+        DataReplicationState_BACKLOG,+        DataReplicationState_CONTINUOUS,+        DataReplicationState_CREATING_SNAPSHOT,+        DataReplicationState_DISCONNECTED,+        DataReplicationState_INITIAL_SYNC,+        DataReplicationState_INITIATING,+        DataReplicationState_PAUSED,+        DataReplicationState_RESCAN,+        DataReplicationState_STALLED,+        DataReplicationState_STOPPED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DataReplicationState = DataReplicationState'+  { fromDataReplicationState ::+      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 DataReplicationState_BACKLOG :: DataReplicationState+pattern DataReplicationState_BACKLOG = DataReplicationState' "BACKLOG"++pattern DataReplicationState_CONTINUOUS :: DataReplicationState+pattern DataReplicationState_CONTINUOUS = DataReplicationState' "CONTINUOUS"++pattern DataReplicationState_CREATING_SNAPSHOT :: DataReplicationState+pattern DataReplicationState_CREATING_SNAPSHOT = DataReplicationState' "CREATING_SNAPSHOT"++pattern DataReplicationState_DISCONNECTED :: DataReplicationState+pattern DataReplicationState_DISCONNECTED = DataReplicationState' "DISCONNECTED"++pattern DataReplicationState_INITIAL_SYNC :: DataReplicationState+pattern DataReplicationState_INITIAL_SYNC = DataReplicationState' "INITIAL_SYNC"++pattern DataReplicationState_INITIATING :: DataReplicationState+pattern DataReplicationState_INITIATING = DataReplicationState' "INITIATING"++pattern DataReplicationState_PAUSED :: DataReplicationState+pattern DataReplicationState_PAUSED = DataReplicationState' "PAUSED"++pattern DataReplicationState_RESCAN :: DataReplicationState+pattern DataReplicationState_RESCAN = DataReplicationState' "RESCAN"++pattern DataReplicationState_STALLED :: DataReplicationState+pattern DataReplicationState_STALLED = DataReplicationState' "STALLED"++pattern DataReplicationState_STOPPED :: DataReplicationState+pattern DataReplicationState_STOPPED = DataReplicationState' "STOPPED"++{-# COMPLETE+  DataReplicationState_BACKLOG,+  DataReplicationState_CONTINUOUS,+  DataReplicationState_CREATING_SNAPSHOT,+  DataReplicationState_DISCONNECTED,+  DataReplicationState_INITIAL_SYNC,+  DataReplicationState_INITIATING,+  DataReplicationState_PAUSED,+  DataReplicationState_RESCAN,+  DataReplicationState_STALLED,+  DataReplicationState_STOPPED,+  DataReplicationState'+  #-}
+ gen/Amazonka/DrS/Types/DescribeJobsRequestFilters.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.DrS.Types.DescribeJobsRequestFilters+-- 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.DrS.Types.DescribeJobsRequestFilters 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++-- | A set of filters by which to return Jobs.+--+-- /See:/ 'newDescribeJobsRequestFilters' smart constructor.+data DescribeJobsRequestFilters = DescribeJobsRequestFilters'+  { -- | The start date in a date range query.+    fromDate :: Prelude.Maybe Prelude.Text,+    -- | An array of Job IDs that should be returned. An empty array means all+    -- jobs.+    jobIDs :: Prelude.Maybe [Prelude.Text],+    -- | The end date in a date range query.+    toDate :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeJobsRequestFilters' 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:+--+-- 'fromDate', 'describeJobsRequestFilters_fromDate' - The start date in a date range query.+--+-- 'jobIDs', 'describeJobsRequestFilters_jobIDs' - An array of Job IDs that should be returned. An empty array means all+-- jobs.+--+-- 'toDate', 'describeJobsRequestFilters_toDate' - The end date in a date range query.+newDescribeJobsRequestFilters ::+  DescribeJobsRequestFilters+newDescribeJobsRequestFilters =+  DescribeJobsRequestFilters'+    { fromDate =+        Prelude.Nothing,+      jobIDs = Prelude.Nothing,+      toDate = Prelude.Nothing+    }++-- | The start date in a date range query.+describeJobsRequestFilters_fromDate :: Lens.Lens' DescribeJobsRequestFilters (Prelude.Maybe Prelude.Text)+describeJobsRequestFilters_fromDate = Lens.lens (\DescribeJobsRequestFilters' {fromDate} -> fromDate) (\s@DescribeJobsRequestFilters' {} a -> s {fromDate = a} :: DescribeJobsRequestFilters)++-- | An array of Job IDs that should be returned. An empty array means all+-- jobs.+describeJobsRequestFilters_jobIDs :: Lens.Lens' DescribeJobsRequestFilters (Prelude.Maybe [Prelude.Text])+describeJobsRequestFilters_jobIDs = Lens.lens (\DescribeJobsRequestFilters' {jobIDs} -> jobIDs) (\s@DescribeJobsRequestFilters' {} a -> s {jobIDs = a} :: DescribeJobsRequestFilters) Prelude.. Lens.mapping Lens.coerced++-- | The end date in a date range query.+describeJobsRequestFilters_toDate :: Lens.Lens' DescribeJobsRequestFilters (Prelude.Maybe Prelude.Text)+describeJobsRequestFilters_toDate = Lens.lens (\DescribeJobsRequestFilters' {toDate} -> toDate) (\s@DescribeJobsRequestFilters' {} a -> s {toDate = a} :: DescribeJobsRequestFilters)++instance Prelude.Hashable DescribeJobsRequestFilters where+  hashWithSalt _salt DescribeJobsRequestFilters' {..} =+    _salt+      `Prelude.hashWithSalt` fromDate+      `Prelude.hashWithSalt` jobIDs+      `Prelude.hashWithSalt` toDate++instance Prelude.NFData DescribeJobsRequestFilters where+  rnf DescribeJobsRequestFilters' {..} =+    Prelude.rnf fromDate+      `Prelude.seq` Prelude.rnf jobIDs+      `Prelude.seq` Prelude.rnf toDate++instance Data.ToJSON DescribeJobsRequestFilters where+  toJSON DescribeJobsRequestFilters' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("fromDate" Data..=) Prelude.<$> fromDate,+            ("jobIDs" Data..=) Prelude.<$> jobIDs,+            ("toDate" Data..=) Prelude.<$> toDate+          ]+      )
+ gen/Amazonka/DrS/Types/DescribeRecoveryInstancesRequestFilters.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.DrS.Types.DescribeRecoveryInstancesRequestFilters+-- 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.DrS.Types.DescribeRecoveryInstancesRequestFilters 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++-- | A set of filters by which to return Recovery Instances.+--+-- /See:/ 'newDescribeRecoveryInstancesRequestFilters' smart constructor.+data DescribeRecoveryInstancesRequestFilters = DescribeRecoveryInstancesRequestFilters'+  { -- | An array of Recovery Instance IDs that should be returned. An empty+    -- array means all Recovery Instances.+    recoveryInstanceIDs :: Prelude.Maybe [Prelude.Text],+    -- | An array of Source Server IDs for which associated Recovery Instances+    -- should be returned.+    sourceServerIDs :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRecoveryInstancesRequestFilters' 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:+--+-- 'recoveryInstanceIDs', 'describeRecoveryInstancesRequestFilters_recoveryInstanceIDs' - An array of Recovery Instance IDs that should be returned. An empty+-- array means all Recovery Instances.+--+-- 'sourceServerIDs', 'describeRecoveryInstancesRequestFilters_sourceServerIDs' - An array of Source Server IDs for which associated Recovery Instances+-- should be returned.+newDescribeRecoveryInstancesRequestFilters ::+  DescribeRecoveryInstancesRequestFilters+newDescribeRecoveryInstancesRequestFilters =+  DescribeRecoveryInstancesRequestFilters'+    { recoveryInstanceIDs =+        Prelude.Nothing,+      sourceServerIDs = Prelude.Nothing+    }++-- | An array of Recovery Instance IDs that should be returned. An empty+-- array means all Recovery Instances.+describeRecoveryInstancesRequestFilters_recoveryInstanceIDs :: Lens.Lens' DescribeRecoveryInstancesRequestFilters (Prelude.Maybe [Prelude.Text])+describeRecoveryInstancesRequestFilters_recoveryInstanceIDs = Lens.lens (\DescribeRecoveryInstancesRequestFilters' {recoveryInstanceIDs} -> recoveryInstanceIDs) (\s@DescribeRecoveryInstancesRequestFilters' {} a -> s {recoveryInstanceIDs = a} :: DescribeRecoveryInstancesRequestFilters) Prelude.. Lens.mapping Lens.coerced++-- | An array of Source Server IDs for which associated Recovery Instances+-- should be returned.+describeRecoveryInstancesRequestFilters_sourceServerIDs :: Lens.Lens' DescribeRecoveryInstancesRequestFilters (Prelude.Maybe [Prelude.Text])+describeRecoveryInstancesRequestFilters_sourceServerIDs = Lens.lens (\DescribeRecoveryInstancesRequestFilters' {sourceServerIDs} -> sourceServerIDs) (\s@DescribeRecoveryInstancesRequestFilters' {} a -> s {sourceServerIDs = a} :: DescribeRecoveryInstancesRequestFilters) Prelude.. Lens.mapping Lens.coerced++instance+  Prelude.Hashable+    DescribeRecoveryInstancesRequestFilters+  where+  hashWithSalt+    _salt+    DescribeRecoveryInstancesRequestFilters' {..} =+      _salt+        `Prelude.hashWithSalt` recoveryInstanceIDs+        `Prelude.hashWithSalt` sourceServerIDs++instance+  Prelude.NFData+    DescribeRecoveryInstancesRequestFilters+  where+  rnf DescribeRecoveryInstancesRequestFilters' {..} =+    Prelude.rnf recoveryInstanceIDs+      `Prelude.seq` Prelude.rnf sourceServerIDs++instance+  Data.ToJSON+    DescribeRecoveryInstancesRequestFilters+  where+  toJSON DescribeRecoveryInstancesRequestFilters' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("recoveryInstanceIDs" Data..=)+              Prelude.<$> recoveryInstanceIDs,+            ("sourceServerIDs" Data..=)+              Prelude.<$> sourceServerIDs+          ]+      )
+ gen/Amazonka/DrS/Types/DescribeRecoverySnapshotsRequestFilters.hs view
@@ -0,0 +1,95 @@+{-# 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.DrS.Types.DescribeRecoverySnapshotsRequestFilters+-- 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.DrS.Types.DescribeRecoverySnapshotsRequestFilters 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++-- | A set of filters by which to return Recovery Snapshots.+--+-- /See:/ 'newDescribeRecoverySnapshotsRequestFilters' smart constructor.+data DescribeRecoverySnapshotsRequestFilters = DescribeRecoverySnapshotsRequestFilters'+  { -- | The start date in a date range query.+    fromDateTime :: Prelude.Maybe Prelude.Text,+    -- | The end date in a date range query.+    toDateTime :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRecoverySnapshotsRequestFilters' 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:+--+-- 'fromDateTime', 'describeRecoverySnapshotsRequestFilters_fromDateTime' - The start date in a date range query.+--+-- 'toDateTime', 'describeRecoverySnapshotsRequestFilters_toDateTime' - The end date in a date range query.+newDescribeRecoverySnapshotsRequestFilters ::+  DescribeRecoverySnapshotsRequestFilters+newDescribeRecoverySnapshotsRequestFilters =+  DescribeRecoverySnapshotsRequestFilters'+    { fromDateTime =+        Prelude.Nothing,+      toDateTime = Prelude.Nothing+    }++-- | The start date in a date range query.+describeRecoverySnapshotsRequestFilters_fromDateTime :: Lens.Lens' DescribeRecoverySnapshotsRequestFilters (Prelude.Maybe Prelude.Text)+describeRecoverySnapshotsRequestFilters_fromDateTime = Lens.lens (\DescribeRecoverySnapshotsRequestFilters' {fromDateTime} -> fromDateTime) (\s@DescribeRecoverySnapshotsRequestFilters' {} a -> s {fromDateTime = a} :: DescribeRecoverySnapshotsRequestFilters)++-- | The end date in a date range query.+describeRecoverySnapshotsRequestFilters_toDateTime :: Lens.Lens' DescribeRecoverySnapshotsRequestFilters (Prelude.Maybe Prelude.Text)+describeRecoverySnapshotsRequestFilters_toDateTime = Lens.lens (\DescribeRecoverySnapshotsRequestFilters' {toDateTime} -> toDateTime) (\s@DescribeRecoverySnapshotsRequestFilters' {} a -> s {toDateTime = a} :: DescribeRecoverySnapshotsRequestFilters)++instance+  Prelude.Hashable+    DescribeRecoverySnapshotsRequestFilters+  where+  hashWithSalt+    _salt+    DescribeRecoverySnapshotsRequestFilters' {..} =+      _salt+        `Prelude.hashWithSalt` fromDateTime+        `Prelude.hashWithSalt` toDateTime++instance+  Prelude.NFData+    DescribeRecoverySnapshotsRequestFilters+  where+  rnf DescribeRecoverySnapshotsRequestFilters' {..} =+    Prelude.rnf fromDateTime+      `Prelude.seq` Prelude.rnf toDateTime++instance+  Data.ToJSON+    DescribeRecoverySnapshotsRequestFilters+  where+  toJSON DescribeRecoverySnapshotsRequestFilters' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("fromDateTime" Data..=) Prelude.<$> fromDateTime,+            ("toDateTime" Data..=) Prelude.<$> toDateTime+          ]+      )
+ gen/Amazonka/DrS/Types/DescribeSourceServersRequestFilters.hs view
@@ -0,0 +1,118 @@+{-# 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.DrS.Types.DescribeSourceServersRequestFilters+-- 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.DrS.Types.DescribeSourceServersRequestFilters 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++-- | A set of filters by which to return Source Servers.+--+-- /See:/ 'newDescribeSourceServersRequestFilters' smart constructor.+data DescribeSourceServersRequestFilters = DescribeSourceServersRequestFilters'+  { -- | An ID that describes the hardware of the Source Server. This is either+    -- an EC2 instance id, a VMware uuid or a mac address.+    hardwareId :: Prelude.Maybe Prelude.Text,+    -- | An array of Source Servers IDs that should be returned. An empty array+    -- means all Source Servers.+    sourceServerIDs :: Prelude.Maybe [Prelude.Text],+    -- | An array of staging account IDs that extended source servers belong to.+    -- An empty array means all source servers will be shown.+    stagingAccountIDs :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeSourceServersRequestFilters' 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:+--+-- 'hardwareId', 'describeSourceServersRequestFilters_hardwareId' - An ID that describes the hardware of the Source Server. This is either+-- an EC2 instance id, a VMware uuid or a mac address.+--+-- 'sourceServerIDs', 'describeSourceServersRequestFilters_sourceServerIDs' - An array of Source Servers IDs that should be returned. An empty array+-- means all Source Servers.+--+-- 'stagingAccountIDs', 'describeSourceServersRequestFilters_stagingAccountIDs' - An array of staging account IDs that extended source servers belong to.+-- An empty array means all source servers will be shown.+newDescribeSourceServersRequestFilters ::+  DescribeSourceServersRequestFilters+newDescribeSourceServersRequestFilters =+  DescribeSourceServersRequestFilters'+    { hardwareId =+        Prelude.Nothing,+      sourceServerIDs = Prelude.Nothing,+      stagingAccountIDs = Prelude.Nothing+    }++-- | An ID that describes the hardware of the Source Server. This is either+-- an EC2 instance id, a VMware uuid or a mac address.+describeSourceServersRequestFilters_hardwareId :: Lens.Lens' DescribeSourceServersRequestFilters (Prelude.Maybe Prelude.Text)+describeSourceServersRequestFilters_hardwareId = Lens.lens (\DescribeSourceServersRequestFilters' {hardwareId} -> hardwareId) (\s@DescribeSourceServersRequestFilters' {} a -> s {hardwareId = a} :: DescribeSourceServersRequestFilters)++-- | An array of Source Servers IDs that should be returned. An empty array+-- means all Source Servers.+describeSourceServersRequestFilters_sourceServerIDs :: Lens.Lens' DescribeSourceServersRequestFilters (Prelude.Maybe [Prelude.Text])+describeSourceServersRequestFilters_sourceServerIDs = Lens.lens (\DescribeSourceServersRequestFilters' {sourceServerIDs} -> sourceServerIDs) (\s@DescribeSourceServersRequestFilters' {} a -> s {sourceServerIDs = a} :: DescribeSourceServersRequestFilters) Prelude.. Lens.mapping Lens.coerced++-- | An array of staging account IDs that extended source servers belong to.+-- An empty array means all source servers will be shown.+describeSourceServersRequestFilters_stagingAccountIDs :: Lens.Lens' DescribeSourceServersRequestFilters (Prelude.Maybe [Prelude.Text])+describeSourceServersRequestFilters_stagingAccountIDs = Lens.lens (\DescribeSourceServersRequestFilters' {stagingAccountIDs} -> stagingAccountIDs) (\s@DescribeSourceServersRequestFilters' {} a -> s {stagingAccountIDs = a} :: DescribeSourceServersRequestFilters) Prelude.. Lens.mapping Lens.coerced++instance+  Prelude.Hashable+    DescribeSourceServersRequestFilters+  where+  hashWithSalt+    _salt+    DescribeSourceServersRequestFilters' {..} =+      _salt+        `Prelude.hashWithSalt` hardwareId+        `Prelude.hashWithSalt` sourceServerIDs+        `Prelude.hashWithSalt` stagingAccountIDs++instance+  Prelude.NFData+    DescribeSourceServersRequestFilters+  where+  rnf DescribeSourceServersRequestFilters' {..} =+    Prelude.rnf hardwareId+      `Prelude.seq` Prelude.rnf sourceServerIDs+      `Prelude.seq` Prelude.rnf stagingAccountIDs++instance+  Data.ToJSON+    DescribeSourceServersRequestFilters+  where+  toJSON DescribeSourceServersRequestFilters' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("hardwareId" Data..=) Prelude.<$> hardwareId,+            ("sourceServerIDs" Data..=)+              Prelude.<$> sourceServerIDs,+            ("stagingAccountIDs" Data..=)+              Prelude.<$> stagingAccountIDs+          ]+      )
+ gen/Amazonka/DrS/Types/Disk.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.DrS.Types.Disk+-- 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.DrS.Types.Disk 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 data storage device on a server.+--+-- /See:/ 'newDisk' smart constructor.+data Disk = Disk'+  { -- | The amount of storage on the disk in bytes.+    bytes :: Prelude.Maybe Prelude.Natural,+    -- | The disk or device name.+    deviceName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Disk' 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:+--+-- 'bytes', 'disk_bytes' - The amount of storage on the disk in bytes.+--+-- 'deviceName', 'disk_deviceName' - The disk or device name.+newDisk ::+  Disk+newDisk =+  Disk'+    { bytes = Prelude.Nothing,+      deviceName = Prelude.Nothing+    }++-- | The amount of storage on the disk in bytes.+disk_bytes :: Lens.Lens' Disk (Prelude.Maybe Prelude.Natural)+disk_bytes = Lens.lens (\Disk' {bytes} -> bytes) (\s@Disk' {} a -> s {bytes = a} :: Disk)++-- | The disk or device name.+disk_deviceName :: Lens.Lens' Disk (Prelude.Maybe Prelude.Text)+disk_deviceName = Lens.lens (\Disk' {deviceName} -> deviceName) (\s@Disk' {} a -> s {deviceName = a} :: Disk)++instance Data.FromJSON Disk where+  parseJSON =+    Data.withObject+      "Disk"+      ( \x ->+          Disk'+            Prelude.<$> (x Data..:? "bytes")+            Prelude.<*> (x Data..:? "deviceName")+      )++instance Prelude.Hashable Disk where+  hashWithSalt _salt Disk' {..} =+    _salt+      `Prelude.hashWithSalt` bytes+      `Prelude.hashWithSalt` deviceName++instance Prelude.NFData Disk where+  rnf Disk' {..} =+    Prelude.rnf bytes+      `Prelude.seq` Prelude.rnf deviceName
+ gen/Amazonka/DrS/Types/EC2InstanceState.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.DrS.Types.EC2InstanceState+-- 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.DrS.Types.EC2InstanceState+  ( EC2InstanceState+      ( ..,+        EC2InstanceState_NOT_FOUND,+        EC2InstanceState_PENDING,+        EC2InstanceState_RUNNING,+        EC2InstanceState_SHUTTING_DOWN,+        EC2InstanceState_STOPPED,+        EC2InstanceState_STOPPING,+        EC2InstanceState_TERMINATED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype EC2InstanceState = EC2InstanceState'+  { fromEC2InstanceState ::+      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 EC2InstanceState_NOT_FOUND :: EC2InstanceState+pattern EC2InstanceState_NOT_FOUND = EC2InstanceState' "NOT_FOUND"++pattern EC2InstanceState_PENDING :: EC2InstanceState+pattern EC2InstanceState_PENDING = EC2InstanceState' "PENDING"++pattern EC2InstanceState_RUNNING :: EC2InstanceState+pattern EC2InstanceState_RUNNING = EC2InstanceState' "RUNNING"++pattern EC2InstanceState_SHUTTING_DOWN :: EC2InstanceState+pattern EC2InstanceState_SHUTTING_DOWN = EC2InstanceState' "SHUTTING-DOWN"++pattern EC2InstanceState_STOPPED :: EC2InstanceState+pattern EC2InstanceState_STOPPED = EC2InstanceState' "STOPPED"++pattern EC2InstanceState_STOPPING :: EC2InstanceState+pattern EC2InstanceState_STOPPING = EC2InstanceState' "STOPPING"++pattern EC2InstanceState_TERMINATED :: EC2InstanceState+pattern EC2InstanceState_TERMINATED = EC2InstanceState' "TERMINATED"++{-# COMPLETE+  EC2InstanceState_NOT_FOUND,+  EC2InstanceState_PENDING,+  EC2InstanceState_RUNNING,+  EC2InstanceState_SHUTTING_DOWN,+  EC2InstanceState_STOPPED,+  EC2InstanceState_STOPPING,+  EC2InstanceState_TERMINATED,+  EC2InstanceState'+  #-}
+ gen/Amazonka/DrS/Types/ExtensionStatus.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.DrS.Types.ExtensionStatus+-- 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.DrS.Types.ExtensionStatus+  ( ExtensionStatus+      ( ..,+        ExtensionStatus_EXTENDED,+        ExtensionStatus_EXTENSION_ERROR,+        ExtensionStatus_NOT_EXTENDED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ExtensionStatus = ExtensionStatus'+  { fromExtensionStatus ::+      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 ExtensionStatus_EXTENDED :: ExtensionStatus+pattern ExtensionStatus_EXTENDED = ExtensionStatus' "EXTENDED"++pattern ExtensionStatus_EXTENSION_ERROR :: ExtensionStatus+pattern ExtensionStatus_EXTENSION_ERROR = ExtensionStatus' "EXTENSION_ERROR"++pattern ExtensionStatus_NOT_EXTENDED :: ExtensionStatus+pattern ExtensionStatus_NOT_EXTENDED = ExtensionStatus' "NOT_EXTENDED"++{-# COMPLETE+  ExtensionStatus_EXTENDED,+  ExtensionStatus_EXTENSION_ERROR,+  ExtensionStatus_NOT_EXTENDED,+  ExtensionStatus'+  #-}
+ gen/Amazonka/DrS/Types/FailbackLaunchType.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.DrS.Types.FailbackLaunchType+-- 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.DrS.Types.FailbackLaunchType+  ( FailbackLaunchType+      ( ..,+        FailbackLaunchType_DRILL,+        FailbackLaunchType_RECOVERY+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FailbackLaunchType = FailbackLaunchType'+  { fromFailbackLaunchType ::+      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 FailbackLaunchType_DRILL :: FailbackLaunchType+pattern FailbackLaunchType_DRILL = FailbackLaunchType' "DRILL"++pattern FailbackLaunchType_RECOVERY :: FailbackLaunchType+pattern FailbackLaunchType_RECOVERY = FailbackLaunchType' "RECOVERY"++{-# COMPLETE+  FailbackLaunchType_DRILL,+  FailbackLaunchType_RECOVERY,+  FailbackLaunchType'+  #-}
+ gen/Amazonka/DrS/Types/FailbackReplicationError.hs view
@@ -0,0 +1,166 @@+{-# 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.DrS.Types.FailbackReplicationError+-- 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.DrS.Types.FailbackReplicationError+  ( FailbackReplicationError+      ( ..,+        FailbackReplicationError_AGENT_NOT_SEEN,+        FailbackReplicationError_FAILBACK_CLIENT_NOT_SEEN,+        FailbackReplicationError_FAILED_GETTING_REPLICATION_STATE,+        FailbackReplicationError_FAILED_TO_ATTACH_STAGING_DISKS,+        FailbackReplicationError_FAILED_TO_AUTHENTICATE_WITH_SERVICE,+        FailbackReplicationError_FAILED_TO_BOOT_REPLICATION_SERVER,+        FailbackReplicationError_FAILED_TO_CONFIGURE_REPLICATION_SOFTWARE,+        FailbackReplicationError_FAILED_TO_CONNECT_AGENT_TO_REPLICATION_SERVER,+        FailbackReplicationError_FAILED_TO_CREATE_SECURITY_GROUP,+        FailbackReplicationError_FAILED_TO_CREATE_STAGING_DISKS,+        FailbackReplicationError_FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE,+        FailbackReplicationError_FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE_TO_FAILBACK_CLIENT,+        FailbackReplicationError_FAILED_TO_ESTABLISH_AGENT_REPLICATOR_SOFTWARE_COMMUNICATION,+        FailbackReplicationError_FAILED_TO_ESTABLISH_RECOVERY_INSTANCE_COMMUNICATION,+        FailbackReplicationError_FAILED_TO_LAUNCH_REPLICATION_SERVER,+        FailbackReplicationError_FAILED_TO_PAIR_AGENT_WITH_REPLICATION_SOFTWARE,+        FailbackReplicationError_FAILED_TO_PAIR_REPLICATION_SERVER_WITH_AGENT,+        FailbackReplicationError_FAILED_TO_START_DATA_TRANSFER,+        FailbackReplicationError_NOT_CONVERGING,+        FailbackReplicationError_SNAPSHOTS_FAILURE,+        FailbackReplicationError_UNSTABLE_NETWORK+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FailbackReplicationError = FailbackReplicationError'+  { fromFailbackReplicationError ::+      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 FailbackReplicationError_AGENT_NOT_SEEN :: FailbackReplicationError+pattern FailbackReplicationError_AGENT_NOT_SEEN = FailbackReplicationError' "AGENT_NOT_SEEN"++pattern FailbackReplicationError_FAILBACK_CLIENT_NOT_SEEN :: FailbackReplicationError+pattern FailbackReplicationError_FAILBACK_CLIENT_NOT_SEEN = FailbackReplicationError' "FAILBACK_CLIENT_NOT_SEEN"++pattern FailbackReplicationError_FAILED_GETTING_REPLICATION_STATE :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_GETTING_REPLICATION_STATE = FailbackReplicationError' "FAILED_GETTING_REPLICATION_STATE"++pattern FailbackReplicationError_FAILED_TO_ATTACH_STAGING_DISKS :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_ATTACH_STAGING_DISKS = FailbackReplicationError' "FAILED_TO_ATTACH_STAGING_DISKS"++pattern FailbackReplicationError_FAILED_TO_AUTHENTICATE_WITH_SERVICE :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_AUTHENTICATE_WITH_SERVICE = FailbackReplicationError' "FAILED_TO_AUTHENTICATE_WITH_SERVICE"++pattern FailbackReplicationError_FAILED_TO_BOOT_REPLICATION_SERVER :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_BOOT_REPLICATION_SERVER = FailbackReplicationError' "FAILED_TO_BOOT_REPLICATION_SERVER"++pattern FailbackReplicationError_FAILED_TO_CONFIGURE_REPLICATION_SOFTWARE :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_CONFIGURE_REPLICATION_SOFTWARE = FailbackReplicationError' "FAILED_TO_CONFIGURE_REPLICATION_SOFTWARE"++pattern FailbackReplicationError_FAILED_TO_CONNECT_AGENT_TO_REPLICATION_SERVER :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_CONNECT_AGENT_TO_REPLICATION_SERVER = FailbackReplicationError' "FAILED_TO_CONNECT_AGENT_TO_REPLICATION_SERVER"++pattern FailbackReplicationError_FAILED_TO_CREATE_SECURITY_GROUP :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_CREATE_SECURITY_GROUP = FailbackReplicationError' "FAILED_TO_CREATE_SECURITY_GROUP"++pattern FailbackReplicationError_FAILED_TO_CREATE_STAGING_DISKS :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_CREATE_STAGING_DISKS = FailbackReplicationError' "FAILED_TO_CREATE_STAGING_DISKS"++pattern FailbackReplicationError_FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE = FailbackReplicationError' "FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE"++pattern FailbackReplicationError_FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE_TO_FAILBACK_CLIENT :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE_TO_FAILBACK_CLIENT = FailbackReplicationError' "FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE_TO_FAILBACK_CLIENT"++pattern FailbackReplicationError_FAILED_TO_ESTABLISH_AGENT_REPLICATOR_SOFTWARE_COMMUNICATION :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_ESTABLISH_AGENT_REPLICATOR_SOFTWARE_COMMUNICATION = FailbackReplicationError' "FAILED_TO_ESTABLISH_AGENT_REPLICATOR_SOFTWARE_COMMUNICATION"++pattern FailbackReplicationError_FAILED_TO_ESTABLISH_RECOVERY_INSTANCE_COMMUNICATION :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_ESTABLISH_RECOVERY_INSTANCE_COMMUNICATION = FailbackReplicationError' "FAILED_TO_ESTABLISH_RECOVERY_INSTANCE_COMMUNICATION"++pattern FailbackReplicationError_FAILED_TO_LAUNCH_REPLICATION_SERVER :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_LAUNCH_REPLICATION_SERVER = FailbackReplicationError' "FAILED_TO_LAUNCH_REPLICATION_SERVER"++pattern FailbackReplicationError_FAILED_TO_PAIR_AGENT_WITH_REPLICATION_SOFTWARE :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_PAIR_AGENT_WITH_REPLICATION_SOFTWARE = FailbackReplicationError' "FAILED_TO_PAIR_AGENT_WITH_REPLICATION_SOFTWARE"++pattern FailbackReplicationError_FAILED_TO_PAIR_REPLICATION_SERVER_WITH_AGENT :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_PAIR_REPLICATION_SERVER_WITH_AGENT = FailbackReplicationError' "FAILED_TO_PAIR_REPLICATION_SERVER_WITH_AGENT"++pattern FailbackReplicationError_FAILED_TO_START_DATA_TRANSFER :: FailbackReplicationError+pattern FailbackReplicationError_FAILED_TO_START_DATA_TRANSFER = FailbackReplicationError' "FAILED_TO_START_DATA_TRANSFER"++pattern FailbackReplicationError_NOT_CONVERGING :: FailbackReplicationError+pattern FailbackReplicationError_NOT_CONVERGING = FailbackReplicationError' "NOT_CONVERGING"++pattern FailbackReplicationError_SNAPSHOTS_FAILURE :: FailbackReplicationError+pattern FailbackReplicationError_SNAPSHOTS_FAILURE = FailbackReplicationError' "SNAPSHOTS_FAILURE"++pattern FailbackReplicationError_UNSTABLE_NETWORK :: FailbackReplicationError+pattern FailbackReplicationError_UNSTABLE_NETWORK = FailbackReplicationError' "UNSTABLE_NETWORK"++{-# COMPLETE+  FailbackReplicationError_AGENT_NOT_SEEN,+  FailbackReplicationError_FAILBACK_CLIENT_NOT_SEEN,+  FailbackReplicationError_FAILED_GETTING_REPLICATION_STATE,+  FailbackReplicationError_FAILED_TO_ATTACH_STAGING_DISKS,+  FailbackReplicationError_FAILED_TO_AUTHENTICATE_WITH_SERVICE,+  FailbackReplicationError_FAILED_TO_BOOT_REPLICATION_SERVER,+  FailbackReplicationError_FAILED_TO_CONFIGURE_REPLICATION_SOFTWARE,+  FailbackReplicationError_FAILED_TO_CONNECT_AGENT_TO_REPLICATION_SERVER,+  FailbackReplicationError_FAILED_TO_CREATE_SECURITY_GROUP,+  FailbackReplicationError_FAILED_TO_CREATE_STAGING_DISKS,+  FailbackReplicationError_FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE,+  FailbackReplicationError_FAILED_TO_DOWNLOAD_REPLICATION_SOFTWARE_TO_FAILBACK_CLIENT,+  FailbackReplicationError_FAILED_TO_ESTABLISH_AGENT_REPLICATOR_SOFTWARE_COMMUNICATION,+  FailbackReplicationError_FAILED_TO_ESTABLISH_RECOVERY_INSTANCE_COMMUNICATION,+  FailbackReplicationError_FAILED_TO_LAUNCH_REPLICATION_SERVER,+  FailbackReplicationError_FAILED_TO_PAIR_AGENT_WITH_REPLICATION_SOFTWARE,+  FailbackReplicationError_FAILED_TO_PAIR_REPLICATION_SERVER_WITH_AGENT,+  FailbackReplicationError_FAILED_TO_START_DATA_TRANSFER,+  FailbackReplicationError_NOT_CONVERGING,+  FailbackReplicationError_SNAPSHOTS_FAILURE,+  FailbackReplicationError_UNSTABLE_NETWORK,+  FailbackReplicationError'+  #-}
+ gen/Amazonka/DrS/Types/FailbackState.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.DrS.Types.FailbackState+-- 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.DrS.Types.FailbackState+  ( FailbackState+      ( ..,+        FailbackState_FAILBACK_COMPLETED,+        FailbackState_FAILBACK_ERROR,+        FailbackState_FAILBACK_IN_PROGRESS,+        FailbackState_FAILBACK_LAUNCH_STATE_NOT_AVAILABLE,+        FailbackState_FAILBACK_NOT_READY_FOR_LAUNCH,+        FailbackState_FAILBACK_NOT_STARTED,+        FailbackState_FAILBACK_READY_FOR_LAUNCH+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FailbackState = FailbackState'+  { fromFailbackState ::+      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 FailbackState_FAILBACK_COMPLETED :: FailbackState+pattern FailbackState_FAILBACK_COMPLETED = FailbackState' "FAILBACK_COMPLETED"++pattern FailbackState_FAILBACK_ERROR :: FailbackState+pattern FailbackState_FAILBACK_ERROR = FailbackState' "FAILBACK_ERROR"++pattern FailbackState_FAILBACK_IN_PROGRESS :: FailbackState+pattern FailbackState_FAILBACK_IN_PROGRESS = FailbackState' "FAILBACK_IN_PROGRESS"++pattern FailbackState_FAILBACK_LAUNCH_STATE_NOT_AVAILABLE :: FailbackState+pattern FailbackState_FAILBACK_LAUNCH_STATE_NOT_AVAILABLE = FailbackState' "FAILBACK_LAUNCH_STATE_NOT_AVAILABLE"++pattern FailbackState_FAILBACK_NOT_READY_FOR_LAUNCH :: FailbackState+pattern FailbackState_FAILBACK_NOT_READY_FOR_LAUNCH = FailbackState' "FAILBACK_NOT_READY_FOR_LAUNCH"++pattern FailbackState_FAILBACK_NOT_STARTED :: FailbackState+pattern FailbackState_FAILBACK_NOT_STARTED = FailbackState' "FAILBACK_NOT_STARTED"++pattern FailbackState_FAILBACK_READY_FOR_LAUNCH :: FailbackState+pattern FailbackState_FAILBACK_READY_FOR_LAUNCH = FailbackState' "FAILBACK_READY_FOR_LAUNCH"++{-# COMPLETE+  FailbackState_FAILBACK_COMPLETED,+  FailbackState_FAILBACK_ERROR,+  FailbackState_FAILBACK_IN_PROGRESS,+  FailbackState_FAILBACK_LAUNCH_STATE_NOT_AVAILABLE,+  FailbackState_FAILBACK_NOT_READY_FOR_LAUNCH,+  FailbackState_FAILBACK_NOT_STARTED,+  FailbackState_FAILBACK_READY_FOR_LAUNCH,+  FailbackState'+  #-}
+ gen/Amazonka/DrS/Types/IdentificationHints.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.DrS.Types.IdentificationHints+-- 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.DrS.Types.IdentificationHints 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++-- | Hints used to uniquely identify a machine.+--+-- /See:/ 'newIdentificationHints' smart constructor.+data IdentificationHints = IdentificationHints'+  { -- | AWS Instance ID identification hint.+    awsInstanceID :: Prelude.Maybe Prelude.Text,+    -- | Fully Qualified Domain Name identification hint.+    fqdn :: Prelude.Maybe Prelude.Text,+    -- | Hostname identification hint.+    hostname :: Prelude.Maybe Prelude.Text,+    -- | vCenter VM path identification hint.+    vmWareUuid :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IdentificationHints' 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:+--+-- 'awsInstanceID', 'identificationHints_awsInstanceID' - AWS Instance ID identification hint.+--+-- 'fqdn', 'identificationHints_fqdn' - Fully Qualified Domain Name identification hint.+--+-- 'hostname', 'identificationHints_hostname' - Hostname identification hint.+--+-- 'vmWareUuid', 'identificationHints_vmWareUuid' - vCenter VM path identification hint.+newIdentificationHints ::+  IdentificationHints+newIdentificationHints =+  IdentificationHints'+    { awsInstanceID =+        Prelude.Nothing,+      fqdn = Prelude.Nothing,+      hostname = Prelude.Nothing,+      vmWareUuid = Prelude.Nothing+    }++-- | AWS Instance ID identification hint.+identificationHints_awsInstanceID :: Lens.Lens' IdentificationHints (Prelude.Maybe Prelude.Text)+identificationHints_awsInstanceID = Lens.lens (\IdentificationHints' {awsInstanceID} -> awsInstanceID) (\s@IdentificationHints' {} a -> s {awsInstanceID = a} :: IdentificationHints)++-- | Fully Qualified Domain Name identification hint.+identificationHints_fqdn :: Lens.Lens' IdentificationHints (Prelude.Maybe Prelude.Text)+identificationHints_fqdn = Lens.lens (\IdentificationHints' {fqdn} -> fqdn) (\s@IdentificationHints' {} a -> s {fqdn = a} :: IdentificationHints)++-- | Hostname identification hint.+identificationHints_hostname :: Lens.Lens' IdentificationHints (Prelude.Maybe Prelude.Text)+identificationHints_hostname = Lens.lens (\IdentificationHints' {hostname} -> hostname) (\s@IdentificationHints' {} a -> s {hostname = a} :: IdentificationHints)++-- | vCenter VM path identification hint.+identificationHints_vmWareUuid :: Lens.Lens' IdentificationHints (Prelude.Maybe Prelude.Text)+identificationHints_vmWareUuid = Lens.lens (\IdentificationHints' {vmWareUuid} -> vmWareUuid) (\s@IdentificationHints' {} a -> s {vmWareUuid = a} :: IdentificationHints)++instance Data.FromJSON IdentificationHints where+  parseJSON =+    Data.withObject+      "IdentificationHints"+      ( \x ->+          IdentificationHints'+            Prelude.<$> (x Data..:? "awsInstanceID")+            Prelude.<*> (x Data..:? "fqdn")+            Prelude.<*> (x Data..:? "hostname")+            Prelude.<*> (x Data..:? "vmWareUuid")+      )++instance Prelude.Hashable IdentificationHints where+  hashWithSalt _salt IdentificationHints' {..} =+    _salt+      `Prelude.hashWithSalt` awsInstanceID+      `Prelude.hashWithSalt` fqdn+      `Prelude.hashWithSalt` hostname+      `Prelude.hashWithSalt` vmWareUuid++instance Prelude.NFData IdentificationHints where+  rnf IdentificationHints' {..} =+    Prelude.rnf awsInstanceID+      `Prelude.seq` Prelude.rnf fqdn+      `Prelude.seq` Prelude.rnf hostname+      `Prelude.seq` Prelude.rnf vmWareUuid
+ gen/Amazonka/DrS/Types/InitiatedBy.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.DrS.Types.InitiatedBy+-- 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.DrS.Types.InitiatedBy+  ( InitiatedBy+      ( ..,+        InitiatedBy_DIAGNOSTIC,+        InitiatedBy_FAILBACK,+        InitiatedBy_START_DRILL,+        InitiatedBy_START_RECOVERY,+        InitiatedBy_TARGET_ACCOUNT,+        InitiatedBy_TERMINATE_RECOVERY_INSTANCES+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype InitiatedBy = InitiatedBy'+  { fromInitiatedBy ::+      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 InitiatedBy_DIAGNOSTIC :: InitiatedBy+pattern InitiatedBy_DIAGNOSTIC = InitiatedBy' "DIAGNOSTIC"++pattern InitiatedBy_FAILBACK :: InitiatedBy+pattern InitiatedBy_FAILBACK = InitiatedBy' "FAILBACK"++pattern InitiatedBy_START_DRILL :: InitiatedBy+pattern InitiatedBy_START_DRILL = InitiatedBy' "START_DRILL"++pattern InitiatedBy_START_RECOVERY :: InitiatedBy+pattern InitiatedBy_START_RECOVERY = InitiatedBy' "START_RECOVERY"++pattern InitiatedBy_TARGET_ACCOUNT :: InitiatedBy+pattern InitiatedBy_TARGET_ACCOUNT = InitiatedBy' "TARGET_ACCOUNT"++pattern InitiatedBy_TERMINATE_RECOVERY_INSTANCES :: InitiatedBy+pattern InitiatedBy_TERMINATE_RECOVERY_INSTANCES = InitiatedBy' "TERMINATE_RECOVERY_INSTANCES"++{-# COMPLETE+  InitiatedBy_DIAGNOSTIC,+  InitiatedBy_FAILBACK,+  InitiatedBy_START_DRILL,+  InitiatedBy_START_RECOVERY,+  InitiatedBy_TARGET_ACCOUNT,+  InitiatedBy_TERMINATE_RECOVERY_INSTANCES,+  InitiatedBy'+  #-}
+ gen/Amazonka/DrS/Types/Job.hs view
@@ -0,0 +1,177 @@+{-# 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.DrS.Types.Job+-- 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.DrS.Types.Job where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.InitiatedBy+import Amazonka.DrS.Types.JobStatus+import Amazonka.DrS.Types.JobType+import Amazonka.DrS.Types.ParticipatingServer+import qualified Amazonka.Prelude as Prelude++-- | A job is an asynchronous workflow.+--+-- /See:/ 'newJob' smart constructor.+data Job = Job'+  { -- | The ARN of a Job.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The date and time of when the Job was created.+    creationDateTime :: Prelude.Maybe Prelude.Text,+    -- | The date and time of when the Job ended.+    endDateTime :: Prelude.Maybe Prelude.Text,+    -- | A string representing who initiated the Job.+    initiatedBy :: Prelude.Maybe InitiatedBy,+    -- | A list of servers that the Job is acting upon.+    participatingServers :: Prelude.Maybe [ParticipatingServer],+    -- | The status of the Job.+    status :: Prelude.Maybe JobStatus,+    -- | A list of tags associated with the Job.+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | The type of the Job.+    type' :: Prelude.Maybe JobType,+    -- | The ID of the Job.+    jobID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Job' 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', 'job_arn' - The ARN of a Job.+--+-- 'creationDateTime', 'job_creationDateTime' - The date and time of when the Job was created.+--+-- 'endDateTime', 'job_endDateTime' - The date and time of when the Job ended.+--+-- 'initiatedBy', 'job_initiatedBy' - A string representing who initiated the Job.+--+-- 'participatingServers', 'job_participatingServers' - A list of servers that the Job is acting upon.+--+-- 'status', 'job_status' - The status of the Job.+--+-- 'tags', 'job_tags' - A list of tags associated with the Job.+--+-- 'type'', 'job_type' - The type of the Job.+--+-- 'jobID', 'job_jobID' - The ID of the Job.+newJob ::+  -- | 'jobID'+  Prelude.Text ->+  Job+newJob pJobID_ =+  Job'+    { arn = Prelude.Nothing,+      creationDateTime = Prelude.Nothing,+      endDateTime = Prelude.Nothing,+      initiatedBy = Prelude.Nothing,+      participatingServers = Prelude.Nothing,+      status = Prelude.Nothing,+      tags = Prelude.Nothing,+      type' = Prelude.Nothing,+      jobID = pJobID_+    }++-- | The ARN of a Job.+job_arn :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)+job_arn = Lens.lens (\Job' {arn} -> arn) (\s@Job' {} a -> s {arn = a} :: Job)++-- | The date and time of when the Job was created.+job_creationDateTime :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)+job_creationDateTime = Lens.lens (\Job' {creationDateTime} -> creationDateTime) (\s@Job' {} a -> s {creationDateTime = a} :: Job)++-- | The date and time of when the Job ended.+job_endDateTime :: Lens.Lens' Job (Prelude.Maybe Prelude.Text)+job_endDateTime = Lens.lens (\Job' {endDateTime} -> endDateTime) (\s@Job' {} a -> s {endDateTime = a} :: Job)++-- | A string representing who initiated the Job.+job_initiatedBy :: Lens.Lens' Job (Prelude.Maybe InitiatedBy)+job_initiatedBy = Lens.lens (\Job' {initiatedBy} -> initiatedBy) (\s@Job' {} a -> s {initiatedBy = a} :: Job)++-- | A list of servers that the Job is acting upon.+job_participatingServers :: Lens.Lens' Job (Prelude.Maybe [ParticipatingServer])+job_participatingServers = Lens.lens (\Job' {participatingServers} -> participatingServers) (\s@Job' {} a -> s {participatingServers = a} :: Job) Prelude.. Lens.mapping Lens.coerced++-- | The status of the Job.+job_status :: Lens.Lens' Job (Prelude.Maybe JobStatus)+job_status = Lens.lens (\Job' {status} -> status) (\s@Job' {} a -> s {status = a} :: Job)++-- | A list of tags associated with the Job.+job_tags :: Lens.Lens' Job (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+job_tags = Lens.lens (\Job' {tags} -> tags) (\s@Job' {} a -> s {tags = a} :: Job) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | The type of the Job.+job_type :: Lens.Lens' Job (Prelude.Maybe JobType)+job_type = Lens.lens (\Job' {type'} -> type') (\s@Job' {} a -> s {type' = a} :: Job)++-- | The ID of the Job.+job_jobID :: Lens.Lens' Job Prelude.Text+job_jobID = Lens.lens (\Job' {jobID} -> jobID) (\s@Job' {} a -> s {jobID = a} :: Job)++instance Data.FromJSON Job where+  parseJSON =+    Data.withObject+      "Job"+      ( \x ->+          Job'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "creationDateTime")+            Prelude.<*> (x Data..:? "endDateTime")+            Prelude.<*> (x Data..:? "initiatedBy")+            Prelude.<*> ( x+                            Data..:? "participatingServers"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "status")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "type")+            Prelude.<*> (x Data..: "jobID")+      )++instance Prelude.Hashable Job where+  hashWithSalt _salt Job' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` creationDateTime+      `Prelude.hashWithSalt` endDateTime+      `Prelude.hashWithSalt` initiatedBy+      `Prelude.hashWithSalt` participatingServers+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` jobID++instance Prelude.NFData Job where+  rnf Job' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf creationDateTime+      `Prelude.seq` Prelude.rnf endDateTime+      `Prelude.seq` Prelude.rnf initiatedBy+      `Prelude.seq` Prelude.rnf participatingServers+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf jobID
+ gen/Amazonka/DrS/Types/JobLog.hs view
@@ -0,0 +1,98 @@+{-# 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.DrS.Types.JobLog+-- 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.DrS.Types.JobLog where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.JobLogEvent+import Amazonka.DrS.Types.JobLogEventData+import qualified Amazonka.Prelude as Prelude++-- | A log outputted by a Job.+--+-- /See:/ 'newJobLog' smart constructor.+data JobLog = JobLog'+  { -- | The event represents the type of a log.+    event :: Prelude.Maybe JobLogEvent,+    -- | Metadata associated with a Job log.+    eventData :: Prelude.Maybe JobLogEventData,+    -- | The date and time the log was taken.+    logDateTime :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'JobLog' 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:+--+-- 'event', 'jobLog_event' - The event represents the type of a log.+--+-- 'eventData', 'jobLog_eventData' - Metadata associated with a Job log.+--+-- 'logDateTime', 'jobLog_logDateTime' - The date and time the log was taken.+newJobLog ::+  JobLog+newJobLog =+  JobLog'+    { event = Prelude.Nothing,+      eventData = Prelude.Nothing,+      logDateTime = Prelude.Nothing+    }++-- | The event represents the type of a log.+jobLog_event :: Lens.Lens' JobLog (Prelude.Maybe JobLogEvent)+jobLog_event = Lens.lens (\JobLog' {event} -> event) (\s@JobLog' {} a -> s {event = a} :: JobLog)++-- | Metadata associated with a Job log.+jobLog_eventData :: Lens.Lens' JobLog (Prelude.Maybe JobLogEventData)+jobLog_eventData = Lens.lens (\JobLog' {eventData} -> eventData) (\s@JobLog' {} a -> s {eventData = a} :: JobLog)++-- | The date and time the log was taken.+jobLog_logDateTime :: Lens.Lens' JobLog (Prelude.Maybe Prelude.Text)+jobLog_logDateTime = Lens.lens (\JobLog' {logDateTime} -> logDateTime) (\s@JobLog' {} a -> s {logDateTime = a} :: JobLog)++instance Data.FromJSON JobLog where+  parseJSON =+    Data.withObject+      "JobLog"+      ( \x ->+          JobLog'+            Prelude.<$> (x Data..:? "event")+            Prelude.<*> (x Data..:? "eventData")+            Prelude.<*> (x Data..:? "logDateTime")+      )++instance Prelude.Hashable JobLog where+  hashWithSalt _salt JobLog' {..} =+    _salt+      `Prelude.hashWithSalt` event+      `Prelude.hashWithSalt` eventData+      `Prelude.hashWithSalt` logDateTime++instance Prelude.NFData JobLog where+  rnf JobLog' {..} =+    Prelude.rnf event+      `Prelude.seq` Prelude.rnf eventData+      `Prelude.seq` Prelude.rnf logDateTime
+ gen/Amazonka/DrS/Types/JobLogEvent.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.DrS.Types.JobLogEvent+-- 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.DrS.Types.JobLogEvent+  ( JobLogEvent+      ( ..,+        JobLogEvent_CLEANUP_END,+        JobLogEvent_CLEANUP_FAIL,+        JobLogEvent_CLEANUP_START,+        JobLogEvent_CONVERSION_END,+        JobLogEvent_CONVERSION_FAIL,+        JobLogEvent_CONVERSION_START,+        JobLogEvent_JOB_CANCEL,+        JobLogEvent_JOB_END,+        JobLogEvent_JOB_START,+        JobLogEvent_LAUNCH_FAILED,+        JobLogEvent_LAUNCH_START,+        JobLogEvent_SERVER_SKIPPED,+        JobLogEvent_SNAPSHOT_END,+        JobLogEvent_SNAPSHOT_FAIL,+        JobLogEvent_SNAPSHOT_START,+        JobLogEvent_USING_PREVIOUS_SNAPSHOT,+        JobLogEvent_USING_PREVIOUS_SNAPSHOT_FAILED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype JobLogEvent = JobLogEvent'+  { fromJobLogEvent ::+      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 JobLogEvent_CLEANUP_END :: JobLogEvent+pattern JobLogEvent_CLEANUP_END = JobLogEvent' "CLEANUP_END"++pattern JobLogEvent_CLEANUP_FAIL :: JobLogEvent+pattern JobLogEvent_CLEANUP_FAIL = JobLogEvent' "CLEANUP_FAIL"++pattern JobLogEvent_CLEANUP_START :: JobLogEvent+pattern JobLogEvent_CLEANUP_START = JobLogEvent' "CLEANUP_START"++pattern JobLogEvent_CONVERSION_END :: JobLogEvent+pattern JobLogEvent_CONVERSION_END = JobLogEvent' "CONVERSION_END"++pattern JobLogEvent_CONVERSION_FAIL :: JobLogEvent+pattern JobLogEvent_CONVERSION_FAIL = JobLogEvent' "CONVERSION_FAIL"++pattern JobLogEvent_CONVERSION_START :: JobLogEvent+pattern JobLogEvent_CONVERSION_START = JobLogEvent' "CONVERSION_START"++pattern JobLogEvent_JOB_CANCEL :: JobLogEvent+pattern JobLogEvent_JOB_CANCEL = JobLogEvent' "JOB_CANCEL"++pattern JobLogEvent_JOB_END :: JobLogEvent+pattern JobLogEvent_JOB_END = JobLogEvent' "JOB_END"++pattern JobLogEvent_JOB_START :: JobLogEvent+pattern JobLogEvent_JOB_START = JobLogEvent' "JOB_START"++pattern JobLogEvent_LAUNCH_FAILED :: JobLogEvent+pattern JobLogEvent_LAUNCH_FAILED = JobLogEvent' "LAUNCH_FAILED"++pattern JobLogEvent_LAUNCH_START :: JobLogEvent+pattern JobLogEvent_LAUNCH_START = JobLogEvent' "LAUNCH_START"++pattern JobLogEvent_SERVER_SKIPPED :: JobLogEvent+pattern JobLogEvent_SERVER_SKIPPED = JobLogEvent' "SERVER_SKIPPED"++pattern JobLogEvent_SNAPSHOT_END :: JobLogEvent+pattern JobLogEvent_SNAPSHOT_END = JobLogEvent' "SNAPSHOT_END"++pattern JobLogEvent_SNAPSHOT_FAIL :: JobLogEvent+pattern JobLogEvent_SNAPSHOT_FAIL = JobLogEvent' "SNAPSHOT_FAIL"++pattern JobLogEvent_SNAPSHOT_START :: JobLogEvent+pattern JobLogEvent_SNAPSHOT_START = JobLogEvent' "SNAPSHOT_START"++pattern JobLogEvent_USING_PREVIOUS_SNAPSHOT :: JobLogEvent+pattern JobLogEvent_USING_PREVIOUS_SNAPSHOT = JobLogEvent' "USING_PREVIOUS_SNAPSHOT"++pattern JobLogEvent_USING_PREVIOUS_SNAPSHOT_FAILED :: JobLogEvent+pattern JobLogEvent_USING_PREVIOUS_SNAPSHOT_FAILED = JobLogEvent' "USING_PREVIOUS_SNAPSHOT_FAILED"++{-# COMPLETE+  JobLogEvent_CLEANUP_END,+  JobLogEvent_CLEANUP_FAIL,+  JobLogEvent_CLEANUP_START,+  JobLogEvent_CONVERSION_END,+  JobLogEvent_CONVERSION_FAIL,+  JobLogEvent_CONVERSION_START,+  JobLogEvent_JOB_CANCEL,+  JobLogEvent_JOB_END,+  JobLogEvent_JOB_START,+  JobLogEvent_LAUNCH_FAILED,+  JobLogEvent_LAUNCH_START,+  JobLogEvent_SERVER_SKIPPED,+  JobLogEvent_SNAPSHOT_END,+  JobLogEvent_SNAPSHOT_FAIL,+  JobLogEvent_SNAPSHOT_START,+  JobLogEvent_USING_PREVIOUS_SNAPSHOT,+  JobLogEvent_USING_PREVIOUS_SNAPSHOT_FAILED,+  JobLogEvent'+  #-}
+ gen/Amazonka/DrS/Types/JobLogEventData.hs view
@@ -0,0 +1,122 @@+{-# 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.DrS.Types.JobLogEventData+-- 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.DrS.Types.JobLogEventData where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.ConversionProperties+import qualified Amazonka.Prelude as Prelude++-- | Metadata associated with a Job log.+--+-- /See:/ 'newJobLogEventData' smart constructor.+data JobLogEventData = JobLogEventData'+  { -- | Properties of a conversion job+    conversionProperties :: Prelude.Maybe ConversionProperties,+    -- | The ID of a conversion server.+    conversionServerID :: Prelude.Maybe Prelude.Text,+    -- | A string representing a job error.+    rawError :: Prelude.Maybe Prelude.Text,+    -- | The ID of a Source Server.+    sourceServerID :: Prelude.Maybe Prelude.Text,+    -- | The ID of a Recovery Instance.+    targetInstanceID :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'JobLogEventData' 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:+--+-- 'conversionProperties', 'jobLogEventData_conversionProperties' - Properties of a conversion job+--+-- 'conversionServerID', 'jobLogEventData_conversionServerID' - The ID of a conversion server.+--+-- 'rawError', 'jobLogEventData_rawError' - A string representing a job error.+--+-- 'sourceServerID', 'jobLogEventData_sourceServerID' - The ID of a Source Server.+--+-- 'targetInstanceID', 'jobLogEventData_targetInstanceID' - The ID of a Recovery Instance.+newJobLogEventData ::+  JobLogEventData+newJobLogEventData =+  JobLogEventData'+    { conversionProperties =+        Prelude.Nothing,+      conversionServerID = Prelude.Nothing,+      rawError = Prelude.Nothing,+      sourceServerID = Prelude.Nothing,+      targetInstanceID = Prelude.Nothing+    }++-- | Properties of a conversion job+jobLogEventData_conversionProperties :: Lens.Lens' JobLogEventData (Prelude.Maybe ConversionProperties)+jobLogEventData_conversionProperties = Lens.lens (\JobLogEventData' {conversionProperties} -> conversionProperties) (\s@JobLogEventData' {} a -> s {conversionProperties = a} :: JobLogEventData)++-- | The ID of a conversion server.+jobLogEventData_conversionServerID :: Lens.Lens' JobLogEventData (Prelude.Maybe Prelude.Text)+jobLogEventData_conversionServerID = Lens.lens (\JobLogEventData' {conversionServerID} -> conversionServerID) (\s@JobLogEventData' {} a -> s {conversionServerID = a} :: JobLogEventData)++-- | A string representing a job error.+jobLogEventData_rawError :: Lens.Lens' JobLogEventData (Prelude.Maybe Prelude.Text)+jobLogEventData_rawError = Lens.lens (\JobLogEventData' {rawError} -> rawError) (\s@JobLogEventData' {} a -> s {rawError = a} :: JobLogEventData)++-- | The ID of a Source Server.+jobLogEventData_sourceServerID :: Lens.Lens' JobLogEventData (Prelude.Maybe Prelude.Text)+jobLogEventData_sourceServerID = Lens.lens (\JobLogEventData' {sourceServerID} -> sourceServerID) (\s@JobLogEventData' {} a -> s {sourceServerID = a} :: JobLogEventData)++-- | The ID of a Recovery Instance.+jobLogEventData_targetInstanceID :: Lens.Lens' JobLogEventData (Prelude.Maybe Prelude.Text)+jobLogEventData_targetInstanceID = Lens.lens (\JobLogEventData' {targetInstanceID} -> targetInstanceID) (\s@JobLogEventData' {} a -> s {targetInstanceID = a} :: JobLogEventData)++instance Data.FromJSON JobLogEventData where+  parseJSON =+    Data.withObject+      "JobLogEventData"+      ( \x ->+          JobLogEventData'+            Prelude.<$> (x Data..:? "conversionProperties")+            Prelude.<*> (x Data..:? "conversionServerID")+            Prelude.<*> (x Data..:? "rawError")+            Prelude.<*> (x Data..:? "sourceServerID")+            Prelude.<*> (x Data..:? "targetInstanceID")+      )++instance Prelude.Hashable JobLogEventData where+  hashWithSalt _salt JobLogEventData' {..} =+    _salt+      `Prelude.hashWithSalt` conversionProperties+      `Prelude.hashWithSalt` conversionServerID+      `Prelude.hashWithSalt` rawError+      `Prelude.hashWithSalt` sourceServerID+      `Prelude.hashWithSalt` targetInstanceID++instance Prelude.NFData JobLogEventData where+  rnf JobLogEventData' {..} =+    Prelude.rnf conversionProperties+      `Prelude.seq` Prelude.rnf conversionServerID+      `Prelude.seq` Prelude.rnf rawError+      `Prelude.seq` Prelude.rnf sourceServerID+      `Prelude.seq` Prelude.rnf targetInstanceID
+ gen/Amazonka/DrS/Types/JobStatus.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.DrS.Types.JobStatus+-- 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.DrS.Types.JobStatus+  ( JobStatus+      ( ..,+        JobStatus_COMPLETED,+        JobStatus_PENDING,+        JobStatus_STARTED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype JobStatus = JobStatus'+  { fromJobStatus ::+      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 JobStatus_COMPLETED :: JobStatus+pattern JobStatus_COMPLETED = JobStatus' "COMPLETED"++pattern JobStatus_PENDING :: JobStatus+pattern JobStatus_PENDING = JobStatus' "PENDING"++pattern JobStatus_STARTED :: JobStatus+pattern JobStatus_STARTED = JobStatus' "STARTED"++{-# COMPLETE+  JobStatus_COMPLETED,+  JobStatus_PENDING,+  JobStatus_STARTED,+  JobStatus'+  #-}
+ gen/Amazonka/DrS/Types/JobType.hs view
@@ -0,0 +1,73 @@+{-# 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.DrS.Types.JobType+-- 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.DrS.Types.JobType+  ( JobType+      ( ..,+        JobType_CREATE_CONVERTED_SNAPSHOT,+        JobType_LAUNCH,+        JobType_TERMINATE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype JobType = JobType' {fromJobType :: 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 JobType_CREATE_CONVERTED_SNAPSHOT :: JobType+pattern JobType_CREATE_CONVERTED_SNAPSHOT = JobType' "CREATE_CONVERTED_SNAPSHOT"++pattern JobType_LAUNCH :: JobType+pattern JobType_LAUNCH = JobType' "LAUNCH"++pattern JobType_TERMINATE :: JobType+pattern JobType_TERMINATE = JobType' "TERMINATE"++{-# COMPLETE+  JobType_CREATE_CONVERTED_SNAPSHOT,+  JobType_LAUNCH,+  JobType_TERMINATE,+  JobType'+  #-}
+ gen/Amazonka/DrS/Types/LastLaunchResult.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.DrS.Types.LastLaunchResult+-- 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.DrS.Types.LastLaunchResult+  ( LastLaunchResult+      ( ..,+        LastLaunchResult_FAILED,+        LastLaunchResult_NOT_STARTED,+        LastLaunchResult_PENDING,+        LastLaunchResult_SUCCEEDED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LastLaunchResult = LastLaunchResult'+  { fromLastLaunchResult ::+      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 LastLaunchResult_FAILED :: LastLaunchResult+pattern LastLaunchResult_FAILED = LastLaunchResult' "FAILED"++pattern LastLaunchResult_NOT_STARTED :: LastLaunchResult+pattern LastLaunchResult_NOT_STARTED = LastLaunchResult' "NOT_STARTED"++pattern LastLaunchResult_PENDING :: LastLaunchResult+pattern LastLaunchResult_PENDING = LastLaunchResult' "PENDING"++pattern LastLaunchResult_SUCCEEDED :: LastLaunchResult+pattern LastLaunchResult_SUCCEEDED = LastLaunchResult' "SUCCEEDED"++{-# COMPLETE+  LastLaunchResult_FAILED,+  LastLaunchResult_NOT_STARTED,+  LastLaunchResult_PENDING,+  LastLaunchResult_SUCCEEDED,+  LastLaunchResult'+  #-}
+ gen/Amazonka/DrS/Types/LastLaunchType.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.DrS.Types.LastLaunchType+-- 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.DrS.Types.LastLaunchType+  ( LastLaunchType+      ( ..,+        LastLaunchType_DRILL,+        LastLaunchType_RECOVERY+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LastLaunchType = LastLaunchType'+  { fromLastLaunchType ::+      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 LastLaunchType_DRILL :: LastLaunchType+pattern LastLaunchType_DRILL = LastLaunchType' "DRILL"++pattern LastLaunchType_RECOVERY :: LastLaunchType+pattern LastLaunchType_RECOVERY = LastLaunchType' "RECOVERY"++{-# COMPLETE+  LastLaunchType_DRILL,+  LastLaunchType_RECOVERY,+  LastLaunchType'+  #-}
+ gen/Amazonka/DrS/Types/LaunchConfiguration.hs view
@@ -0,0 +1,171 @@+{-# 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.DrS.Types.LaunchConfiguration+-- 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.DrS.Types.LaunchConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.LaunchDisposition+import Amazonka.DrS.Types.Licensing+import Amazonka.DrS.Types.TargetInstanceTypeRightSizingMethod+import qualified Amazonka.Prelude as Prelude++-- | /See:/ 'newLaunchConfiguration' smart constructor.+data LaunchConfiguration = LaunchConfiguration'+  { -- | Whether we should copy the Private IP of the Source Server to the+    -- Recovery Instance.+    copyPrivateIp :: Prelude.Maybe Prelude.Bool,+    -- | Whether we want to copy the tags of the Source Server to the EC2 machine+    -- of the Recovery Instance.+    copyTags :: Prelude.Maybe Prelude.Bool,+    -- | The EC2 launch template ID of this launch configuration.+    ec2LaunchTemplateID :: Prelude.Maybe Prelude.Text,+    -- | The state of the Recovery Instance in EC2 after the recovery operation.+    launchDisposition :: Prelude.Maybe LaunchDisposition,+    -- | The licensing configuration to be used for this launch configuration.+    licensing :: Prelude.Maybe Licensing,+    -- | The name of the launch configuration.+    name :: Prelude.Maybe Prelude.Text,+    -- | The ID of the Source Server for this launch configuration.+    sourceServerID :: Prelude.Maybe Prelude.Text,+    -- | Whether Elastic Disaster Recovery should try to automatically choose the+    -- instance type that best matches the OS, CPU, and RAM of your Source+    -- Server.+    targetInstanceTypeRightSizingMethod :: Prelude.Maybe TargetInstanceTypeRightSizingMethod+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LaunchConfiguration' 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:+--+-- 'copyPrivateIp', 'launchConfiguration_copyPrivateIp' - Whether we should copy the Private IP of the Source Server to the+-- Recovery Instance.+--+-- 'copyTags', 'launchConfiguration_copyTags' - Whether we want to copy the tags of the Source Server to the EC2 machine+-- of the Recovery Instance.+--+-- 'ec2LaunchTemplateID', 'launchConfiguration_ec2LaunchTemplateID' - The EC2 launch template ID of this launch configuration.+--+-- 'launchDisposition', 'launchConfiguration_launchDisposition' - The state of the Recovery Instance in EC2 after the recovery operation.+--+-- 'licensing', 'launchConfiguration_licensing' - The licensing configuration to be used for this launch configuration.+--+-- 'name', 'launchConfiguration_name' - The name of the launch configuration.+--+-- 'sourceServerID', 'launchConfiguration_sourceServerID' - The ID of the Source Server for this launch configuration.+--+-- 'targetInstanceTypeRightSizingMethod', 'launchConfiguration_targetInstanceTypeRightSizingMethod' - Whether Elastic Disaster Recovery should try to automatically choose the+-- instance type that best matches the OS, CPU, and RAM of your Source+-- Server.+newLaunchConfiguration ::+  LaunchConfiguration+newLaunchConfiguration =+  LaunchConfiguration'+    { copyPrivateIp =+        Prelude.Nothing,+      copyTags = Prelude.Nothing,+      ec2LaunchTemplateID = Prelude.Nothing,+      launchDisposition = Prelude.Nothing,+      licensing = Prelude.Nothing,+      name = Prelude.Nothing,+      sourceServerID = Prelude.Nothing,+      targetInstanceTypeRightSizingMethod =+        Prelude.Nothing+    }++-- | Whether we should copy the Private IP of the Source Server to the+-- Recovery Instance.+launchConfiguration_copyPrivateIp :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Prelude.Bool)+launchConfiguration_copyPrivateIp = Lens.lens (\LaunchConfiguration' {copyPrivateIp} -> copyPrivateIp) (\s@LaunchConfiguration' {} a -> s {copyPrivateIp = a} :: LaunchConfiguration)++-- | Whether we want to copy the tags of the Source Server to the EC2 machine+-- of the Recovery Instance.+launchConfiguration_copyTags :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Prelude.Bool)+launchConfiguration_copyTags = Lens.lens (\LaunchConfiguration' {copyTags} -> copyTags) (\s@LaunchConfiguration' {} a -> s {copyTags = a} :: LaunchConfiguration)++-- | The EC2 launch template ID of this launch configuration.+launchConfiguration_ec2LaunchTemplateID :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Prelude.Text)+launchConfiguration_ec2LaunchTemplateID = Lens.lens (\LaunchConfiguration' {ec2LaunchTemplateID} -> ec2LaunchTemplateID) (\s@LaunchConfiguration' {} a -> s {ec2LaunchTemplateID = a} :: LaunchConfiguration)++-- | The state of the Recovery Instance in EC2 after the recovery operation.+launchConfiguration_launchDisposition :: Lens.Lens' LaunchConfiguration (Prelude.Maybe LaunchDisposition)+launchConfiguration_launchDisposition = Lens.lens (\LaunchConfiguration' {launchDisposition} -> launchDisposition) (\s@LaunchConfiguration' {} a -> s {launchDisposition = a} :: LaunchConfiguration)++-- | The licensing configuration to be used for this launch configuration.+launchConfiguration_licensing :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Licensing)+launchConfiguration_licensing = Lens.lens (\LaunchConfiguration' {licensing} -> licensing) (\s@LaunchConfiguration' {} a -> s {licensing = a} :: LaunchConfiguration)++-- | The name of the launch configuration.+launchConfiguration_name :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Prelude.Text)+launchConfiguration_name = Lens.lens (\LaunchConfiguration' {name} -> name) (\s@LaunchConfiguration' {} a -> s {name = a} :: LaunchConfiguration)++-- | The ID of the Source Server for this launch configuration.+launchConfiguration_sourceServerID :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Prelude.Text)+launchConfiguration_sourceServerID = Lens.lens (\LaunchConfiguration' {sourceServerID} -> sourceServerID) (\s@LaunchConfiguration' {} a -> s {sourceServerID = a} :: LaunchConfiguration)++-- | Whether Elastic Disaster Recovery should try to automatically choose the+-- instance type that best matches the OS, CPU, and RAM of your Source+-- Server.+launchConfiguration_targetInstanceTypeRightSizingMethod :: Lens.Lens' LaunchConfiguration (Prelude.Maybe TargetInstanceTypeRightSizingMethod)+launchConfiguration_targetInstanceTypeRightSizingMethod = Lens.lens (\LaunchConfiguration' {targetInstanceTypeRightSizingMethod} -> targetInstanceTypeRightSizingMethod) (\s@LaunchConfiguration' {} a -> s {targetInstanceTypeRightSizingMethod = a} :: LaunchConfiguration)++instance Data.FromJSON LaunchConfiguration where+  parseJSON =+    Data.withObject+      "LaunchConfiguration"+      ( \x ->+          LaunchConfiguration'+            Prelude.<$> (x Data..:? "copyPrivateIp")+            Prelude.<*> (x Data..:? "copyTags")+            Prelude.<*> (x Data..:? "ec2LaunchTemplateID")+            Prelude.<*> (x Data..:? "launchDisposition")+            Prelude.<*> (x Data..:? "licensing")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "sourceServerID")+            Prelude.<*> (x Data..:? "targetInstanceTypeRightSizingMethod")+      )++instance Prelude.Hashable LaunchConfiguration where+  hashWithSalt _salt LaunchConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` copyPrivateIp+      `Prelude.hashWithSalt` copyTags+      `Prelude.hashWithSalt` ec2LaunchTemplateID+      `Prelude.hashWithSalt` launchDisposition+      `Prelude.hashWithSalt` licensing+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` sourceServerID+      `Prelude.hashWithSalt` targetInstanceTypeRightSizingMethod++instance Prelude.NFData LaunchConfiguration where+  rnf LaunchConfiguration' {..} =+    Prelude.rnf copyPrivateIp+      `Prelude.seq` Prelude.rnf copyTags+      `Prelude.seq` Prelude.rnf ec2LaunchTemplateID+      `Prelude.seq` Prelude.rnf launchDisposition+      `Prelude.seq` Prelude.rnf licensing+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf sourceServerID+      `Prelude.seq` Prelude.rnf targetInstanceTypeRightSizingMethod
+ gen/Amazonka/DrS/Types/LaunchDisposition.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.DrS.Types.LaunchDisposition+-- 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.DrS.Types.LaunchDisposition+  ( LaunchDisposition+      ( ..,+        LaunchDisposition_STARTED,+        LaunchDisposition_STOPPED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LaunchDisposition = LaunchDisposition'+  { fromLaunchDisposition ::+      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 LaunchDisposition_STARTED :: LaunchDisposition+pattern LaunchDisposition_STARTED = LaunchDisposition' "STARTED"++pattern LaunchDisposition_STOPPED :: LaunchDisposition+pattern LaunchDisposition_STOPPED = LaunchDisposition' "STOPPED"++{-# COMPLETE+  LaunchDisposition_STARTED,+  LaunchDisposition_STOPPED,+  LaunchDisposition'+  #-}
+ gen/Amazonka/DrS/Types/LaunchStatus.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.DrS.Types.LaunchStatus+-- 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.DrS.Types.LaunchStatus+  ( LaunchStatus+      ( ..,+        LaunchStatus_FAILED,+        LaunchStatus_IN_PROGRESS,+        LaunchStatus_LAUNCHED,+        LaunchStatus_PENDING,+        LaunchStatus_TERMINATED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LaunchStatus = LaunchStatus'+  { fromLaunchStatus ::+      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 LaunchStatus_FAILED :: LaunchStatus+pattern LaunchStatus_FAILED = LaunchStatus' "FAILED"++pattern LaunchStatus_IN_PROGRESS :: LaunchStatus+pattern LaunchStatus_IN_PROGRESS = LaunchStatus' "IN_PROGRESS"++pattern LaunchStatus_LAUNCHED :: LaunchStatus+pattern LaunchStatus_LAUNCHED = LaunchStatus' "LAUNCHED"++pattern LaunchStatus_PENDING :: LaunchStatus+pattern LaunchStatus_PENDING = LaunchStatus' "PENDING"++pattern LaunchStatus_TERMINATED :: LaunchStatus+pattern LaunchStatus_TERMINATED = LaunchStatus' "TERMINATED"++{-# COMPLETE+  LaunchStatus_FAILED,+  LaunchStatus_IN_PROGRESS,+  LaunchStatus_LAUNCHED,+  LaunchStatus_PENDING,+  LaunchStatus_TERMINATED,+  LaunchStatus'+  #-}
+ gen/Amazonka/DrS/Types/Licensing.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.DrS.Types.Licensing+-- 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.DrS.Types.Licensing 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++-- | Configuration of a machine\'s license.+--+-- /See:/ 'newLicensing' smart constructor.+data Licensing = Licensing'+  { -- | Whether to enable \"Bring your own license\" or not.+    osByol :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Licensing' 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:+--+-- 'osByol', 'licensing_osByol' - Whether to enable \"Bring your own license\" or not.+newLicensing ::+  Licensing+newLicensing = Licensing' {osByol = Prelude.Nothing}++-- | Whether to enable \"Bring your own license\" or not.+licensing_osByol :: Lens.Lens' Licensing (Prelude.Maybe Prelude.Bool)+licensing_osByol = Lens.lens (\Licensing' {osByol} -> osByol) (\s@Licensing' {} a -> s {osByol = a} :: Licensing)++instance Data.FromJSON Licensing where+  parseJSON =+    Data.withObject+      "Licensing"+      (\x -> Licensing' Prelude.<$> (x Data..:? "osByol"))++instance Prelude.Hashable Licensing where+  hashWithSalt _salt Licensing' {..} =+    _salt `Prelude.hashWithSalt` osByol++instance Prelude.NFData Licensing where+  rnf Licensing' {..} = Prelude.rnf osByol++instance Data.ToJSON Licensing where+  toJSON Licensing' {..} =+    Data.object+      ( Prelude.catMaybes+          [("osByol" Data..=) Prelude.<$> osByol]+      )
+ gen/Amazonka/DrS/Types/LifeCycle.hs view
@@ -0,0 +1,128 @@+{-# 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.DrS.Types.LifeCycle+-- 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.DrS.Types.LifeCycle where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.LifeCycleLastLaunch+import qualified Amazonka.Prelude as Prelude++-- | An object representing the Source Server Lifecycle.+--+-- /See:/ 'newLifeCycle' smart constructor.+data LifeCycle = LifeCycle'+  { -- | The date and time of when the Source Server was added to the service.+    addedToServiceDateTime :: Prelude.Maybe Prelude.Text,+    -- | The amount of time that the Source Server has been replicating for.+    elapsedReplicationDuration :: Prelude.Maybe Prelude.Text,+    -- | The date and time of the first byte that was replicated from the Source+    -- Server.+    firstByteDateTime :: Prelude.Maybe Prelude.Text,+    -- | An object containing information regarding the last launch of the Source+    -- Server.+    lastLaunch :: Prelude.Maybe LifeCycleLastLaunch,+    -- | The date and time this Source Server was last seen by the service.+    lastSeenByServiceDateTime :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LifeCycle' 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:+--+-- 'addedToServiceDateTime', 'lifeCycle_addedToServiceDateTime' - The date and time of when the Source Server was added to the service.+--+-- 'elapsedReplicationDuration', 'lifeCycle_elapsedReplicationDuration' - The amount of time that the Source Server has been replicating for.+--+-- 'firstByteDateTime', 'lifeCycle_firstByteDateTime' - The date and time of the first byte that was replicated from the Source+-- Server.+--+-- 'lastLaunch', 'lifeCycle_lastLaunch' - An object containing information regarding the last launch of the Source+-- Server.+--+-- 'lastSeenByServiceDateTime', 'lifeCycle_lastSeenByServiceDateTime' - The date and time this Source Server was last seen by the service.+newLifeCycle ::+  LifeCycle+newLifeCycle =+  LifeCycle'+    { addedToServiceDateTime =+        Prelude.Nothing,+      elapsedReplicationDuration = Prelude.Nothing,+      firstByteDateTime = Prelude.Nothing,+      lastLaunch = Prelude.Nothing,+      lastSeenByServiceDateTime = Prelude.Nothing+    }++-- | The date and time of when the Source Server was added to the service.+lifeCycle_addedToServiceDateTime :: Lens.Lens' LifeCycle (Prelude.Maybe Prelude.Text)+lifeCycle_addedToServiceDateTime = Lens.lens (\LifeCycle' {addedToServiceDateTime} -> addedToServiceDateTime) (\s@LifeCycle' {} a -> s {addedToServiceDateTime = a} :: LifeCycle)++-- | The amount of time that the Source Server has been replicating for.+lifeCycle_elapsedReplicationDuration :: Lens.Lens' LifeCycle (Prelude.Maybe Prelude.Text)+lifeCycle_elapsedReplicationDuration = Lens.lens (\LifeCycle' {elapsedReplicationDuration} -> elapsedReplicationDuration) (\s@LifeCycle' {} a -> s {elapsedReplicationDuration = a} :: LifeCycle)++-- | The date and time of the first byte that was replicated from the Source+-- Server.+lifeCycle_firstByteDateTime :: Lens.Lens' LifeCycle (Prelude.Maybe Prelude.Text)+lifeCycle_firstByteDateTime = Lens.lens (\LifeCycle' {firstByteDateTime} -> firstByteDateTime) (\s@LifeCycle' {} a -> s {firstByteDateTime = a} :: LifeCycle)++-- | An object containing information regarding the last launch of the Source+-- Server.+lifeCycle_lastLaunch :: Lens.Lens' LifeCycle (Prelude.Maybe LifeCycleLastLaunch)+lifeCycle_lastLaunch = Lens.lens (\LifeCycle' {lastLaunch} -> lastLaunch) (\s@LifeCycle' {} a -> s {lastLaunch = a} :: LifeCycle)++-- | The date and time this Source Server was last seen by the service.+lifeCycle_lastSeenByServiceDateTime :: Lens.Lens' LifeCycle (Prelude.Maybe Prelude.Text)+lifeCycle_lastSeenByServiceDateTime = Lens.lens (\LifeCycle' {lastSeenByServiceDateTime} -> lastSeenByServiceDateTime) (\s@LifeCycle' {} a -> s {lastSeenByServiceDateTime = a} :: LifeCycle)++instance Data.FromJSON LifeCycle where+  parseJSON =+    Data.withObject+      "LifeCycle"+      ( \x ->+          LifeCycle'+            Prelude.<$> (x Data..:? "addedToServiceDateTime")+            Prelude.<*> (x Data..:? "elapsedReplicationDuration")+            Prelude.<*> (x Data..:? "firstByteDateTime")+            Prelude.<*> (x Data..:? "lastLaunch")+            Prelude.<*> (x Data..:? "lastSeenByServiceDateTime")+      )++instance Prelude.Hashable LifeCycle where+  hashWithSalt _salt LifeCycle' {..} =+    _salt+      `Prelude.hashWithSalt` addedToServiceDateTime+      `Prelude.hashWithSalt` elapsedReplicationDuration+      `Prelude.hashWithSalt` firstByteDateTime+      `Prelude.hashWithSalt` lastLaunch+      `Prelude.hashWithSalt` lastSeenByServiceDateTime++instance Prelude.NFData LifeCycle where+  rnf LifeCycle' {..} =+    Prelude.rnf addedToServiceDateTime+      `Prelude.seq` Prelude.rnf elapsedReplicationDuration+      `Prelude.seq` Prelude.rnf firstByteDateTime+      `Prelude.seq` Prelude.rnf lastLaunch+      `Prelude.seq` Prelude.rnf lastSeenByServiceDateTime
+ gen/Amazonka/DrS/Types/LifeCycleLastLaunch.hs view
@@ -0,0 +1,73 @@+{-# 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.DrS.Types.LifeCycleLastLaunch+-- 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.DrS.Types.LifeCycleLastLaunch where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.LifeCycleLastLaunchInitiated+import qualified Amazonka.Prelude as Prelude++-- | An object containing information regarding the last launch of a Source+-- Server.+--+-- /See:/ 'newLifeCycleLastLaunch' smart constructor.+data LifeCycleLastLaunch = LifeCycleLastLaunch'+  { -- | An object containing information regarding the initiation of the last+    -- launch of a Source Server.+    initiated :: Prelude.Maybe LifeCycleLastLaunchInitiated+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LifeCycleLastLaunch' 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:+--+-- 'initiated', 'lifeCycleLastLaunch_initiated' - An object containing information regarding the initiation of the last+-- launch of a Source Server.+newLifeCycleLastLaunch ::+  LifeCycleLastLaunch+newLifeCycleLastLaunch =+  LifeCycleLastLaunch' {initiated = Prelude.Nothing}++-- | An object containing information regarding the initiation of the last+-- launch of a Source Server.+lifeCycleLastLaunch_initiated :: Lens.Lens' LifeCycleLastLaunch (Prelude.Maybe LifeCycleLastLaunchInitiated)+lifeCycleLastLaunch_initiated = Lens.lens (\LifeCycleLastLaunch' {initiated} -> initiated) (\s@LifeCycleLastLaunch' {} a -> s {initiated = a} :: LifeCycleLastLaunch)++instance Data.FromJSON LifeCycleLastLaunch where+  parseJSON =+    Data.withObject+      "LifeCycleLastLaunch"+      ( \x ->+          LifeCycleLastLaunch'+            Prelude.<$> (x Data..:? "initiated")+      )++instance Prelude.Hashable LifeCycleLastLaunch where+  hashWithSalt _salt LifeCycleLastLaunch' {..} =+    _salt `Prelude.hashWithSalt` initiated++instance Prelude.NFData LifeCycleLastLaunch where+  rnf LifeCycleLastLaunch' {..} = Prelude.rnf initiated
+ gen/Amazonka/DrS/Types/LifeCycleLastLaunchInitiated.hs view
@@ -0,0 +1,102 @@+{-# 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.DrS.Types.LifeCycleLastLaunchInitiated+-- 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.DrS.Types.LifeCycleLastLaunchInitiated where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.LastLaunchType+import qualified Amazonka.Prelude as Prelude++-- | An object containing information regarding the initiation of the last+-- launch of a Source Server.+--+-- /See:/ 'newLifeCycleLastLaunchInitiated' smart constructor.+data LifeCycleLastLaunchInitiated = LifeCycleLastLaunchInitiated'+  { -- | The date and time the last Source Server launch was initiated.+    apiCallDateTime :: Prelude.Maybe Prelude.Text,+    -- | The ID of the Job that was used to last launch the Source Server.+    jobID :: Prelude.Maybe Prelude.Text,+    -- | The Job type that was used to last launch the Source Server.+    type' :: Prelude.Maybe LastLaunchType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LifeCycleLastLaunchInitiated' 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:+--+-- 'apiCallDateTime', 'lifeCycleLastLaunchInitiated_apiCallDateTime' - The date and time the last Source Server launch was initiated.+--+-- 'jobID', 'lifeCycleLastLaunchInitiated_jobID' - The ID of the Job that was used to last launch the Source Server.+--+-- 'type'', 'lifeCycleLastLaunchInitiated_type' - The Job type that was used to last launch the Source Server.+newLifeCycleLastLaunchInitiated ::+  LifeCycleLastLaunchInitiated+newLifeCycleLastLaunchInitiated =+  LifeCycleLastLaunchInitiated'+    { apiCallDateTime =+        Prelude.Nothing,+      jobID = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | The date and time the last Source Server launch was initiated.+lifeCycleLastLaunchInitiated_apiCallDateTime :: Lens.Lens' LifeCycleLastLaunchInitiated (Prelude.Maybe Prelude.Text)+lifeCycleLastLaunchInitiated_apiCallDateTime = Lens.lens (\LifeCycleLastLaunchInitiated' {apiCallDateTime} -> apiCallDateTime) (\s@LifeCycleLastLaunchInitiated' {} a -> s {apiCallDateTime = a} :: LifeCycleLastLaunchInitiated)++-- | The ID of the Job that was used to last launch the Source Server.+lifeCycleLastLaunchInitiated_jobID :: Lens.Lens' LifeCycleLastLaunchInitiated (Prelude.Maybe Prelude.Text)+lifeCycleLastLaunchInitiated_jobID = Lens.lens (\LifeCycleLastLaunchInitiated' {jobID} -> jobID) (\s@LifeCycleLastLaunchInitiated' {} a -> s {jobID = a} :: LifeCycleLastLaunchInitiated)++-- | The Job type that was used to last launch the Source Server.+lifeCycleLastLaunchInitiated_type :: Lens.Lens' LifeCycleLastLaunchInitiated (Prelude.Maybe LastLaunchType)+lifeCycleLastLaunchInitiated_type = Lens.lens (\LifeCycleLastLaunchInitiated' {type'} -> type') (\s@LifeCycleLastLaunchInitiated' {} a -> s {type' = a} :: LifeCycleLastLaunchInitiated)++instance Data.FromJSON LifeCycleLastLaunchInitiated where+  parseJSON =+    Data.withObject+      "LifeCycleLastLaunchInitiated"+      ( \x ->+          LifeCycleLastLaunchInitiated'+            Prelude.<$> (x Data..:? "apiCallDateTime")+            Prelude.<*> (x Data..:? "jobID")+            Prelude.<*> (x Data..:? "type")+      )++instance+  Prelude.Hashable+    LifeCycleLastLaunchInitiated+  where+  hashWithSalt _salt LifeCycleLastLaunchInitiated' {..} =+    _salt+      `Prelude.hashWithSalt` apiCallDateTime+      `Prelude.hashWithSalt` jobID+      `Prelude.hashWithSalt` type'++instance Prelude.NFData LifeCycleLastLaunchInitiated where+  rnf LifeCycleLastLaunchInitiated' {..} =+    Prelude.rnf apiCallDateTime+      `Prelude.seq` Prelude.rnf jobID+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/DrS/Types/NetworkInterface.hs view
@@ -0,0 +1,96 @@+{-# 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.DrS.Types.NetworkInterface+-- 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.DrS.Types.NetworkInterface 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++-- | Network interface.+--+-- /See:/ 'newNetworkInterface' smart constructor.+data NetworkInterface = NetworkInterface'+  { -- | Network interface IPs.+    ips :: Prelude.Maybe [Prelude.Text],+    -- | Whether this is the primary network interface.+    isPrimary :: Prelude.Maybe Prelude.Bool,+    -- | The MAC address of the network interface.+    macAddress :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'NetworkInterface' 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:+--+-- 'ips', 'networkInterface_ips' - Network interface IPs.+--+-- 'isPrimary', 'networkInterface_isPrimary' - Whether this is the primary network interface.+--+-- 'macAddress', 'networkInterface_macAddress' - The MAC address of the network interface.+newNetworkInterface ::+  NetworkInterface+newNetworkInterface =+  NetworkInterface'+    { ips = Prelude.Nothing,+      isPrimary = Prelude.Nothing,+      macAddress = Prelude.Nothing+    }++-- | Network interface IPs.+networkInterface_ips :: Lens.Lens' NetworkInterface (Prelude.Maybe [Prelude.Text])+networkInterface_ips = Lens.lens (\NetworkInterface' {ips} -> ips) (\s@NetworkInterface' {} a -> s {ips = a} :: NetworkInterface) Prelude.. Lens.mapping Lens.coerced++-- | Whether this is the primary network interface.+networkInterface_isPrimary :: Lens.Lens' NetworkInterface (Prelude.Maybe Prelude.Bool)+networkInterface_isPrimary = Lens.lens (\NetworkInterface' {isPrimary} -> isPrimary) (\s@NetworkInterface' {} a -> s {isPrimary = a} :: NetworkInterface)++-- | The MAC address of the network interface.+networkInterface_macAddress :: Lens.Lens' NetworkInterface (Prelude.Maybe Prelude.Text)+networkInterface_macAddress = Lens.lens (\NetworkInterface' {macAddress} -> macAddress) (\s@NetworkInterface' {} a -> s {macAddress = a} :: NetworkInterface)++instance Data.FromJSON NetworkInterface where+  parseJSON =+    Data.withObject+      "NetworkInterface"+      ( \x ->+          NetworkInterface'+            Prelude.<$> (x Data..:? "ips" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "isPrimary")+            Prelude.<*> (x Data..:? "macAddress")+      )++instance Prelude.Hashable NetworkInterface where+  hashWithSalt _salt NetworkInterface' {..} =+    _salt+      `Prelude.hashWithSalt` ips+      `Prelude.hashWithSalt` isPrimary+      `Prelude.hashWithSalt` macAddress++instance Prelude.NFData NetworkInterface where+  rnf NetworkInterface' {..} =+    Prelude.rnf ips+      `Prelude.seq` Prelude.rnf isPrimary+      `Prelude.seq` Prelude.rnf macAddress
+ gen/Amazonka/DrS/Types/OS.hs view
@@ -0,0 +1,64 @@+{-# 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.DrS.Types.OS+-- 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.DrS.Types.OS 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++-- | Operating System.+--+-- /See:/ 'newOS' smart constructor.+data OS = OS'+  { -- | The long name of the Operating System.+    fullString :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OS' 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:+--+-- 'fullString', 'os_fullString' - The long name of the Operating System.+newOS ::+  OS+newOS = OS' {fullString = Prelude.Nothing}++-- | The long name of the Operating System.+os_fullString :: Lens.Lens' OS (Prelude.Maybe Prelude.Text)+os_fullString = Lens.lens (\OS' {fullString} -> fullString) (\s@OS' {} a -> s {fullString = a} :: OS)++instance Data.FromJSON OS where+  parseJSON =+    Data.withObject+      "OS"+      (\x -> OS' Prelude.<$> (x Data..:? "fullString"))++instance Prelude.Hashable OS where+  hashWithSalt _salt OS' {..} =+    _salt `Prelude.hashWithSalt` fullString++instance Prelude.NFData OS where+  rnf OS' {..} = Prelude.rnf fullString
+ gen/Amazonka/DrS/Types/OriginEnvironment.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.DrS.Types.OriginEnvironment+-- 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.DrS.Types.OriginEnvironment+  ( OriginEnvironment+      ( ..,+        OriginEnvironment_AWS,+        OriginEnvironment_ON_PREMISES+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype OriginEnvironment = OriginEnvironment'+  { fromOriginEnvironment ::+      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 OriginEnvironment_AWS :: OriginEnvironment+pattern OriginEnvironment_AWS = OriginEnvironment' "AWS"++pattern OriginEnvironment_ON_PREMISES :: OriginEnvironment+pattern OriginEnvironment_ON_PREMISES = OriginEnvironment' "ON_PREMISES"++{-# COMPLETE+  OriginEnvironment_AWS,+  OriginEnvironment_ON_PREMISES,+  OriginEnvironment'+  #-}
+ gen/Amazonka/DrS/Types/PITPolicyRule.hs view
@@ -0,0 +1,144 @@+{-# 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.DrS.Types.PITPolicyRule+-- 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.DrS.Types.PITPolicyRule where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.PITPolicyRuleUnits+import qualified Amazonka.Prelude as Prelude++-- | A rule in the Point in Time (PIT) policy representing when to take+-- snapshots and how long to retain them for.+--+-- /See:/ 'newPITPolicyRule' smart constructor.+data PITPolicyRule = PITPolicyRule'+  { -- | Whether this rule is enabled or not.+    enabled :: Prelude.Maybe Prelude.Bool,+    -- | The ID of the rule.+    ruleID :: Prelude.Maybe Prelude.Natural,+    -- | How often, in the chosen units, a snapshot should be taken.+    interval :: Prelude.Natural,+    -- | The duration to retain a snapshot for, in the chosen units.+    retentionDuration :: Prelude.Natural,+    -- | The units used to measure the interval and retentionDuration.+    units :: PITPolicyRuleUnits+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PITPolicyRule' 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', 'pITPolicyRule_enabled' - Whether this rule is enabled or not.+--+-- 'ruleID', 'pITPolicyRule_ruleID' - The ID of the rule.+--+-- 'interval', 'pITPolicyRule_interval' - How often, in the chosen units, a snapshot should be taken.+--+-- 'retentionDuration', 'pITPolicyRule_retentionDuration' - The duration to retain a snapshot for, in the chosen units.+--+-- 'units', 'pITPolicyRule_units' - The units used to measure the interval and retentionDuration.+newPITPolicyRule ::+  -- | 'interval'+  Prelude.Natural ->+  -- | 'retentionDuration'+  Prelude.Natural ->+  -- | 'units'+  PITPolicyRuleUnits ->+  PITPolicyRule+newPITPolicyRule+  pInterval_+  pRetentionDuration_+  pUnits_ =+    PITPolicyRule'+      { enabled = Prelude.Nothing,+        ruleID = Prelude.Nothing,+        interval = pInterval_,+        retentionDuration = pRetentionDuration_,+        units = pUnits_+      }++-- | Whether this rule is enabled or not.+pITPolicyRule_enabled :: Lens.Lens' PITPolicyRule (Prelude.Maybe Prelude.Bool)+pITPolicyRule_enabled = Lens.lens (\PITPolicyRule' {enabled} -> enabled) (\s@PITPolicyRule' {} a -> s {enabled = a} :: PITPolicyRule)++-- | The ID of the rule.+pITPolicyRule_ruleID :: Lens.Lens' PITPolicyRule (Prelude.Maybe Prelude.Natural)+pITPolicyRule_ruleID = Lens.lens (\PITPolicyRule' {ruleID} -> ruleID) (\s@PITPolicyRule' {} a -> s {ruleID = a} :: PITPolicyRule)++-- | How often, in the chosen units, a snapshot should be taken.+pITPolicyRule_interval :: Lens.Lens' PITPolicyRule Prelude.Natural+pITPolicyRule_interval = Lens.lens (\PITPolicyRule' {interval} -> interval) (\s@PITPolicyRule' {} a -> s {interval = a} :: PITPolicyRule)++-- | The duration to retain a snapshot for, in the chosen units.+pITPolicyRule_retentionDuration :: Lens.Lens' PITPolicyRule Prelude.Natural+pITPolicyRule_retentionDuration = Lens.lens (\PITPolicyRule' {retentionDuration} -> retentionDuration) (\s@PITPolicyRule' {} a -> s {retentionDuration = a} :: PITPolicyRule)++-- | The units used to measure the interval and retentionDuration.+pITPolicyRule_units :: Lens.Lens' PITPolicyRule PITPolicyRuleUnits+pITPolicyRule_units = Lens.lens (\PITPolicyRule' {units} -> units) (\s@PITPolicyRule' {} a -> s {units = a} :: PITPolicyRule)++instance Data.FromJSON PITPolicyRule where+  parseJSON =+    Data.withObject+      "PITPolicyRule"+      ( \x ->+          PITPolicyRule'+            Prelude.<$> (x Data..:? "enabled")+            Prelude.<*> (x Data..:? "ruleID")+            Prelude.<*> (x Data..: "interval")+            Prelude.<*> (x Data..: "retentionDuration")+            Prelude.<*> (x Data..: "units")+      )++instance Prelude.Hashable PITPolicyRule where+  hashWithSalt _salt PITPolicyRule' {..} =+    _salt+      `Prelude.hashWithSalt` enabled+      `Prelude.hashWithSalt` ruleID+      `Prelude.hashWithSalt` interval+      `Prelude.hashWithSalt` retentionDuration+      `Prelude.hashWithSalt` units++instance Prelude.NFData PITPolicyRule where+  rnf PITPolicyRule' {..} =+    Prelude.rnf enabled+      `Prelude.seq` Prelude.rnf ruleID+      `Prelude.seq` Prelude.rnf interval+      `Prelude.seq` Prelude.rnf retentionDuration+      `Prelude.seq` Prelude.rnf units++instance Data.ToJSON PITPolicyRule where+  toJSON PITPolicyRule' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("enabled" Data..=) Prelude.<$> enabled,+            ("ruleID" Data..=) Prelude.<$> ruleID,+            Prelude.Just ("interval" Data..= interval),+            Prelude.Just+              ("retentionDuration" Data..= retentionDuration),+            Prelude.Just ("units" Data..= units)+          ]+      )
+ gen/Amazonka/DrS/Types/PITPolicyRuleUnits.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.DrS.Types.PITPolicyRuleUnits+-- 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.DrS.Types.PITPolicyRuleUnits+  ( PITPolicyRuleUnits+      ( ..,+        PITPolicyRuleUnits_DAY,+        PITPolicyRuleUnits_HOUR,+        PITPolicyRuleUnits_MINUTE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype PITPolicyRuleUnits = PITPolicyRuleUnits'+  { fromPITPolicyRuleUnits ::+      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 PITPolicyRuleUnits_DAY :: PITPolicyRuleUnits+pattern PITPolicyRuleUnits_DAY = PITPolicyRuleUnits' "DAY"++pattern PITPolicyRuleUnits_HOUR :: PITPolicyRuleUnits+pattern PITPolicyRuleUnits_HOUR = PITPolicyRuleUnits' "HOUR"++pattern PITPolicyRuleUnits_MINUTE :: PITPolicyRuleUnits+pattern PITPolicyRuleUnits_MINUTE = PITPolicyRuleUnits' "MINUTE"++{-# COMPLETE+  PITPolicyRuleUnits_DAY,+  PITPolicyRuleUnits_HOUR,+  PITPolicyRuleUnits_MINUTE,+  PITPolicyRuleUnits'+  #-}
+ gen/Amazonka/DrS/Types/ParticipatingServer.hs view
@@ -0,0 +1,98 @@+{-# 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.DrS.Types.ParticipatingServer+-- 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.DrS.Types.ParticipatingServer where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.LaunchStatus+import qualified Amazonka.Prelude as Prelude++-- | Represents a server participating in an asynchronous Job.+--+-- /See:/ 'newParticipatingServer' smart constructor.+data ParticipatingServer = ParticipatingServer'+  { -- | The launch status of a participating server.+    launchStatus :: Prelude.Maybe LaunchStatus,+    -- | The Recovery Instance ID of a participating server.+    recoveryInstanceID :: Prelude.Maybe Prelude.Text,+    -- | The Source Server ID of a participating server.+    sourceServerID :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ParticipatingServer' 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:+--+-- 'launchStatus', 'participatingServer_launchStatus' - The launch status of a participating server.+--+-- 'recoveryInstanceID', 'participatingServer_recoveryInstanceID' - The Recovery Instance ID of a participating server.+--+-- 'sourceServerID', 'participatingServer_sourceServerID' - The Source Server ID of a participating server.+newParticipatingServer ::+  ParticipatingServer+newParticipatingServer =+  ParticipatingServer'+    { launchStatus =+        Prelude.Nothing,+      recoveryInstanceID = Prelude.Nothing,+      sourceServerID = Prelude.Nothing+    }++-- | The launch status of a participating server.+participatingServer_launchStatus :: Lens.Lens' ParticipatingServer (Prelude.Maybe LaunchStatus)+participatingServer_launchStatus = Lens.lens (\ParticipatingServer' {launchStatus} -> launchStatus) (\s@ParticipatingServer' {} a -> s {launchStatus = a} :: ParticipatingServer)++-- | The Recovery Instance ID of a participating server.+participatingServer_recoveryInstanceID :: Lens.Lens' ParticipatingServer (Prelude.Maybe Prelude.Text)+participatingServer_recoveryInstanceID = Lens.lens (\ParticipatingServer' {recoveryInstanceID} -> recoveryInstanceID) (\s@ParticipatingServer' {} a -> s {recoveryInstanceID = a} :: ParticipatingServer)++-- | The Source Server ID of a participating server.+participatingServer_sourceServerID :: Lens.Lens' ParticipatingServer (Prelude.Maybe Prelude.Text)+participatingServer_sourceServerID = Lens.lens (\ParticipatingServer' {sourceServerID} -> sourceServerID) (\s@ParticipatingServer' {} a -> s {sourceServerID = a} :: ParticipatingServer)++instance Data.FromJSON ParticipatingServer where+  parseJSON =+    Data.withObject+      "ParticipatingServer"+      ( \x ->+          ParticipatingServer'+            Prelude.<$> (x Data..:? "launchStatus")+            Prelude.<*> (x Data..:? "recoveryInstanceID")+            Prelude.<*> (x Data..:? "sourceServerID")+      )++instance Prelude.Hashable ParticipatingServer where+  hashWithSalt _salt ParticipatingServer' {..} =+    _salt+      `Prelude.hashWithSalt` launchStatus+      `Prelude.hashWithSalt` recoveryInstanceID+      `Prelude.hashWithSalt` sourceServerID++instance Prelude.NFData ParticipatingServer where+  rnf ParticipatingServer' {..} =+    Prelude.rnf launchStatus+      `Prelude.seq` Prelude.rnf recoveryInstanceID+      `Prelude.seq` Prelude.rnf sourceServerID
+ gen/Amazonka/DrS/Types/RecoveryInstance.hs view
@@ -0,0 +1,233 @@+{-# 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.DrS.Types.RecoveryInstance+-- 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.DrS.Types.RecoveryInstance where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.EC2InstanceState+import Amazonka.DrS.Types.OriginEnvironment+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInfo+import Amazonka.DrS.Types.RecoveryInstanceFailback+import Amazonka.DrS.Types.RecoveryInstanceProperties+import qualified Amazonka.Prelude as Prelude++-- | A Recovery Instance is a replica of a Source Server running on EC2.+--+-- /See:/ 'newRecoveryInstance' smart constructor.+data RecoveryInstance = RecoveryInstance'+  { -- | The ARN of the Recovery Instance.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The Data Replication Info of the Recovery Instance.+    dataReplicationInfo :: Prelude.Maybe RecoveryInstanceDataReplicationInfo,+    -- | The EC2 instance ID of the Recovery Instance.+    ec2InstanceID :: Prelude.Maybe Prelude.Text,+    -- | The state of the EC2 instance for this Recovery Instance.+    ec2InstanceState :: Prelude.Maybe EC2InstanceState,+    -- | An object representing failback related information of the Recovery+    -- Instance.+    failback :: Prelude.Maybe RecoveryInstanceFailback,+    -- | Whether this Recovery Instance was created for a drill or for an actual+    -- Recovery event.+    isDrill :: Prelude.Maybe Prelude.Bool,+    -- | The ID of the Job that created the Recovery Instance.+    jobID :: Prelude.Maybe Prelude.Text,+    -- | Environment (On Premises \/ AWS) of the instance that the recovery+    -- instance originated from.+    originEnvironment :: Prelude.Maybe OriginEnvironment,+    -- | The date and time of the Point in Time (PIT) snapshot that this Recovery+    -- Instance was launched from.+    pointInTimeSnapshotDateTime :: Prelude.Maybe Prelude.Text,+    -- | The ID of the Recovery Instance.+    recoveryInstanceID :: Prelude.Maybe Prelude.Text,+    -- | Properties of the Recovery Instance machine.+    recoveryInstanceProperties :: Prelude.Maybe RecoveryInstanceProperties,+    -- | The Source Server ID that this Recovery Instance is associated with.+    sourceServerID :: Prelude.Maybe Prelude.Text,+    -- | An array of tags that are associated with the Recovery Instance.+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text))+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecoveryInstance' 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', 'recoveryInstance_arn' - The ARN of the Recovery Instance.+--+-- 'dataReplicationInfo', 'recoveryInstance_dataReplicationInfo' - The Data Replication Info of the Recovery Instance.+--+-- 'ec2InstanceID', 'recoveryInstance_ec2InstanceID' - The EC2 instance ID of the Recovery Instance.+--+-- 'ec2InstanceState', 'recoveryInstance_ec2InstanceState' - The state of the EC2 instance for this Recovery Instance.+--+-- 'failback', 'recoveryInstance_failback' - An object representing failback related information of the Recovery+-- Instance.+--+-- 'isDrill', 'recoveryInstance_isDrill' - Whether this Recovery Instance was created for a drill or for an actual+-- Recovery event.+--+-- 'jobID', 'recoveryInstance_jobID' - The ID of the Job that created the Recovery Instance.+--+-- 'originEnvironment', 'recoveryInstance_originEnvironment' - Environment (On Premises \/ AWS) of the instance that the recovery+-- instance originated from.+--+-- 'pointInTimeSnapshotDateTime', 'recoveryInstance_pointInTimeSnapshotDateTime' - The date and time of the Point in Time (PIT) snapshot that this Recovery+-- Instance was launched from.+--+-- 'recoveryInstanceID', 'recoveryInstance_recoveryInstanceID' - The ID of the Recovery Instance.+--+-- 'recoveryInstanceProperties', 'recoveryInstance_recoveryInstanceProperties' - Properties of the Recovery Instance machine.+--+-- 'sourceServerID', 'recoveryInstance_sourceServerID' - The Source Server ID that this Recovery Instance is associated with.+--+-- 'tags', 'recoveryInstance_tags' - An array of tags that are associated with the Recovery Instance.+newRecoveryInstance ::+  RecoveryInstance+newRecoveryInstance =+  RecoveryInstance'+    { arn = Prelude.Nothing,+      dataReplicationInfo = Prelude.Nothing,+      ec2InstanceID = Prelude.Nothing,+      ec2InstanceState = Prelude.Nothing,+      failback = Prelude.Nothing,+      isDrill = Prelude.Nothing,+      jobID = Prelude.Nothing,+      originEnvironment = Prelude.Nothing,+      pointInTimeSnapshotDateTime = Prelude.Nothing,+      recoveryInstanceID = Prelude.Nothing,+      recoveryInstanceProperties = Prelude.Nothing,+      sourceServerID = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | The ARN of the Recovery Instance.+recoveryInstance_arn :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Text)+recoveryInstance_arn = Lens.lens (\RecoveryInstance' {arn} -> arn) (\s@RecoveryInstance' {} a -> s {arn = a} :: RecoveryInstance)++-- | The Data Replication Info of the Recovery Instance.+recoveryInstance_dataReplicationInfo :: Lens.Lens' RecoveryInstance (Prelude.Maybe RecoveryInstanceDataReplicationInfo)+recoveryInstance_dataReplicationInfo = Lens.lens (\RecoveryInstance' {dataReplicationInfo} -> dataReplicationInfo) (\s@RecoveryInstance' {} a -> s {dataReplicationInfo = a} :: RecoveryInstance)++-- | The EC2 instance ID of the Recovery Instance.+recoveryInstance_ec2InstanceID :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Text)+recoveryInstance_ec2InstanceID = Lens.lens (\RecoveryInstance' {ec2InstanceID} -> ec2InstanceID) (\s@RecoveryInstance' {} a -> s {ec2InstanceID = a} :: RecoveryInstance)++-- | The state of the EC2 instance for this Recovery Instance.+recoveryInstance_ec2InstanceState :: Lens.Lens' RecoveryInstance (Prelude.Maybe EC2InstanceState)+recoveryInstance_ec2InstanceState = Lens.lens (\RecoveryInstance' {ec2InstanceState} -> ec2InstanceState) (\s@RecoveryInstance' {} a -> s {ec2InstanceState = a} :: RecoveryInstance)++-- | An object representing failback related information of the Recovery+-- Instance.+recoveryInstance_failback :: Lens.Lens' RecoveryInstance (Prelude.Maybe RecoveryInstanceFailback)+recoveryInstance_failback = Lens.lens (\RecoveryInstance' {failback} -> failback) (\s@RecoveryInstance' {} a -> s {failback = a} :: RecoveryInstance)++-- | Whether this Recovery Instance was created for a drill or for an actual+-- Recovery event.+recoveryInstance_isDrill :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Bool)+recoveryInstance_isDrill = Lens.lens (\RecoveryInstance' {isDrill} -> isDrill) (\s@RecoveryInstance' {} a -> s {isDrill = a} :: RecoveryInstance)++-- | The ID of the Job that created the Recovery Instance.+recoveryInstance_jobID :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Text)+recoveryInstance_jobID = Lens.lens (\RecoveryInstance' {jobID} -> jobID) (\s@RecoveryInstance' {} a -> s {jobID = a} :: RecoveryInstance)++-- | Environment (On Premises \/ AWS) of the instance that the recovery+-- instance originated from.+recoveryInstance_originEnvironment :: Lens.Lens' RecoveryInstance (Prelude.Maybe OriginEnvironment)+recoveryInstance_originEnvironment = Lens.lens (\RecoveryInstance' {originEnvironment} -> originEnvironment) (\s@RecoveryInstance' {} a -> s {originEnvironment = a} :: RecoveryInstance)++-- | The date and time of the Point in Time (PIT) snapshot that this Recovery+-- Instance was launched from.+recoveryInstance_pointInTimeSnapshotDateTime :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Text)+recoveryInstance_pointInTimeSnapshotDateTime = Lens.lens (\RecoveryInstance' {pointInTimeSnapshotDateTime} -> pointInTimeSnapshotDateTime) (\s@RecoveryInstance' {} a -> s {pointInTimeSnapshotDateTime = a} :: RecoveryInstance)++-- | The ID of the Recovery Instance.+recoveryInstance_recoveryInstanceID :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Text)+recoveryInstance_recoveryInstanceID = Lens.lens (\RecoveryInstance' {recoveryInstanceID} -> recoveryInstanceID) (\s@RecoveryInstance' {} a -> s {recoveryInstanceID = a} :: RecoveryInstance)++-- | Properties of the Recovery Instance machine.+recoveryInstance_recoveryInstanceProperties :: Lens.Lens' RecoveryInstance (Prelude.Maybe RecoveryInstanceProperties)+recoveryInstance_recoveryInstanceProperties = Lens.lens (\RecoveryInstance' {recoveryInstanceProperties} -> recoveryInstanceProperties) (\s@RecoveryInstance' {} a -> s {recoveryInstanceProperties = a} :: RecoveryInstance)++-- | The Source Server ID that this Recovery Instance is associated with.+recoveryInstance_sourceServerID :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Text)+recoveryInstance_sourceServerID = Lens.lens (\RecoveryInstance' {sourceServerID} -> sourceServerID) (\s@RecoveryInstance' {} a -> s {sourceServerID = a} :: RecoveryInstance)++-- | An array of tags that are associated with the Recovery Instance.+recoveryInstance_tags :: Lens.Lens' RecoveryInstance (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+recoveryInstance_tags = Lens.lens (\RecoveryInstance' {tags} -> tags) (\s@RecoveryInstance' {} a -> s {tags = a} :: RecoveryInstance) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++instance Data.FromJSON RecoveryInstance where+  parseJSON =+    Data.withObject+      "RecoveryInstance"+      ( \x ->+          RecoveryInstance'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "dataReplicationInfo")+            Prelude.<*> (x Data..:? "ec2InstanceID")+            Prelude.<*> (x Data..:? "ec2InstanceState")+            Prelude.<*> (x Data..:? "failback")+            Prelude.<*> (x Data..:? "isDrill")+            Prelude.<*> (x Data..:? "jobID")+            Prelude.<*> (x Data..:? "originEnvironment")+            Prelude.<*> (x Data..:? "pointInTimeSnapshotDateTime")+            Prelude.<*> (x Data..:? "recoveryInstanceID")+            Prelude.<*> (x Data..:? "recoveryInstanceProperties")+            Prelude.<*> (x Data..:? "sourceServerID")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable RecoveryInstance where+  hashWithSalt _salt RecoveryInstance' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` dataReplicationInfo+      `Prelude.hashWithSalt` ec2InstanceID+      `Prelude.hashWithSalt` ec2InstanceState+      `Prelude.hashWithSalt` failback+      `Prelude.hashWithSalt` isDrill+      `Prelude.hashWithSalt` jobID+      `Prelude.hashWithSalt` originEnvironment+      `Prelude.hashWithSalt` pointInTimeSnapshotDateTime+      `Prelude.hashWithSalt` recoveryInstanceID+      `Prelude.hashWithSalt` recoveryInstanceProperties+      `Prelude.hashWithSalt` sourceServerID+      `Prelude.hashWithSalt` tags++instance Prelude.NFData RecoveryInstance where+  rnf RecoveryInstance' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf dataReplicationInfo+      `Prelude.seq` Prelude.rnf ec2InstanceID+      `Prelude.seq` Prelude.rnf ec2InstanceState+      `Prelude.seq` Prelude.rnf failback+      `Prelude.seq` Prelude.rnf isDrill+      `Prelude.seq` Prelude.rnf jobID+      `Prelude.seq` Prelude.rnf originEnvironment+      `Prelude.seq` Prelude.rnf pointInTimeSnapshotDateTime+      `Prelude.seq` Prelude.rnf recoveryInstanceID+      `Prelude.seq` Prelude.rnf recoveryInstanceProperties+      `Prelude.seq` Prelude.rnf sourceServerID+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/DrS/Types/RecoveryInstanceDataReplicationError.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.DrS.Types.RecoveryInstanceDataReplicationError+-- 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.DrS.Types.RecoveryInstanceDataReplicationError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.FailbackReplicationError+import qualified Amazonka.Prelude as Prelude++-- | Error in data replication.+--+-- /See:/ 'newRecoveryInstanceDataReplicationError' smart constructor.+data RecoveryInstanceDataReplicationError = RecoveryInstanceDataReplicationError'+  { -- | Error in data replication.+    error :: Prelude.Maybe FailbackReplicationError,+    -- | Error in data replication.+    rawError :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecoveryInstanceDataReplicationError' 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:+--+-- 'error', 'recoveryInstanceDataReplicationError_error' - Error in data replication.+--+-- 'rawError', 'recoveryInstanceDataReplicationError_rawError' - Error in data replication.+newRecoveryInstanceDataReplicationError ::+  RecoveryInstanceDataReplicationError+newRecoveryInstanceDataReplicationError =+  RecoveryInstanceDataReplicationError'+    { error =+        Prelude.Nothing,+      rawError = Prelude.Nothing+    }++-- | Error in data replication.+recoveryInstanceDataReplicationError_error :: Lens.Lens' RecoveryInstanceDataReplicationError (Prelude.Maybe FailbackReplicationError)+recoveryInstanceDataReplicationError_error = Lens.lens (\RecoveryInstanceDataReplicationError' {error} -> error) (\s@RecoveryInstanceDataReplicationError' {} a -> s {error = a} :: RecoveryInstanceDataReplicationError)++-- | Error in data replication.+recoveryInstanceDataReplicationError_rawError :: Lens.Lens' RecoveryInstanceDataReplicationError (Prelude.Maybe Prelude.Text)+recoveryInstanceDataReplicationError_rawError = Lens.lens (\RecoveryInstanceDataReplicationError' {rawError} -> rawError) (\s@RecoveryInstanceDataReplicationError' {} a -> s {rawError = a} :: RecoveryInstanceDataReplicationError)++instance+  Data.FromJSON+    RecoveryInstanceDataReplicationError+  where+  parseJSON =+    Data.withObject+      "RecoveryInstanceDataReplicationError"+      ( \x ->+          RecoveryInstanceDataReplicationError'+            Prelude.<$> (x Data..:? "error")+            Prelude.<*> (x Data..:? "rawError")+      )++instance+  Prelude.Hashable+    RecoveryInstanceDataReplicationError+  where+  hashWithSalt+    _salt+    RecoveryInstanceDataReplicationError' {..} =+      _salt+        `Prelude.hashWithSalt` error+        `Prelude.hashWithSalt` rawError++instance+  Prelude.NFData+    RecoveryInstanceDataReplicationError+  where+  rnf RecoveryInstanceDataReplicationError' {..} =+    Prelude.rnf error+      `Prelude.seq` Prelude.rnf rawError
+ gen/Amazonka/DrS/Types/RecoveryInstanceDataReplicationInfo.hs view
@@ -0,0 +1,152 @@+{-# 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.DrS.Types.RecoveryInstanceDataReplicationInfo+-- 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.DrS.Types.RecoveryInstanceDataReplicationInfo where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationError+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInfoReplicatedDisk+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiation+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationState+import qualified Amazonka.Prelude as Prelude++-- | Information about Data Replication+--+-- /See:/ 'newRecoveryInstanceDataReplicationInfo' smart constructor.+data RecoveryInstanceDataReplicationInfo = RecoveryInstanceDataReplicationInfo'+  { -- | Information about Data Replication+    dataReplicationError :: Prelude.Maybe RecoveryInstanceDataReplicationError,+    -- | Information about whether the data replication has been initiated.+    dataReplicationInitiation :: Prelude.Maybe RecoveryInstanceDataReplicationInitiation,+    -- | The state of the data replication.+    dataReplicationState :: Prelude.Maybe RecoveryInstanceDataReplicationState,+    -- | An estimate of when the data replication will be completed.+    etaDateTime :: Prelude.Maybe Prelude.Text,+    -- | Data replication lag duration.+    lagDuration :: Prelude.Maybe Prelude.Text,+    -- | The disks that should be replicated.+    replicatedDisks :: Prelude.Maybe [RecoveryInstanceDataReplicationInfoReplicatedDisk]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecoveryInstanceDataReplicationInfo' 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:+--+-- 'dataReplicationError', 'recoveryInstanceDataReplicationInfo_dataReplicationError' - Information about Data Replication+--+-- 'dataReplicationInitiation', 'recoveryInstanceDataReplicationInfo_dataReplicationInitiation' - Information about whether the data replication has been initiated.+--+-- 'dataReplicationState', 'recoveryInstanceDataReplicationInfo_dataReplicationState' - The state of the data replication.+--+-- 'etaDateTime', 'recoveryInstanceDataReplicationInfo_etaDateTime' - An estimate of when the data replication will be completed.+--+-- 'lagDuration', 'recoveryInstanceDataReplicationInfo_lagDuration' - Data replication lag duration.+--+-- 'replicatedDisks', 'recoveryInstanceDataReplicationInfo_replicatedDisks' - The disks that should be replicated.+newRecoveryInstanceDataReplicationInfo ::+  RecoveryInstanceDataReplicationInfo+newRecoveryInstanceDataReplicationInfo =+  RecoveryInstanceDataReplicationInfo'+    { dataReplicationError =+        Prelude.Nothing,+      dataReplicationInitiation =+        Prelude.Nothing,+      dataReplicationState = Prelude.Nothing,+      etaDateTime = Prelude.Nothing,+      lagDuration = Prelude.Nothing,+      replicatedDisks = Prelude.Nothing+    }++-- | Information about Data Replication+recoveryInstanceDataReplicationInfo_dataReplicationError :: Lens.Lens' RecoveryInstanceDataReplicationInfo (Prelude.Maybe RecoveryInstanceDataReplicationError)+recoveryInstanceDataReplicationInfo_dataReplicationError = Lens.lens (\RecoveryInstanceDataReplicationInfo' {dataReplicationError} -> dataReplicationError) (\s@RecoveryInstanceDataReplicationInfo' {} a -> s {dataReplicationError = a} :: RecoveryInstanceDataReplicationInfo)++-- | Information about whether the data replication has been initiated.+recoveryInstanceDataReplicationInfo_dataReplicationInitiation :: Lens.Lens' RecoveryInstanceDataReplicationInfo (Prelude.Maybe RecoveryInstanceDataReplicationInitiation)+recoveryInstanceDataReplicationInfo_dataReplicationInitiation = Lens.lens (\RecoveryInstanceDataReplicationInfo' {dataReplicationInitiation} -> dataReplicationInitiation) (\s@RecoveryInstanceDataReplicationInfo' {} a -> s {dataReplicationInitiation = a} :: RecoveryInstanceDataReplicationInfo)++-- | The state of the data replication.+recoveryInstanceDataReplicationInfo_dataReplicationState :: Lens.Lens' RecoveryInstanceDataReplicationInfo (Prelude.Maybe RecoveryInstanceDataReplicationState)+recoveryInstanceDataReplicationInfo_dataReplicationState = Lens.lens (\RecoveryInstanceDataReplicationInfo' {dataReplicationState} -> dataReplicationState) (\s@RecoveryInstanceDataReplicationInfo' {} a -> s {dataReplicationState = a} :: RecoveryInstanceDataReplicationInfo)++-- | An estimate of when the data replication will be completed.+recoveryInstanceDataReplicationInfo_etaDateTime :: Lens.Lens' RecoveryInstanceDataReplicationInfo (Prelude.Maybe Prelude.Text)+recoveryInstanceDataReplicationInfo_etaDateTime = Lens.lens (\RecoveryInstanceDataReplicationInfo' {etaDateTime} -> etaDateTime) (\s@RecoveryInstanceDataReplicationInfo' {} a -> s {etaDateTime = a} :: RecoveryInstanceDataReplicationInfo)++-- | Data replication lag duration.+recoveryInstanceDataReplicationInfo_lagDuration :: Lens.Lens' RecoveryInstanceDataReplicationInfo (Prelude.Maybe Prelude.Text)+recoveryInstanceDataReplicationInfo_lagDuration = Lens.lens (\RecoveryInstanceDataReplicationInfo' {lagDuration} -> lagDuration) (\s@RecoveryInstanceDataReplicationInfo' {} a -> s {lagDuration = a} :: RecoveryInstanceDataReplicationInfo)++-- | The disks that should be replicated.+recoveryInstanceDataReplicationInfo_replicatedDisks :: Lens.Lens' RecoveryInstanceDataReplicationInfo (Prelude.Maybe [RecoveryInstanceDataReplicationInfoReplicatedDisk])+recoveryInstanceDataReplicationInfo_replicatedDisks = Lens.lens (\RecoveryInstanceDataReplicationInfo' {replicatedDisks} -> replicatedDisks) (\s@RecoveryInstanceDataReplicationInfo' {} a -> s {replicatedDisks = a} :: RecoveryInstanceDataReplicationInfo) Prelude.. Lens.mapping Lens.coerced++instance+  Data.FromJSON+    RecoveryInstanceDataReplicationInfo+  where+  parseJSON =+    Data.withObject+      "RecoveryInstanceDataReplicationInfo"+      ( \x ->+          RecoveryInstanceDataReplicationInfo'+            Prelude.<$> (x Data..:? "dataReplicationError")+            Prelude.<*> (x Data..:? "dataReplicationInitiation")+            Prelude.<*> (x Data..:? "dataReplicationState")+            Prelude.<*> (x Data..:? "etaDateTime")+            Prelude.<*> (x Data..:? "lagDuration")+            Prelude.<*> ( x+                            Data..:? "replicatedDisks"+                            Data..!= Prelude.mempty+                        )+      )++instance+  Prelude.Hashable+    RecoveryInstanceDataReplicationInfo+  where+  hashWithSalt+    _salt+    RecoveryInstanceDataReplicationInfo' {..} =+      _salt+        `Prelude.hashWithSalt` dataReplicationError+        `Prelude.hashWithSalt` dataReplicationInitiation+        `Prelude.hashWithSalt` dataReplicationState+        `Prelude.hashWithSalt` etaDateTime+        `Prelude.hashWithSalt` lagDuration+        `Prelude.hashWithSalt` replicatedDisks++instance+  Prelude.NFData+    RecoveryInstanceDataReplicationInfo+  where+  rnf RecoveryInstanceDataReplicationInfo' {..} =+    Prelude.rnf dataReplicationError+      `Prelude.seq` Prelude.rnf dataReplicationInitiation+      `Prelude.seq` Prelude.rnf dataReplicationState+      `Prelude.seq` Prelude.rnf etaDateTime+      `Prelude.seq` Prelude.rnf lagDuration+      `Prelude.seq` Prelude.rnf replicatedDisks
+ gen/Amazonka/DrS/Types/RecoveryInstanceDataReplicationInfoReplicatedDisk.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.DrS.Types.RecoveryInstanceDataReplicationInfoReplicatedDisk+-- 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.DrS.Types.RecoveryInstanceDataReplicationInfoReplicatedDisk 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++-- | A disk that should be replicated.+--+-- /See:/ 'newRecoveryInstanceDataReplicationInfoReplicatedDisk' smart constructor.+data RecoveryInstanceDataReplicationInfoReplicatedDisk = RecoveryInstanceDataReplicationInfoReplicatedDisk'+  { -- | The size of the replication backlog in bytes.+    backloggedStorageBytes :: Prelude.Maybe Prelude.Natural,+    -- | The name of the device.+    deviceName :: Prelude.Maybe Prelude.Text,+    -- | The amount of data replicated so far in bytes.+    replicatedStorageBytes :: Prelude.Maybe Prelude.Natural,+    -- | The amount of data to be rescanned in bytes.+    rescannedStorageBytes :: Prelude.Maybe Prelude.Natural,+    -- | The total amount of data to be replicated in bytes.+    totalStorageBytes :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecoveryInstanceDataReplicationInfoReplicatedDisk' 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:+--+-- 'backloggedStorageBytes', 'recoveryInstanceDataReplicationInfoReplicatedDisk_backloggedStorageBytes' - The size of the replication backlog in bytes.+--+-- 'deviceName', 'recoveryInstanceDataReplicationInfoReplicatedDisk_deviceName' - The name of the device.+--+-- 'replicatedStorageBytes', 'recoveryInstanceDataReplicationInfoReplicatedDisk_replicatedStorageBytes' - The amount of data replicated so far in bytes.+--+-- 'rescannedStorageBytes', 'recoveryInstanceDataReplicationInfoReplicatedDisk_rescannedStorageBytes' - The amount of data to be rescanned in bytes.+--+-- 'totalStorageBytes', 'recoveryInstanceDataReplicationInfoReplicatedDisk_totalStorageBytes' - The total amount of data to be replicated in bytes.+newRecoveryInstanceDataReplicationInfoReplicatedDisk ::+  RecoveryInstanceDataReplicationInfoReplicatedDisk+newRecoveryInstanceDataReplicationInfoReplicatedDisk =+  RecoveryInstanceDataReplicationInfoReplicatedDisk'+    { backloggedStorageBytes =+        Prelude.Nothing,+      deviceName =+        Prelude.Nothing,+      replicatedStorageBytes =+        Prelude.Nothing,+      rescannedStorageBytes =+        Prelude.Nothing,+      totalStorageBytes =+        Prelude.Nothing+    }++-- | The size of the replication backlog in bytes.+recoveryInstanceDataReplicationInfoReplicatedDisk_backloggedStorageBytes :: Lens.Lens' RecoveryInstanceDataReplicationInfoReplicatedDisk (Prelude.Maybe Prelude.Natural)+recoveryInstanceDataReplicationInfoReplicatedDisk_backloggedStorageBytes = Lens.lens (\RecoveryInstanceDataReplicationInfoReplicatedDisk' {backloggedStorageBytes} -> backloggedStorageBytes) (\s@RecoveryInstanceDataReplicationInfoReplicatedDisk' {} a -> s {backloggedStorageBytes = a} :: RecoveryInstanceDataReplicationInfoReplicatedDisk)++-- | The name of the device.+recoveryInstanceDataReplicationInfoReplicatedDisk_deviceName :: Lens.Lens' RecoveryInstanceDataReplicationInfoReplicatedDisk (Prelude.Maybe Prelude.Text)+recoveryInstanceDataReplicationInfoReplicatedDisk_deviceName = Lens.lens (\RecoveryInstanceDataReplicationInfoReplicatedDisk' {deviceName} -> deviceName) (\s@RecoveryInstanceDataReplicationInfoReplicatedDisk' {} a -> s {deviceName = a} :: RecoveryInstanceDataReplicationInfoReplicatedDisk)++-- | The amount of data replicated so far in bytes.+recoveryInstanceDataReplicationInfoReplicatedDisk_replicatedStorageBytes :: Lens.Lens' RecoveryInstanceDataReplicationInfoReplicatedDisk (Prelude.Maybe Prelude.Natural)+recoveryInstanceDataReplicationInfoReplicatedDisk_replicatedStorageBytes = Lens.lens (\RecoveryInstanceDataReplicationInfoReplicatedDisk' {replicatedStorageBytes} -> replicatedStorageBytes) (\s@RecoveryInstanceDataReplicationInfoReplicatedDisk' {} a -> s {replicatedStorageBytes = a} :: RecoveryInstanceDataReplicationInfoReplicatedDisk)++-- | The amount of data to be rescanned in bytes.+recoveryInstanceDataReplicationInfoReplicatedDisk_rescannedStorageBytes :: Lens.Lens' RecoveryInstanceDataReplicationInfoReplicatedDisk (Prelude.Maybe Prelude.Natural)+recoveryInstanceDataReplicationInfoReplicatedDisk_rescannedStorageBytes = Lens.lens (\RecoveryInstanceDataReplicationInfoReplicatedDisk' {rescannedStorageBytes} -> rescannedStorageBytes) (\s@RecoveryInstanceDataReplicationInfoReplicatedDisk' {} a -> s {rescannedStorageBytes = a} :: RecoveryInstanceDataReplicationInfoReplicatedDisk)++-- | The total amount of data to be replicated in bytes.+recoveryInstanceDataReplicationInfoReplicatedDisk_totalStorageBytes :: Lens.Lens' RecoveryInstanceDataReplicationInfoReplicatedDisk (Prelude.Maybe Prelude.Natural)+recoveryInstanceDataReplicationInfoReplicatedDisk_totalStorageBytes = Lens.lens (\RecoveryInstanceDataReplicationInfoReplicatedDisk' {totalStorageBytes} -> totalStorageBytes) (\s@RecoveryInstanceDataReplicationInfoReplicatedDisk' {} a -> s {totalStorageBytes = a} :: RecoveryInstanceDataReplicationInfoReplicatedDisk)++instance+  Data.FromJSON+    RecoveryInstanceDataReplicationInfoReplicatedDisk+  where+  parseJSON =+    Data.withObject+      "RecoveryInstanceDataReplicationInfoReplicatedDisk"+      ( \x ->+          RecoveryInstanceDataReplicationInfoReplicatedDisk'+            Prelude.<$> (x Data..:? "backloggedStorageBytes")+            Prelude.<*> (x Data..:? "deviceName")+            Prelude.<*> (x Data..:? "replicatedStorageBytes")+            Prelude.<*> (x Data..:? "rescannedStorageBytes")+            Prelude.<*> (x Data..:? "totalStorageBytes")+      )++instance+  Prelude.Hashable+    RecoveryInstanceDataReplicationInfoReplicatedDisk+  where+  hashWithSalt+    _salt+    RecoveryInstanceDataReplicationInfoReplicatedDisk' {..} =+      _salt+        `Prelude.hashWithSalt` backloggedStorageBytes+        `Prelude.hashWithSalt` deviceName+        `Prelude.hashWithSalt` replicatedStorageBytes+        `Prelude.hashWithSalt` rescannedStorageBytes+        `Prelude.hashWithSalt` totalStorageBytes++instance+  Prelude.NFData+    RecoveryInstanceDataReplicationInfoReplicatedDisk+  where+  rnf+    RecoveryInstanceDataReplicationInfoReplicatedDisk' {..} =+      Prelude.rnf backloggedStorageBytes+        `Prelude.seq` Prelude.rnf deviceName+        `Prelude.seq` Prelude.rnf replicatedStorageBytes+        `Prelude.seq` Prelude.rnf rescannedStorageBytes+        `Prelude.seq` Prelude.rnf totalStorageBytes
+ gen/Amazonka/DrS/Types/RecoveryInstanceDataReplicationInitiation.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.DrS.Types.RecoveryInstanceDataReplicationInitiation+-- 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.DrS.Types.RecoveryInstanceDataReplicationInitiation where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiationStep+import qualified Amazonka.Prelude as Prelude++-- | Data replication initiation.+--+-- /See:/ 'newRecoveryInstanceDataReplicationInitiation' smart constructor.+data RecoveryInstanceDataReplicationInitiation = RecoveryInstanceDataReplicationInitiation'+  { -- | The date and time of the current attempt to initiate data replication.+    startDateTime :: Prelude.Maybe Prelude.Text,+    -- | The steps of the current attempt to initiate data replication.+    steps :: Prelude.Maybe [RecoveryInstanceDataReplicationInitiationStep]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecoveryInstanceDataReplicationInitiation' 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:+--+-- 'startDateTime', 'recoveryInstanceDataReplicationInitiation_startDateTime' - The date and time of the current attempt to initiate data replication.+--+-- 'steps', 'recoveryInstanceDataReplicationInitiation_steps' - The steps of the current attempt to initiate data replication.+newRecoveryInstanceDataReplicationInitiation ::+  RecoveryInstanceDataReplicationInitiation+newRecoveryInstanceDataReplicationInitiation =+  RecoveryInstanceDataReplicationInitiation'+    { startDateTime =+        Prelude.Nothing,+      steps = Prelude.Nothing+    }++-- | The date and time of the current attempt to initiate data replication.+recoveryInstanceDataReplicationInitiation_startDateTime :: Lens.Lens' RecoveryInstanceDataReplicationInitiation (Prelude.Maybe Prelude.Text)+recoveryInstanceDataReplicationInitiation_startDateTime = Lens.lens (\RecoveryInstanceDataReplicationInitiation' {startDateTime} -> startDateTime) (\s@RecoveryInstanceDataReplicationInitiation' {} a -> s {startDateTime = a} :: RecoveryInstanceDataReplicationInitiation)++-- | The steps of the current attempt to initiate data replication.+recoveryInstanceDataReplicationInitiation_steps :: Lens.Lens' RecoveryInstanceDataReplicationInitiation (Prelude.Maybe [RecoveryInstanceDataReplicationInitiationStep])+recoveryInstanceDataReplicationInitiation_steps = Lens.lens (\RecoveryInstanceDataReplicationInitiation' {steps} -> steps) (\s@RecoveryInstanceDataReplicationInitiation' {} a -> s {steps = a} :: RecoveryInstanceDataReplicationInitiation) Prelude.. Lens.mapping Lens.coerced++instance+  Data.FromJSON+    RecoveryInstanceDataReplicationInitiation+  where+  parseJSON =+    Data.withObject+      "RecoveryInstanceDataReplicationInitiation"+      ( \x ->+          RecoveryInstanceDataReplicationInitiation'+            Prelude.<$> (x Data..:? "startDateTime")+            Prelude.<*> (x Data..:? "steps" Data..!= Prelude.mempty)+      )++instance+  Prelude.Hashable+    RecoveryInstanceDataReplicationInitiation+  where+  hashWithSalt+    _salt+    RecoveryInstanceDataReplicationInitiation' {..} =+      _salt+        `Prelude.hashWithSalt` startDateTime+        `Prelude.hashWithSalt` steps++instance+  Prelude.NFData+    RecoveryInstanceDataReplicationInitiation+  where+  rnf RecoveryInstanceDataReplicationInitiation' {..} =+    Prelude.rnf startDateTime+      `Prelude.seq` Prelude.rnf steps
+ gen/Amazonka/DrS/Types/RecoveryInstanceDataReplicationInitiationStep.hs view
@@ -0,0 +1,98 @@+{-# 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.DrS.Types.RecoveryInstanceDataReplicationInitiationStep+-- 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.DrS.Types.RecoveryInstanceDataReplicationInitiationStep where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiationStepName+import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInitiationStepStatus+import qualified Amazonka.Prelude as Prelude++-- | Data replication initiation step.+--+-- /See:/ 'newRecoveryInstanceDataReplicationInitiationStep' smart constructor.+data RecoveryInstanceDataReplicationInitiationStep = RecoveryInstanceDataReplicationInitiationStep'+  { -- | The name of the step.+    name :: Prelude.Maybe RecoveryInstanceDataReplicationInitiationStepName,+    -- | The status of the step.+    status :: Prelude.Maybe RecoveryInstanceDataReplicationInitiationStepStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecoveryInstanceDataReplicationInitiationStep' 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', 'recoveryInstanceDataReplicationInitiationStep_name' - The name of the step.+--+-- 'status', 'recoveryInstanceDataReplicationInitiationStep_status' - The status of the step.+newRecoveryInstanceDataReplicationInitiationStep ::+  RecoveryInstanceDataReplicationInitiationStep+newRecoveryInstanceDataReplicationInitiationStep =+  RecoveryInstanceDataReplicationInitiationStep'+    { name =+        Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The name of the step.+recoveryInstanceDataReplicationInitiationStep_name :: Lens.Lens' RecoveryInstanceDataReplicationInitiationStep (Prelude.Maybe RecoveryInstanceDataReplicationInitiationStepName)+recoveryInstanceDataReplicationInitiationStep_name = Lens.lens (\RecoveryInstanceDataReplicationInitiationStep' {name} -> name) (\s@RecoveryInstanceDataReplicationInitiationStep' {} a -> s {name = a} :: RecoveryInstanceDataReplicationInitiationStep)++-- | The status of the step.+recoveryInstanceDataReplicationInitiationStep_status :: Lens.Lens' RecoveryInstanceDataReplicationInitiationStep (Prelude.Maybe RecoveryInstanceDataReplicationInitiationStepStatus)+recoveryInstanceDataReplicationInitiationStep_status = Lens.lens (\RecoveryInstanceDataReplicationInitiationStep' {status} -> status) (\s@RecoveryInstanceDataReplicationInitiationStep' {} a -> s {status = a} :: RecoveryInstanceDataReplicationInitiationStep)++instance+  Data.FromJSON+    RecoveryInstanceDataReplicationInitiationStep+  where+  parseJSON =+    Data.withObject+      "RecoveryInstanceDataReplicationInitiationStep"+      ( \x ->+          RecoveryInstanceDataReplicationInitiationStep'+            Prelude.<$> (x Data..:? "name")+            Prelude.<*> (x Data..:? "status")+      )++instance+  Prelude.Hashable+    RecoveryInstanceDataReplicationInitiationStep+  where+  hashWithSalt+    _salt+    RecoveryInstanceDataReplicationInitiationStep' {..} =+      _salt+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` status++instance+  Prelude.NFData+    RecoveryInstanceDataReplicationInitiationStep+  where+  rnf+    RecoveryInstanceDataReplicationInitiationStep' {..} =+      Prelude.rnf name `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/DrS/Types/RecoveryInstanceDataReplicationInitiationStepName.hs view
@@ -0,0 +1,151 @@+{-# 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.DrS.Types.RecoveryInstanceDataReplicationInitiationStepName+-- 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.DrS.Types.RecoveryInstanceDataReplicationInitiationStepName+  ( RecoveryInstanceDataReplicationInitiationStepName+      ( ..,+        RecoveryInstanceDataReplicationInitiationStepName_ATTACH_STAGING_DISKS,+        RecoveryInstanceDataReplicationInitiationStepName_AUTHENTICATE_WITH_SERVICE,+        RecoveryInstanceDataReplicationInitiationStepName_BOOT_REPLICATION_SERVER,+        RecoveryInstanceDataReplicationInitiationStepName_COMPLETE_VOLUME_MAPPING,+        RecoveryInstanceDataReplicationInitiationStepName_CONFIGURE_REPLICATION_SOFTWARE,+        RecoveryInstanceDataReplicationInitiationStepName_CONNECT_AGENT_TO_REPLICATION_SERVER,+        RecoveryInstanceDataReplicationInitiationStepName_CREATE_SECURITY_GROUP,+        RecoveryInstanceDataReplicationInitiationStepName_CREATE_STAGING_DISKS,+        RecoveryInstanceDataReplicationInitiationStepName_DOWNLOAD_REPLICATION_SOFTWARE,+        RecoveryInstanceDataReplicationInitiationStepName_DOWNLOAD_REPLICATION_SOFTWARE_TO_FAILBACK_CLIENT,+        RecoveryInstanceDataReplicationInitiationStepName_ESTABLISH_AGENT_REPLICATOR_SOFTWARE_COMMUNICATION,+        RecoveryInstanceDataReplicationInitiationStepName_ESTABLISH_RECOVERY_INSTANCE_COMMUNICATION,+        RecoveryInstanceDataReplicationInitiationStepName_LAUNCH_REPLICATION_SERVER,+        RecoveryInstanceDataReplicationInitiationStepName_LINK_FAILBACK_CLIENT_WITH_RECOVERY_INSTANCE,+        RecoveryInstanceDataReplicationInitiationStepName_PAIR_AGENT_WITH_REPLICATION_SOFTWARE,+        RecoveryInstanceDataReplicationInitiationStepName_PAIR_REPLICATION_SERVER_WITH_AGENT,+        RecoveryInstanceDataReplicationInitiationStepName_START_DATA_TRANSFER,+        RecoveryInstanceDataReplicationInitiationStepName_WAIT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RecoveryInstanceDataReplicationInitiationStepName = RecoveryInstanceDataReplicationInitiationStepName'+  { fromRecoveryInstanceDataReplicationInitiationStepName ::+      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 RecoveryInstanceDataReplicationInitiationStepName_ATTACH_STAGING_DISKS :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_ATTACH_STAGING_DISKS = RecoveryInstanceDataReplicationInitiationStepName' "ATTACH_STAGING_DISKS"++pattern RecoveryInstanceDataReplicationInitiationStepName_AUTHENTICATE_WITH_SERVICE :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_AUTHENTICATE_WITH_SERVICE = RecoveryInstanceDataReplicationInitiationStepName' "AUTHENTICATE_WITH_SERVICE"++pattern RecoveryInstanceDataReplicationInitiationStepName_BOOT_REPLICATION_SERVER :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_BOOT_REPLICATION_SERVER = RecoveryInstanceDataReplicationInitiationStepName' "BOOT_REPLICATION_SERVER"++pattern RecoveryInstanceDataReplicationInitiationStepName_COMPLETE_VOLUME_MAPPING :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_COMPLETE_VOLUME_MAPPING = RecoveryInstanceDataReplicationInitiationStepName' "COMPLETE_VOLUME_MAPPING"++pattern RecoveryInstanceDataReplicationInitiationStepName_CONFIGURE_REPLICATION_SOFTWARE :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_CONFIGURE_REPLICATION_SOFTWARE = RecoveryInstanceDataReplicationInitiationStepName' "CONFIGURE_REPLICATION_SOFTWARE"++pattern RecoveryInstanceDataReplicationInitiationStepName_CONNECT_AGENT_TO_REPLICATION_SERVER :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_CONNECT_AGENT_TO_REPLICATION_SERVER = RecoveryInstanceDataReplicationInitiationStepName' "CONNECT_AGENT_TO_REPLICATION_SERVER"++pattern RecoveryInstanceDataReplicationInitiationStepName_CREATE_SECURITY_GROUP :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_CREATE_SECURITY_GROUP = RecoveryInstanceDataReplicationInitiationStepName' "CREATE_SECURITY_GROUP"++pattern RecoveryInstanceDataReplicationInitiationStepName_CREATE_STAGING_DISKS :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_CREATE_STAGING_DISKS = RecoveryInstanceDataReplicationInitiationStepName' "CREATE_STAGING_DISKS"++pattern RecoveryInstanceDataReplicationInitiationStepName_DOWNLOAD_REPLICATION_SOFTWARE :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_DOWNLOAD_REPLICATION_SOFTWARE = RecoveryInstanceDataReplicationInitiationStepName' "DOWNLOAD_REPLICATION_SOFTWARE"++pattern RecoveryInstanceDataReplicationInitiationStepName_DOWNLOAD_REPLICATION_SOFTWARE_TO_FAILBACK_CLIENT :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_DOWNLOAD_REPLICATION_SOFTWARE_TO_FAILBACK_CLIENT = RecoveryInstanceDataReplicationInitiationStepName' "DOWNLOAD_REPLICATION_SOFTWARE_TO_FAILBACK_CLIENT"++pattern RecoveryInstanceDataReplicationInitiationStepName_ESTABLISH_AGENT_REPLICATOR_SOFTWARE_COMMUNICATION :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_ESTABLISH_AGENT_REPLICATOR_SOFTWARE_COMMUNICATION = RecoveryInstanceDataReplicationInitiationStepName' "ESTABLISH_AGENT_REPLICATOR_SOFTWARE_COMMUNICATION"++pattern RecoveryInstanceDataReplicationInitiationStepName_ESTABLISH_RECOVERY_INSTANCE_COMMUNICATION :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_ESTABLISH_RECOVERY_INSTANCE_COMMUNICATION = RecoveryInstanceDataReplicationInitiationStepName' "ESTABLISH_RECOVERY_INSTANCE_COMMUNICATION"++pattern RecoveryInstanceDataReplicationInitiationStepName_LAUNCH_REPLICATION_SERVER :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_LAUNCH_REPLICATION_SERVER = RecoveryInstanceDataReplicationInitiationStepName' "LAUNCH_REPLICATION_SERVER"++pattern RecoveryInstanceDataReplicationInitiationStepName_LINK_FAILBACK_CLIENT_WITH_RECOVERY_INSTANCE :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_LINK_FAILBACK_CLIENT_WITH_RECOVERY_INSTANCE = RecoveryInstanceDataReplicationInitiationStepName' "LINK_FAILBACK_CLIENT_WITH_RECOVERY_INSTANCE"++pattern RecoveryInstanceDataReplicationInitiationStepName_PAIR_AGENT_WITH_REPLICATION_SOFTWARE :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_PAIR_AGENT_WITH_REPLICATION_SOFTWARE = RecoveryInstanceDataReplicationInitiationStepName' "PAIR_AGENT_WITH_REPLICATION_SOFTWARE"++pattern RecoveryInstanceDataReplicationInitiationStepName_PAIR_REPLICATION_SERVER_WITH_AGENT :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_PAIR_REPLICATION_SERVER_WITH_AGENT = RecoveryInstanceDataReplicationInitiationStepName' "PAIR_REPLICATION_SERVER_WITH_AGENT"++pattern RecoveryInstanceDataReplicationInitiationStepName_START_DATA_TRANSFER :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_START_DATA_TRANSFER = RecoveryInstanceDataReplicationInitiationStepName' "START_DATA_TRANSFER"++pattern RecoveryInstanceDataReplicationInitiationStepName_WAIT :: RecoveryInstanceDataReplicationInitiationStepName+pattern RecoveryInstanceDataReplicationInitiationStepName_WAIT = RecoveryInstanceDataReplicationInitiationStepName' "WAIT"++{-# COMPLETE+  RecoveryInstanceDataReplicationInitiationStepName_ATTACH_STAGING_DISKS,+  RecoveryInstanceDataReplicationInitiationStepName_AUTHENTICATE_WITH_SERVICE,+  RecoveryInstanceDataReplicationInitiationStepName_BOOT_REPLICATION_SERVER,+  RecoveryInstanceDataReplicationInitiationStepName_COMPLETE_VOLUME_MAPPING,+  RecoveryInstanceDataReplicationInitiationStepName_CONFIGURE_REPLICATION_SOFTWARE,+  RecoveryInstanceDataReplicationInitiationStepName_CONNECT_AGENT_TO_REPLICATION_SERVER,+  RecoveryInstanceDataReplicationInitiationStepName_CREATE_SECURITY_GROUP,+  RecoveryInstanceDataReplicationInitiationStepName_CREATE_STAGING_DISKS,+  RecoveryInstanceDataReplicationInitiationStepName_DOWNLOAD_REPLICATION_SOFTWARE,+  RecoveryInstanceDataReplicationInitiationStepName_DOWNLOAD_REPLICATION_SOFTWARE_TO_FAILBACK_CLIENT,+  RecoveryInstanceDataReplicationInitiationStepName_ESTABLISH_AGENT_REPLICATOR_SOFTWARE_COMMUNICATION,+  RecoveryInstanceDataReplicationInitiationStepName_ESTABLISH_RECOVERY_INSTANCE_COMMUNICATION,+  RecoveryInstanceDataReplicationInitiationStepName_LAUNCH_REPLICATION_SERVER,+  RecoveryInstanceDataReplicationInitiationStepName_LINK_FAILBACK_CLIENT_WITH_RECOVERY_INSTANCE,+  RecoveryInstanceDataReplicationInitiationStepName_PAIR_AGENT_WITH_REPLICATION_SOFTWARE,+  RecoveryInstanceDataReplicationInitiationStepName_PAIR_REPLICATION_SERVER_WITH_AGENT,+  RecoveryInstanceDataReplicationInitiationStepName_START_DATA_TRANSFER,+  RecoveryInstanceDataReplicationInitiationStepName_WAIT,+  RecoveryInstanceDataReplicationInitiationStepName'+  #-}
+ gen/Amazonka/DrS/Types/RecoveryInstanceDataReplicationInitiationStepStatus.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.DrS.Types.RecoveryInstanceDataReplicationInitiationStepStatus+-- 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.DrS.Types.RecoveryInstanceDataReplicationInitiationStepStatus+  ( RecoveryInstanceDataReplicationInitiationStepStatus+      ( ..,+        RecoveryInstanceDataReplicationInitiationStepStatus_FAILED,+        RecoveryInstanceDataReplicationInitiationStepStatus_IN_PROGRESS,+        RecoveryInstanceDataReplicationInitiationStepStatus_NOT_STARTED,+        RecoveryInstanceDataReplicationInitiationStepStatus_SKIPPED,+        RecoveryInstanceDataReplicationInitiationStepStatus_SUCCEEDED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RecoveryInstanceDataReplicationInitiationStepStatus = RecoveryInstanceDataReplicationInitiationStepStatus'+  { fromRecoveryInstanceDataReplicationInitiationStepStatus ::+      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 RecoveryInstanceDataReplicationInitiationStepStatus_FAILED :: RecoveryInstanceDataReplicationInitiationStepStatus+pattern RecoveryInstanceDataReplicationInitiationStepStatus_FAILED = RecoveryInstanceDataReplicationInitiationStepStatus' "FAILED"++pattern RecoveryInstanceDataReplicationInitiationStepStatus_IN_PROGRESS :: RecoveryInstanceDataReplicationInitiationStepStatus+pattern RecoveryInstanceDataReplicationInitiationStepStatus_IN_PROGRESS = RecoveryInstanceDataReplicationInitiationStepStatus' "IN_PROGRESS"++pattern RecoveryInstanceDataReplicationInitiationStepStatus_NOT_STARTED :: RecoveryInstanceDataReplicationInitiationStepStatus+pattern RecoveryInstanceDataReplicationInitiationStepStatus_NOT_STARTED = RecoveryInstanceDataReplicationInitiationStepStatus' "NOT_STARTED"++pattern RecoveryInstanceDataReplicationInitiationStepStatus_SKIPPED :: RecoveryInstanceDataReplicationInitiationStepStatus+pattern RecoveryInstanceDataReplicationInitiationStepStatus_SKIPPED = RecoveryInstanceDataReplicationInitiationStepStatus' "SKIPPED"++pattern RecoveryInstanceDataReplicationInitiationStepStatus_SUCCEEDED :: RecoveryInstanceDataReplicationInitiationStepStatus+pattern RecoveryInstanceDataReplicationInitiationStepStatus_SUCCEEDED = RecoveryInstanceDataReplicationInitiationStepStatus' "SUCCEEDED"++{-# COMPLETE+  RecoveryInstanceDataReplicationInitiationStepStatus_FAILED,+  RecoveryInstanceDataReplicationInitiationStepStatus_IN_PROGRESS,+  RecoveryInstanceDataReplicationInitiationStepStatus_NOT_STARTED,+  RecoveryInstanceDataReplicationInitiationStepStatus_SKIPPED,+  RecoveryInstanceDataReplicationInitiationStepStatus_SUCCEEDED,+  RecoveryInstanceDataReplicationInitiationStepStatus'+  #-}
+ gen/Amazonka/DrS/Types/RecoveryInstanceDataReplicationState.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.DrS.Types.RecoveryInstanceDataReplicationState+-- 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.DrS.Types.RecoveryInstanceDataReplicationState+  ( RecoveryInstanceDataReplicationState+      ( ..,+        RecoveryInstanceDataReplicationState_BACKLOG,+        RecoveryInstanceDataReplicationState_CONTINUOUS,+        RecoveryInstanceDataReplicationState_CREATING_SNAPSHOT,+        RecoveryInstanceDataReplicationState_DISCONNECTED,+        RecoveryInstanceDataReplicationState_INITIAL_SYNC,+        RecoveryInstanceDataReplicationState_INITIATING,+        RecoveryInstanceDataReplicationState_NOT_STARTED,+        RecoveryInstanceDataReplicationState_PAUSED,+        RecoveryInstanceDataReplicationState_REPLICATION_STATE_NOT_AVAILABLE,+        RecoveryInstanceDataReplicationState_RESCAN,+        RecoveryInstanceDataReplicationState_STALLED,+        RecoveryInstanceDataReplicationState_STOPPED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RecoveryInstanceDataReplicationState = RecoveryInstanceDataReplicationState'+  { fromRecoveryInstanceDataReplicationState ::+      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 RecoveryInstanceDataReplicationState_BACKLOG :: RecoveryInstanceDataReplicationState+pattern RecoveryInstanceDataReplicationState_BACKLOG = RecoveryInstanceDataReplicationState' "BACKLOG"++pattern RecoveryInstanceDataReplicationState_CONTINUOUS :: RecoveryInstanceDataReplicationState+pattern RecoveryInstanceDataReplicationState_CONTINUOUS = RecoveryInstanceDataReplicationState' "CONTINUOUS"++pattern RecoveryInstanceDataReplicationState_CREATING_SNAPSHOT :: RecoveryInstanceDataReplicationState+pattern RecoveryInstanceDataReplicationState_CREATING_SNAPSHOT = RecoveryInstanceDataReplicationState' "CREATING_SNAPSHOT"++pattern RecoveryInstanceDataReplicationState_DISCONNECTED :: RecoveryInstanceDataReplicationState+pattern RecoveryInstanceDataReplicationState_DISCONNECTED = RecoveryInstanceDataReplicationState' "DISCONNECTED"++pattern RecoveryInstanceDataReplicationState_INITIAL_SYNC :: RecoveryInstanceDataReplicationState+pattern RecoveryInstanceDataReplicationState_INITIAL_SYNC = RecoveryInstanceDataReplicationState' "INITIAL_SYNC"++pattern RecoveryInstanceDataReplicationState_INITIATING :: RecoveryInstanceDataReplicationState+pattern RecoveryInstanceDataReplicationState_INITIATING = RecoveryInstanceDataReplicationState' "INITIATING"++pattern RecoveryInstanceDataReplicationState_NOT_STARTED :: RecoveryInstanceDataReplicationState+pattern RecoveryInstanceDataReplicationState_NOT_STARTED = RecoveryInstanceDataReplicationState' "NOT_STARTED"++pattern RecoveryInstanceDataReplicationState_PAUSED :: RecoveryInstanceDataReplicationState+pattern RecoveryInstanceDataReplicationState_PAUSED = RecoveryInstanceDataReplicationState' "PAUSED"++pattern RecoveryInstanceDataReplicationState_REPLICATION_STATE_NOT_AVAILABLE :: RecoveryInstanceDataReplicationState+pattern RecoveryInstanceDataReplicationState_REPLICATION_STATE_NOT_AVAILABLE = RecoveryInstanceDataReplicationState' "REPLICATION_STATE_NOT_AVAILABLE"++pattern RecoveryInstanceDataReplicationState_RESCAN :: RecoveryInstanceDataReplicationState+pattern RecoveryInstanceDataReplicationState_RESCAN = RecoveryInstanceDataReplicationState' "RESCAN"++pattern RecoveryInstanceDataReplicationState_STALLED :: RecoveryInstanceDataReplicationState+pattern RecoveryInstanceDataReplicationState_STALLED = RecoveryInstanceDataReplicationState' "STALLED"++pattern RecoveryInstanceDataReplicationState_STOPPED :: RecoveryInstanceDataReplicationState+pattern RecoveryInstanceDataReplicationState_STOPPED = RecoveryInstanceDataReplicationState' "STOPPED"++{-# COMPLETE+  RecoveryInstanceDataReplicationState_BACKLOG,+  RecoveryInstanceDataReplicationState_CONTINUOUS,+  RecoveryInstanceDataReplicationState_CREATING_SNAPSHOT,+  RecoveryInstanceDataReplicationState_DISCONNECTED,+  RecoveryInstanceDataReplicationState_INITIAL_SYNC,+  RecoveryInstanceDataReplicationState_INITIATING,+  RecoveryInstanceDataReplicationState_NOT_STARTED,+  RecoveryInstanceDataReplicationState_PAUSED,+  RecoveryInstanceDataReplicationState_REPLICATION_STATE_NOT_AVAILABLE,+  RecoveryInstanceDataReplicationState_RESCAN,+  RecoveryInstanceDataReplicationState_STALLED,+  RecoveryInstanceDataReplicationState_STOPPED,+  RecoveryInstanceDataReplicationState'+  #-}
+ gen/Amazonka/DrS/Types/RecoveryInstanceDisk.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.DrS.Types.RecoveryInstanceDisk+-- 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.DrS.Types.RecoveryInstanceDisk 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 block storage device on the Recovery Instance.+--+-- /See:/ 'newRecoveryInstanceDisk' smart constructor.+data RecoveryInstanceDisk = RecoveryInstanceDisk'+  { -- | The amount of storage on the disk in bytes.+    bytes :: Prelude.Maybe Prelude.Natural,+    -- | The EBS Volume ID of this disk.+    ebsVolumeID :: Prelude.Maybe Prelude.Text,+    -- | The internal device name of this disk. This is the name that is visible+    -- on the machine itself and not from the EC2 console.+    internalDeviceName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecoveryInstanceDisk' 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:+--+-- 'bytes', 'recoveryInstanceDisk_bytes' - The amount of storage on the disk in bytes.+--+-- 'ebsVolumeID', 'recoveryInstanceDisk_ebsVolumeID' - The EBS Volume ID of this disk.+--+-- 'internalDeviceName', 'recoveryInstanceDisk_internalDeviceName' - The internal device name of this disk. This is the name that is visible+-- on the machine itself and not from the EC2 console.+newRecoveryInstanceDisk ::+  RecoveryInstanceDisk+newRecoveryInstanceDisk =+  RecoveryInstanceDisk'+    { bytes = Prelude.Nothing,+      ebsVolumeID = Prelude.Nothing,+      internalDeviceName = Prelude.Nothing+    }++-- | The amount of storage on the disk in bytes.+recoveryInstanceDisk_bytes :: Lens.Lens' RecoveryInstanceDisk (Prelude.Maybe Prelude.Natural)+recoveryInstanceDisk_bytes = Lens.lens (\RecoveryInstanceDisk' {bytes} -> bytes) (\s@RecoveryInstanceDisk' {} a -> s {bytes = a} :: RecoveryInstanceDisk)++-- | The EBS Volume ID of this disk.+recoveryInstanceDisk_ebsVolumeID :: Lens.Lens' RecoveryInstanceDisk (Prelude.Maybe Prelude.Text)+recoveryInstanceDisk_ebsVolumeID = Lens.lens (\RecoveryInstanceDisk' {ebsVolumeID} -> ebsVolumeID) (\s@RecoveryInstanceDisk' {} a -> s {ebsVolumeID = a} :: RecoveryInstanceDisk)++-- | The internal device name of this disk. This is the name that is visible+-- on the machine itself and not from the EC2 console.+recoveryInstanceDisk_internalDeviceName :: Lens.Lens' RecoveryInstanceDisk (Prelude.Maybe Prelude.Text)+recoveryInstanceDisk_internalDeviceName = Lens.lens (\RecoveryInstanceDisk' {internalDeviceName} -> internalDeviceName) (\s@RecoveryInstanceDisk' {} a -> s {internalDeviceName = a} :: RecoveryInstanceDisk)++instance Data.FromJSON RecoveryInstanceDisk where+  parseJSON =+    Data.withObject+      "RecoveryInstanceDisk"+      ( \x ->+          RecoveryInstanceDisk'+            Prelude.<$> (x Data..:? "bytes")+            Prelude.<*> (x Data..:? "ebsVolumeID")+            Prelude.<*> (x Data..:? "internalDeviceName")+      )++instance Prelude.Hashable RecoveryInstanceDisk where+  hashWithSalt _salt RecoveryInstanceDisk' {..} =+    _salt+      `Prelude.hashWithSalt` bytes+      `Prelude.hashWithSalt` ebsVolumeID+      `Prelude.hashWithSalt` internalDeviceName++instance Prelude.NFData RecoveryInstanceDisk where+  rnf RecoveryInstanceDisk' {..} =+    Prelude.rnf bytes+      `Prelude.seq` Prelude.rnf ebsVolumeID+      `Prelude.seq` Prelude.rnf internalDeviceName
+ gen/Amazonka/DrS/Types/RecoveryInstanceFailback.hs view
@@ -0,0 +1,202 @@+{-# 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.DrS.Types.RecoveryInstanceFailback+-- 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.DrS.Types.RecoveryInstanceFailback where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.FailbackLaunchType+import Amazonka.DrS.Types.FailbackState+import qualified Amazonka.Prelude as Prelude++-- | An object representing failback related information of the Recovery+-- Instance.+--+-- /See:/ 'newRecoveryInstanceFailback' smart constructor.+data RecoveryInstanceFailback = RecoveryInstanceFailback'+  { -- | The date and time the agent on the Recovery Instance was last seen by+    -- the service.+    agentLastSeenByServiceDateTime :: Prelude.Maybe Prelude.Text,+    -- | The amount of time that the Recovery Instance has been replicating for.+    elapsedReplicationDuration :: Prelude.Maybe Prelude.Text,+    -- | The ID of the failback client that this Recovery Instance is associated+    -- with.+    failbackClientID :: Prelude.Maybe Prelude.Text,+    -- | The date and time that the failback client was last seen by the service.+    failbackClientLastSeenByServiceDateTime :: Prelude.Maybe Prelude.Text,+    -- | The date and time that the failback initiation started.+    failbackInitiationTime :: Prelude.Maybe Prelude.Text,+    -- | The Job ID of the last failback log for this Recovery Instance.+    failbackJobID :: Prelude.Maybe Prelude.Text,+    -- | The launch type (Recovery \/ Drill) of the last launch for the failback+    -- replication of this recovery instance.+    failbackLaunchType :: Prelude.Maybe FailbackLaunchType,+    -- | Whether we are failing back to the original Source Server for this+    -- Recovery Instance.+    failbackToOriginalServer :: Prelude.Maybe Prelude.Bool,+    -- | The date and time of the first byte that was replicated from the+    -- Recovery Instance.+    firstByteDateTime :: Prelude.Maybe Prelude.Text,+    -- | The state of the failback process that this Recovery Instance is in.+    state :: Prelude.Maybe FailbackState+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecoveryInstanceFailback' 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:+--+-- 'agentLastSeenByServiceDateTime', 'recoveryInstanceFailback_agentLastSeenByServiceDateTime' - The date and time the agent on the Recovery Instance was last seen by+-- the service.+--+-- 'elapsedReplicationDuration', 'recoveryInstanceFailback_elapsedReplicationDuration' - The amount of time that the Recovery Instance has been replicating for.+--+-- 'failbackClientID', 'recoveryInstanceFailback_failbackClientID' - The ID of the failback client that this Recovery Instance is associated+-- with.+--+-- 'failbackClientLastSeenByServiceDateTime', 'recoveryInstanceFailback_failbackClientLastSeenByServiceDateTime' - The date and time that the failback client was last seen by the service.+--+-- 'failbackInitiationTime', 'recoveryInstanceFailback_failbackInitiationTime' - The date and time that the failback initiation started.+--+-- 'failbackJobID', 'recoveryInstanceFailback_failbackJobID' - The Job ID of the last failback log for this Recovery Instance.+--+-- 'failbackLaunchType', 'recoveryInstanceFailback_failbackLaunchType' - The launch type (Recovery \/ Drill) of the last launch for the failback+-- replication of this recovery instance.+--+-- 'failbackToOriginalServer', 'recoveryInstanceFailback_failbackToOriginalServer' - Whether we are failing back to the original Source Server for this+-- Recovery Instance.+--+-- 'firstByteDateTime', 'recoveryInstanceFailback_firstByteDateTime' - The date and time of the first byte that was replicated from the+-- Recovery Instance.+--+-- 'state', 'recoveryInstanceFailback_state' - The state of the failback process that this Recovery Instance is in.+newRecoveryInstanceFailback ::+  RecoveryInstanceFailback+newRecoveryInstanceFailback =+  RecoveryInstanceFailback'+    { agentLastSeenByServiceDateTime =+        Prelude.Nothing,+      elapsedReplicationDuration = Prelude.Nothing,+      failbackClientID = Prelude.Nothing,+      failbackClientLastSeenByServiceDateTime =+        Prelude.Nothing,+      failbackInitiationTime = Prelude.Nothing,+      failbackJobID = Prelude.Nothing,+      failbackLaunchType = Prelude.Nothing,+      failbackToOriginalServer = Prelude.Nothing,+      firstByteDateTime = Prelude.Nothing,+      state = Prelude.Nothing+    }++-- | The date and time the agent on the Recovery Instance was last seen by+-- the service.+recoveryInstanceFailback_agentLastSeenByServiceDateTime :: Lens.Lens' RecoveryInstanceFailback (Prelude.Maybe Prelude.Text)+recoveryInstanceFailback_agentLastSeenByServiceDateTime = Lens.lens (\RecoveryInstanceFailback' {agentLastSeenByServiceDateTime} -> agentLastSeenByServiceDateTime) (\s@RecoveryInstanceFailback' {} a -> s {agentLastSeenByServiceDateTime = a} :: RecoveryInstanceFailback)++-- | The amount of time that the Recovery Instance has been replicating for.+recoveryInstanceFailback_elapsedReplicationDuration :: Lens.Lens' RecoveryInstanceFailback (Prelude.Maybe Prelude.Text)+recoveryInstanceFailback_elapsedReplicationDuration = Lens.lens (\RecoveryInstanceFailback' {elapsedReplicationDuration} -> elapsedReplicationDuration) (\s@RecoveryInstanceFailback' {} a -> s {elapsedReplicationDuration = a} :: RecoveryInstanceFailback)++-- | The ID of the failback client that this Recovery Instance is associated+-- with.+recoveryInstanceFailback_failbackClientID :: Lens.Lens' RecoveryInstanceFailback (Prelude.Maybe Prelude.Text)+recoveryInstanceFailback_failbackClientID = Lens.lens (\RecoveryInstanceFailback' {failbackClientID} -> failbackClientID) (\s@RecoveryInstanceFailback' {} a -> s {failbackClientID = a} :: RecoveryInstanceFailback)++-- | The date and time that the failback client was last seen by the service.+recoveryInstanceFailback_failbackClientLastSeenByServiceDateTime :: Lens.Lens' RecoveryInstanceFailback (Prelude.Maybe Prelude.Text)+recoveryInstanceFailback_failbackClientLastSeenByServiceDateTime = Lens.lens (\RecoveryInstanceFailback' {failbackClientLastSeenByServiceDateTime} -> failbackClientLastSeenByServiceDateTime) (\s@RecoveryInstanceFailback' {} a -> s {failbackClientLastSeenByServiceDateTime = a} :: RecoveryInstanceFailback)++-- | The date and time that the failback initiation started.+recoveryInstanceFailback_failbackInitiationTime :: Lens.Lens' RecoveryInstanceFailback (Prelude.Maybe Prelude.Text)+recoveryInstanceFailback_failbackInitiationTime = Lens.lens (\RecoveryInstanceFailback' {failbackInitiationTime} -> failbackInitiationTime) (\s@RecoveryInstanceFailback' {} a -> s {failbackInitiationTime = a} :: RecoveryInstanceFailback)++-- | The Job ID of the last failback log for this Recovery Instance.+recoveryInstanceFailback_failbackJobID :: Lens.Lens' RecoveryInstanceFailback (Prelude.Maybe Prelude.Text)+recoveryInstanceFailback_failbackJobID = Lens.lens (\RecoveryInstanceFailback' {failbackJobID} -> failbackJobID) (\s@RecoveryInstanceFailback' {} a -> s {failbackJobID = a} :: RecoveryInstanceFailback)++-- | The launch type (Recovery \/ Drill) of the last launch for the failback+-- replication of this recovery instance.+recoveryInstanceFailback_failbackLaunchType :: Lens.Lens' RecoveryInstanceFailback (Prelude.Maybe FailbackLaunchType)+recoveryInstanceFailback_failbackLaunchType = Lens.lens (\RecoveryInstanceFailback' {failbackLaunchType} -> failbackLaunchType) (\s@RecoveryInstanceFailback' {} a -> s {failbackLaunchType = a} :: RecoveryInstanceFailback)++-- | Whether we are failing back to the original Source Server for this+-- Recovery Instance.+recoveryInstanceFailback_failbackToOriginalServer :: Lens.Lens' RecoveryInstanceFailback (Prelude.Maybe Prelude.Bool)+recoveryInstanceFailback_failbackToOriginalServer = Lens.lens (\RecoveryInstanceFailback' {failbackToOriginalServer} -> failbackToOriginalServer) (\s@RecoveryInstanceFailback' {} a -> s {failbackToOriginalServer = a} :: RecoveryInstanceFailback)++-- | The date and time of the first byte that was replicated from the+-- Recovery Instance.+recoveryInstanceFailback_firstByteDateTime :: Lens.Lens' RecoveryInstanceFailback (Prelude.Maybe Prelude.Text)+recoveryInstanceFailback_firstByteDateTime = Lens.lens (\RecoveryInstanceFailback' {firstByteDateTime} -> firstByteDateTime) (\s@RecoveryInstanceFailback' {} a -> s {firstByteDateTime = a} :: RecoveryInstanceFailback)++-- | The state of the failback process that this Recovery Instance is in.+recoveryInstanceFailback_state :: Lens.Lens' RecoveryInstanceFailback (Prelude.Maybe FailbackState)+recoveryInstanceFailback_state = Lens.lens (\RecoveryInstanceFailback' {state} -> state) (\s@RecoveryInstanceFailback' {} a -> s {state = a} :: RecoveryInstanceFailback)++instance Data.FromJSON RecoveryInstanceFailback where+  parseJSON =+    Data.withObject+      "RecoveryInstanceFailback"+      ( \x ->+          RecoveryInstanceFailback'+            Prelude.<$> (x Data..:? "agentLastSeenByServiceDateTime")+            Prelude.<*> (x Data..:? "elapsedReplicationDuration")+            Prelude.<*> (x Data..:? "failbackClientID")+            Prelude.<*> ( x+                            Data..:? "failbackClientLastSeenByServiceDateTime"+                        )+            Prelude.<*> (x Data..:? "failbackInitiationTime")+            Prelude.<*> (x Data..:? "failbackJobID")+            Prelude.<*> (x Data..:? "failbackLaunchType")+            Prelude.<*> (x Data..:? "failbackToOriginalServer")+            Prelude.<*> (x Data..:? "firstByteDateTime")+            Prelude.<*> (x Data..:? "state")+      )++instance Prelude.Hashable RecoveryInstanceFailback where+  hashWithSalt _salt RecoveryInstanceFailback' {..} =+    _salt+      `Prelude.hashWithSalt` agentLastSeenByServiceDateTime+      `Prelude.hashWithSalt` elapsedReplicationDuration+      `Prelude.hashWithSalt` failbackClientID+      `Prelude.hashWithSalt` failbackClientLastSeenByServiceDateTime+      `Prelude.hashWithSalt` failbackInitiationTime+      `Prelude.hashWithSalt` failbackJobID+      `Prelude.hashWithSalt` failbackLaunchType+      `Prelude.hashWithSalt` failbackToOriginalServer+      `Prelude.hashWithSalt` firstByteDateTime+      `Prelude.hashWithSalt` state++instance Prelude.NFData RecoveryInstanceFailback where+  rnf RecoveryInstanceFailback' {..} =+    Prelude.rnf agentLastSeenByServiceDateTime+      `Prelude.seq` Prelude.rnf elapsedReplicationDuration+      `Prelude.seq` Prelude.rnf failbackClientID+      `Prelude.seq` Prelude.rnf failbackClientLastSeenByServiceDateTime+      `Prelude.seq` Prelude.rnf failbackInitiationTime+      `Prelude.seq` Prelude.rnf failbackJobID+      `Prelude.seq` Prelude.rnf failbackLaunchType+      `Prelude.seq` Prelude.rnf failbackToOriginalServer+      `Prelude.seq` Prelude.rnf firstByteDateTime+      `Prelude.seq` Prelude.rnf state
+ gen/Amazonka/DrS/Types/RecoveryInstanceProperties.hs view
@@ -0,0 +1,152 @@+{-# 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.DrS.Types.RecoveryInstanceProperties+-- 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.DrS.Types.RecoveryInstanceProperties where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.CPU+import Amazonka.DrS.Types.IdentificationHints+import Amazonka.DrS.Types.NetworkInterface+import Amazonka.DrS.Types.OS+import Amazonka.DrS.Types.RecoveryInstanceDisk+import qualified Amazonka.Prelude as Prelude++-- | Properties of the Recovery Instance machine.+--+-- /See:/ 'newRecoveryInstanceProperties' smart constructor.+data RecoveryInstanceProperties = RecoveryInstanceProperties'+  { -- | An array of CPUs.+    cpus :: Prelude.Maybe [CPU],+    -- | An array of disks.+    disks :: Prelude.Maybe [RecoveryInstanceDisk],+    -- | Hints used to uniquely identify a machine.+    identificationHints :: Prelude.Maybe IdentificationHints,+    -- | The date and time the Recovery Instance properties were last updated on.+    lastUpdatedDateTime :: Prelude.Maybe Prelude.Text,+    -- | An array of network interfaces.+    networkInterfaces :: Prelude.Maybe [NetworkInterface],+    -- | Operating system.+    os :: Prelude.Maybe OS,+    -- | The amount of RAM in bytes.+    ramBytes :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecoveryInstanceProperties' 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:+--+-- 'cpus', 'recoveryInstanceProperties_cpus' - An array of CPUs.+--+-- 'disks', 'recoveryInstanceProperties_disks' - An array of disks.+--+-- 'identificationHints', 'recoveryInstanceProperties_identificationHints' - Hints used to uniquely identify a machine.+--+-- 'lastUpdatedDateTime', 'recoveryInstanceProperties_lastUpdatedDateTime' - The date and time the Recovery Instance properties were last updated on.+--+-- 'networkInterfaces', 'recoveryInstanceProperties_networkInterfaces' - An array of network interfaces.+--+-- 'os', 'recoveryInstanceProperties_os' - Operating system.+--+-- 'ramBytes', 'recoveryInstanceProperties_ramBytes' - The amount of RAM in bytes.+newRecoveryInstanceProperties ::+  RecoveryInstanceProperties+newRecoveryInstanceProperties =+  RecoveryInstanceProperties'+    { cpus = Prelude.Nothing,+      disks = Prelude.Nothing,+      identificationHints = Prelude.Nothing,+      lastUpdatedDateTime = Prelude.Nothing,+      networkInterfaces = Prelude.Nothing,+      os = Prelude.Nothing,+      ramBytes = Prelude.Nothing+    }++-- | An array of CPUs.+recoveryInstanceProperties_cpus :: Lens.Lens' RecoveryInstanceProperties (Prelude.Maybe [CPU])+recoveryInstanceProperties_cpus = Lens.lens (\RecoveryInstanceProperties' {cpus} -> cpus) (\s@RecoveryInstanceProperties' {} a -> s {cpus = a} :: RecoveryInstanceProperties) Prelude.. Lens.mapping Lens.coerced++-- | An array of disks.+recoveryInstanceProperties_disks :: Lens.Lens' RecoveryInstanceProperties (Prelude.Maybe [RecoveryInstanceDisk])+recoveryInstanceProperties_disks = Lens.lens (\RecoveryInstanceProperties' {disks} -> disks) (\s@RecoveryInstanceProperties' {} a -> s {disks = a} :: RecoveryInstanceProperties) Prelude.. Lens.mapping Lens.coerced++-- | Hints used to uniquely identify a machine.+recoveryInstanceProperties_identificationHints :: Lens.Lens' RecoveryInstanceProperties (Prelude.Maybe IdentificationHints)+recoveryInstanceProperties_identificationHints = Lens.lens (\RecoveryInstanceProperties' {identificationHints} -> identificationHints) (\s@RecoveryInstanceProperties' {} a -> s {identificationHints = a} :: RecoveryInstanceProperties)++-- | The date and time the Recovery Instance properties were last updated on.+recoveryInstanceProperties_lastUpdatedDateTime :: Lens.Lens' RecoveryInstanceProperties (Prelude.Maybe Prelude.Text)+recoveryInstanceProperties_lastUpdatedDateTime = Lens.lens (\RecoveryInstanceProperties' {lastUpdatedDateTime} -> lastUpdatedDateTime) (\s@RecoveryInstanceProperties' {} a -> s {lastUpdatedDateTime = a} :: RecoveryInstanceProperties)++-- | An array of network interfaces.+recoveryInstanceProperties_networkInterfaces :: Lens.Lens' RecoveryInstanceProperties (Prelude.Maybe [NetworkInterface])+recoveryInstanceProperties_networkInterfaces = Lens.lens (\RecoveryInstanceProperties' {networkInterfaces} -> networkInterfaces) (\s@RecoveryInstanceProperties' {} a -> s {networkInterfaces = a} :: RecoveryInstanceProperties) Prelude.. Lens.mapping Lens.coerced++-- | Operating system.+recoveryInstanceProperties_os :: Lens.Lens' RecoveryInstanceProperties (Prelude.Maybe OS)+recoveryInstanceProperties_os = Lens.lens (\RecoveryInstanceProperties' {os} -> os) (\s@RecoveryInstanceProperties' {} a -> s {os = a} :: RecoveryInstanceProperties)++-- | The amount of RAM in bytes.+recoveryInstanceProperties_ramBytes :: Lens.Lens' RecoveryInstanceProperties (Prelude.Maybe Prelude.Natural)+recoveryInstanceProperties_ramBytes = Lens.lens (\RecoveryInstanceProperties' {ramBytes} -> ramBytes) (\s@RecoveryInstanceProperties' {} a -> s {ramBytes = a} :: RecoveryInstanceProperties)++instance Data.FromJSON RecoveryInstanceProperties where+  parseJSON =+    Data.withObject+      "RecoveryInstanceProperties"+      ( \x ->+          RecoveryInstanceProperties'+            Prelude.<$> (x Data..:? "cpus" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "disks" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "identificationHints")+            Prelude.<*> (x Data..:? "lastUpdatedDateTime")+            Prelude.<*> ( x+                            Data..:? "networkInterfaces"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "os")+            Prelude.<*> (x Data..:? "ramBytes")+      )++instance Prelude.Hashable RecoveryInstanceProperties where+  hashWithSalt _salt RecoveryInstanceProperties' {..} =+    _salt+      `Prelude.hashWithSalt` cpus+      `Prelude.hashWithSalt` disks+      `Prelude.hashWithSalt` identificationHints+      `Prelude.hashWithSalt` lastUpdatedDateTime+      `Prelude.hashWithSalt` networkInterfaces+      `Prelude.hashWithSalt` os+      `Prelude.hashWithSalt` ramBytes++instance Prelude.NFData RecoveryInstanceProperties where+  rnf RecoveryInstanceProperties' {..} =+    Prelude.rnf cpus+      `Prelude.seq` Prelude.rnf disks+      `Prelude.seq` Prelude.rnf identificationHints+      `Prelude.seq` Prelude.rnf lastUpdatedDateTime+      `Prelude.seq` Prelude.rnf networkInterfaces+      `Prelude.seq` Prelude.rnf os+      `Prelude.seq` Prelude.rnf ramBytes
+ gen/Amazonka/DrS/Types/RecoverySnapshot.hs view
@@ -0,0 +1,129 @@+{-# 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.DrS.Types.RecoverySnapshot+-- 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.DrS.Types.RecoverySnapshot 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++-- | A snapshot of a Source Server used during recovery.+--+-- /See:/ 'newRecoverySnapshot' smart constructor.+data RecoverySnapshot = RecoverySnapshot'+  { -- | A list of EBS snapshots.+    ebsSnapshots :: Prelude.Maybe [Prelude.Text],+    -- | The actual timestamp that the snapshot was taken.+    timestamp :: Prelude.Maybe Prelude.Text,+    -- | The timestamp of when we expect the snapshot to be taken.+    expectedTimestamp :: Prelude.Text,+    -- | The ID of the Recovery Snapshot.+    snapshotID :: Prelude.Text,+    -- | The ID of the Source Server that the snapshot was taken for.+    sourceServerID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecoverySnapshot' 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:+--+-- 'ebsSnapshots', 'recoverySnapshot_ebsSnapshots' - A list of EBS snapshots.+--+-- 'timestamp', 'recoverySnapshot_timestamp' - The actual timestamp that the snapshot was taken.+--+-- 'expectedTimestamp', 'recoverySnapshot_expectedTimestamp' - The timestamp of when we expect the snapshot to be taken.+--+-- 'snapshotID', 'recoverySnapshot_snapshotID' - The ID of the Recovery Snapshot.+--+-- 'sourceServerID', 'recoverySnapshot_sourceServerID' - The ID of the Source Server that the snapshot was taken for.+newRecoverySnapshot ::+  -- | 'expectedTimestamp'+  Prelude.Text ->+  -- | 'snapshotID'+  Prelude.Text ->+  -- | 'sourceServerID'+  Prelude.Text ->+  RecoverySnapshot+newRecoverySnapshot+  pExpectedTimestamp_+  pSnapshotID_+  pSourceServerID_ =+    RecoverySnapshot'+      { ebsSnapshots = Prelude.Nothing,+        timestamp = Prelude.Nothing,+        expectedTimestamp = pExpectedTimestamp_,+        snapshotID = pSnapshotID_,+        sourceServerID = pSourceServerID_+      }++-- | A list of EBS snapshots.+recoverySnapshot_ebsSnapshots :: Lens.Lens' RecoverySnapshot (Prelude.Maybe [Prelude.Text])+recoverySnapshot_ebsSnapshots = Lens.lens (\RecoverySnapshot' {ebsSnapshots} -> ebsSnapshots) (\s@RecoverySnapshot' {} a -> s {ebsSnapshots = a} :: RecoverySnapshot) Prelude.. Lens.mapping Lens.coerced++-- | The actual timestamp that the snapshot was taken.+recoverySnapshot_timestamp :: Lens.Lens' RecoverySnapshot (Prelude.Maybe Prelude.Text)+recoverySnapshot_timestamp = Lens.lens (\RecoverySnapshot' {timestamp} -> timestamp) (\s@RecoverySnapshot' {} a -> s {timestamp = a} :: RecoverySnapshot)++-- | The timestamp of when we expect the snapshot to be taken.+recoverySnapshot_expectedTimestamp :: Lens.Lens' RecoverySnapshot Prelude.Text+recoverySnapshot_expectedTimestamp = Lens.lens (\RecoverySnapshot' {expectedTimestamp} -> expectedTimestamp) (\s@RecoverySnapshot' {} a -> s {expectedTimestamp = a} :: RecoverySnapshot)++-- | The ID of the Recovery Snapshot.+recoverySnapshot_snapshotID :: Lens.Lens' RecoverySnapshot Prelude.Text+recoverySnapshot_snapshotID = Lens.lens (\RecoverySnapshot' {snapshotID} -> snapshotID) (\s@RecoverySnapshot' {} a -> s {snapshotID = a} :: RecoverySnapshot)++-- | The ID of the Source Server that the snapshot was taken for.+recoverySnapshot_sourceServerID :: Lens.Lens' RecoverySnapshot Prelude.Text+recoverySnapshot_sourceServerID = Lens.lens (\RecoverySnapshot' {sourceServerID} -> sourceServerID) (\s@RecoverySnapshot' {} a -> s {sourceServerID = a} :: RecoverySnapshot)++instance Data.FromJSON RecoverySnapshot where+  parseJSON =+    Data.withObject+      "RecoverySnapshot"+      ( \x ->+          RecoverySnapshot'+            Prelude.<$> (x Data..:? "ebsSnapshots" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "timestamp")+            Prelude.<*> (x Data..: "expectedTimestamp")+            Prelude.<*> (x Data..: "snapshotID")+            Prelude.<*> (x Data..: "sourceServerID")+      )++instance Prelude.Hashable RecoverySnapshot where+  hashWithSalt _salt RecoverySnapshot' {..} =+    _salt+      `Prelude.hashWithSalt` ebsSnapshots+      `Prelude.hashWithSalt` timestamp+      `Prelude.hashWithSalt` expectedTimestamp+      `Prelude.hashWithSalt` snapshotID+      `Prelude.hashWithSalt` sourceServerID++instance Prelude.NFData RecoverySnapshot where+  rnf RecoverySnapshot' {..} =+    Prelude.rnf ebsSnapshots+      `Prelude.seq` Prelude.rnf timestamp+      `Prelude.seq` Prelude.rnf expectedTimestamp+      `Prelude.seq` Prelude.rnf snapshotID+      `Prelude.seq` Prelude.rnf sourceServerID
+ gen/Amazonka/DrS/Types/RecoverySnapshotsOrder.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.DrS.Types.RecoverySnapshotsOrder+-- 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.DrS.Types.RecoverySnapshotsOrder+  ( RecoverySnapshotsOrder+      ( ..,+        RecoverySnapshotsOrder_ASC,+        RecoverySnapshotsOrder_DESC+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RecoverySnapshotsOrder = RecoverySnapshotsOrder'+  { fromRecoverySnapshotsOrder ::+      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 RecoverySnapshotsOrder_ASC :: RecoverySnapshotsOrder+pattern RecoverySnapshotsOrder_ASC = RecoverySnapshotsOrder' "ASC"++pattern RecoverySnapshotsOrder_DESC :: RecoverySnapshotsOrder+pattern RecoverySnapshotsOrder_DESC = RecoverySnapshotsOrder' "DESC"++{-# COMPLETE+  RecoverySnapshotsOrder_ASC,+  RecoverySnapshotsOrder_DESC,+  RecoverySnapshotsOrder'+  #-}
+ gen/Amazonka/DrS/Types/ReplicationConfiguration.hs view
@@ -0,0 +1,286 @@+{-# 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.DrS.Types.ReplicationConfiguration+-- 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.DrS.Types.ReplicationConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.PITPolicyRule+import Amazonka.DrS.Types.ReplicationConfigurationDataPlaneRouting+import Amazonka.DrS.Types.ReplicationConfigurationDefaultLargeStagingDiskType+import Amazonka.DrS.Types.ReplicationConfigurationEbsEncryption+import Amazonka.DrS.Types.ReplicationConfigurationReplicatedDisk+import qualified Amazonka.Prelude as Prelude++-- | /See:/ 'newReplicationConfiguration' smart constructor.+data ReplicationConfiguration = ReplicationConfiguration'+  { -- | Whether to associate the default Elastic Disaster Recovery Security+    -- group with the Replication Configuration.+    associateDefaultSecurityGroup :: Prelude.Maybe Prelude.Bool,+    -- | Configure bandwidth throttling for the outbound data transfer rate of+    -- the Source Server in Mbps.+    bandwidthThrottling :: Prelude.Maybe Prelude.Natural,+    -- | Whether to create a Public IP for the Recovery Instance by default.+    createPublicIP :: Prelude.Maybe Prelude.Bool,+    -- | The data plane routing mechanism that will be used for replication.+    dataPlaneRouting :: Prelude.Maybe ReplicationConfigurationDataPlaneRouting,+    -- | The Staging Disk EBS volume type to be used during replication.+    defaultLargeStagingDiskType :: Prelude.Maybe ReplicationConfigurationDefaultLargeStagingDiskType,+    -- | The type of EBS encryption to be used during replication.+    ebsEncryption :: Prelude.Maybe ReplicationConfigurationEbsEncryption,+    -- | The ARN of the EBS encryption key to be used during replication.+    ebsEncryptionKeyArn :: Prelude.Maybe Prelude.Text,+    -- | The name of the Replication Configuration.+    name :: Prelude.Maybe Prelude.Text,+    -- | The Point in time (PIT) policy to manage snapshots taken during+    -- replication.+    pitPolicy :: Prelude.Maybe (Prelude.NonEmpty PITPolicyRule),+    -- | The configuration of the disks of the Source Server to be replicated.+    replicatedDisks :: Prelude.Maybe [ReplicationConfigurationReplicatedDisk],+    -- | The instance type to be used for the replication server.+    replicationServerInstanceType :: Prelude.Maybe Prelude.Text,+    -- | The security group IDs that will be used by the replication server.+    replicationServersSecurityGroupsIDs :: Prelude.Maybe [Prelude.Text],+    -- | The ID of the Source Server for this Replication Configuration.+    sourceServerID :: Prelude.Maybe Prelude.Text,+    -- | The subnet to be used by the replication staging area.+    stagingAreaSubnetId :: Prelude.Maybe Prelude.Text,+    -- | A set of tags to be associated with all resources created in the+    -- replication staging area: EC2 replication server, EBS volumes, EBS+    -- snapshots, etc.+    stagingAreaTags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | Whether to use a dedicated Replication Server in the replication staging+    -- area.+    useDedicatedReplicationServer :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReplicationConfiguration' 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:+--+-- 'associateDefaultSecurityGroup', 'replicationConfiguration_associateDefaultSecurityGroup' - Whether to associate the default Elastic Disaster Recovery Security+-- group with the Replication Configuration.+--+-- 'bandwidthThrottling', 'replicationConfiguration_bandwidthThrottling' - Configure bandwidth throttling for the outbound data transfer rate of+-- the Source Server in Mbps.+--+-- 'createPublicIP', 'replicationConfiguration_createPublicIP' - Whether to create a Public IP for the Recovery Instance by default.+--+-- 'dataPlaneRouting', 'replicationConfiguration_dataPlaneRouting' - The data plane routing mechanism that will be used for replication.+--+-- 'defaultLargeStagingDiskType', 'replicationConfiguration_defaultLargeStagingDiskType' - The Staging Disk EBS volume type to be used during replication.+--+-- 'ebsEncryption', 'replicationConfiguration_ebsEncryption' - The type of EBS encryption to be used during replication.+--+-- 'ebsEncryptionKeyArn', 'replicationConfiguration_ebsEncryptionKeyArn' - The ARN of the EBS encryption key to be used during replication.+--+-- 'name', 'replicationConfiguration_name' - The name of the Replication Configuration.+--+-- 'pitPolicy', 'replicationConfiguration_pitPolicy' - The Point in time (PIT) policy to manage snapshots taken during+-- replication.+--+-- 'replicatedDisks', 'replicationConfiguration_replicatedDisks' - The configuration of the disks of the Source Server to be replicated.+--+-- 'replicationServerInstanceType', 'replicationConfiguration_replicationServerInstanceType' - The instance type to be used for the replication server.+--+-- 'replicationServersSecurityGroupsIDs', 'replicationConfiguration_replicationServersSecurityGroupsIDs' - The security group IDs that will be used by the replication server.+--+-- 'sourceServerID', 'replicationConfiguration_sourceServerID' - The ID of the Source Server for this Replication Configuration.+--+-- 'stagingAreaSubnetId', 'replicationConfiguration_stagingAreaSubnetId' - The subnet to be used by the replication staging area.+--+-- 'stagingAreaTags', 'replicationConfiguration_stagingAreaTags' - A set of tags to be associated with all resources created in the+-- replication staging area: EC2 replication server, EBS volumes, EBS+-- snapshots, etc.+--+-- 'useDedicatedReplicationServer', 'replicationConfiguration_useDedicatedReplicationServer' - Whether to use a dedicated Replication Server in the replication staging+-- area.+newReplicationConfiguration ::+  ReplicationConfiguration+newReplicationConfiguration =+  ReplicationConfiguration'+    { associateDefaultSecurityGroup =+        Prelude.Nothing,+      bandwidthThrottling = Prelude.Nothing,+      createPublicIP = Prelude.Nothing,+      dataPlaneRouting = Prelude.Nothing,+      defaultLargeStagingDiskType = Prelude.Nothing,+      ebsEncryption = Prelude.Nothing,+      ebsEncryptionKeyArn = Prelude.Nothing,+      name = Prelude.Nothing,+      pitPolicy = Prelude.Nothing,+      replicatedDisks = Prelude.Nothing,+      replicationServerInstanceType = Prelude.Nothing,+      replicationServersSecurityGroupsIDs =+        Prelude.Nothing,+      sourceServerID = Prelude.Nothing,+      stagingAreaSubnetId = Prelude.Nothing,+      stagingAreaTags = Prelude.Nothing,+      useDedicatedReplicationServer = Prelude.Nothing+    }++-- | Whether to associate the default Elastic Disaster Recovery Security+-- group with the Replication Configuration.+replicationConfiguration_associateDefaultSecurityGroup :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe Prelude.Bool)+replicationConfiguration_associateDefaultSecurityGroup = Lens.lens (\ReplicationConfiguration' {associateDefaultSecurityGroup} -> associateDefaultSecurityGroup) (\s@ReplicationConfiguration' {} a -> s {associateDefaultSecurityGroup = a} :: ReplicationConfiguration)++-- | Configure bandwidth throttling for the outbound data transfer rate of+-- the Source Server in Mbps.+replicationConfiguration_bandwidthThrottling :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe Prelude.Natural)+replicationConfiguration_bandwidthThrottling = Lens.lens (\ReplicationConfiguration' {bandwidthThrottling} -> bandwidthThrottling) (\s@ReplicationConfiguration' {} a -> s {bandwidthThrottling = a} :: ReplicationConfiguration)++-- | Whether to create a Public IP for the Recovery Instance by default.+replicationConfiguration_createPublicIP :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe Prelude.Bool)+replicationConfiguration_createPublicIP = Lens.lens (\ReplicationConfiguration' {createPublicIP} -> createPublicIP) (\s@ReplicationConfiguration' {} a -> s {createPublicIP = a} :: ReplicationConfiguration)++-- | The data plane routing mechanism that will be used for replication.+replicationConfiguration_dataPlaneRouting :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe ReplicationConfigurationDataPlaneRouting)+replicationConfiguration_dataPlaneRouting = Lens.lens (\ReplicationConfiguration' {dataPlaneRouting} -> dataPlaneRouting) (\s@ReplicationConfiguration' {} a -> s {dataPlaneRouting = a} :: ReplicationConfiguration)++-- | The Staging Disk EBS volume type to be used during replication.+replicationConfiguration_defaultLargeStagingDiskType :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe ReplicationConfigurationDefaultLargeStagingDiskType)+replicationConfiguration_defaultLargeStagingDiskType = Lens.lens (\ReplicationConfiguration' {defaultLargeStagingDiskType} -> defaultLargeStagingDiskType) (\s@ReplicationConfiguration' {} a -> s {defaultLargeStagingDiskType = a} :: ReplicationConfiguration)++-- | The type of EBS encryption to be used during replication.+replicationConfiguration_ebsEncryption :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe ReplicationConfigurationEbsEncryption)+replicationConfiguration_ebsEncryption = Lens.lens (\ReplicationConfiguration' {ebsEncryption} -> ebsEncryption) (\s@ReplicationConfiguration' {} a -> s {ebsEncryption = a} :: ReplicationConfiguration)++-- | The ARN of the EBS encryption key to be used during replication.+replicationConfiguration_ebsEncryptionKeyArn :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe Prelude.Text)+replicationConfiguration_ebsEncryptionKeyArn = Lens.lens (\ReplicationConfiguration' {ebsEncryptionKeyArn} -> ebsEncryptionKeyArn) (\s@ReplicationConfiguration' {} a -> s {ebsEncryptionKeyArn = a} :: ReplicationConfiguration)++-- | The name of the Replication Configuration.+replicationConfiguration_name :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe Prelude.Text)+replicationConfiguration_name = Lens.lens (\ReplicationConfiguration' {name} -> name) (\s@ReplicationConfiguration' {} a -> s {name = a} :: ReplicationConfiguration)++-- | The Point in time (PIT) policy to manage snapshots taken during+-- replication.+replicationConfiguration_pitPolicy :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe (Prelude.NonEmpty PITPolicyRule))+replicationConfiguration_pitPolicy = Lens.lens (\ReplicationConfiguration' {pitPolicy} -> pitPolicy) (\s@ReplicationConfiguration' {} a -> s {pitPolicy = a} :: ReplicationConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The configuration of the disks of the Source Server to be replicated.+replicationConfiguration_replicatedDisks :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe [ReplicationConfigurationReplicatedDisk])+replicationConfiguration_replicatedDisks = Lens.lens (\ReplicationConfiguration' {replicatedDisks} -> replicatedDisks) (\s@ReplicationConfiguration' {} a -> s {replicatedDisks = a} :: ReplicationConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The instance type to be used for the replication server.+replicationConfiguration_replicationServerInstanceType :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe Prelude.Text)+replicationConfiguration_replicationServerInstanceType = Lens.lens (\ReplicationConfiguration' {replicationServerInstanceType} -> replicationServerInstanceType) (\s@ReplicationConfiguration' {} a -> s {replicationServerInstanceType = a} :: ReplicationConfiguration)++-- | The security group IDs that will be used by the replication server.+replicationConfiguration_replicationServersSecurityGroupsIDs :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe [Prelude.Text])+replicationConfiguration_replicationServersSecurityGroupsIDs = Lens.lens (\ReplicationConfiguration' {replicationServersSecurityGroupsIDs} -> replicationServersSecurityGroupsIDs) (\s@ReplicationConfiguration' {} a -> s {replicationServersSecurityGroupsIDs = a} :: ReplicationConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The ID of the Source Server for this Replication Configuration.+replicationConfiguration_sourceServerID :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe Prelude.Text)+replicationConfiguration_sourceServerID = Lens.lens (\ReplicationConfiguration' {sourceServerID} -> sourceServerID) (\s@ReplicationConfiguration' {} a -> s {sourceServerID = a} :: ReplicationConfiguration)++-- | The subnet to be used by the replication staging area.+replicationConfiguration_stagingAreaSubnetId :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe Prelude.Text)+replicationConfiguration_stagingAreaSubnetId = Lens.lens (\ReplicationConfiguration' {stagingAreaSubnetId} -> stagingAreaSubnetId) (\s@ReplicationConfiguration' {} a -> s {stagingAreaSubnetId = a} :: ReplicationConfiguration)++-- | A set of tags to be associated with all resources created in the+-- replication staging area: EC2 replication server, EBS volumes, EBS+-- snapshots, etc.+replicationConfiguration_stagingAreaTags :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+replicationConfiguration_stagingAreaTags = Lens.lens (\ReplicationConfiguration' {stagingAreaTags} -> stagingAreaTags) (\s@ReplicationConfiguration' {} a -> s {stagingAreaTags = a} :: ReplicationConfiguration) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | Whether to use a dedicated Replication Server in the replication staging+-- area.+replicationConfiguration_useDedicatedReplicationServer :: Lens.Lens' ReplicationConfiguration (Prelude.Maybe Prelude.Bool)+replicationConfiguration_useDedicatedReplicationServer = Lens.lens (\ReplicationConfiguration' {useDedicatedReplicationServer} -> useDedicatedReplicationServer) (\s@ReplicationConfiguration' {} a -> s {useDedicatedReplicationServer = a} :: ReplicationConfiguration)++instance Data.FromJSON ReplicationConfiguration where+  parseJSON =+    Data.withObject+      "ReplicationConfiguration"+      ( \x ->+          ReplicationConfiguration'+            Prelude.<$> (x Data..:? "associateDefaultSecurityGroup")+            Prelude.<*> (x Data..:? "bandwidthThrottling")+            Prelude.<*> (x Data..:? "createPublicIP")+            Prelude.<*> (x Data..:? "dataPlaneRouting")+            Prelude.<*> (x Data..:? "defaultLargeStagingDiskType")+            Prelude.<*> (x Data..:? "ebsEncryption")+            Prelude.<*> (x Data..:? "ebsEncryptionKeyArn")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "pitPolicy")+            Prelude.<*> ( x+                            Data..:? "replicatedDisks"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "replicationServerInstanceType")+            Prelude.<*> ( x+                            Data..:? "replicationServersSecurityGroupsIDs"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "sourceServerID")+            Prelude.<*> (x Data..:? "stagingAreaSubnetId")+            Prelude.<*> ( x+                            Data..:? "stagingAreaTags"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "useDedicatedReplicationServer")+      )++instance Prelude.Hashable ReplicationConfiguration where+  hashWithSalt _salt ReplicationConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` associateDefaultSecurityGroup+      `Prelude.hashWithSalt` bandwidthThrottling+      `Prelude.hashWithSalt` createPublicIP+      `Prelude.hashWithSalt` dataPlaneRouting+      `Prelude.hashWithSalt` defaultLargeStagingDiskType+      `Prelude.hashWithSalt` ebsEncryption+      `Prelude.hashWithSalt` ebsEncryptionKeyArn+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` pitPolicy+      `Prelude.hashWithSalt` replicatedDisks+      `Prelude.hashWithSalt` replicationServerInstanceType+      `Prelude.hashWithSalt` replicationServersSecurityGroupsIDs+      `Prelude.hashWithSalt` sourceServerID+      `Prelude.hashWithSalt` stagingAreaSubnetId+      `Prelude.hashWithSalt` stagingAreaTags+      `Prelude.hashWithSalt` useDedicatedReplicationServer++instance Prelude.NFData ReplicationConfiguration where+  rnf ReplicationConfiguration' {..} =+    Prelude.rnf associateDefaultSecurityGroup+      `Prelude.seq` Prelude.rnf bandwidthThrottling+      `Prelude.seq` Prelude.rnf createPublicIP+      `Prelude.seq` Prelude.rnf dataPlaneRouting+      `Prelude.seq` Prelude.rnf defaultLargeStagingDiskType+      `Prelude.seq` Prelude.rnf ebsEncryption+      `Prelude.seq` Prelude.rnf ebsEncryptionKeyArn+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf pitPolicy+      `Prelude.seq` Prelude.rnf replicatedDisks+      `Prelude.seq` Prelude.rnf replicationServerInstanceType+      `Prelude.seq` Prelude.rnf+        replicationServersSecurityGroupsIDs+      `Prelude.seq` Prelude.rnf sourceServerID+      `Prelude.seq` Prelude.rnf stagingAreaSubnetId+      `Prelude.seq` Prelude.rnf stagingAreaTags+      `Prelude.seq` Prelude.rnf+        useDedicatedReplicationServer
+ gen/Amazonka/DrS/Types/ReplicationConfigurationDataPlaneRouting.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.DrS.Types.ReplicationConfigurationDataPlaneRouting+-- 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.DrS.Types.ReplicationConfigurationDataPlaneRouting+  ( ReplicationConfigurationDataPlaneRouting+      ( ..,+        ReplicationConfigurationDataPlaneRouting_PRIVATE_IP,+        ReplicationConfigurationDataPlaneRouting_PUBLIC_IP+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ReplicationConfigurationDataPlaneRouting = ReplicationConfigurationDataPlaneRouting'+  { fromReplicationConfigurationDataPlaneRouting ::+      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 ReplicationConfigurationDataPlaneRouting_PRIVATE_IP :: ReplicationConfigurationDataPlaneRouting+pattern ReplicationConfigurationDataPlaneRouting_PRIVATE_IP = ReplicationConfigurationDataPlaneRouting' "PRIVATE_IP"++pattern ReplicationConfigurationDataPlaneRouting_PUBLIC_IP :: ReplicationConfigurationDataPlaneRouting+pattern ReplicationConfigurationDataPlaneRouting_PUBLIC_IP = ReplicationConfigurationDataPlaneRouting' "PUBLIC_IP"++{-# COMPLETE+  ReplicationConfigurationDataPlaneRouting_PRIVATE_IP,+  ReplicationConfigurationDataPlaneRouting_PUBLIC_IP,+  ReplicationConfigurationDataPlaneRouting'+  #-}
+ gen/Amazonka/DrS/Types/ReplicationConfigurationDefaultLargeStagingDiskType.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.DrS.Types.ReplicationConfigurationDefaultLargeStagingDiskType+-- 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.DrS.Types.ReplicationConfigurationDefaultLargeStagingDiskType+  ( ReplicationConfigurationDefaultLargeStagingDiskType+      ( ..,+        ReplicationConfigurationDefaultLargeStagingDiskType_AUTO,+        ReplicationConfigurationDefaultLargeStagingDiskType_GP2,+        ReplicationConfigurationDefaultLargeStagingDiskType_GP3,+        ReplicationConfigurationDefaultLargeStagingDiskType_ST1+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ReplicationConfigurationDefaultLargeStagingDiskType = ReplicationConfigurationDefaultLargeStagingDiskType'+  { fromReplicationConfigurationDefaultLargeStagingDiskType ::+      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 ReplicationConfigurationDefaultLargeStagingDiskType_AUTO :: ReplicationConfigurationDefaultLargeStagingDiskType+pattern ReplicationConfigurationDefaultLargeStagingDiskType_AUTO = ReplicationConfigurationDefaultLargeStagingDiskType' "AUTO"++pattern ReplicationConfigurationDefaultLargeStagingDiskType_GP2 :: ReplicationConfigurationDefaultLargeStagingDiskType+pattern ReplicationConfigurationDefaultLargeStagingDiskType_GP2 = ReplicationConfigurationDefaultLargeStagingDiskType' "GP2"++pattern ReplicationConfigurationDefaultLargeStagingDiskType_GP3 :: ReplicationConfigurationDefaultLargeStagingDiskType+pattern ReplicationConfigurationDefaultLargeStagingDiskType_GP3 = ReplicationConfigurationDefaultLargeStagingDiskType' "GP3"++pattern ReplicationConfigurationDefaultLargeStagingDiskType_ST1 :: ReplicationConfigurationDefaultLargeStagingDiskType+pattern ReplicationConfigurationDefaultLargeStagingDiskType_ST1 = ReplicationConfigurationDefaultLargeStagingDiskType' "ST1"++{-# COMPLETE+  ReplicationConfigurationDefaultLargeStagingDiskType_AUTO,+  ReplicationConfigurationDefaultLargeStagingDiskType_GP2,+  ReplicationConfigurationDefaultLargeStagingDiskType_GP3,+  ReplicationConfigurationDefaultLargeStagingDiskType_ST1,+  ReplicationConfigurationDefaultLargeStagingDiskType'+  #-}
+ gen/Amazonka/DrS/Types/ReplicationConfigurationEbsEncryption.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.DrS.Types.ReplicationConfigurationEbsEncryption+-- 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.DrS.Types.ReplicationConfigurationEbsEncryption+  ( ReplicationConfigurationEbsEncryption+      ( ..,+        ReplicationConfigurationEbsEncryption_CUSTOM,+        ReplicationConfigurationEbsEncryption_DEFAULT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ReplicationConfigurationEbsEncryption = ReplicationConfigurationEbsEncryption'+  { fromReplicationConfigurationEbsEncryption ::+      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 ReplicationConfigurationEbsEncryption_CUSTOM :: ReplicationConfigurationEbsEncryption+pattern ReplicationConfigurationEbsEncryption_CUSTOM = ReplicationConfigurationEbsEncryption' "CUSTOM"++pattern ReplicationConfigurationEbsEncryption_DEFAULT :: ReplicationConfigurationEbsEncryption+pattern ReplicationConfigurationEbsEncryption_DEFAULT = ReplicationConfigurationEbsEncryption' "DEFAULT"++{-# COMPLETE+  ReplicationConfigurationEbsEncryption_CUSTOM,+  ReplicationConfigurationEbsEncryption_DEFAULT,+  ReplicationConfigurationEbsEncryption'+  #-}
+ gen/Amazonka/DrS/Types/ReplicationConfigurationReplicatedDisk.hs view
@@ -0,0 +1,173 @@+{-# 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.DrS.Types.ReplicationConfigurationReplicatedDisk+-- 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.DrS.Types.ReplicationConfigurationReplicatedDisk where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.ReplicationConfigurationReplicatedDiskStagingDiskType+import qualified Amazonka.Prelude as Prelude++-- | The configuration of a disk of the Source Server to be replicated.+--+-- /See:/ 'newReplicationConfigurationReplicatedDisk' smart constructor.+data ReplicationConfigurationReplicatedDisk = ReplicationConfigurationReplicatedDisk'+  { -- | The name of the device.+    deviceName :: Prelude.Maybe Prelude.Text,+    -- | The requested number of I\/O operations per second (IOPS).+    iops :: Prelude.Maybe Prelude.Natural,+    -- | Whether to boot from this disk or not.+    isBootDisk :: Prelude.Maybe Prelude.Bool,+    -- | When @stagingDiskType@ is set to Auto, this field shows the current+    -- staging disk EBS volume type as it is constantly updated by the service.+    -- This is a read-only field.+    optimizedStagingDiskType :: Prelude.Maybe ReplicationConfigurationReplicatedDiskStagingDiskType,+    -- | The Staging Disk EBS volume type to be used during replication.+    stagingDiskType :: Prelude.Maybe ReplicationConfigurationReplicatedDiskStagingDiskType,+    -- | The throughput to use for the EBS volume in MiB\/s. This parameter is+    -- valid only for gp3 volumes.+    throughput :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReplicationConfigurationReplicatedDisk' 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:+--+-- 'deviceName', 'replicationConfigurationReplicatedDisk_deviceName' - The name of the device.+--+-- 'iops', 'replicationConfigurationReplicatedDisk_iops' - The requested number of I\/O operations per second (IOPS).+--+-- 'isBootDisk', 'replicationConfigurationReplicatedDisk_isBootDisk' - Whether to boot from this disk or not.+--+-- 'optimizedStagingDiskType', 'replicationConfigurationReplicatedDisk_optimizedStagingDiskType' - When @stagingDiskType@ is set to Auto, this field shows the current+-- staging disk EBS volume type as it is constantly updated by the service.+-- This is a read-only field.+--+-- 'stagingDiskType', 'replicationConfigurationReplicatedDisk_stagingDiskType' - The Staging Disk EBS volume type to be used during replication.+--+-- 'throughput', 'replicationConfigurationReplicatedDisk_throughput' - The throughput to use for the EBS volume in MiB\/s. This parameter is+-- valid only for gp3 volumes.+newReplicationConfigurationReplicatedDisk ::+  ReplicationConfigurationReplicatedDisk+newReplicationConfigurationReplicatedDisk =+  ReplicationConfigurationReplicatedDisk'+    { deviceName =+        Prelude.Nothing,+      iops = Prelude.Nothing,+      isBootDisk = Prelude.Nothing,+      optimizedStagingDiskType =+        Prelude.Nothing,+      stagingDiskType = Prelude.Nothing,+      throughput = Prelude.Nothing+    }++-- | The name of the device.+replicationConfigurationReplicatedDisk_deviceName :: Lens.Lens' ReplicationConfigurationReplicatedDisk (Prelude.Maybe Prelude.Text)+replicationConfigurationReplicatedDisk_deviceName = Lens.lens (\ReplicationConfigurationReplicatedDisk' {deviceName} -> deviceName) (\s@ReplicationConfigurationReplicatedDisk' {} a -> s {deviceName = a} :: ReplicationConfigurationReplicatedDisk)++-- | The requested number of I\/O operations per second (IOPS).+replicationConfigurationReplicatedDisk_iops :: Lens.Lens' ReplicationConfigurationReplicatedDisk (Prelude.Maybe Prelude.Natural)+replicationConfigurationReplicatedDisk_iops = Lens.lens (\ReplicationConfigurationReplicatedDisk' {iops} -> iops) (\s@ReplicationConfigurationReplicatedDisk' {} a -> s {iops = a} :: ReplicationConfigurationReplicatedDisk)++-- | Whether to boot from this disk or not.+replicationConfigurationReplicatedDisk_isBootDisk :: Lens.Lens' ReplicationConfigurationReplicatedDisk (Prelude.Maybe Prelude.Bool)+replicationConfigurationReplicatedDisk_isBootDisk = Lens.lens (\ReplicationConfigurationReplicatedDisk' {isBootDisk} -> isBootDisk) (\s@ReplicationConfigurationReplicatedDisk' {} a -> s {isBootDisk = a} :: ReplicationConfigurationReplicatedDisk)++-- | When @stagingDiskType@ is set to Auto, this field shows the current+-- staging disk EBS volume type as it is constantly updated by the service.+-- This is a read-only field.+replicationConfigurationReplicatedDisk_optimizedStagingDiskType :: Lens.Lens' ReplicationConfigurationReplicatedDisk (Prelude.Maybe ReplicationConfigurationReplicatedDiskStagingDiskType)+replicationConfigurationReplicatedDisk_optimizedStagingDiskType = Lens.lens (\ReplicationConfigurationReplicatedDisk' {optimizedStagingDiskType} -> optimizedStagingDiskType) (\s@ReplicationConfigurationReplicatedDisk' {} a -> s {optimizedStagingDiskType = a} :: ReplicationConfigurationReplicatedDisk)++-- | The Staging Disk EBS volume type to be used during replication.+replicationConfigurationReplicatedDisk_stagingDiskType :: Lens.Lens' ReplicationConfigurationReplicatedDisk (Prelude.Maybe ReplicationConfigurationReplicatedDiskStagingDiskType)+replicationConfigurationReplicatedDisk_stagingDiskType = Lens.lens (\ReplicationConfigurationReplicatedDisk' {stagingDiskType} -> stagingDiskType) (\s@ReplicationConfigurationReplicatedDisk' {} a -> s {stagingDiskType = a} :: ReplicationConfigurationReplicatedDisk)++-- | The throughput to use for the EBS volume in MiB\/s. This parameter is+-- valid only for gp3 volumes.+replicationConfigurationReplicatedDisk_throughput :: Lens.Lens' ReplicationConfigurationReplicatedDisk (Prelude.Maybe Prelude.Natural)+replicationConfigurationReplicatedDisk_throughput = Lens.lens (\ReplicationConfigurationReplicatedDisk' {throughput} -> throughput) (\s@ReplicationConfigurationReplicatedDisk' {} a -> s {throughput = a} :: ReplicationConfigurationReplicatedDisk)++instance+  Data.FromJSON+    ReplicationConfigurationReplicatedDisk+  where+  parseJSON =+    Data.withObject+      "ReplicationConfigurationReplicatedDisk"+      ( \x ->+          ReplicationConfigurationReplicatedDisk'+            Prelude.<$> (x Data..:? "deviceName")+            Prelude.<*> (x Data..:? "iops")+            Prelude.<*> (x Data..:? "isBootDisk")+            Prelude.<*> (x Data..:? "optimizedStagingDiskType")+            Prelude.<*> (x Data..:? "stagingDiskType")+            Prelude.<*> (x Data..:? "throughput")+      )++instance+  Prelude.Hashable+    ReplicationConfigurationReplicatedDisk+  where+  hashWithSalt+    _salt+    ReplicationConfigurationReplicatedDisk' {..} =+      _salt+        `Prelude.hashWithSalt` deviceName+        `Prelude.hashWithSalt` iops+        `Prelude.hashWithSalt` isBootDisk+        `Prelude.hashWithSalt` optimizedStagingDiskType+        `Prelude.hashWithSalt` stagingDiskType+        `Prelude.hashWithSalt` throughput++instance+  Prelude.NFData+    ReplicationConfigurationReplicatedDisk+  where+  rnf ReplicationConfigurationReplicatedDisk' {..} =+    Prelude.rnf deviceName+      `Prelude.seq` Prelude.rnf iops+      `Prelude.seq` Prelude.rnf isBootDisk+      `Prelude.seq` Prelude.rnf optimizedStagingDiskType+      `Prelude.seq` Prelude.rnf stagingDiskType+      `Prelude.seq` Prelude.rnf throughput++instance+  Data.ToJSON+    ReplicationConfigurationReplicatedDisk+  where+  toJSON ReplicationConfigurationReplicatedDisk' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("deviceName" Data..=) Prelude.<$> deviceName,+            ("iops" Data..=) Prelude.<$> iops,+            ("isBootDisk" Data..=) Prelude.<$> isBootDisk,+            ("optimizedStagingDiskType" Data..=)+              Prelude.<$> optimizedStagingDiskType,+            ("stagingDiskType" Data..=)+              Prelude.<$> stagingDiskType,+            ("throughput" Data..=) Prelude.<$> throughput+          ]+      )
+ gen/Amazonka/DrS/Types/ReplicationConfigurationReplicatedDiskStagingDiskType.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.DrS.Types.ReplicationConfigurationReplicatedDiskStagingDiskType+-- 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.DrS.Types.ReplicationConfigurationReplicatedDiskStagingDiskType+  ( ReplicationConfigurationReplicatedDiskStagingDiskType+      ( ..,+        ReplicationConfigurationReplicatedDiskStagingDiskType_AUTO,+        ReplicationConfigurationReplicatedDiskStagingDiskType_GP2,+        ReplicationConfigurationReplicatedDiskStagingDiskType_GP3,+        ReplicationConfigurationReplicatedDiskStagingDiskType_IO1,+        ReplicationConfigurationReplicatedDiskStagingDiskType_SC1,+        ReplicationConfigurationReplicatedDiskStagingDiskType_ST1,+        ReplicationConfigurationReplicatedDiskStagingDiskType_STANDARD+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ReplicationConfigurationReplicatedDiskStagingDiskType = ReplicationConfigurationReplicatedDiskStagingDiskType'+  { fromReplicationConfigurationReplicatedDiskStagingDiskType ::+      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 ReplicationConfigurationReplicatedDiskStagingDiskType_AUTO :: ReplicationConfigurationReplicatedDiskStagingDiskType+pattern ReplicationConfigurationReplicatedDiskStagingDiskType_AUTO = ReplicationConfigurationReplicatedDiskStagingDiskType' "AUTO"++pattern ReplicationConfigurationReplicatedDiskStagingDiskType_GP2 :: ReplicationConfigurationReplicatedDiskStagingDiskType+pattern ReplicationConfigurationReplicatedDiskStagingDiskType_GP2 = ReplicationConfigurationReplicatedDiskStagingDiskType' "GP2"++pattern ReplicationConfigurationReplicatedDiskStagingDiskType_GP3 :: ReplicationConfigurationReplicatedDiskStagingDiskType+pattern ReplicationConfigurationReplicatedDiskStagingDiskType_GP3 = ReplicationConfigurationReplicatedDiskStagingDiskType' "GP3"++pattern ReplicationConfigurationReplicatedDiskStagingDiskType_IO1 :: ReplicationConfigurationReplicatedDiskStagingDiskType+pattern ReplicationConfigurationReplicatedDiskStagingDiskType_IO1 = ReplicationConfigurationReplicatedDiskStagingDiskType' "IO1"++pattern ReplicationConfigurationReplicatedDiskStagingDiskType_SC1 :: ReplicationConfigurationReplicatedDiskStagingDiskType+pattern ReplicationConfigurationReplicatedDiskStagingDiskType_SC1 = ReplicationConfigurationReplicatedDiskStagingDiskType' "SC1"++pattern ReplicationConfigurationReplicatedDiskStagingDiskType_ST1 :: ReplicationConfigurationReplicatedDiskStagingDiskType+pattern ReplicationConfigurationReplicatedDiskStagingDiskType_ST1 = ReplicationConfigurationReplicatedDiskStagingDiskType' "ST1"++pattern ReplicationConfigurationReplicatedDiskStagingDiskType_STANDARD :: ReplicationConfigurationReplicatedDiskStagingDiskType+pattern ReplicationConfigurationReplicatedDiskStagingDiskType_STANDARD = ReplicationConfigurationReplicatedDiskStagingDiskType' "STANDARD"++{-# COMPLETE+  ReplicationConfigurationReplicatedDiskStagingDiskType_AUTO,+  ReplicationConfigurationReplicatedDiskStagingDiskType_GP2,+  ReplicationConfigurationReplicatedDiskStagingDiskType_GP3,+  ReplicationConfigurationReplicatedDiskStagingDiskType_IO1,+  ReplicationConfigurationReplicatedDiskStagingDiskType_SC1,+  ReplicationConfigurationReplicatedDiskStagingDiskType_ST1,+  ReplicationConfigurationReplicatedDiskStagingDiskType_STANDARD,+  ReplicationConfigurationReplicatedDiskStagingDiskType'+  #-}
+ gen/Amazonka/DrS/Types/ReplicationConfigurationTemplate.hs view
@@ -0,0 +1,304 @@+{-# 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.DrS.Types.ReplicationConfigurationTemplate+-- 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.DrS.Types.ReplicationConfigurationTemplate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.PITPolicyRule+import Amazonka.DrS.Types.ReplicationConfigurationDataPlaneRouting+import Amazonka.DrS.Types.ReplicationConfigurationDefaultLargeStagingDiskType+import Amazonka.DrS.Types.ReplicationConfigurationEbsEncryption+import qualified Amazonka.Prelude as Prelude++-- | /See:/ 'newReplicationConfigurationTemplate' smart constructor.+data ReplicationConfigurationTemplate = ReplicationConfigurationTemplate'+  { -- | The Replication Configuration Template ARN.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Whether to associate the default Elastic Disaster Recovery Security+    -- group with the Replication Configuration Template.+    associateDefaultSecurityGroup :: Prelude.Maybe Prelude.Bool,+    -- | Configure bandwidth throttling for the outbound data transfer rate of+    -- the Source Server in Mbps.+    bandwidthThrottling :: Prelude.Maybe Prelude.Natural,+    -- | Whether to create a Public IP for the Recovery Instance by default.+    createPublicIP :: Prelude.Maybe Prelude.Bool,+    -- | The data plane routing mechanism that will be used for replication.+    dataPlaneRouting :: Prelude.Maybe ReplicationConfigurationDataPlaneRouting,+    -- | The Staging Disk EBS volume type to be used during replication.+    defaultLargeStagingDiskType :: Prelude.Maybe ReplicationConfigurationDefaultLargeStagingDiskType,+    -- | The type of EBS encryption to be used during replication.+    ebsEncryption :: Prelude.Maybe ReplicationConfigurationEbsEncryption,+    -- | The ARN of the EBS encryption key to be used during replication.+    ebsEncryptionKeyArn :: Prelude.Maybe Prelude.Text,+    -- | The Point in time (PIT) policy to manage snapshots taken during+    -- replication.+    pitPolicy :: Prelude.Maybe (Prelude.NonEmpty PITPolicyRule),+    -- | The instance type to be used for the replication server.+    replicationServerInstanceType :: Prelude.Maybe Prelude.Text,+    -- | The security group IDs that will be used by the replication server.+    replicationServersSecurityGroupsIDs :: Prelude.Maybe [Prelude.Text],+    -- | The subnet to be used by the replication staging area.+    stagingAreaSubnetId :: Prelude.Maybe Prelude.Text,+    -- | A set of tags to be associated with all resources created in the+    -- replication staging area: EC2 replication server, EBS volumes, EBS+    -- snapshots, etc.+    stagingAreaTags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | A set of tags to be associated with the Replication Configuration+    -- Template resource.+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | Whether to use a dedicated Replication Server in the replication staging+    -- area.+    useDedicatedReplicationServer :: Prelude.Maybe Prelude.Bool,+    -- | The Replication Configuration Template ID.+    replicationConfigurationTemplateID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReplicationConfigurationTemplate' 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', 'replicationConfigurationTemplate_arn' - The Replication Configuration Template ARN.+--+-- 'associateDefaultSecurityGroup', 'replicationConfigurationTemplate_associateDefaultSecurityGroup' - Whether to associate the default Elastic Disaster Recovery Security+-- group with the Replication Configuration Template.+--+-- 'bandwidthThrottling', 'replicationConfigurationTemplate_bandwidthThrottling' - Configure bandwidth throttling for the outbound data transfer rate of+-- the Source Server in Mbps.+--+-- 'createPublicIP', 'replicationConfigurationTemplate_createPublicIP' - Whether to create a Public IP for the Recovery Instance by default.+--+-- 'dataPlaneRouting', 'replicationConfigurationTemplate_dataPlaneRouting' - The data plane routing mechanism that will be used for replication.+--+-- 'defaultLargeStagingDiskType', 'replicationConfigurationTemplate_defaultLargeStagingDiskType' - The Staging Disk EBS volume type to be used during replication.+--+-- 'ebsEncryption', 'replicationConfigurationTemplate_ebsEncryption' - The type of EBS encryption to be used during replication.+--+-- 'ebsEncryptionKeyArn', 'replicationConfigurationTemplate_ebsEncryptionKeyArn' - The ARN of the EBS encryption key to be used during replication.+--+-- 'pitPolicy', 'replicationConfigurationTemplate_pitPolicy' - The Point in time (PIT) policy to manage snapshots taken during+-- replication.+--+-- 'replicationServerInstanceType', 'replicationConfigurationTemplate_replicationServerInstanceType' - The instance type to be used for the replication server.+--+-- 'replicationServersSecurityGroupsIDs', 'replicationConfigurationTemplate_replicationServersSecurityGroupsIDs' - The security group IDs that will be used by the replication server.+--+-- 'stagingAreaSubnetId', 'replicationConfigurationTemplate_stagingAreaSubnetId' - The subnet to be used by the replication staging area.+--+-- 'stagingAreaTags', 'replicationConfigurationTemplate_stagingAreaTags' - A set of tags to be associated with all resources created in the+-- replication staging area: EC2 replication server, EBS volumes, EBS+-- snapshots, etc.+--+-- 'tags', 'replicationConfigurationTemplate_tags' - A set of tags to be associated with the Replication Configuration+-- Template resource.+--+-- 'useDedicatedReplicationServer', 'replicationConfigurationTemplate_useDedicatedReplicationServer' - Whether to use a dedicated Replication Server in the replication staging+-- area.+--+-- 'replicationConfigurationTemplateID', 'replicationConfigurationTemplate_replicationConfigurationTemplateID' - The Replication Configuration Template ID.+newReplicationConfigurationTemplate ::+  -- | 'replicationConfigurationTemplateID'+  Prelude.Text ->+  ReplicationConfigurationTemplate+newReplicationConfigurationTemplate+  pReplicationConfigurationTemplateID_ =+    ReplicationConfigurationTemplate'+      { arn =+          Prelude.Nothing,+        associateDefaultSecurityGroup =+          Prelude.Nothing,+        bandwidthThrottling = Prelude.Nothing,+        createPublicIP = Prelude.Nothing,+        dataPlaneRouting = Prelude.Nothing,+        defaultLargeStagingDiskType =+          Prelude.Nothing,+        ebsEncryption = Prelude.Nothing,+        ebsEncryptionKeyArn = Prelude.Nothing,+        pitPolicy = Prelude.Nothing,+        replicationServerInstanceType =+          Prelude.Nothing,+        replicationServersSecurityGroupsIDs =+          Prelude.Nothing,+        stagingAreaSubnetId = Prelude.Nothing,+        stagingAreaTags = Prelude.Nothing,+        tags = Prelude.Nothing,+        useDedicatedReplicationServer =+          Prelude.Nothing,+        replicationConfigurationTemplateID =+          pReplicationConfigurationTemplateID_+      }++-- | The Replication Configuration Template ARN.+replicationConfigurationTemplate_arn :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)+replicationConfigurationTemplate_arn = Lens.lens (\ReplicationConfigurationTemplate' {arn} -> arn) (\s@ReplicationConfigurationTemplate' {} a -> s {arn = a} :: ReplicationConfigurationTemplate)++-- | Whether to associate the default Elastic Disaster Recovery Security+-- group with the Replication Configuration Template.+replicationConfigurationTemplate_associateDefaultSecurityGroup :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe Prelude.Bool)+replicationConfigurationTemplate_associateDefaultSecurityGroup = Lens.lens (\ReplicationConfigurationTemplate' {associateDefaultSecurityGroup} -> associateDefaultSecurityGroup) (\s@ReplicationConfigurationTemplate' {} a -> s {associateDefaultSecurityGroup = a} :: ReplicationConfigurationTemplate)++-- | Configure bandwidth throttling for the outbound data transfer rate of+-- the Source Server in Mbps.+replicationConfigurationTemplate_bandwidthThrottling :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe Prelude.Natural)+replicationConfigurationTemplate_bandwidthThrottling = Lens.lens (\ReplicationConfigurationTemplate' {bandwidthThrottling} -> bandwidthThrottling) (\s@ReplicationConfigurationTemplate' {} a -> s {bandwidthThrottling = a} :: ReplicationConfigurationTemplate)++-- | Whether to create a Public IP for the Recovery Instance by default.+replicationConfigurationTemplate_createPublicIP :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe Prelude.Bool)+replicationConfigurationTemplate_createPublicIP = Lens.lens (\ReplicationConfigurationTemplate' {createPublicIP} -> createPublicIP) (\s@ReplicationConfigurationTemplate' {} a -> s {createPublicIP = a} :: ReplicationConfigurationTemplate)++-- | The data plane routing mechanism that will be used for replication.+replicationConfigurationTemplate_dataPlaneRouting :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe ReplicationConfigurationDataPlaneRouting)+replicationConfigurationTemplate_dataPlaneRouting = Lens.lens (\ReplicationConfigurationTemplate' {dataPlaneRouting} -> dataPlaneRouting) (\s@ReplicationConfigurationTemplate' {} a -> s {dataPlaneRouting = a} :: ReplicationConfigurationTemplate)++-- | The Staging Disk EBS volume type to be used during replication.+replicationConfigurationTemplate_defaultLargeStagingDiskType :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe ReplicationConfigurationDefaultLargeStagingDiskType)+replicationConfigurationTemplate_defaultLargeStagingDiskType = Lens.lens (\ReplicationConfigurationTemplate' {defaultLargeStagingDiskType} -> defaultLargeStagingDiskType) (\s@ReplicationConfigurationTemplate' {} a -> s {defaultLargeStagingDiskType = a} :: ReplicationConfigurationTemplate)++-- | The type of EBS encryption to be used during replication.+replicationConfigurationTemplate_ebsEncryption :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe ReplicationConfigurationEbsEncryption)+replicationConfigurationTemplate_ebsEncryption = Lens.lens (\ReplicationConfigurationTemplate' {ebsEncryption} -> ebsEncryption) (\s@ReplicationConfigurationTemplate' {} a -> s {ebsEncryption = a} :: ReplicationConfigurationTemplate)++-- | The ARN of the EBS encryption key to be used during replication.+replicationConfigurationTemplate_ebsEncryptionKeyArn :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)+replicationConfigurationTemplate_ebsEncryptionKeyArn = Lens.lens (\ReplicationConfigurationTemplate' {ebsEncryptionKeyArn} -> ebsEncryptionKeyArn) (\s@ReplicationConfigurationTemplate' {} a -> s {ebsEncryptionKeyArn = a} :: ReplicationConfigurationTemplate)++-- | The Point in time (PIT) policy to manage snapshots taken during+-- replication.+replicationConfigurationTemplate_pitPolicy :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe (Prelude.NonEmpty PITPolicyRule))+replicationConfigurationTemplate_pitPolicy = Lens.lens (\ReplicationConfigurationTemplate' {pitPolicy} -> pitPolicy) (\s@ReplicationConfigurationTemplate' {} a -> s {pitPolicy = a} :: ReplicationConfigurationTemplate) Prelude.. Lens.mapping Lens.coerced++-- | The instance type to be used for the replication server.+replicationConfigurationTemplate_replicationServerInstanceType :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)+replicationConfigurationTemplate_replicationServerInstanceType = Lens.lens (\ReplicationConfigurationTemplate' {replicationServerInstanceType} -> replicationServerInstanceType) (\s@ReplicationConfigurationTemplate' {} a -> s {replicationServerInstanceType = a} :: ReplicationConfigurationTemplate)++-- | The security group IDs that will be used by the replication server.+replicationConfigurationTemplate_replicationServersSecurityGroupsIDs :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe [Prelude.Text])+replicationConfigurationTemplate_replicationServersSecurityGroupsIDs = Lens.lens (\ReplicationConfigurationTemplate' {replicationServersSecurityGroupsIDs} -> replicationServersSecurityGroupsIDs) (\s@ReplicationConfigurationTemplate' {} a -> s {replicationServersSecurityGroupsIDs = a} :: ReplicationConfigurationTemplate) Prelude.. Lens.mapping Lens.coerced++-- | The subnet to be used by the replication staging area.+replicationConfigurationTemplate_stagingAreaSubnetId :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)+replicationConfigurationTemplate_stagingAreaSubnetId = Lens.lens (\ReplicationConfigurationTemplate' {stagingAreaSubnetId} -> stagingAreaSubnetId) (\s@ReplicationConfigurationTemplate' {} a -> s {stagingAreaSubnetId = a} :: ReplicationConfigurationTemplate)++-- | A set of tags to be associated with all resources created in the+-- replication staging area: EC2 replication server, EBS volumes, EBS+-- snapshots, etc.+replicationConfigurationTemplate_stagingAreaTags :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+replicationConfigurationTemplate_stagingAreaTags = Lens.lens (\ReplicationConfigurationTemplate' {stagingAreaTags} -> stagingAreaTags) (\s@ReplicationConfigurationTemplate' {} a -> s {stagingAreaTags = a} :: ReplicationConfigurationTemplate) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | A set of tags to be associated with the Replication Configuration+-- Template resource.+replicationConfigurationTemplate_tags :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+replicationConfigurationTemplate_tags = Lens.lens (\ReplicationConfigurationTemplate' {tags} -> tags) (\s@ReplicationConfigurationTemplate' {} a -> s {tags = a} :: ReplicationConfigurationTemplate) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | Whether to use a dedicated Replication Server in the replication staging+-- area.+replicationConfigurationTemplate_useDedicatedReplicationServer :: Lens.Lens' ReplicationConfigurationTemplate (Prelude.Maybe Prelude.Bool)+replicationConfigurationTemplate_useDedicatedReplicationServer = Lens.lens (\ReplicationConfigurationTemplate' {useDedicatedReplicationServer} -> useDedicatedReplicationServer) (\s@ReplicationConfigurationTemplate' {} a -> s {useDedicatedReplicationServer = a} :: ReplicationConfigurationTemplate)++-- | The Replication Configuration Template ID.+replicationConfigurationTemplate_replicationConfigurationTemplateID :: Lens.Lens' ReplicationConfigurationTemplate Prelude.Text+replicationConfigurationTemplate_replicationConfigurationTemplateID = Lens.lens (\ReplicationConfigurationTemplate' {replicationConfigurationTemplateID} -> replicationConfigurationTemplateID) (\s@ReplicationConfigurationTemplate' {} a -> s {replicationConfigurationTemplateID = a} :: ReplicationConfigurationTemplate)++instance+  Data.FromJSON+    ReplicationConfigurationTemplate+  where+  parseJSON =+    Data.withObject+      "ReplicationConfigurationTemplate"+      ( \x ->+          ReplicationConfigurationTemplate'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "associateDefaultSecurityGroup")+            Prelude.<*> (x Data..:? "bandwidthThrottling")+            Prelude.<*> (x Data..:? "createPublicIP")+            Prelude.<*> (x Data..:? "dataPlaneRouting")+            Prelude.<*> (x Data..:? "defaultLargeStagingDiskType")+            Prelude.<*> (x Data..:? "ebsEncryption")+            Prelude.<*> (x Data..:? "ebsEncryptionKeyArn")+            Prelude.<*> (x Data..:? "pitPolicy")+            Prelude.<*> (x Data..:? "replicationServerInstanceType")+            Prelude.<*> ( x+                            Data..:? "replicationServersSecurityGroupsIDs"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "stagingAreaSubnetId")+            Prelude.<*> ( x+                            Data..:? "stagingAreaTags"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "useDedicatedReplicationServer")+            Prelude.<*> (x Data..: "replicationConfigurationTemplateID")+      )++instance+  Prelude.Hashable+    ReplicationConfigurationTemplate+  where+  hashWithSalt+    _salt+    ReplicationConfigurationTemplate' {..} =+      _salt+        `Prelude.hashWithSalt` arn+        `Prelude.hashWithSalt` associateDefaultSecurityGroup+        `Prelude.hashWithSalt` bandwidthThrottling+        `Prelude.hashWithSalt` createPublicIP+        `Prelude.hashWithSalt` dataPlaneRouting+        `Prelude.hashWithSalt` defaultLargeStagingDiskType+        `Prelude.hashWithSalt` ebsEncryption+        `Prelude.hashWithSalt` ebsEncryptionKeyArn+        `Prelude.hashWithSalt` pitPolicy+        `Prelude.hashWithSalt` replicationServerInstanceType+        `Prelude.hashWithSalt` replicationServersSecurityGroupsIDs+        `Prelude.hashWithSalt` stagingAreaSubnetId+        `Prelude.hashWithSalt` stagingAreaTags+        `Prelude.hashWithSalt` tags+        `Prelude.hashWithSalt` useDedicatedReplicationServer+        `Prelude.hashWithSalt` replicationConfigurationTemplateID++instance+  Prelude.NFData+    ReplicationConfigurationTemplate+  where+  rnf ReplicationConfigurationTemplate' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf associateDefaultSecurityGroup+      `Prelude.seq` Prelude.rnf bandwidthThrottling+      `Prelude.seq` Prelude.rnf createPublicIP+      `Prelude.seq` Prelude.rnf dataPlaneRouting+      `Prelude.seq` Prelude.rnf defaultLargeStagingDiskType+      `Prelude.seq` Prelude.rnf ebsEncryption+      `Prelude.seq` Prelude.rnf ebsEncryptionKeyArn+      `Prelude.seq` Prelude.rnf pitPolicy+      `Prelude.seq` Prelude.rnf replicationServerInstanceType+      `Prelude.seq` Prelude.rnf replicationServersSecurityGroupsIDs+      `Prelude.seq` Prelude.rnf stagingAreaSubnetId+      `Prelude.seq` Prelude.rnf stagingAreaTags+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf+        useDedicatedReplicationServer+      `Prelude.seq` Prelude.rnf+        replicationConfigurationTemplateID
+ gen/Amazonka/DrS/Types/ReplicationDirection.hs view
@@ -0,0 +1,78 @@+{-# 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.DrS.Types.ReplicationDirection+-- 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.DrS.Types.ReplicationDirection+  ( ReplicationDirection+      ( ..,+        ReplicationDirection_FAILBACK,+        ReplicationDirection_FAILOVER+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Replication direction designates if this is a failover replication, or a+-- failback replication. When a DRS agent is installed on an instance, the+-- replication direction is failover. In cases where a recovery launch was+-- made in the recovery location and a new recovery instance was created,+-- and then a failback replication was initiated from that recovery+-- instance back to the origin location, then the replication direction+-- will be failback.+newtype ReplicationDirection = ReplicationDirection'+  { fromReplicationDirection ::+      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 ReplicationDirection_FAILBACK :: ReplicationDirection+pattern ReplicationDirection_FAILBACK = ReplicationDirection' "FAILBACK"++pattern ReplicationDirection_FAILOVER :: ReplicationDirection+pattern ReplicationDirection_FAILOVER = ReplicationDirection' "FAILOVER"++{-# COMPLETE+  ReplicationDirection_FAILBACK,+  ReplicationDirection_FAILOVER,+  ReplicationDirection'+  #-}
+ gen/Amazonka/DrS/Types/SourceCloudProperties.hs view
@@ -0,0 +1,98 @@+{-# 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.DrS.Types.SourceCloudProperties+-- 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.DrS.Types.SourceCloudProperties 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++-- | Properties of the cloud environment where this Source Server originated+-- from.+--+-- /See:/ 'newSourceCloudProperties' smart constructor.+data SourceCloudProperties = SourceCloudProperties'+  { -- | AWS Account ID for an EC2-originated Source Server.+    originAccountID :: Prelude.Maybe Prelude.Text,+    -- | AWS Availability Zone for an EC2-originated Source Server.+    originAvailabilityZone :: Prelude.Maybe Prelude.Text,+    -- | AWS Region for an EC2-originated Source Server.+    originRegion :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SourceCloudProperties' 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:+--+-- 'originAccountID', 'sourceCloudProperties_originAccountID' - AWS Account ID for an EC2-originated Source Server.+--+-- 'originAvailabilityZone', 'sourceCloudProperties_originAvailabilityZone' - AWS Availability Zone for an EC2-originated Source Server.+--+-- 'originRegion', 'sourceCloudProperties_originRegion' - AWS Region for an EC2-originated Source Server.+newSourceCloudProperties ::+  SourceCloudProperties+newSourceCloudProperties =+  SourceCloudProperties'+    { originAccountID =+        Prelude.Nothing,+      originAvailabilityZone = Prelude.Nothing,+      originRegion = Prelude.Nothing+    }++-- | AWS Account ID for an EC2-originated Source Server.+sourceCloudProperties_originAccountID :: Lens.Lens' SourceCloudProperties (Prelude.Maybe Prelude.Text)+sourceCloudProperties_originAccountID = Lens.lens (\SourceCloudProperties' {originAccountID} -> originAccountID) (\s@SourceCloudProperties' {} a -> s {originAccountID = a} :: SourceCloudProperties)++-- | AWS Availability Zone for an EC2-originated Source Server.+sourceCloudProperties_originAvailabilityZone :: Lens.Lens' SourceCloudProperties (Prelude.Maybe Prelude.Text)+sourceCloudProperties_originAvailabilityZone = Lens.lens (\SourceCloudProperties' {originAvailabilityZone} -> originAvailabilityZone) (\s@SourceCloudProperties' {} a -> s {originAvailabilityZone = a} :: SourceCloudProperties)++-- | AWS Region for an EC2-originated Source Server.+sourceCloudProperties_originRegion :: Lens.Lens' SourceCloudProperties (Prelude.Maybe Prelude.Text)+sourceCloudProperties_originRegion = Lens.lens (\SourceCloudProperties' {originRegion} -> originRegion) (\s@SourceCloudProperties' {} a -> s {originRegion = a} :: SourceCloudProperties)++instance Data.FromJSON SourceCloudProperties where+  parseJSON =+    Data.withObject+      "SourceCloudProperties"+      ( \x ->+          SourceCloudProperties'+            Prelude.<$> (x Data..:? "originAccountID")+            Prelude.<*> (x Data..:? "originAvailabilityZone")+            Prelude.<*> (x Data..:? "originRegion")+      )++instance Prelude.Hashable SourceCloudProperties where+  hashWithSalt _salt SourceCloudProperties' {..} =+    _salt+      `Prelude.hashWithSalt` originAccountID+      `Prelude.hashWithSalt` originAvailabilityZone+      `Prelude.hashWithSalt` originRegion++instance Prelude.NFData SourceCloudProperties where+  rnf SourceCloudProperties' {..} =+    Prelude.rnf originAccountID+      `Prelude.seq` Prelude.rnf originAvailabilityZone+      `Prelude.seq` Prelude.rnf originRegion
+ gen/Amazonka/DrS/Types/SourceProperties.hs view
@@ -0,0 +1,167 @@+{-# 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.DrS.Types.SourceProperties+-- 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.DrS.Types.SourceProperties where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.CPU+import Amazonka.DrS.Types.Disk+import Amazonka.DrS.Types.IdentificationHints+import Amazonka.DrS.Types.NetworkInterface+import Amazonka.DrS.Types.OS+import qualified Amazonka.Prelude as Prelude++-- | Properties of the Source Server machine.+--+-- /See:/ 'newSourceProperties' smart constructor.+data SourceProperties = SourceProperties'+  { -- | An array of CPUs.+    cpus :: Prelude.Maybe [CPU],+    -- | An array of disks.+    disks :: Prelude.Maybe [Disk],+    -- | Hints used to uniquely identify a machine.+    identificationHints :: Prelude.Maybe IdentificationHints,+    -- | The date and time the Source Properties were last updated on.+    lastUpdatedDateTime :: Prelude.Maybe Prelude.Text,+    -- | An array of network interfaces.+    networkInterfaces :: Prelude.Maybe [NetworkInterface],+    -- | Operating system.+    os :: Prelude.Maybe OS,+    -- | The amount of RAM in bytes.+    ramBytes :: Prelude.Maybe Prelude.Natural,+    -- | The recommended EC2 instance type that will be used when recovering the+    -- Source Server.+    recommendedInstanceType :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SourceProperties' 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:+--+-- 'cpus', 'sourceProperties_cpus' - An array of CPUs.+--+-- 'disks', 'sourceProperties_disks' - An array of disks.+--+-- 'identificationHints', 'sourceProperties_identificationHints' - Hints used to uniquely identify a machine.+--+-- 'lastUpdatedDateTime', 'sourceProperties_lastUpdatedDateTime' - The date and time the Source Properties were last updated on.+--+-- 'networkInterfaces', 'sourceProperties_networkInterfaces' - An array of network interfaces.+--+-- 'os', 'sourceProperties_os' - Operating system.+--+-- 'ramBytes', 'sourceProperties_ramBytes' - The amount of RAM in bytes.+--+-- 'recommendedInstanceType', 'sourceProperties_recommendedInstanceType' - The recommended EC2 instance type that will be used when recovering the+-- Source Server.+newSourceProperties ::+  SourceProperties+newSourceProperties =+  SourceProperties'+    { cpus = Prelude.Nothing,+      disks = Prelude.Nothing,+      identificationHints = Prelude.Nothing,+      lastUpdatedDateTime = Prelude.Nothing,+      networkInterfaces = Prelude.Nothing,+      os = Prelude.Nothing,+      ramBytes = Prelude.Nothing,+      recommendedInstanceType = Prelude.Nothing+    }++-- | An array of CPUs.+sourceProperties_cpus :: Lens.Lens' SourceProperties (Prelude.Maybe [CPU])+sourceProperties_cpus = Lens.lens (\SourceProperties' {cpus} -> cpus) (\s@SourceProperties' {} a -> s {cpus = a} :: SourceProperties) Prelude.. Lens.mapping Lens.coerced++-- | An array of disks.+sourceProperties_disks :: Lens.Lens' SourceProperties (Prelude.Maybe [Disk])+sourceProperties_disks = Lens.lens (\SourceProperties' {disks} -> disks) (\s@SourceProperties' {} a -> s {disks = a} :: SourceProperties) Prelude.. Lens.mapping Lens.coerced++-- | Hints used to uniquely identify a machine.+sourceProperties_identificationHints :: Lens.Lens' SourceProperties (Prelude.Maybe IdentificationHints)+sourceProperties_identificationHints = Lens.lens (\SourceProperties' {identificationHints} -> identificationHints) (\s@SourceProperties' {} a -> s {identificationHints = a} :: SourceProperties)++-- | The date and time the Source Properties were last updated on.+sourceProperties_lastUpdatedDateTime :: Lens.Lens' SourceProperties (Prelude.Maybe Prelude.Text)+sourceProperties_lastUpdatedDateTime = Lens.lens (\SourceProperties' {lastUpdatedDateTime} -> lastUpdatedDateTime) (\s@SourceProperties' {} a -> s {lastUpdatedDateTime = a} :: SourceProperties)++-- | An array of network interfaces.+sourceProperties_networkInterfaces :: Lens.Lens' SourceProperties (Prelude.Maybe [NetworkInterface])+sourceProperties_networkInterfaces = Lens.lens (\SourceProperties' {networkInterfaces} -> networkInterfaces) (\s@SourceProperties' {} a -> s {networkInterfaces = a} :: SourceProperties) Prelude.. Lens.mapping Lens.coerced++-- | Operating system.+sourceProperties_os :: Lens.Lens' SourceProperties (Prelude.Maybe OS)+sourceProperties_os = Lens.lens (\SourceProperties' {os} -> os) (\s@SourceProperties' {} a -> s {os = a} :: SourceProperties)++-- | The amount of RAM in bytes.+sourceProperties_ramBytes :: Lens.Lens' SourceProperties (Prelude.Maybe Prelude.Natural)+sourceProperties_ramBytes = Lens.lens (\SourceProperties' {ramBytes} -> ramBytes) (\s@SourceProperties' {} a -> s {ramBytes = a} :: SourceProperties)++-- | The recommended EC2 instance type that will be used when recovering the+-- Source Server.+sourceProperties_recommendedInstanceType :: Lens.Lens' SourceProperties (Prelude.Maybe Prelude.Text)+sourceProperties_recommendedInstanceType = Lens.lens (\SourceProperties' {recommendedInstanceType} -> recommendedInstanceType) (\s@SourceProperties' {} a -> s {recommendedInstanceType = a} :: SourceProperties)++instance Data.FromJSON SourceProperties where+  parseJSON =+    Data.withObject+      "SourceProperties"+      ( \x ->+          SourceProperties'+            Prelude.<$> (x Data..:? "cpus" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "disks" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "identificationHints")+            Prelude.<*> (x Data..:? "lastUpdatedDateTime")+            Prelude.<*> ( x+                            Data..:? "networkInterfaces"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "os")+            Prelude.<*> (x Data..:? "ramBytes")+            Prelude.<*> (x Data..:? "recommendedInstanceType")+      )++instance Prelude.Hashable SourceProperties where+  hashWithSalt _salt SourceProperties' {..} =+    _salt+      `Prelude.hashWithSalt` cpus+      `Prelude.hashWithSalt` disks+      `Prelude.hashWithSalt` identificationHints+      `Prelude.hashWithSalt` lastUpdatedDateTime+      `Prelude.hashWithSalt` networkInterfaces+      `Prelude.hashWithSalt` os+      `Prelude.hashWithSalt` ramBytes+      `Prelude.hashWithSalt` recommendedInstanceType++instance Prelude.NFData SourceProperties where+  rnf SourceProperties' {..} =+    Prelude.rnf cpus+      `Prelude.seq` Prelude.rnf disks+      `Prelude.seq` Prelude.rnf identificationHints+      `Prelude.seq` Prelude.rnf lastUpdatedDateTime+      `Prelude.seq` Prelude.rnf networkInterfaces+      `Prelude.seq` Prelude.rnf os+      `Prelude.seq` Prelude.rnf ramBytes+      `Prelude.seq` Prelude.rnf recommendedInstanceType
+ gen/Amazonka/DrS/Types/SourceServer.hs view
@@ -0,0 +1,215 @@+{-# 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.DrS.Types.SourceServer+-- 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.DrS.Types.SourceServer where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.DataReplicationInfo+import Amazonka.DrS.Types.LastLaunchResult+import Amazonka.DrS.Types.LifeCycle+import Amazonka.DrS.Types.ReplicationDirection+import Amazonka.DrS.Types.SourceCloudProperties+import Amazonka.DrS.Types.SourceProperties+import Amazonka.DrS.Types.StagingArea+import qualified Amazonka.Prelude as Prelude++-- | /See:/ 'newSourceServer' smart constructor.+data SourceServer = SourceServer'+  { -- | The ARN of the Source Server.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The Data Replication Info of the Source Server.+    dataReplicationInfo :: Prelude.Maybe DataReplicationInfo,+    -- | The status of the last recovery launch of this Source Server.+    lastLaunchResult :: Prelude.Maybe LastLaunchResult,+    -- | The lifecycle information of this Source Server.+    lifeCycle :: Prelude.Maybe LifeCycle,+    -- | The ID of the Recovery Instance associated with this Source Server.+    recoveryInstanceId :: Prelude.Maybe Prelude.Text,+    -- | Replication direction of the Source Server.+    replicationDirection :: Prelude.Maybe ReplicationDirection,+    -- | For EC2-originated Source Servers which have been failed over and then+    -- failed back, this value will mean the ARN of the Source Server on the+    -- opposite replication direction.+    reversedDirectionSourceServerArn :: Prelude.Maybe Prelude.Text,+    -- | Source cloud properties of the Source Server.+    sourceCloudProperties :: Prelude.Maybe SourceCloudProperties,+    -- | The source properties of the Source Server.+    sourceProperties :: Prelude.Maybe SourceProperties,+    -- | The ID of the Source Server.+    sourceServerID :: Prelude.Maybe Prelude.Text,+    -- | The staging area of the source server.+    stagingArea :: Prelude.Maybe StagingArea,+    -- | The tags associated with the Source Server.+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text))+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SourceServer' 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', 'sourceServer_arn' - The ARN of the Source Server.+--+-- 'dataReplicationInfo', 'sourceServer_dataReplicationInfo' - The Data Replication Info of the Source Server.+--+-- 'lastLaunchResult', 'sourceServer_lastLaunchResult' - The status of the last recovery launch of this Source Server.+--+-- 'lifeCycle', 'sourceServer_lifeCycle' - The lifecycle information of this Source Server.+--+-- 'recoveryInstanceId', 'sourceServer_recoveryInstanceId' - The ID of the Recovery Instance associated with this Source Server.+--+-- 'replicationDirection', 'sourceServer_replicationDirection' - Replication direction of the Source Server.+--+-- 'reversedDirectionSourceServerArn', 'sourceServer_reversedDirectionSourceServerArn' - For EC2-originated Source Servers which have been failed over and then+-- failed back, this value will mean the ARN of the Source Server on the+-- opposite replication direction.+--+-- 'sourceCloudProperties', 'sourceServer_sourceCloudProperties' - Source cloud properties of the Source Server.+--+-- 'sourceProperties', 'sourceServer_sourceProperties' - The source properties of the Source Server.+--+-- 'sourceServerID', 'sourceServer_sourceServerID' - The ID of the Source Server.+--+-- 'stagingArea', 'sourceServer_stagingArea' - The staging area of the source server.+--+-- 'tags', 'sourceServer_tags' - The tags associated with the Source Server.+newSourceServer ::+  SourceServer+newSourceServer =+  SourceServer'+    { arn = Prelude.Nothing,+      dataReplicationInfo = Prelude.Nothing,+      lastLaunchResult = Prelude.Nothing,+      lifeCycle = Prelude.Nothing,+      recoveryInstanceId = Prelude.Nothing,+      replicationDirection = Prelude.Nothing,+      reversedDirectionSourceServerArn = Prelude.Nothing,+      sourceCloudProperties = Prelude.Nothing,+      sourceProperties = Prelude.Nothing,+      sourceServerID = Prelude.Nothing,+      stagingArea = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | The ARN of the Source Server.+sourceServer_arn :: Lens.Lens' SourceServer (Prelude.Maybe Prelude.Text)+sourceServer_arn = Lens.lens (\SourceServer' {arn} -> arn) (\s@SourceServer' {} a -> s {arn = a} :: SourceServer)++-- | The Data Replication Info of the Source Server.+sourceServer_dataReplicationInfo :: Lens.Lens' SourceServer (Prelude.Maybe DataReplicationInfo)+sourceServer_dataReplicationInfo = Lens.lens (\SourceServer' {dataReplicationInfo} -> dataReplicationInfo) (\s@SourceServer' {} a -> s {dataReplicationInfo = a} :: SourceServer)++-- | The status of the last recovery launch of this Source Server.+sourceServer_lastLaunchResult :: Lens.Lens' SourceServer (Prelude.Maybe LastLaunchResult)+sourceServer_lastLaunchResult = Lens.lens (\SourceServer' {lastLaunchResult} -> lastLaunchResult) (\s@SourceServer' {} a -> s {lastLaunchResult = a} :: SourceServer)++-- | The lifecycle information of this Source Server.+sourceServer_lifeCycle :: Lens.Lens' SourceServer (Prelude.Maybe LifeCycle)+sourceServer_lifeCycle = Lens.lens (\SourceServer' {lifeCycle} -> lifeCycle) (\s@SourceServer' {} a -> s {lifeCycle = a} :: SourceServer)++-- | The ID of the Recovery Instance associated with this Source Server.+sourceServer_recoveryInstanceId :: Lens.Lens' SourceServer (Prelude.Maybe Prelude.Text)+sourceServer_recoveryInstanceId = Lens.lens (\SourceServer' {recoveryInstanceId} -> recoveryInstanceId) (\s@SourceServer' {} a -> s {recoveryInstanceId = a} :: SourceServer)++-- | Replication direction of the Source Server.+sourceServer_replicationDirection :: Lens.Lens' SourceServer (Prelude.Maybe ReplicationDirection)+sourceServer_replicationDirection = Lens.lens (\SourceServer' {replicationDirection} -> replicationDirection) (\s@SourceServer' {} a -> s {replicationDirection = a} :: SourceServer)++-- | For EC2-originated Source Servers which have been failed over and then+-- failed back, this value will mean the ARN of the Source Server on the+-- opposite replication direction.+sourceServer_reversedDirectionSourceServerArn :: Lens.Lens' SourceServer (Prelude.Maybe Prelude.Text)+sourceServer_reversedDirectionSourceServerArn = Lens.lens (\SourceServer' {reversedDirectionSourceServerArn} -> reversedDirectionSourceServerArn) (\s@SourceServer' {} a -> s {reversedDirectionSourceServerArn = a} :: SourceServer)++-- | Source cloud properties of the Source Server.+sourceServer_sourceCloudProperties :: Lens.Lens' SourceServer (Prelude.Maybe SourceCloudProperties)+sourceServer_sourceCloudProperties = Lens.lens (\SourceServer' {sourceCloudProperties} -> sourceCloudProperties) (\s@SourceServer' {} a -> s {sourceCloudProperties = a} :: SourceServer)++-- | The source properties of the Source Server.+sourceServer_sourceProperties :: Lens.Lens' SourceServer (Prelude.Maybe SourceProperties)+sourceServer_sourceProperties = Lens.lens (\SourceServer' {sourceProperties} -> sourceProperties) (\s@SourceServer' {} a -> s {sourceProperties = a} :: SourceServer)++-- | The ID of the Source Server.+sourceServer_sourceServerID :: Lens.Lens' SourceServer (Prelude.Maybe Prelude.Text)+sourceServer_sourceServerID = Lens.lens (\SourceServer' {sourceServerID} -> sourceServerID) (\s@SourceServer' {} a -> s {sourceServerID = a} :: SourceServer)++-- | The staging area of the source server.+sourceServer_stagingArea :: Lens.Lens' SourceServer (Prelude.Maybe StagingArea)+sourceServer_stagingArea = Lens.lens (\SourceServer' {stagingArea} -> stagingArea) (\s@SourceServer' {} a -> s {stagingArea = a} :: SourceServer)++-- | The tags associated with the Source Server.+sourceServer_tags :: Lens.Lens' SourceServer (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+sourceServer_tags = Lens.lens (\SourceServer' {tags} -> tags) (\s@SourceServer' {} a -> s {tags = a} :: SourceServer) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++instance Data.FromJSON SourceServer where+  parseJSON =+    Data.withObject+      "SourceServer"+      ( \x ->+          SourceServer'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "dataReplicationInfo")+            Prelude.<*> (x Data..:? "lastLaunchResult")+            Prelude.<*> (x Data..:? "lifeCycle")+            Prelude.<*> (x Data..:? "recoveryInstanceId")+            Prelude.<*> (x Data..:? "replicationDirection")+            Prelude.<*> (x Data..:? "reversedDirectionSourceServerArn")+            Prelude.<*> (x Data..:? "sourceCloudProperties")+            Prelude.<*> (x Data..:? "sourceProperties")+            Prelude.<*> (x Data..:? "sourceServerID")+            Prelude.<*> (x Data..:? "stagingArea")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable SourceServer where+  hashWithSalt _salt SourceServer' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` dataReplicationInfo+      `Prelude.hashWithSalt` lastLaunchResult+      `Prelude.hashWithSalt` lifeCycle+      `Prelude.hashWithSalt` recoveryInstanceId+      `Prelude.hashWithSalt` replicationDirection+      `Prelude.hashWithSalt` reversedDirectionSourceServerArn+      `Prelude.hashWithSalt` sourceCloudProperties+      `Prelude.hashWithSalt` sourceProperties+      `Prelude.hashWithSalt` sourceServerID+      `Prelude.hashWithSalt` stagingArea+      `Prelude.hashWithSalt` tags++instance Prelude.NFData SourceServer where+  rnf SourceServer' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf dataReplicationInfo+      `Prelude.seq` Prelude.rnf lastLaunchResult+      `Prelude.seq` Prelude.rnf lifeCycle+      `Prelude.seq` Prelude.rnf recoveryInstanceId+      `Prelude.seq` Prelude.rnf replicationDirection+      `Prelude.seq` Prelude.rnf reversedDirectionSourceServerArn+      `Prelude.seq` Prelude.rnf sourceCloudProperties+      `Prelude.seq` Prelude.rnf sourceProperties+      `Prelude.seq` Prelude.rnf sourceServerID+      `Prelude.seq` Prelude.rnf stagingArea+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/DrS/Types/StagingArea.hs view
@@ -0,0 +1,139 @@+{-# 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.DrS.Types.StagingArea+-- 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.DrS.Types.StagingArea where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types.ExtensionStatus+import qualified Amazonka.Prelude as Prelude++-- | Staging information related to source server.+--+-- /See:/ 'newStagingArea' smart constructor.+data StagingArea = StagingArea'+  { -- | Shows an error message that occurred when DRS tried to access the+    -- staging source server. In this case StagingArea$status will have value+    -- EXTENSION_ERROR+    errorMessage :: Prelude.Maybe Prelude.Text,+    -- | Account ID of the account to which source server belongs. If this source+    -- server is extended - shows Account ID of staging source server.+    stagingAccountID :: Prelude.Maybe Prelude.Text,+    -- | Arn of the staging source server if this source server is extended+    stagingSourceServerArn :: Prelude.Maybe Prelude.Text,+    -- | Status of Source server extension. Possible values: (a) NOT_EXTENDED -+    -- This is a source server that is replicating in the current account. (b)+    -- EXTENDED - Source server is extended from a staging source server. In+    -- this case, the value of stagingSourceServerArn is pointing to the Arn of+    -- the source server in the staging account. (c) EXTENSION_ERROR - Some+    -- issue occurred when accessing staging source server. In this case,+    -- errorMessage field will contain an error message that explains what+    -- happened.+    status :: Prelude.Maybe ExtensionStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StagingArea' 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:+--+-- 'errorMessage', 'stagingArea_errorMessage' - Shows an error message that occurred when DRS tried to access the+-- staging source server. In this case StagingArea$status will have value+-- EXTENSION_ERROR+--+-- 'stagingAccountID', 'stagingArea_stagingAccountID' - Account ID of the account to which source server belongs. If this source+-- server is extended - shows Account ID of staging source server.+--+-- 'stagingSourceServerArn', 'stagingArea_stagingSourceServerArn' - Arn of the staging source server if this source server is extended+--+-- 'status', 'stagingArea_status' - Status of Source server extension. Possible values: (a) NOT_EXTENDED -+-- This is a source server that is replicating in the current account. (b)+-- EXTENDED - Source server is extended from a staging source server. In+-- this case, the value of stagingSourceServerArn is pointing to the Arn of+-- the source server in the staging account. (c) EXTENSION_ERROR - Some+-- issue occurred when accessing staging source server. In this case,+-- errorMessage field will contain an error message that explains what+-- happened.+newStagingArea ::+  StagingArea+newStagingArea =+  StagingArea'+    { errorMessage = Prelude.Nothing,+      stagingAccountID = Prelude.Nothing,+      stagingSourceServerArn = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | Shows an error message that occurred when DRS tried to access the+-- staging source server. In this case StagingArea$status will have value+-- EXTENSION_ERROR+stagingArea_errorMessage :: Lens.Lens' StagingArea (Prelude.Maybe Prelude.Text)+stagingArea_errorMessage = Lens.lens (\StagingArea' {errorMessage} -> errorMessage) (\s@StagingArea' {} a -> s {errorMessage = a} :: StagingArea)++-- | Account ID of the account to which source server belongs. If this source+-- server is extended - shows Account ID of staging source server.+stagingArea_stagingAccountID :: Lens.Lens' StagingArea (Prelude.Maybe Prelude.Text)+stagingArea_stagingAccountID = Lens.lens (\StagingArea' {stagingAccountID} -> stagingAccountID) (\s@StagingArea' {} a -> s {stagingAccountID = a} :: StagingArea)++-- | Arn of the staging source server if this source server is extended+stagingArea_stagingSourceServerArn :: Lens.Lens' StagingArea (Prelude.Maybe Prelude.Text)+stagingArea_stagingSourceServerArn = Lens.lens (\StagingArea' {stagingSourceServerArn} -> stagingSourceServerArn) (\s@StagingArea' {} a -> s {stagingSourceServerArn = a} :: StagingArea)++-- | Status of Source server extension. Possible values: (a) NOT_EXTENDED -+-- This is a source server that is replicating in the current account. (b)+-- EXTENDED - Source server is extended from a staging source server. In+-- this case, the value of stagingSourceServerArn is pointing to the Arn of+-- the source server in the staging account. (c) EXTENSION_ERROR - Some+-- issue occurred when accessing staging source server. In this case,+-- errorMessage field will contain an error message that explains what+-- happened.+stagingArea_status :: Lens.Lens' StagingArea (Prelude.Maybe ExtensionStatus)+stagingArea_status = Lens.lens (\StagingArea' {status} -> status) (\s@StagingArea' {} a -> s {status = a} :: StagingArea)++instance Data.FromJSON StagingArea where+  parseJSON =+    Data.withObject+      "StagingArea"+      ( \x ->+          StagingArea'+            Prelude.<$> (x Data..:? "errorMessage")+            Prelude.<*> (x Data..:? "stagingAccountID")+            Prelude.<*> (x Data..:? "stagingSourceServerArn")+            Prelude.<*> (x Data..:? "status")+      )++instance Prelude.Hashable StagingArea where+  hashWithSalt _salt StagingArea' {..} =+    _salt+      `Prelude.hashWithSalt` errorMessage+      `Prelude.hashWithSalt` stagingAccountID+      `Prelude.hashWithSalt` stagingSourceServerArn+      `Prelude.hashWithSalt` status++instance Prelude.NFData StagingArea where+  rnf StagingArea' {..} =+    Prelude.rnf errorMessage+      `Prelude.seq` Prelude.rnf stagingAccountID+      `Prelude.seq` Prelude.rnf stagingSourceServerArn+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/DrS/Types/StagingSourceServer.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.DrS.Types.StagingSourceServer+-- 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.DrS.Types.StagingSourceServer 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++-- | Source server in staging account that extended source server connected+-- to.+--+-- /See:/ 'newStagingSourceServer' smart constructor.+data StagingSourceServer = StagingSourceServer'+  { -- | The ARN of the source server.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Hostname of staging source server.+    hostname :: Prelude.Maybe Prelude.Text,+    -- | A list of tags associated with the staging source server.+    tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text))+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StagingSourceServer' 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', 'stagingSourceServer_arn' - The ARN of the source server.+--+-- 'hostname', 'stagingSourceServer_hostname' - Hostname of staging source server.+--+-- 'tags', 'stagingSourceServer_tags' - A list of tags associated with the staging source server.+newStagingSourceServer ::+  StagingSourceServer+newStagingSourceServer =+  StagingSourceServer'+    { arn = Prelude.Nothing,+      hostname = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | The ARN of the source server.+stagingSourceServer_arn :: Lens.Lens' StagingSourceServer (Prelude.Maybe Prelude.Text)+stagingSourceServer_arn = Lens.lens (\StagingSourceServer' {arn} -> arn) (\s@StagingSourceServer' {} a -> s {arn = a} :: StagingSourceServer)++-- | Hostname of staging source server.+stagingSourceServer_hostname :: Lens.Lens' StagingSourceServer (Prelude.Maybe Prelude.Text)+stagingSourceServer_hostname = Lens.lens (\StagingSourceServer' {hostname} -> hostname) (\s@StagingSourceServer' {} a -> s {hostname = a} :: StagingSourceServer)++-- | A list of tags associated with the staging source server.+stagingSourceServer_tags :: Lens.Lens' StagingSourceServer (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+stagingSourceServer_tags = Lens.lens (\StagingSourceServer' {tags} -> tags) (\s@StagingSourceServer' {} a -> s {tags = a} :: StagingSourceServer) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++instance Data.FromJSON StagingSourceServer where+  parseJSON =+    Data.withObject+      "StagingSourceServer"+      ( \x ->+          StagingSourceServer'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "hostname")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable StagingSourceServer where+  hashWithSalt _salt StagingSourceServer' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` hostname+      `Prelude.hashWithSalt` tags++instance Prelude.NFData StagingSourceServer where+  rnf StagingSourceServer' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf hostname+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/DrS/Types/StartRecoveryRequestSourceServer.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.DrS.Types.StartRecoveryRequestSourceServer+-- 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.DrS.Types.StartRecoveryRequestSourceServer 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 Source Server to recover.+--+-- /See:/ 'newStartRecoveryRequestSourceServer' smart constructor.+data StartRecoveryRequestSourceServer = StartRecoveryRequestSourceServer'+  { -- | The ID of a Recovery Snapshot we want to recover from. Omit this field+    -- to launch from the latest data by taking an on-demand snapshot.+    recoverySnapshotID :: Prelude.Maybe Prelude.Text,+    -- | The ID of the Source Server you want to recover.+    sourceServerID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartRecoveryRequestSourceServer' 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:+--+-- 'recoverySnapshotID', 'startRecoveryRequestSourceServer_recoverySnapshotID' - The ID of a Recovery Snapshot we want to recover from. Omit this field+-- to launch from the latest data by taking an on-demand snapshot.+--+-- 'sourceServerID', 'startRecoveryRequestSourceServer_sourceServerID' - The ID of the Source Server you want to recover.+newStartRecoveryRequestSourceServer ::+  -- | 'sourceServerID'+  Prelude.Text ->+  StartRecoveryRequestSourceServer+newStartRecoveryRequestSourceServer pSourceServerID_ =+  StartRecoveryRequestSourceServer'+    { recoverySnapshotID =+        Prelude.Nothing,+      sourceServerID = pSourceServerID_+    }++-- | The ID of a Recovery Snapshot we want to recover from. Omit this field+-- to launch from the latest data by taking an on-demand snapshot.+startRecoveryRequestSourceServer_recoverySnapshotID :: Lens.Lens' StartRecoveryRequestSourceServer (Prelude.Maybe Prelude.Text)+startRecoveryRequestSourceServer_recoverySnapshotID = Lens.lens (\StartRecoveryRequestSourceServer' {recoverySnapshotID} -> recoverySnapshotID) (\s@StartRecoveryRequestSourceServer' {} a -> s {recoverySnapshotID = a} :: StartRecoveryRequestSourceServer)++-- | The ID of the Source Server you want to recover.+startRecoveryRequestSourceServer_sourceServerID :: Lens.Lens' StartRecoveryRequestSourceServer Prelude.Text+startRecoveryRequestSourceServer_sourceServerID = Lens.lens (\StartRecoveryRequestSourceServer' {sourceServerID} -> sourceServerID) (\s@StartRecoveryRequestSourceServer' {} a -> s {sourceServerID = a} :: StartRecoveryRequestSourceServer)++instance+  Prelude.Hashable+    StartRecoveryRequestSourceServer+  where+  hashWithSalt+    _salt+    StartRecoveryRequestSourceServer' {..} =+      _salt+        `Prelude.hashWithSalt` recoverySnapshotID+        `Prelude.hashWithSalt` sourceServerID++instance+  Prelude.NFData+    StartRecoveryRequestSourceServer+  where+  rnf StartRecoveryRequestSourceServer' {..} =+    Prelude.rnf recoverySnapshotID+      `Prelude.seq` Prelude.rnf sourceServerID++instance Data.ToJSON StartRecoveryRequestSourceServer where+  toJSON StartRecoveryRequestSourceServer' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("recoverySnapshotID" Data..=)+              Prelude.<$> recoverySnapshotID,+            Prelude.Just+              ("sourceServerID" Data..= sourceServerID)+          ]+      )
+ gen/Amazonka/DrS/Types/TargetInstanceTypeRightSizingMethod.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.DrS.Types.TargetInstanceTypeRightSizingMethod+-- 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.DrS.Types.TargetInstanceTypeRightSizingMethod+  ( TargetInstanceTypeRightSizingMethod+      ( ..,+        TargetInstanceTypeRightSizingMethod_BASIC,+        TargetInstanceTypeRightSizingMethod_NONE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TargetInstanceTypeRightSizingMethod = TargetInstanceTypeRightSizingMethod'+  { fromTargetInstanceTypeRightSizingMethod ::+      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 TargetInstanceTypeRightSizingMethod_BASIC :: TargetInstanceTypeRightSizingMethod+pattern TargetInstanceTypeRightSizingMethod_BASIC = TargetInstanceTypeRightSizingMethod' "BASIC"++pattern TargetInstanceTypeRightSizingMethod_NONE :: TargetInstanceTypeRightSizingMethod+pattern TargetInstanceTypeRightSizingMethod_NONE = TargetInstanceTypeRightSizingMethod' "NONE"++{-# COMPLETE+  TargetInstanceTypeRightSizingMethod_BASIC,+  TargetInstanceTypeRightSizingMethod_NONE,+  TargetInstanceTypeRightSizingMethod'+  #-}
+ gen/Amazonka/DrS/UntagResource.hs view
@@ -0,0 +1,141 @@+{-# 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.DrS.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 the specified set of tags from the specified set of Elastic+-- Disaster Recovery resources.+module Amazonka.DrS.UntagResource+  ( -- * Creating a Request+    UntagResource (..),+    newUntagResource,++    -- * Request Lenses+    untagResource_resourceArn,+    untagResource_tagKeys,++    -- * Destructuring the Response+    UntagResourceResponse (..),+    newUntagResourceResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.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'+  { -- | ARN of the resource for which tags are to be removed.+    resourceArn :: Prelude.Text,+    -- | Array of tags to be removed.+    tagKeys :: Data.Sensitive [Prelude.Text]+  }+  deriving (Prelude.Eq, 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' - ARN of the resource for which tags are to be removed.+--+-- 'tagKeys', 'untagResource_tagKeys' - Array of tags to be removed.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Prelude.mempty+    }++-- | ARN of the resource for which tags are to be removed.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | Array of tags to be removed.+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Data._Sensitive Prelude.. Lens.coerced++instance Core.AWSRequest UntagResource where+  type+    AWSResponse UntagResource =+      UntagResourceResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveNull UntagResourceResponse'++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'+  {+  }+  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.+newUntagResourceResponse ::+  UntagResourceResponse+newUntagResourceResponse = UntagResourceResponse'++instance Prelude.NFData UntagResourceResponse where+  rnf _ = ()
+ gen/Amazonka/DrS/UpdateFailbackReplicationConfiguration.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.DrS.UpdateFailbackReplicationConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Allows you to update the failback replication configuration of a+-- Recovery Instance by ID.+module Amazonka.DrS.UpdateFailbackReplicationConfiguration+  ( -- * Creating a Request+    UpdateFailbackReplicationConfiguration (..),+    newUpdateFailbackReplicationConfiguration,++    -- * Request Lenses+    updateFailbackReplicationConfiguration_bandwidthThrottling,+    updateFailbackReplicationConfiguration_name,+    updateFailbackReplicationConfiguration_usePrivateIP,+    updateFailbackReplicationConfiguration_recoveryInstanceID,++    -- * Destructuring the Response+    UpdateFailbackReplicationConfigurationResponse (..),+    newUpdateFailbackReplicationConfigurationResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateFailbackReplicationConfiguration' smart constructor.+data UpdateFailbackReplicationConfiguration = UpdateFailbackReplicationConfiguration'+  { -- | Configure bandwidth throttling for the outbound data transfer rate of+    -- the Recovery Instance in Mbps.+    bandwidthThrottling :: Prelude.Maybe Prelude.Natural,+    -- | The name of the Failback Replication Configuration.+    name :: Prelude.Maybe Prelude.Text,+    -- | Whether to use Private IP for the failback replication of the Recovery+    -- Instance.+    usePrivateIP :: Prelude.Maybe Prelude.Bool,+    -- | The ID of the Recovery Instance.+    recoveryInstanceID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateFailbackReplicationConfiguration' 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:+--+-- 'bandwidthThrottling', 'updateFailbackReplicationConfiguration_bandwidthThrottling' - Configure bandwidth throttling for the outbound data transfer rate of+-- the Recovery Instance in Mbps.+--+-- 'name', 'updateFailbackReplicationConfiguration_name' - The name of the Failback Replication Configuration.+--+-- 'usePrivateIP', 'updateFailbackReplicationConfiguration_usePrivateIP' - Whether to use Private IP for the failback replication of the Recovery+-- Instance.+--+-- 'recoveryInstanceID', 'updateFailbackReplicationConfiguration_recoveryInstanceID' - The ID of the Recovery Instance.+newUpdateFailbackReplicationConfiguration ::+  -- | 'recoveryInstanceID'+  Prelude.Text ->+  UpdateFailbackReplicationConfiguration+newUpdateFailbackReplicationConfiguration+  pRecoveryInstanceID_ =+    UpdateFailbackReplicationConfiguration'+      { bandwidthThrottling =+          Prelude.Nothing,+        name = Prelude.Nothing,+        usePrivateIP = Prelude.Nothing,+        recoveryInstanceID =+          pRecoveryInstanceID_+      }++-- | Configure bandwidth throttling for the outbound data transfer rate of+-- the Recovery Instance in Mbps.+updateFailbackReplicationConfiguration_bandwidthThrottling :: Lens.Lens' UpdateFailbackReplicationConfiguration (Prelude.Maybe Prelude.Natural)+updateFailbackReplicationConfiguration_bandwidthThrottling = Lens.lens (\UpdateFailbackReplicationConfiguration' {bandwidthThrottling} -> bandwidthThrottling) (\s@UpdateFailbackReplicationConfiguration' {} a -> s {bandwidthThrottling = a} :: UpdateFailbackReplicationConfiguration)++-- | The name of the Failback Replication Configuration.+updateFailbackReplicationConfiguration_name :: Lens.Lens' UpdateFailbackReplicationConfiguration (Prelude.Maybe Prelude.Text)+updateFailbackReplicationConfiguration_name = Lens.lens (\UpdateFailbackReplicationConfiguration' {name} -> name) (\s@UpdateFailbackReplicationConfiguration' {} a -> s {name = a} :: UpdateFailbackReplicationConfiguration)++-- | Whether to use Private IP for the failback replication of the Recovery+-- Instance.+updateFailbackReplicationConfiguration_usePrivateIP :: Lens.Lens' UpdateFailbackReplicationConfiguration (Prelude.Maybe Prelude.Bool)+updateFailbackReplicationConfiguration_usePrivateIP = Lens.lens (\UpdateFailbackReplicationConfiguration' {usePrivateIP} -> usePrivateIP) (\s@UpdateFailbackReplicationConfiguration' {} a -> s {usePrivateIP = a} :: UpdateFailbackReplicationConfiguration)++-- | The ID of the Recovery Instance.+updateFailbackReplicationConfiguration_recoveryInstanceID :: Lens.Lens' UpdateFailbackReplicationConfiguration Prelude.Text+updateFailbackReplicationConfiguration_recoveryInstanceID = Lens.lens (\UpdateFailbackReplicationConfiguration' {recoveryInstanceID} -> recoveryInstanceID) (\s@UpdateFailbackReplicationConfiguration' {} a -> s {recoveryInstanceID = a} :: UpdateFailbackReplicationConfiguration)++instance+  Core.AWSRequest+    UpdateFailbackReplicationConfiguration+  where+  type+    AWSResponse+      UpdateFailbackReplicationConfiguration =+      UpdateFailbackReplicationConfigurationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull+      UpdateFailbackReplicationConfigurationResponse'++instance+  Prelude.Hashable+    UpdateFailbackReplicationConfiguration+  where+  hashWithSalt+    _salt+    UpdateFailbackReplicationConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` bandwidthThrottling+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` usePrivateIP+        `Prelude.hashWithSalt` recoveryInstanceID++instance+  Prelude.NFData+    UpdateFailbackReplicationConfiguration+  where+  rnf UpdateFailbackReplicationConfiguration' {..} =+    Prelude.rnf bandwidthThrottling+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf usePrivateIP+      `Prelude.seq` Prelude.rnf recoveryInstanceID++instance+  Data.ToHeaders+    UpdateFailbackReplicationConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    UpdateFailbackReplicationConfiguration+  where+  toJSON UpdateFailbackReplicationConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("bandwidthThrottling" Data..=)+              Prelude.<$> bandwidthThrottling,+            ("name" Data..=) Prelude.<$> name,+            ("usePrivateIP" Data..=) Prelude.<$> usePrivateIP,+            Prelude.Just+              ("recoveryInstanceID" Data..= recoveryInstanceID)+          ]+      )++instance+  Data.ToPath+    UpdateFailbackReplicationConfiguration+  where+  toPath =+    Prelude.const+      "/UpdateFailbackReplicationConfiguration"++instance+  Data.ToQuery+    UpdateFailbackReplicationConfiguration+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateFailbackReplicationConfigurationResponse' smart constructor.+data UpdateFailbackReplicationConfigurationResponse = UpdateFailbackReplicationConfigurationResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateFailbackReplicationConfigurationResponse' 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.+newUpdateFailbackReplicationConfigurationResponse ::+  UpdateFailbackReplicationConfigurationResponse+newUpdateFailbackReplicationConfigurationResponse =+  UpdateFailbackReplicationConfigurationResponse'++instance+  Prelude.NFData+    UpdateFailbackReplicationConfigurationResponse+  where+  rnf _ = ()
+ gen/Amazonka/DrS/UpdateLaunchConfiguration.hs view
@@ -0,0 +1,225 @@+{-# 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.DrS.UpdateLaunchConfiguration+-- 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 a LaunchConfiguration by Source Server ID.+module Amazonka.DrS.UpdateLaunchConfiguration+  ( -- * Creating a Request+    UpdateLaunchConfiguration (..),+    newUpdateLaunchConfiguration,++    -- * Request Lenses+    updateLaunchConfiguration_copyPrivateIp,+    updateLaunchConfiguration_copyTags,+    updateLaunchConfiguration_launchDisposition,+    updateLaunchConfiguration_licensing,+    updateLaunchConfiguration_name,+    updateLaunchConfiguration_targetInstanceTypeRightSizingMethod,+    updateLaunchConfiguration_sourceServerID,++    -- * Destructuring the Response+    LaunchConfiguration (..),+    newLaunchConfiguration,++    -- * Response Lenses+    launchConfiguration_copyPrivateIp,+    launchConfiguration_copyTags,+    launchConfiguration_ec2LaunchTemplateID,+    launchConfiguration_launchDisposition,+    launchConfiguration_licensing,+    launchConfiguration_name,+    launchConfiguration_sourceServerID,+    launchConfiguration_targetInstanceTypeRightSizingMethod,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateLaunchConfiguration' smart constructor.+data UpdateLaunchConfiguration = UpdateLaunchConfiguration'+  { -- | Whether we should copy the Private IP of the Source Server to the+    -- Recovery Instance.+    copyPrivateIp :: Prelude.Maybe Prelude.Bool,+    -- | Whether we want to copy the tags of the Source Server to the EC2 machine+    -- of the Recovery Instance.+    copyTags :: Prelude.Maybe Prelude.Bool,+    -- | The state of the Recovery Instance in EC2 after the recovery operation.+    launchDisposition :: Prelude.Maybe LaunchDisposition,+    -- | The licensing configuration to be used for this launch configuration.+    licensing :: Prelude.Maybe Licensing,+    -- | The name of the launch configuration.+    name :: Prelude.Maybe Prelude.Text,+    -- | Whether Elastic Disaster Recovery should try to automatically choose the+    -- instance type that best matches the OS, CPU, and RAM of your Source+    -- Server.+    targetInstanceTypeRightSizingMethod :: Prelude.Maybe TargetInstanceTypeRightSizingMethod,+    -- | The ID of the Source Server that we want to retrieve a Launch+    -- Configuration for.+    sourceServerID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateLaunchConfiguration' 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:+--+-- 'copyPrivateIp', 'updateLaunchConfiguration_copyPrivateIp' - Whether we should copy the Private IP of the Source Server to the+-- Recovery Instance.+--+-- 'copyTags', 'updateLaunchConfiguration_copyTags' - Whether we want to copy the tags of the Source Server to the EC2 machine+-- of the Recovery Instance.+--+-- 'launchDisposition', 'updateLaunchConfiguration_launchDisposition' - The state of the Recovery Instance in EC2 after the recovery operation.+--+-- 'licensing', 'updateLaunchConfiguration_licensing' - The licensing configuration to be used for this launch configuration.+--+-- 'name', 'updateLaunchConfiguration_name' - The name of the launch configuration.+--+-- 'targetInstanceTypeRightSizingMethod', 'updateLaunchConfiguration_targetInstanceTypeRightSizingMethod' - Whether Elastic Disaster Recovery should try to automatically choose the+-- instance type that best matches the OS, CPU, and RAM of your Source+-- Server.+--+-- 'sourceServerID', 'updateLaunchConfiguration_sourceServerID' - The ID of the Source Server that we want to retrieve a Launch+-- Configuration for.+newUpdateLaunchConfiguration ::+  -- | 'sourceServerID'+  Prelude.Text ->+  UpdateLaunchConfiguration+newUpdateLaunchConfiguration pSourceServerID_ =+  UpdateLaunchConfiguration'+    { copyPrivateIp =+        Prelude.Nothing,+      copyTags = Prelude.Nothing,+      launchDisposition = Prelude.Nothing,+      licensing = Prelude.Nothing,+      name = Prelude.Nothing,+      targetInstanceTypeRightSizingMethod =+        Prelude.Nothing,+      sourceServerID = pSourceServerID_+    }++-- | Whether we should copy the Private IP of the Source Server to the+-- Recovery Instance.+updateLaunchConfiguration_copyPrivateIp :: Lens.Lens' UpdateLaunchConfiguration (Prelude.Maybe Prelude.Bool)+updateLaunchConfiguration_copyPrivateIp = Lens.lens (\UpdateLaunchConfiguration' {copyPrivateIp} -> copyPrivateIp) (\s@UpdateLaunchConfiguration' {} a -> s {copyPrivateIp = a} :: UpdateLaunchConfiguration)++-- | Whether we want to copy the tags of the Source Server to the EC2 machine+-- of the Recovery Instance.+updateLaunchConfiguration_copyTags :: Lens.Lens' UpdateLaunchConfiguration (Prelude.Maybe Prelude.Bool)+updateLaunchConfiguration_copyTags = Lens.lens (\UpdateLaunchConfiguration' {copyTags} -> copyTags) (\s@UpdateLaunchConfiguration' {} a -> s {copyTags = a} :: UpdateLaunchConfiguration)++-- | The state of the Recovery Instance in EC2 after the recovery operation.+updateLaunchConfiguration_launchDisposition :: Lens.Lens' UpdateLaunchConfiguration (Prelude.Maybe LaunchDisposition)+updateLaunchConfiguration_launchDisposition = Lens.lens (\UpdateLaunchConfiguration' {launchDisposition} -> launchDisposition) (\s@UpdateLaunchConfiguration' {} a -> s {launchDisposition = a} :: UpdateLaunchConfiguration)++-- | The licensing configuration to be used for this launch configuration.+updateLaunchConfiguration_licensing :: Lens.Lens' UpdateLaunchConfiguration (Prelude.Maybe Licensing)+updateLaunchConfiguration_licensing = Lens.lens (\UpdateLaunchConfiguration' {licensing} -> licensing) (\s@UpdateLaunchConfiguration' {} a -> s {licensing = a} :: UpdateLaunchConfiguration)++-- | The name of the launch configuration.+updateLaunchConfiguration_name :: Lens.Lens' UpdateLaunchConfiguration (Prelude.Maybe Prelude.Text)+updateLaunchConfiguration_name = Lens.lens (\UpdateLaunchConfiguration' {name} -> name) (\s@UpdateLaunchConfiguration' {} a -> s {name = a} :: UpdateLaunchConfiguration)++-- | Whether Elastic Disaster Recovery should try to automatically choose the+-- instance type that best matches the OS, CPU, and RAM of your Source+-- Server.+updateLaunchConfiguration_targetInstanceTypeRightSizingMethod :: Lens.Lens' UpdateLaunchConfiguration (Prelude.Maybe TargetInstanceTypeRightSizingMethod)+updateLaunchConfiguration_targetInstanceTypeRightSizingMethod = Lens.lens (\UpdateLaunchConfiguration' {targetInstanceTypeRightSizingMethod} -> targetInstanceTypeRightSizingMethod) (\s@UpdateLaunchConfiguration' {} a -> s {targetInstanceTypeRightSizingMethod = a} :: UpdateLaunchConfiguration)++-- | The ID of the Source Server that we want to retrieve a Launch+-- Configuration for.+updateLaunchConfiguration_sourceServerID :: Lens.Lens' UpdateLaunchConfiguration Prelude.Text+updateLaunchConfiguration_sourceServerID = Lens.lens (\UpdateLaunchConfiguration' {sourceServerID} -> sourceServerID) (\s@UpdateLaunchConfiguration' {} a -> s {sourceServerID = a} :: UpdateLaunchConfiguration)++instance Core.AWSRequest UpdateLaunchConfiguration where+  type+    AWSResponse UpdateLaunchConfiguration =+      LaunchConfiguration+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      (\s h x -> Data.eitherParseJSON x)++instance Prelude.Hashable UpdateLaunchConfiguration where+  hashWithSalt _salt UpdateLaunchConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` copyPrivateIp+      `Prelude.hashWithSalt` copyTags+      `Prelude.hashWithSalt` launchDisposition+      `Prelude.hashWithSalt` licensing+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` targetInstanceTypeRightSizingMethod+      `Prelude.hashWithSalt` sourceServerID++instance Prelude.NFData UpdateLaunchConfiguration where+  rnf UpdateLaunchConfiguration' {..} =+    Prelude.rnf copyPrivateIp+      `Prelude.seq` Prelude.rnf copyTags+      `Prelude.seq` Prelude.rnf launchDisposition+      `Prelude.seq` Prelude.rnf licensing+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf targetInstanceTypeRightSizingMethod+      `Prelude.seq` Prelude.rnf sourceServerID++instance Data.ToHeaders UpdateLaunchConfiguration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateLaunchConfiguration where+  toJSON UpdateLaunchConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("copyPrivateIp" Data..=) Prelude.<$> copyPrivateIp,+            ("copyTags" Data..=) Prelude.<$> copyTags,+            ("launchDisposition" Data..=)+              Prelude.<$> launchDisposition,+            ("licensing" Data..=) Prelude.<$> licensing,+            ("name" Data..=) Prelude.<$> name,+            ("targetInstanceTypeRightSizingMethod" Data..=)+              Prelude.<$> targetInstanceTypeRightSizingMethod,+            Prelude.Just+              ("sourceServerID" Data..= sourceServerID)+          ]+      )++instance Data.ToPath UpdateLaunchConfiguration where+  toPath = Prelude.const "/UpdateLaunchConfiguration"++instance Data.ToQuery UpdateLaunchConfiguration where+  toQuery = Prelude.const Prelude.mempty
+ gen/Amazonka/DrS/UpdateReplicationConfiguration.hs view
@@ -0,0 +1,383 @@+{-# 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.DrS.UpdateReplicationConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Allows you to update a ReplicationConfiguration by Source Server ID.+module Amazonka.DrS.UpdateReplicationConfiguration+  ( -- * Creating a Request+    UpdateReplicationConfiguration (..),+    newUpdateReplicationConfiguration,++    -- * Request Lenses+    updateReplicationConfiguration_associateDefaultSecurityGroup,+    updateReplicationConfiguration_bandwidthThrottling,+    updateReplicationConfiguration_createPublicIP,+    updateReplicationConfiguration_dataPlaneRouting,+    updateReplicationConfiguration_defaultLargeStagingDiskType,+    updateReplicationConfiguration_ebsEncryption,+    updateReplicationConfiguration_ebsEncryptionKeyArn,+    updateReplicationConfiguration_name,+    updateReplicationConfiguration_pitPolicy,+    updateReplicationConfiguration_replicatedDisks,+    updateReplicationConfiguration_replicationServerInstanceType,+    updateReplicationConfiguration_replicationServersSecurityGroupsIDs,+    updateReplicationConfiguration_stagingAreaSubnetId,+    updateReplicationConfiguration_stagingAreaTags,+    updateReplicationConfiguration_useDedicatedReplicationServer,+    updateReplicationConfiguration_sourceServerID,++    -- * Destructuring the Response+    ReplicationConfiguration (..),+    newReplicationConfiguration,++    -- * Response Lenses+    replicationConfiguration_associateDefaultSecurityGroup,+    replicationConfiguration_bandwidthThrottling,+    replicationConfiguration_createPublicIP,+    replicationConfiguration_dataPlaneRouting,+    replicationConfiguration_defaultLargeStagingDiskType,+    replicationConfiguration_ebsEncryption,+    replicationConfiguration_ebsEncryptionKeyArn,+    replicationConfiguration_name,+    replicationConfiguration_pitPolicy,+    replicationConfiguration_replicatedDisks,+    replicationConfiguration_replicationServerInstanceType,+    replicationConfiguration_replicationServersSecurityGroupsIDs,+    replicationConfiguration_sourceServerID,+    replicationConfiguration_stagingAreaSubnetId,+    replicationConfiguration_stagingAreaTags,+    replicationConfiguration_useDedicatedReplicationServer,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateReplicationConfiguration' smart constructor.+data UpdateReplicationConfiguration = UpdateReplicationConfiguration'+  { -- | Whether to associate the default Elastic Disaster Recovery Security+    -- group with the Replication Configuration.+    associateDefaultSecurityGroup :: Prelude.Maybe Prelude.Bool,+    -- | Configure bandwidth throttling for the outbound data transfer rate of+    -- the Source Server in Mbps.+    bandwidthThrottling :: Prelude.Maybe Prelude.Natural,+    -- | Whether to create a Public IP for the Recovery Instance by default.+    createPublicIP :: Prelude.Maybe Prelude.Bool,+    -- | The data plane routing mechanism that will be used for replication.+    dataPlaneRouting :: Prelude.Maybe ReplicationConfigurationDataPlaneRouting,+    -- | The Staging Disk EBS volume type to be used during replication.+    defaultLargeStagingDiskType :: Prelude.Maybe ReplicationConfigurationDefaultLargeStagingDiskType,+    -- | The type of EBS encryption to be used during replication.+    ebsEncryption :: Prelude.Maybe ReplicationConfigurationEbsEncryption,+    -- | The ARN of the EBS encryption key to be used during replication.+    ebsEncryptionKeyArn :: Prelude.Maybe Prelude.Text,+    -- | The name of the Replication Configuration.+    name :: Prelude.Maybe Prelude.Text,+    -- | The Point in time (PIT) policy to manage snapshots taken during+    -- replication.+    pitPolicy :: Prelude.Maybe (Prelude.NonEmpty PITPolicyRule),+    -- | The configuration of the disks of the Source Server to be replicated.+    replicatedDisks :: Prelude.Maybe [ReplicationConfigurationReplicatedDisk],+    -- | The instance type to be used for the replication server.+    replicationServerInstanceType :: Prelude.Maybe Prelude.Text,+    -- | The security group IDs that will be used by the replication server.+    replicationServersSecurityGroupsIDs :: Prelude.Maybe [Prelude.Text],+    -- | The subnet to be used by the replication staging area.+    stagingAreaSubnetId :: Prelude.Maybe Prelude.Text,+    -- | A set of tags to be associated with all resources created in the+    -- replication staging area: EC2 replication server, EBS volumes, EBS+    -- snapshots, etc.+    stagingAreaTags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | Whether to use a dedicated Replication Server in the replication staging+    -- area.+    useDedicatedReplicationServer :: Prelude.Maybe Prelude.Bool,+    -- | The ID of the Source Server for this Replication Configuration.+    sourceServerID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateReplicationConfiguration' 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:+--+-- 'associateDefaultSecurityGroup', 'updateReplicationConfiguration_associateDefaultSecurityGroup' - Whether to associate the default Elastic Disaster Recovery Security+-- group with the Replication Configuration.+--+-- 'bandwidthThrottling', 'updateReplicationConfiguration_bandwidthThrottling' - Configure bandwidth throttling for the outbound data transfer rate of+-- the Source Server in Mbps.+--+-- 'createPublicIP', 'updateReplicationConfiguration_createPublicIP' - Whether to create a Public IP for the Recovery Instance by default.+--+-- 'dataPlaneRouting', 'updateReplicationConfiguration_dataPlaneRouting' - The data plane routing mechanism that will be used for replication.+--+-- 'defaultLargeStagingDiskType', 'updateReplicationConfiguration_defaultLargeStagingDiskType' - The Staging Disk EBS volume type to be used during replication.+--+-- 'ebsEncryption', 'updateReplicationConfiguration_ebsEncryption' - The type of EBS encryption to be used during replication.+--+-- 'ebsEncryptionKeyArn', 'updateReplicationConfiguration_ebsEncryptionKeyArn' - The ARN of the EBS encryption key to be used during replication.+--+-- 'name', 'updateReplicationConfiguration_name' - The name of the Replication Configuration.+--+-- 'pitPolicy', 'updateReplicationConfiguration_pitPolicy' - The Point in time (PIT) policy to manage snapshots taken during+-- replication.+--+-- 'replicatedDisks', 'updateReplicationConfiguration_replicatedDisks' - The configuration of the disks of the Source Server to be replicated.+--+-- 'replicationServerInstanceType', 'updateReplicationConfiguration_replicationServerInstanceType' - The instance type to be used for the replication server.+--+-- 'replicationServersSecurityGroupsIDs', 'updateReplicationConfiguration_replicationServersSecurityGroupsIDs' - The security group IDs that will be used by the replication server.+--+-- 'stagingAreaSubnetId', 'updateReplicationConfiguration_stagingAreaSubnetId' - The subnet to be used by the replication staging area.+--+-- 'stagingAreaTags', 'updateReplicationConfiguration_stagingAreaTags' - A set of tags to be associated with all resources created in the+-- replication staging area: EC2 replication server, EBS volumes, EBS+-- snapshots, etc.+--+-- 'useDedicatedReplicationServer', 'updateReplicationConfiguration_useDedicatedReplicationServer' - Whether to use a dedicated Replication Server in the replication staging+-- area.+--+-- 'sourceServerID', 'updateReplicationConfiguration_sourceServerID' - The ID of the Source Server for this Replication Configuration.+newUpdateReplicationConfiguration ::+  -- | 'sourceServerID'+  Prelude.Text ->+  UpdateReplicationConfiguration+newUpdateReplicationConfiguration pSourceServerID_ =+  UpdateReplicationConfiguration'+    { associateDefaultSecurityGroup =+        Prelude.Nothing,+      bandwidthThrottling = Prelude.Nothing,+      createPublicIP = Prelude.Nothing,+      dataPlaneRouting = Prelude.Nothing,+      defaultLargeStagingDiskType =+        Prelude.Nothing,+      ebsEncryption = Prelude.Nothing,+      ebsEncryptionKeyArn = Prelude.Nothing,+      name = Prelude.Nothing,+      pitPolicy = Prelude.Nothing,+      replicatedDisks = Prelude.Nothing,+      replicationServerInstanceType =+        Prelude.Nothing,+      replicationServersSecurityGroupsIDs =+        Prelude.Nothing,+      stagingAreaSubnetId = Prelude.Nothing,+      stagingAreaTags = Prelude.Nothing,+      useDedicatedReplicationServer =+        Prelude.Nothing,+      sourceServerID = pSourceServerID_+    }++-- | Whether to associate the default Elastic Disaster Recovery Security+-- group with the Replication Configuration.+updateReplicationConfiguration_associateDefaultSecurityGroup :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Bool)+updateReplicationConfiguration_associateDefaultSecurityGroup = Lens.lens (\UpdateReplicationConfiguration' {associateDefaultSecurityGroup} -> associateDefaultSecurityGroup) (\s@UpdateReplicationConfiguration' {} a -> s {associateDefaultSecurityGroup = a} :: UpdateReplicationConfiguration)++-- | Configure bandwidth throttling for the outbound data transfer rate of+-- the Source Server in Mbps.+updateReplicationConfiguration_bandwidthThrottling :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Natural)+updateReplicationConfiguration_bandwidthThrottling = Lens.lens (\UpdateReplicationConfiguration' {bandwidthThrottling} -> bandwidthThrottling) (\s@UpdateReplicationConfiguration' {} a -> s {bandwidthThrottling = a} :: UpdateReplicationConfiguration)++-- | Whether to create a Public IP for the Recovery Instance by default.+updateReplicationConfiguration_createPublicIP :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Bool)+updateReplicationConfiguration_createPublicIP = Lens.lens (\UpdateReplicationConfiguration' {createPublicIP} -> createPublicIP) (\s@UpdateReplicationConfiguration' {} a -> s {createPublicIP = a} :: UpdateReplicationConfiguration)++-- | The data plane routing mechanism that will be used for replication.+updateReplicationConfiguration_dataPlaneRouting :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe ReplicationConfigurationDataPlaneRouting)+updateReplicationConfiguration_dataPlaneRouting = Lens.lens (\UpdateReplicationConfiguration' {dataPlaneRouting} -> dataPlaneRouting) (\s@UpdateReplicationConfiguration' {} a -> s {dataPlaneRouting = a} :: UpdateReplicationConfiguration)++-- | The Staging Disk EBS volume type to be used during replication.+updateReplicationConfiguration_defaultLargeStagingDiskType :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe ReplicationConfigurationDefaultLargeStagingDiskType)+updateReplicationConfiguration_defaultLargeStagingDiskType = Lens.lens (\UpdateReplicationConfiguration' {defaultLargeStagingDiskType} -> defaultLargeStagingDiskType) (\s@UpdateReplicationConfiguration' {} a -> s {defaultLargeStagingDiskType = a} :: UpdateReplicationConfiguration)++-- | The type of EBS encryption to be used during replication.+updateReplicationConfiguration_ebsEncryption :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe ReplicationConfigurationEbsEncryption)+updateReplicationConfiguration_ebsEncryption = Lens.lens (\UpdateReplicationConfiguration' {ebsEncryption} -> ebsEncryption) (\s@UpdateReplicationConfiguration' {} a -> s {ebsEncryption = a} :: UpdateReplicationConfiguration)++-- | The ARN of the EBS encryption key to be used during replication.+updateReplicationConfiguration_ebsEncryptionKeyArn :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Text)+updateReplicationConfiguration_ebsEncryptionKeyArn = Lens.lens (\UpdateReplicationConfiguration' {ebsEncryptionKeyArn} -> ebsEncryptionKeyArn) (\s@UpdateReplicationConfiguration' {} a -> s {ebsEncryptionKeyArn = a} :: UpdateReplicationConfiguration)++-- | The name of the Replication Configuration.+updateReplicationConfiguration_name :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Text)+updateReplicationConfiguration_name = Lens.lens (\UpdateReplicationConfiguration' {name} -> name) (\s@UpdateReplicationConfiguration' {} a -> s {name = a} :: UpdateReplicationConfiguration)++-- | The Point in time (PIT) policy to manage snapshots taken during+-- replication.+updateReplicationConfiguration_pitPolicy :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe (Prelude.NonEmpty PITPolicyRule))+updateReplicationConfiguration_pitPolicy = Lens.lens (\UpdateReplicationConfiguration' {pitPolicy} -> pitPolicy) (\s@UpdateReplicationConfiguration' {} a -> s {pitPolicy = a} :: UpdateReplicationConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The configuration of the disks of the Source Server to be replicated.+updateReplicationConfiguration_replicatedDisks :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe [ReplicationConfigurationReplicatedDisk])+updateReplicationConfiguration_replicatedDisks = Lens.lens (\UpdateReplicationConfiguration' {replicatedDisks} -> replicatedDisks) (\s@UpdateReplicationConfiguration' {} a -> s {replicatedDisks = a} :: UpdateReplicationConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The instance type to be used for the replication server.+updateReplicationConfiguration_replicationServerInstanceType :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Text)+updateReplicationConfiguration_replicationServerInstanceType = Lens.lens (\UpdateReplicationConfiguration' {replicationServerInstanceType} -> replicationServerInstanceType) (\s@UpdateReplicationConfiguration' {} a -> s {replicationServerInstanceType = a} :: UpdateReplicationConfiguration)++-- | The security group IDs that will be used by the replication server.+updateReplicationConfiguration_replicationServersSecurityGroupsIDs :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe [Prelude.Text])+updateReplicationConfiguration_replicationServersSecurityGroupsIDs = Lens.lens (\UpdateReplicationConfiguration' {replicationServersSecurityGroupsIDs} -> replicationServersSecurityGroupsIDs) (\s@UpdateReplicationConfiguration' {} a -> s {replicationServersSecurityGroupsIDs = a} :: UpdateReplicationConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The subnet to be used by the replication staging area.+updateReplicationConfiguration_stagingAreaSubnetId :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Text)+updateReplicationConfiguration_stagingAreaSubnetId = Lens.lens (\UpdateReplicationConfiguration' {stagingAreaSubnetId} -> stagingAreaSubnetId) (\s@UpdateReplicationConfiguration' {} a -> s {stagingAreaSubnetId = a} :: UpdateReplicationConfiguration)++-- | A set of tags to be associated with all resources created in the+-- replication staging area: EC2 replication server, EBS volumes, EBS+-- snapshots, etc.+updateReplicationConfiguration_stagingAreaTags :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+updateReplicationConfiguration_stagingAreaTags = Lens.lens (\UpdateReplicationConfiguration' {stagingAreaTags} -> stagingAreaTags) (\s@UpdateReplicationConfiguration' {} a -> s {stagingAreaTags = a} :: UpdateReplicationConfiguration) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | Whether to use a dedicated Replication Server in the replication staging+-- area.+updateReplicationConfiguration_useDedicatedReplicationServer :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Bool)+updateReplicationConfiguration_useDedicatedReplicationServer = Lens.lens (\UpdateReplicationConfiguration' {useDedicatedReplicationServer} -> useDedicatedReplicationServer) (\s@UpdateReplicationConfiguration' {} a -> s {useDedicatedReplicationServer = a} :: UpdateReplicationConfiguration)++-- | The ID of the Source Server for this Replication Configuration.+updateReplicationConfiguration_sourceServerID :: Lens.Lens' UpdateReplicationConfiguration Prelude.Text+updateReplicationConfiguration_sourceServerID = Lens.lens (\UpdateReplicationConfiguration' {sourceServerID} -> sourceServerID) (\s@UpdateReplicationConfiguration' {} a -> s {sourceServerID = a} :: UpdateReplicationConfiguration)++instance+  Core.AWSRequest+    UpdateReplicationConfiguration+  where+  type+    AWSResponse UpdateReplicationConfiguration =+      ReplicationConfiguration+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      (\s h x -> Data.eitherParseJSON x)++instance+  Prelude.Hashable+    UpdateReplicationConfiguration+  where+  hashWithSalt+    _salt+    UpdateReplicationConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` associateDefaultSecurityGroup+        `Prelude.hashWithSalt` bandwidthThrottling+        `Prelude.hashWithSalt` createPublicIP+        `Prelude.hashWithSalt` dataPlaneRouting+        `Prelude.hashWithSalt` defaultLargeStagingDiskType+        `Prelude.hashWithSalt` ebsEncryption+        `Prelude.hashWithSalt` ebsEncryptionKeyArn+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` pitPolicy+        `Prelude.hashWithSalt` replicatedDisks+        `Prelude.hashWithSalt` replicationServerInstanceType+        `Prelude.hashWithSalt` replicationServersSecurityGroupsIDs+        `Prelude.hashWithSalt` stagingAreaSubnetId+        `Prelude.hashWithSalt` stagingAreaTags+        `Prelude.hashWithSalt` useDedicatedReplicationServer+        `Prelude.hashWithSalt` sourceServerID++instance+  Prelude.NFData+    UpdateReplicationConfiguration+  where+  rnf UpdateReplicationConfiguration' {..} =+    Prelude.rnf associateDefaultSecurityGroup+      `Prelude.seq` Prelude.rnf bandwidthThrottling+      `Prelude.seq` Prelude.rnf createPublicIP+      `Prelude.seq` Prelude.rnf dataPlaneRouting+      `Prelude.seq` Prelude.rnf defaultLargeStagingDiskType+      `Prelude.seq` Prelude.rnf ebsEncryption+      `Prelude.seq` Prelude.rnf ebsEncryptionKeyArn+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf pitPolicy+      `Prelude.seq` Prelude.rnf replicatedDisks+      `Prelude.seq` Prelude.rnf replicationServerInstanceType+      `Prelude.seq` Prelude.rnf+        replicationServersSecurityGroupsIDs+      `Prelude.seq` Prelude.rnf stagingAreaSubnetId+      `Prelude.seq` Prelude.rnf stagingAreaTags+      `Prelude.seq` Prelude.rnf+        useDedicatedReplicationServer+      `Prelude.seq` Prelude.rnf sourceServerID++instance+  Data.ToHeaders+    UpdateReplicationConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateReplicationConfiguration where+  toJSON UpdateReplicationConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("associateDefaultSecurityGroup" Data..=)+              Prelude.<$> associateDefaultSecurityGroup,+            ("bandwidthThrottling" Data..=)+              Prelude.<$> bandwidthThrottling,+            ("createPublicIP" Data..=)+              Prelude.<$> createPublicIP,+            ("dataPlaneRouting" Data..=)+              Prelude.<$> dataPlaneRouting,+            ("defaultLargeStagingDiskType" Data..=)+              Prelude.<$> defaultLargeStagingDiskType,+            ("ebsEncryption" Data..=) Prelude.<$> ebsEncryption,+            ("ebsEncryptionKeyArn" Data..=)+              Prelude.<$> ebsEncryptionKeyArn,+            ("name" Data..=) Prelude.<$> name,+            ("pitPolicy" Data..=) Prelude.<$> pitPolicy,+            ("replicatedDisks" Data..=)+              Prelude.<$> replicatedDisks,+            ("replicationServerInstanceType" Data..=)+              Prelude.<$> replicationServerInstanceType,+            ("replicationServersSecurityGroupsIDs" Data..=)+              Prelude.<$> replicationServersSecurityGroupsIDs,+            ("stagingAreaSubnetId" Data..=)+              Prelude.<$> stagingAreaSubnetId,+            ("stagingAreaTags" Data..=)+              Prelude.<$> stagingAreaTags,+            ("useDedicatedReplicationServer" Data..=)+              Prelude.<$> useDedicatedReplicationServer,+            Prelude.Just+              ("sourceServerID" Data..= sourceServerID)+          ]+      )++instance Data.ToPath UpdateReplicationConfiguration where+  toPath =+    Prelude.const "/UpdateReplicationConfiguration"++instance Data.ToQuery UpdateReplicationConfiguration where+  toQuery = Prelude.const Prelude.mempty
+ gen/Amazonka/DrS/UpdateReplicationConfigurationTemplate.hs view
@@ -0,0 +1,387 @@+{-# 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.DrS.UpdateReplicationConfigurationTemplate+-- 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 a ReplicationConfigurationTemplate by ID.+module Amazonka.DrS.UpdateReplicationConfigurationTemplate+  ( -- * Creating a Request+    UpdateReplicationConfigurationTemplate (..),+    newUpdateReplicationConfigurationTemplate,++    -- * Request Lenses+    updateReplicationConfigurationTemplate_arn,+    updateReplicationConfigurationTemplate_associateDefaultSecurityGroup,+    updateReplicationConfigurationTemplate_bandwidthThrottling,+    updateReplicationConfigurationTemplate_createPublicIP,+    updateReplicationConfigurationTemplate_dataPlaneRouting,+    updateReplicationConfigurationTemplate_defaultLargeStagingDiskType,+    updateReplicationConfigurationTemplate_ebsEncryption,+    updateReplicationConfigurationTemplate_ebsEncryptionKeyArn,+    updateReplicationConfigurationTemplate_pitPolicy,+    updateReplicationConfigurationTemplate_replicationServerInstanceType,+    updateReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs,+    updateReplicationConfigurationTemplate_stagingAreaSubnetId,+    updateReplicationConfigurationTemplate_stagingAreaTags,+    updateReplicationConfigurationTemplate_useDedicatedReplicationServer,+    updateReplicationConfigurationTemplate_replicationConfigurationTemplateID,++    -- * Destructuring the Response+    ReplicationConfigurationTemplate (..),+    newReplicationConfigurationTemplate,++    -- * Response Lenses+    replicationConfigurationTemplate_arn,+    replicationConfigurationTemplate_associateDefaultSecurityGroup,+    replicationConfigurationTemplate_bandwidthThrottling,+    replicationConfigurationTemplate_createPublicIP,+    replicationConfigurationTemplate_dataPlaneRouting,+    replicationConfigurationTemplate_defaultLargeStagingDiskType,+    replicationConfigurationTemplate_ebsEncryption,+    replicationConfigurationTemplate_ebsEncryptionKeyArn,+    replicationConfigurationTemplate_pitPolicy,+    replicationConfigurationTemplate_replicationServerInstanceType,+    replicationConfigurationTemplate_replicationServersSecurityGroupsIDs,+    replicationConfigurationTemplate_stagingAreaSubnetId,+    replicationConfigurationTemplate_stagingAreaTags,+    replicationConfigurationTemplate_tags,+    replicationConfigurationTemplate_useDedicatedReplicationServer,+    replicationConfigurationTemplate_replicationConfigurationTemplateID,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateReplicationConfigurationTemplate' smart constructor.+data UpdateReplicationConfigurationTemplate = UpdateReplicationConfigurationTemplate'+  { -- | The Replication Configuration Template ARN.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Whether to associate the default Elastic Disaster Recovery Security+    -- group with the Replication Configuration Template.+    associateDefaultSecurityGroup :: Prelude.Maybe Prelude.Bool,+    -- | Configure bandwidth throttling for the outbound data transfer rate of+    -- the Source Server in Mbps.+    bandwidthThrottling :: Prelude.Maybe Prelude.Natural,+    -- | Whether to create a Public IP for the Recovery Instance by default.+    createPublicIP :: Prelude.Maybe Prelude.Bool,+    -- | The data plane routing mechanism that will be used for replication.+    dataPlaneRouting :: Prelude.Maybe ReplicationConfigurationDataPlaneRouting,+    -- | The Staging Disk EBS volume type to be used during replication.+    defaultLargeStagingDiskType :: Prelude.Maybe ReplicationConfigurationDefaultLargeStagingDiskType,+    -- | The type of EBS encryption to be used during replication.+    ebsEncryption :: Prelude.Maybe ReplicationConfigurationEbsEncryption,+    -- | The ARN of the EBS encryption key to be used during replication.+    ebsEncryptionKeyArn :: Prelude.Maybe Prelude.Text,+    -- | The Point in time (PIT) policy to manage snapshots taken during+    -- replication.+    pitPolicy :: Prelude.Maybe (Prelude.NonEmpty PITPolicyRule),+    -- | The instance type to be used for the replication server.+    replicationServerInstanceType :: Prelude.Maybe Prelude.Text,+    -- | The security group IDs that will be used by the replication server.+    replicationServersSecurityGroupsIDs :: Prelude.Maybe [Prelude.Text],+    -- | The subnet to be used by the replication staging area.+    stagingAreaSubnetId :: Prelude.Maybe Prelude.Text,+    -- | A set of tags to be associated with all resources created in the+    -- replication staging area: EC2 replication server, EBS volumes, EBS+    -- snapshots, etc.+    stagingAreaTags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),+    -- | Whether to use a dedicated Replication Server in the replication staging+    -- area.+    useDedicatedReplicationServer :: Prelude.Maybe Prelude.Bool,+    -- | The Replication Configuration Template ID.+    replicationConfigurationTemplateID :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateReplicationConfigurationTemplate' 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', 'updateReplicationConfigurationTemplate_arn' - The Replication Configuration Template ARN.+--+-- 'associateDefaultSecurityGroup', 'updateReplicationConfigurationTemplate_associateDefaultSecurityGroup' - Whether to associate the default Elastic Disaster Recovery Security+-- group with the Replication Configuration Template.+--+-- 'bandwidthThrottling', 'updateReplicationConfigurationTemplate_bandwidthThrottling' - Configure bandwidth throttling for the outbound data transfer rate of+-- the Source Server in Mbps.+--+-- 'createPublicIP', 'updateReplicationConfigurationTemplate_createPublicIP' - Whether to create a Public IP for the Recovery Instance by default.+--+-- 'dataPlaneRouting', 'updateReplicationConfigurationTemplate_dataPlaneRouting' - The data plane routing mechanism that will be used for replication.+--+-- 'defaultLargeStagingDiskType', 'updateReplicationConfigurationTemplate_defaultLargeStagingDiskType' - The Staging Disk EBS volume type to be used during replication.+--+-- 'ebsEncryption', 'updateReplicationConfigurationTemplate_ebsEncryption' - The type of EBS encryption to be used during replication.+--+-- 'ebsEncryptionKeyArn', 'updateReplicationConfigurationTemplate_ebsEncryptionKeyArn' - The ARN of the EBS encryption key to be used during replication.+--+-- 'pitPolicy', 'updateReplicationConfigurationTemplate_pitPolicy' - The Point in time (PIT) policy to manage snapshots taken during+-- replication.+--+-- 'replicationServerInstanceType', 'updateReplicationConfigurationTemplate_replicationServerInstanceType' - The instance type to be used for the replication server.+--+-- 'replicationServersSecurityGroupsIDs', 'updateReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs' - The security group IDs that will be used by the replication server.+--+-- 'stagingAreaSubnetId', 'updateReplicationConfigurationTemplate_stagingAreaSubnetId' - The subnet to be used by the replication staging area.+--+-- 'stagingAreaTags', 'updateReplicationConfigurationTemplate_stagingAreaTags' - A set of tags to be associated with all resources created in the+-- replication staging area: EC2 replication server, EBS volumes, EBS+-- snapshots, etc.+--+-- 'useDedicatedReplicationServer', 'updateReplicationConfigurationTemplate_useDedicatedReplicationServer' - Whether to use a dedicated Replication Server in the replication staging+-- area.+--+-- 'replicationConfigurationTemplateID', 'updateReplicationConfigurationTemplate_replicationConfigurationTemplateID' - The Replication Configuration Template ID.+newUpdateReplicationConfigurationTemplate ::+  -- | 'replicationConfigurationTemplateID'+  Prelude.Text ->+  UpdateReplicationConfigurationTemplate+newUpdateReplicationConfigurationTemplate+  pReplicationConfigurationTemplateID_ =+    UpdateReplicationConfigurationTemplate'+      { arn =+          Prelude.Nothing,+        associateDefaultSecurityGroup =+          Prelude.Nothing,+        bandwidthThrottling =+          Prelude.Nothing,+        createPublicIP = Prelude.Nothing,+        dataPlaneRouting = Prelude.Nothing,+        defaultLargeStagingDiskType =+          Prelude.Nothing,+        ebsEncryption = Prelude.Nothing,+        ebsEncryptionKeyArn =+          Prelude.Nothing,+        pitPolicy = Prelude.Nothing,+        replicationServerInstanceType =+          Prelude.Nothing,+        replicationServersSecurityGroupsIDs =+          Prelude.Nothing,+        stagingAreaSubnetId =+          Prelude.Nothing,+        stagingAreaTags = Prelude.Nothing,+        useDedicatedReplicationServer =+          Prelude.Nothing,+        replicationConfigurationTemplateID =+          pReplicationConfigurationTemplateID_+      }++-- | The Replication Configuration Template ARN.+updateReplicationConfigurationTemplate_arn :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)+updateReplicationConfigurationTemplate_arn = Lens.lens (\UpdateReplicationConfigurationTemplate' {arn} -> arn) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {arn = a} :: UpdateReplicationConfigurationTemplate)++-- | Whether to associate the default Elastic Disaster Recovery Security+-- group with the Replication Configuration Template.+updateReplicationConfigurationTemplate_associateDefaultSecurityGroup :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Bool)+updateReplicationConfigurationTemplate_associateDefaultSecurityGroup = Lens.lens (\UpdateReplicationConfigurationTemplate' {associateDefaultSecurityGroup} -> associateDefaultSecurityGroup) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {associateDefaultSecurityGroup = a} :: UpdateReplicationConfigurationTemplate)++-- | Configure bandwidth throttling for the outbound data transfer rate of+-- the Source Server in Mbps.+updateReplicationConfigurationTemplate_bandwidthThrottling :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Natural)+updateReplicationConfigurationTemplate_bandwidthThrottling = Lens.lens (\UpdateReplicationConfigurationTemplate' {bandwidthThrottling} -> bandwidthThrottling) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {bandwidthThrottling = a} :: UpdateReplicationConfigurationTemplate)++-- | Whether to create a Public IP for the Recovery Instance by default.+updateReplicationConfigurationTemplate_createPublicIP :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Bool)+updateReplicationConfigurationTemplate_createPublicIP = Lens.lens (\UpdateReplicationConfigurationTemplate' {createPublicIP} -> createPublicIP) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {createPublicIP = a} :: UpdateReplicationConfigurationTemplate)++-- | The data plane routing mechanism that will be used for replication.+updateReplicationConfigurationTemplate_dataPlaneRouting :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe ReplicationConfigurationDataPlaneRouting)+updateReplicationConfigurationTemplate_dataPlaneRouting = Lens.lens (\UpdateReplicationConfigurationTemplate' {dataPlaneRouting} -> dataPlaneRouting) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {dataPlaneRouting = a} :: UpdateReplicationConfigurationTemplate)++-- | The Staging Disk EBS volume type to be used during replication.+updateReplicationConfigurationTemplate_defaultLargeStagingDiskType :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe ReplicationConfigurationDefaultLargeStagingDiskType)+updateReplicationConfigurationTemplate_defaultLargeStagingDiskType = Lens.lens (\UpdateReplicationConfigurationTemplate' {defaultLargeStagingDiskType} -> defaultLargeStagingDiskType) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {defaultLargeStagingDiskType = a} :: UpdateReplicationConfigurationTemplate)++-- | The type of EBS encryption to be used during replication.+updateReplicationConfigurationTemplate_ebsEncryption :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe ReplicationConfigurationEbsEncryption)+updateReplicationConfigurationTemplate_ebsEncryption = Lens.lens (\UpdateReplicationConfigurationTemplate' {ebsEncryption} -> ebsEncryption) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {ebsEncryption = a} :: UpdateReplicationConfigurationTemplate)++-- | The ARN of the EBS encryption key to be used during replication.+updateReplicationConfigurationTemplate_ebsEncryptionKeyArn :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)+updateReplicationConfigurationTemplate_ebsEncryptionKeyArn = Lens.lens (\UpdateReplicationConfigurationTemplate' {ebsEncryptionKeyArn} -> ebsEncryptionKeyArn) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {ebsEncryptionKeyArn = a} :: UpdateReplicationConfigurationTemplate)++-- | The Point in time (PIT) policy to manage snapshots taken during+-- replication.+updateReplicationConfigurationTemplate_pitPolicy :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe (Prelude.NonEmpty PITPolicyRule))+updateReplicationConfigurationTemplate_pitPolicy = Lens.lens (\UpdateReplicationConfigurationTemplate' {pitPolicy} -> pitPolicy) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {pitPolicy = a} :: UpdateReplicationConfigurationTemplate) Prelude.. Lens.mapping Lens.coerced++-- | The instance type to be used for the replication server.+updateReplicationConfigurationTemplate_replicationServerInstanceType :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)+updateReplicationConfigurationTemplate_replicationServerInstanceType = Lens.lens (\UpdateReplicationConfigurationTemplate' {replicationServerInstanceType} -> replicationServerInstanceType) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {replicationServerInstanceType = a} :: UpdateReplicationConfigurationTemplate)++-- | The security group IDs that will be used by the replication server.+updateReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe [Prelude.Text])+updateReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs = Lens.lens (\UpdateReplicationConfigurationTemplate' {replicationServersSecurityGroupsIDs} -> replicationServersSecurityGroupsIDs) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {replicationServersSecurityGroupsIDs = a} :: UpdateReplicationConfigurationTemplate) Prelude.. Lens.mapping Lens.coerced++-- | The subnet to be used by the replication staging area.+updateReplicationConfigurationTemplate_stagingAreaSubnetId :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)+updateReplicationConfigurationTemplate_stagingAreaSubnetId = Lens.lens (\UpdateReplicationConfigurationTemplate' {stagingAreaSubnetId} -> stagingAreaSubnetId) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {stagingAreaSubnetId = a} :: UpdateReplicationConfigurationTemplate)++-- | A set of tags to be associated with all resources created in the+-- replication staging area: EC2 replication server, EBS volumes, EBS+-- snapshots, etc.+updateReplicationConfigurationTemplate_stagingAreaTags :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+updateReplicationConfigurationTemplate_stagingAreaTags = Lens.lens (\UpdateReplicationConfigurationTemplate' {stagingAreaTags} -> stagingAreaTags) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {stagingAreaTags = a} :: UpdateReplicationConfigurationTemplate) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | Whether to use a dedicated Replication Server in the replication staging+-- area.+updateReplicationConfigurationTemplate_useDedicatedReplicationServer :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Bool)+updateReplicationConfigurationTemplate_useDedicatedReplicationServer = Lens.lens (\UpdateReplicationConfigurationTemplate' {useDedicatedReplicationServer} -> useDedicatedReplicationServer) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {useDedicatedReplicationServer = a} :: UpdateReplicationConfigurationTemplate)++-- | The Replication Configuration Template ID.+updateReplicationConfigurationTemplate_replicationConfigurationTemplateID :: Lens.Lens' UpdateReplicationConfigurationTemplate Prelude.Text+updateReplicationConfigurationTemplate_replicationConfigurationTemplateID = Lens.lens (\UpdateReplicationConfigurationTemplate' {replicationConfigurationTemplateID} -> replicationConfigurationTemplateID) (\s@UpdateReplicationConfigurationTemplate' {} a -> s {replicationConfigurationTemplateID = a} :: UpdateReplicationConfigurationTemplate)++instance+  Core.AWSRequest+    UpdateReplicationConfigurationTemplate+  where+  type+    AWSResponse+      UpdateReplicationConfigurationTemplate =+      ReplicationConfigurationTemplate+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      (\s h x -> Data.eitherParseJSON x)++instance+  Prelude.Hashable+    UpdateReplicationConfigurationTemplate+  where+  hashWithSalt+    _salt+    UpdateReplicationConfigurationTemplate' {..} =+      _salt+        `Prelude.hashWithSalt` arn+        `Prelude.hashWithSalt` associateDefaultSecurityGroup+        `Prelude.hashWithSalt` bandwidthThrottling+        `Prelude.hashWithSalt` createPublicIP+        `Prelude.hashWithSalt` dataPlaneRouting+        `Prelude.hashWithSalt` defaultLargeStagingDiskType+        `Prelude.hashWithSalt` ebsEncryption+        `Prelude.hashWithSalt` ebsEncryptionKeyArn+        `Prelude.hashWithSalt` pitPolicy+        `Prelude.hashWithSalt` replicationServerInstanceType+        `Prelude.hashWithSalt` replicationServersSecurityGroupsIDs+        `Prelude.hashWithSalt` stagingAreaSubnetId+        `Prelude.hashWithSalt` stagingAreaTags+        `Prelude.hashWithSalt` useDedicatedReplicationServer+        `Prelude.hashWithSalt` replicationConfigurationTemplateID++instance+  Prelude.NFData+    UpdateReplicationConfigurationTemplate+  where+  rnf UpdateReplicationConfigurationTemplate' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf associateDefaultSecurityGroup+      `Prelude.seq` Prelude.rnf bandwidthThrottling+      `Prelude.seq` Prelude.rnf createPublicIP+      `Prelude.seq` Prelude.rnf dataPlaneRouting+      `Prelude.seq` Prelude.rnf defaultLargeStagingDiskType+      `Prelude.seq` Prelude.rnf ebsEncryption+      `Prelude.seq` Prelude.rnf ebsEncryptionKeyArn+      `Prelude.seq` Prelude.rnf pitPolicy+      `Prelude.seq` Prelude.rnf replicationServerInstanceType+      `Prelude.seq` Prelude.rnf replicationServersSecurityGroupsIDs+      `Prelude.seq` Prelude.rnf stagingAreaSubnetId+      `Prelude.seq` Prelude.rnf stagingAreaTags+      `Prelude.seq` Prelude.rnf useDedicatedReplicationServer+      `Prelude.seq` Prelude.rnf+        replicationConfigurationTemplateID++instance+  Data.ToHeaders+    UpdateReplicationConfigurationTemplate+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    UpdateReplicationConfigurationTemplate+  where+  toJSON UpdateReplicationConfigurationTemplate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("arn" Data..=) Prelude.<$> arn,+            ("associateDefaultSecurityGroup" Data..=)+              Prelude.<$> associateDefaultSecurityGroup,+            ("bandwidthThrottling" Data..=)+              Prelude.<$> bandwidthThrottling,+            ("createPublicIP" Data..=)+              Prelude.<$> createPublicIP,+            ("dataPlaneRouting" Data..=)+              Prelude.<$> dataPlaneRouting,+            ("defaultLargeStagingDiskType" Data..=)+              Prelude.<$> defaultLargeStagingDiskType,+            ("ebsEncryption" Data..=) Prelude.<$> ebsEncryption,+            ("ebsEncryptionKeyArn" Data..=)+              Prelude.<$> ebsEncryptionKeyArn,+            ("pitPolicy" Data..=) Prelude.<$> pitPolicy,+            ("replicationServerInstanceType" Data..=)+              Prelude.<$> replicationServerInstanceType,+            ("replicationServersSecurityGroupsIDs" Data..=)+              Prelude.<$> replicationServersSecurityGroupsIDs,+            ("stagingAreaSubnetId" Data..=)+              Prelude.<$> stagingAreaSubnetId,+            ("stagingAreaTags" Data..=)+              Prelude.<$> stagingAreaTags,+            ("useDedicatedReplicationServer" Data..=)+              Prelude.<$> useDedicatedReplicationServer,+            Prelude.Just+              ( "replicationConfigurationTemplateID"+                  Data..= replicationConfigurationTemplateID+              )+          ]+      )++instance+  Data.ToPath+    UpdateReplicationConfigurationTemplate+  where+  toPath =+    Prelude.const+      "/UpdateReplicationConfigurationTemplate"++instance+  Data.ToQuery+    UpdateReplicationConfigurationTemplate+  where+  toQuery = Prelude.const Prelude.mempty
+ gen/Amazonka/DrS/Waiters.hs view
@@ -0,0 +1,24 @@+{-# 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.DrS.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.DrS.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.DrS.Lens+import Amazonka.DrS.Types+import qualified Amazonka.Prelude as Prelude
+ 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.DrS+import Test.Amazonka.DrS.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "DrS"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/DrS.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.DrS+-- 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.DrS+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/DrS/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.DrS.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.DrS.Internal where
+ test/Test/Amazonka/Gen/DrS.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.DrS+-- 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.DrS where++import Amazonka.DrS+import qualified Data.Proxy as Proxy+import Test.Amazonka.DrS.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"+--         [ requestCreateExtendedSourceServer $+--             newCreateExtendedSourceServer+--+--         , requestCreateReplicationConfigurationTemplate $+--             newCreateReplicationConfigurationTemplate+--+--         , requestDeleteJob $+--             newDeleteJob+--+--         , requestDeleteRecoveryInstance $+--             newDeleteRecoveryInstance+--+--         , requestDeleteReplicationConfigurationTemplate $+--             newDeleteReplicationConfigurationTemplate+--+--         , requestDeleteSourceServer $+--             newDeleteSourceServer+--+--         , requestDescribeJobLogItems $+--             newDescribeJobLogItems+--+--         , requestDescribeJobs $+--             newDescribeJobs+--+--         , requestDescribeRecoveryInstances $+--             newDescribeRecoveryInstances+--+--         , requestDescribeRecoverySnapshots $+--             newDescribeRecoverySnapshots+--+--         , requestDescribeReplicationConfigurationTemplates $+--             newDescribeReplicationConfigurationTemplates+--+--         , requestDescribeSourceServers $+--             newDescribeSourceServers+--+--         , requestDisconnectRecoveryInstance $+--             newDisconnectRecoveryInstance+--+--         , requestDisconnectSourceServer $+--             newDisconnectSourceServer+--+--         , requestGetFailbackReplicationConfiguration $+--             newGetFailbackReplicationConfiguration+--+--         , requestGetLaunchConfiguration $+--             newGetLaunchConfiguration+--+--         , requestGetReplicationConfiguration $+--             newGetReplicationConfiguration+--+--         , requestInitializeService $+--             newInitializeService+--+--         , requestListExtensibleSourceServers $+--             newListExtensibleSourceServers+--+--         , requestListStagingAccounts $+--             newListStagingAccounts+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestRetryDataReplication $+--             newRetryDataReplication+--+--         , requestReverseReplication $+--             newReverseReplication+--+--         , requestStartFailbackLaunch $+--             newStartFailbackLaunch+--+--         , requestStartRecovery $+--             newStartRecovery+--+--         , requestStartReplication $+--             newStartReplication+--+--         , requestStopFailback $+--             newStopFailback+--+--         , requestStopReplication $+--             newStopReplication+--+--         , requestTagResource $+--             newTagResource+--+--         , requestTerminateRecoveryInstances $+--             newTerminateRecoveryInstances+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateFailbackReplicationConfiguration $+--             newUpdateFailbackReplicationConfiguration+--+--         , requestUpdateLaunchConfiguration $+--             newUpdateLaunchConfiguration+--+--         , requestUpdateReplicationConfiguration $+--             newUpdateReplicationConfiguration+--+--         , requestUpdateReplicationConfigurationTemplate $+--             newUpdateReplicationConfigurationTemplate+--+--           ]++--     , testGroup "response"+--         [ responseCreateExtendedSourceServer $+--             newCreateExtendedSourceServerResponse+--+--         , responseCreateReplicationConfigurationTemplate $+--             newReplicationConfigurationTemplate+--+--         , responseDeleteJob $+--             newDeleteJobResponse+--+--         , responseDeleteRecoveryInstance $+--             newDeleteRecoveryInstanceResponse+--+--         , responseDeleteReplicationConfigurationTemplate $+--             newDeleteReplicationConfigurationTemplateResponse+--+--         , responseDeleteSourceServer $+--             newDeleteSourceServerResponse+--+--         , responseDescribeJobLogItems $+--             newDescribeJobLogItemsResponse+--+--         , responseDescribeJobs $+--             newDescribeJobsResponse+--+--         , responseDescribeRecoveryInstances $+--             newDescribeRecoveryInstancesResponse+--+--         , responseDescribeRecoverySnapshots $+--             newDescribeRecoverySnapshotsResponse+--+--         , responseDescribeReplicationConfigurationTemplates $+--             newDescribeReplicationConfigurationTemplatesResponse+--+--         , responseDescribeSourceServers $+--             newDescribeSourceServersResponse+--+--         , responseDisconnectRecoveryInstance $+--             newDisconnectRecoveryInstanceResponse+--+--         , responseDisconnectSourceServer $+--             newSourceServer+--+--         , responseGetFailbackReplicationConfiguration $+--             newGetFailbackReplicationConfigurationResponse+--+--         , responseGetLaunchConfiguration $+--             newLaunchConfiguration+--+--         , responseGetReplicationConfiguration $+--             newReplicationConfiguration+--+--         , responseInitializeService $+--             newInitializeServiceResponse+--+--         , responseListExtensibleSourceServers $+--             newListExtensibleSourceServersResponse+--+--         , responseListStagingAccounts $+--             newListStagingAccountsResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responseRetryDataReplication $+--             newSourceServer+--+--         , responseReverseReplication $+--             newReverseReplicationResponse+--+--         , responseStartFailbackLaunch $+--             newStartFailbackLaunchResponse+--+--         , responseStartRecovery $+--             newStartRecoveryResponse+--+--         , responseStartReplication $+--             newStartReplicationResponse+--+--         , responseStopFailback $+--             newStopFailbackResponse+--+--         , responseStopReplication $+--             newStopReplicationResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseTerminateRecoveryInstances $+--             newTerminateRecoveryInstancesResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateFailbackReplicationConfiguration $+--             newUpdateFailbackReplicationConfigurationResponse+--+--         , responseUpdateLaunchConfiguration $+--             newLaunchConfiguration+--+--         , responseUpdateReplicationConfiguration $+--             newReplicationConfiguration+--+--         , responseUpdateReplicationConfigurationTemplate $+--             newReplicationConfigurationTemplate+--+--           ]+--     ]++-- Requests++requestCreateExtendedSourceServer :: CreateExtendedSourceServer -> TestTree+requestCreateExtendedSourceServer =+  req+    "CreateExtendedSourceServer"+    "fixture/CreateExtendedSourceServer.yaml"++requestCreateReplicationConfigurationTemplate :: CreateReplicationConfigurationTemplate -> TestTree+requestCreateReplicationConfigurationTemplate =+  req+    "CreateReplicationConfigurationTemplate"+    "fixture/CreateReplicationConfigurationTemplate.yaml"++requestDeleteJob :: DeleteJob -> TestTree+requestDeleteJob =+  req+    "DeleteJob"+    "fixture/DeleteJob.yaml"++requestDeleteRecoveryInstance :: DeleteRecoveryInstance -> TestTree+requestDeleteRecoveryInstance =+  req+    "DeleteRecoveryInstance"+    "fixture/DeleteRecoveryInstance.yaml"++requestDeleteReplicationConfigurationTemplate :: DeleteReplicationConfigurationTemplate -> TestTree+requestDeleteReplicationConfigurationTemplate =+  req+    "DeleteReplicationConfigurationTemplate"+    "fixture/DeleteReplicationConfigurationTemplate.yaml"++requestDeleteSourceServer :: DeleteSourceServer -> TestTree+requestDeleteSourceServer =+  req+    "DeleteSourceServer"+    "fixture/DeleteSourceServer.yaml"++requestDescribeJobLogItems :: DescribeJobLogItems -> TestTree+requestDescribeJobLogItems =+  req+    "DescribeJobLogItems"+    "fixture/DescribeJobLogItems.yaml"++requestDescribeJobs :: DescribeJobs -> TestTree+requestDescribeJobs =+  req+    "DescribeJobs"+    "fixture/DescribeJobs.yaml"++requestDescribeRecoveryInstances :: DescribeRecoveryInstances -> TestTree+requestDescribeRecoveryInstances =+  req+    "DescribeRecoveryInstances"+    "fixture/DescribeRecoveryInstances.yaml"++requestDescribeRecoverySnapshots :: DescribeRecoverySnapshots -> TestTree+requestDescribeRecoverySnapshots =+  req+    "DescribeRecoverySnapshots"+    "fixture/DescribeRecoverySnapshots.yaml"++requestDescribeReplicationConfigurationTemplates :: DescribeReplicationConfigurationTemplates -> TestTree+requestDescribeReplicationConfigurationTemplates =+  req+    "DescribeReplicationConfigurationTemplates"+    "fixture/DescribeReplicationConfigurationTemplates.yaml"++requestDescribeSourceServers :: DescribeSourceServers -> TestTree+requestDescribeSourceServers =+  req+    "DescribeSourceServers"+    "fixture/DescribeSourceServers.yaml"++requestDisconnectRecoveryInstance :: DisconnectRecoveryInstance -> TestTree+requestDisconnectRecoveryInstance =+  req+    "DisconnectRecoveryInstance"+    "fixture/DisconnectRecoveryInstance.yaml"++requestDisconnectSourceServer :: DisconnectSourceServer -> TestTree+requestDisconnectSourceServer =+  req+    "DisconnectSourceServer"+    "fixture/DisconnectSourceServer.yaml"++requestGetFailbackReplicationConfiguration :: GetFailbackReplicationConfiguration -> TestTree+requestGetFailbackReplicationConfiguration =+  req+    "GetFailbackReplicationConfiguration"+    "fixture/GetFailbackReplicationConfiguration.yaml"++requestGetLaunchConfiguration :: GetLaunchConfiguration -> TestTree+requestGetLaunchConfiguration =+  req+    "GetLaunchConfiguration"+    "fixture/GetLaunchConfiguration.yaml"++requestGetReplicationConfiguration :: GetReplicationConfiguration -> TestTree+requestGetReplicationConfiguration =+  req+    "GetReplicationConfiguration"+    "fixture/GetReplicationConfiguration.yaml"++requestInitializeService :: InitializeService -> TestTree+requestInitializeService =+  req+    "InitializeService"+    "fixture/InitializeService.yaml"++requestListExtensibleSourceServers :: ListExtensibleSourceServers -> TestTree+requestListExtensibleSourceServers =+  req+    "ListExtensibleSourceServers"+    "fixture/ListExtensibleSourceServers.yaml"++requestListStagingAccounts :: ListStagingAccounts -> TestTree+requestListStagingAccounts =+  req+    "ListStagingAccounts"+    "fixture/ListStagingAccounts.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestRetryDataReplication :: RetryDataReplication -> TestTree+requestRetryDataReplication =+  req+    "RetryDataReplication"+    "fixture/RetryDataReplication.yaml"++requestReverseReplication :: ReverseReplication -> TestTree+requestReverseReplication =+  req+    "ReverseReplication"+    "fixture/ReverseReplication.yaml"++requestStartFailbackLaunch :: StartFailbackLaunch -> TestTree+requestStartFailbackLaunch =+  req+    "StartFailbackLaunch"+    "fixture/StartFailbackLaunch.yaml"++requestStartRecovery :: StartRecovery -> TestTree+requestStartRecovery =+  req+    "StartRecovery"+    "fixture/StartRecovery.yaml"++requestStartReplication :: StartReplication -> TestTree+requestStartReplication =+  req+    "StartReplication"+    "fixture/StartReplication.yaml"++requestStopFailback :: StopFailback -> TestTree+requestStopFailback =+  req+    "StopFailback"+    "fixture/StopFailback.yaml"++requestStopReplication :: StopReplication -> TestTree+requestStopReplication =+  req+    "StopReplication"+    "fixture/StopReplication.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestTerminateRecoveryInstances :: TerminateRecoveryInstances -> TestTree+requestTerminateRecoveryInstances =+  req+    "TerminateRecoveryInstances"+    "fixture/TerminateRecoveryInstances.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateFailbackReplicationConfiguration :: UpdateFailbackReplicationConfiguration -> TestTree+requestUpdateFailbackReplicationConfiguration =+  req+    "UpdateFailbackReplicationConfiguration"+    "fixture/UpdateFailbackReplicationConfiguration.yaml"++requestUpdateLaunchConfiguration :: UpdateLaunchConfiguration -> TestTree+requestUpdateLaunchConfiguration =+  req+    "UpdateLaunchConfiguration"+    "fixture/UpdateLaunchConfiguration.yaml"++requestUpdateReplicationConfiguration :: UpdateReplicationConfiguration -> TestTree+requestUpdateReplicationConfiguration =+  req+    "UpdateReplicationConfiguration"+    "fixture/UpdateReplicationConfiguration.yaml"++requestUpdateReplicationConfigurationTemplate :: UpdateReplicationConfigurationTemplate -> TestTree+requestUpdateReplicationConfigurationTemplate =+  req+    "UpdateReplicationConfigurationTemplate"+    "fixture/UpdateReplicationConfigurationTemplate.yaml"++-- Responses++responseCreateExtendedSourceServer :: CreateExtendedSourceServerResponse -> TestTree+responseCreateExtendedSourceServer =+  res+    "CreateExtendedSourceServerResponse"+    "fixture/CreateExtendedSourceServerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateExtendedSourceServer)++responseCreateReplicationConfigurationTemplate :: ReplicationConfigurationTemplate -> TestTree+responseCreateReplicationConfigurationTemplate =+  res+    "CreateReplicationConfigurationTemplateResponse"+    "fixture/CreateReplicationConfigurationTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateReplicationConfigurationTemplate)++responseDeleteJob :: DeleteJobResponse -> TestTree+responseDeleteJob =+  res+    "DeleteJobResponse"+    "fixture/DeleteJobResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteJob)++responseDeleteRecoveryInstance :: DeleteRecoveryInstanceResponse -> TestTree+responseDeleteRecoveryInstance =+  res+    "DeleteRecoveryInstanceResponse"+    "fixture/DeleteRecoveryInstanceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteRecoveryInstance)++responseDeleteReplicationConfigurationTemplate :: DeleteReplicationConfigurationTemplateResponse -> TestTree+responseDeleteReplicationConfigurationTemplate =+  res+    "DeleteReplicationConfigurationTemplateResponse"+    "fixture/DeleteReplicationConfigurationTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteReplicationConfigurationTemplate)++responseDeleteSourceServer :: DeleteSourceServerResponse -> TestTree+responseDeleteSourceServer =+  res+    "DeleteSourceServerResponse"+    "fixture/DeleteSourceServerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteSourceServer)++responseDescribeJobLogItems :: DescribeJobLogItemsResponse -> TestTree+responseDescribeJobLogItems =+  res+    "DescribeJobLogItemsResponse"+    "fixture/DescribeJobLogItemsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeJobLogItems)++responseDescribeJobs :: DescribeJobsResponse -> TestTree+responseDescribeJobs =+  res+    "DescribeJobsResponse"+    "fixture/DescribeJobsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeJobs)++responseDescribeRecoveryInstances :: DescribeRecoveryInstancesResponse -> TestTree+responseDescribeRecoveryInstances =+  res+    "DescribeRecoveryInstancesResponse"+    "fixture/DescribeRecoveryInstancesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeRecoveryInstances)++responseDescribeRecoverySnapshots :: DescribeRecoverySnapshotsResponse -> TestTree+responseDescribeRecoverySnapshots =+  res+    "DescribeRecoverySnapshotsResponse"+    "fixture/DescribeRecoverySnapshotsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeRecoverySnapshots)++responseDescribeReplicationConfigurationTemplates :: DescribeReplicationConfigurationTemplatesResponse -> TestTree+responseDescribeReplicationConfigurationTemplates =+  res+    "DescribeReplicationConfigurationTemplatesResponse"+    "fixture/DescribeReplicationConfigurationTemplatesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeReplicationConfigurationTemplates)++responseDescribeSourceServers :: DescribeSourceServersResponse -> TestTree+responseDescribeSourceServers =+  res+    "DescribeSourceServersResponse"+    "fixture/DescribeSourceServersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeSourceServers)++responseDisconnectRecoveryInstance :: DisconnectRecoveryInstanceResponse -> TestTree+responseDisconnectRecoveryInstance =+  res+    "DisconnectRecoveryInstanceResponse"+    "fixture/DisconnectRecoveryInstanceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DisconnectRecoveryInstance)++responseDisconnectSourceServer :: SourceServer -> TestTree+responseDisconnectSourceServer =+  res+    "DisconnectSourceServerResponse"+    "fixture/DisconnectSourceServerResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DisconnectSourceServer)++responseGetFailbackReplicationConfiguration :: GetFailbackReplicationConfigurationResponse -> TestTree+responseGetFailbackReplicationConfiguration =+  res+    "GetFailbackReplicationConfigurationResponse"+    "fixture/GetFailbackReplicationConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetFailbackReplicationConfiguration)++responseGetLaunchConfiguration :: LaunchConfiguration -> TestTree+responseGetLaunchConfiguration =+  res+    "GetLaunchConfigurationResponse"+    "fixture/GetLaunchConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetLaunchConfiguration)++responseGetReplicationConfiguration :: ReplicationConfiguration -> TestTree+responseGetReplicationConfiguration =+  res+    "GetReplicationConfigurationResponse"+    "fixture/GetReplicationConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetReplicationConfiguration)++responseInitializeService :: InitializeServiceResponse -> TestTree+responseInitializeService =+  res+    "InitializeServiceResponse"+    "fixture/InitializeServiceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy InitializeService)++responseListExtensibleSourceServers :: ListExtensibleSourceServersResponse -> TestTree+responseListExtensibleSourceServers =+  res+    "ListExtensibleSourceServersResponse"+    "fixture/ListExtensibleSourceServersResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListExtensibleSourceServers)++responseListStagingAccounts :: ListStagingAccountsResponse -> TestTree+responseListStagingAccounts =+  res+    "ListStagingAccountsResponse"+    "fixture/ListStagingAccountsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListStagingAccounts)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responseRetryDataReplication :: SourceServer -> TestTree+responseRetryDataReplication =+  res+    "RetryDataReplicationResponse"+    "fixture/RetryDataReplicationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy RetryDataReplication)++responseReverseReplication :: ReverseReplicationResponse -> TestTree+responseReverseReplication =+  res+    "ReverseReplicationResponse"+    "fixture/ReverseReplicationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ReverseReplication)++responseStartFailbackLaunch :: StartFailbackLaunchResponse -> TestTree+responseStartFailbackLaunch =+  res+    "StartFailbackLaunchResponse"+    "fixture/StartFailbackLaunchResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartFailbackLaunch)++responseStartRecovery :: StartRecoveryResponse -> TestTree+responseStartRecovery =+  res+    "StartRecoveryResponse"+    "fixture/StartRecoveryResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartRecovery)++responseStartReplication :: StartReplicationResponse -> TestTree+responseStartReplication =+  res+    "StartReplicationResponse"+    "fixture/StartReplicationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartReplication)++responseStopFailback :: StopFailbackResponse -> TestTree+responseStopFailback =+  res+    "StopFailbackResponse"+    "fixture/StopFailbackResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StopFailback)++responseStopReplication :: StopReplicationResponse -> TestTree+responseStopReplication =+  res+    "StopReplicationResponse"+    "fixture/StopReplicationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StopReplication)++responseTagResource :: TagResourceResponse -> TestTree+responseTagResource =+  res+    "TagResourceResponse"+    "fixture/TagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy TagResource)++responseTerminateRecoveryInstances :: TerminateRecoveryInstancesResponse -> TestTree+responseTerminateRecoveryInstances =+  res+    "TerminateRecoveryInstancesResponse"+    "fixture/TerminateRecoveryInstancesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy TerminateRecoveryInstances)++responseUntagResource :: UntagResourceResponse -> TestTree+responseUntagResource =+  res+    "UntagResourceResponse"+    "fixture/UntagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UntagResource)++responseUpdateFailbackReplicationConfiguration :: UpdateFailbackReplicationConfigurationResponse -> TestTree+responseUpdateFailbackReplicationConfiguration =+  res+    "UpdateFailbackReplicationConfigurationResponse"+    "fixture/UpdateFailbackReplicationConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateFailbackReplicationConfiguration)++responseUpdateLaunchConfiguration :: LaunchConfiguration -> TestTree+responseUpdateLaunchConfiguration =+  res+    "UpdateLaunchConfigurationResponse"+    "fixture/UpdateLaunchConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateLaunchConfiguration)++responseUpdateReplicationConfiguration :: ReplicationConfiguration -> TestTree+responseUpdateReplicationConfiguration =+  res+    "UpdateReplicationConfigurationResponse"+    "fixture/UpdateReplicationConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateReplicationConfiguration)++responseUpdateReplicationConfigurationTemplate :: ReplicationConfigurationTemplate -> TestTree+responseUpdateReplicationConfigurationTemplate =+  res+    "UpdateReplicationConfigurationTemplateResponse"+    "fixture/UpdateReplicationConfigurationTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateReplicationConfigurationTemplate)