{-# 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.
    UpdateReplicationConfigurationTemplate -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | Whether to associate the default Elastic Disaster Recovery Security
    -- group with the Replication Configuration Template.
    UpdateReplicationConfigurationTemplate -> Maybe Bool
associateDefaultSecurityGroup :: Prelude.Maybe Prelude.Bool,
    -- | Configure bandwidth throttling for the outbound data transfer rate of
    -- the Source Server in Mbps.
    UpdateReplicationConfigurationTemplate -> Maybe Natural
bandwidthThrottling :: Prelude.Maybe Prelude.Natural,
    -- | Whether to create a Public IP for the Recovery Instance by default.
    UpdateReplicationConfigurationTemplate -> Maybe Bool
createPublicIP :: Prelude.Maybe Prelude.Bool,
    -- | The data plane routing mechanism that will be used for replication.
    UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting :: Prelude.Maybe ReplicationConfigurationDataPlaneRouting,
    -- | The Staging Disk EBS volume type to be used during replication.
    UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType :: Prelude.Maybe ReplicationConfigurationDefaultLargeStagingDiskType,
    -- | The type of EBS encryption to be used during replication.
    UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationEbsEncryption
ebsEncryption :: Prelude.Maybe ReplicationConfigurationEbsEncryption,
    -- | The ARN of the EBS encryption key to be used during replication.
    UpdateReplicationConfigurationTemplate -> Maybe Text
ebsEncryptionKeyArn :: Prelude.Maybe Prelude.Text,
    -- | The Point in time (PIT) policy to manage snapshots taken during
    -- replication.
    UpdateReplicationConfigurationTemplate
-> Maybe (NonEmpty PITPolicyRule)
pitPolicy :: Prelude.Maybe (Prelude.NonEmpty PITPolicyRule),
    -- | The instance type to be used for the replication server.
    UpdateReplicationConfigurationTemplate -> Maybe Text
replicationServerInstanceType :: Prelude.Maybe Prelude.Text,
    -- | The security group IDs that will be used by the replication server.
    UpdateReplicationConfigurationTemplate -> Maybe [Text]
replicationServersSecurityGroupsIDs :: Prelude.Maybe [Prelude.Text],
    -- | The subnet to be used by the replication staging area.
    UpdateReplicationConfigurationTemplate -> Maybe Text
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.
    UpdateReplicationConfigurationTemplate
-> Maybe (Sensitive (HashMap Text Text))
stagingAreaTags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
    -- | Whether to use a dedicated Replication Server in the replication staging
    -- area.
    UpdateReplicationConfigurationTemplate -> Maybe Bool
useDedicatedReplicationServer :: Prelude.Maybe Prelude.Bool,
    -- | The Replication Configuration Template ID.
    UpdateReplicationConfigurationTemplate -> Text
replicationConfigurationTemplateID :: Prelude.Text
  }
  deriving (UpdateReplicationConfigurationTemplate
-> UpdateReplicationConfigurationTemplate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateReplicationConfigurationTemplate
-> UpdateReplicationConfigurationTemplate -> Bool
$c/= :: UpdateReplicationConfigurationTemplate
-> UpdateReplicationConfigurationTemplate -> Bool
== :: UpdateReplicationConfigurationTemplate
-> UpdateReplicationConfigurationTemplate -> Bool
$c== :: UpdateReplicationConfigurationTemplate
-> UpdateReplicationConfigurationTemplate -> Bool
Prelude.Eq, Int -> UpdateReplicationConfigurationTemplate -> ShowS
[UpdateReplicationConfigurationTemplate] -> ShowS
UpdateReplicationConfigurationTemplate -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateReplicationConfigurationTemplate] -> ShowS
$cshowList :: [UpdateReplicationConfigurationTemplate] -> ShowS
show :: UpdateReplicationConfigurationTemplate -> String
$cshow :: UpdateReplicationConfigurationTemplate -> String
showsPrec :: Int -> UpdateReplicationConfigurationTemplate -> ShowS
$cshowsPrec :: Int -> UpdateReplicationConfigurationTemplate -> ShowS
Prelude.Show, forall x.
Rep UpdateReplicationConfigurationTemplate x
-> UpdateReplicationConfigurationTemplate
forall x.
UpdateReplicationConfigurationTemplate
-> Rep UpdateReplicationConfigurationTemplate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateReplicationConfigurationTemplate x
-> UpdateReplicationConfigurationTemplate
$cfrom :: forall x.
UpdateReplicationConfigurationTemplate
-> Rep UpdateReplicationConfigurationTemplate x
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 :: Text -> UpdateReplicationConfigurationTemplate
newUpdateReplicationConfigurationTemplate
  Text
pReplicationConfigurationTemplateID_ =
    UpdateReplicationConfigurationTemplate'
      { $sel:arn:UpdateReplicationConfigurationTemplate' :: Maybe Text
arn =
          forall a. Maybe a
Prelude.Nothing,
        $sel:associateDefaultSecurityGroup:UpdateReplicationConfigurationTemplate' :: Maybe Bool
associateDefaultSecurityGroup =
          forall a. Maybe a
Prelude.Nothing,
        $sel:bandwidthThrottling:UpdateReplicationConfigurationTemplate' :: Maybe Natural
bandwidthThrottling =
          forall a. Maybe a
Prelude.Nothing,
        $sel:createPublicIP:UpdateReplicationConfigurationTemplate' :: Maybe Bool
createPublicIP = forall a. Maybe a
Prelude.Nothing,
        $sel:dataPlaneRouting:UpdateReplicationConfigurationTemplate' :: Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting = forall a. Maybe a
Prelude.Nothing,
        $sel:defaultLargeStagingDiskType:UpdateReplicationConfigurationTemplate' :: Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType =
          forall a. Maybe a
Prelude.Nothing,
        $sel:ebsEncryption:UpdateReplicationConfigurationTemplate' :: Maybe ReplicationConfigurationEbsEncryption
ebsEncryption = forall a. Maybe a
Prelude.Nothing,
        $sel:ebsEncryptionKeyArn:UpdateReplicationConfigurationTemplate' :: Maybe Text
ebsEncryptionKeyArn =
          forall a. Maybe a
Prelude.Nothing,
        $sel:pitPolicy:UpdateReplicationConfigurationTemplate' :: Maybe (NonEmpty PITPolicyRule)
pitPolicy = forall a. Maybe a
Prelude.Nothing,
        $sel:replicationServerInstanceType:UpdateReplicationConfigurationTemplate' :: Maybe Text
replicationServerInstanceType =
          forall a. Maybe a
Prelude.Nothing,
        $sel:replicationServersSecurityGroupsIDs:UpdateReplicationConfigurationTemplate' :: Maybe [Text]
replicationServersSecurityGroupsIDs =
          forall a. Maybe a
Prelude.Nothing,
        $sel:stagingAreaSubnetId:UpdateReplicationConfigurationTemplate' :: Maybe Text
stagingAreaSubnetId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:stagingAreaTags:UpdateReplicationConfigurationTemplate' :: Maybe (Sensitive (HashMap Text Text))
stagingAreaTags = forall a. Maybe a
Prelude.Nothing,
        $sel:useDedicatedReplicationServer:UpdateReplicationConfigurationTemplate' :: Maybe Bool
useDedicatedReplicationServer =
          forall a. Maybe a
Prelude.Nothing,
        $sel:replicationConfigurationTemplateID:UpdateReplicationConfigurationTemplate' :: Text
replicationConfigurationTemplateID =
          Text
pReplicationConfigurationTemplateID_
      }

-- | The Replication Configuration Template ARN.
updateReplicationConfigurationTemplate_arn :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)
updateReplicationConfigurationTemplate_arn :: Lens' UpdateReplicationConfigurationTemplate (Maybe Text)
updateReplicationConfigurationTemplate_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe Text
arn :: Maybe Text
$sel:arn:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
arn} -> Maybe Text
arn) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe Text
a -> UpdateReplicationConfigurationTemplate
s {$sel:arn:UpdateReplicationConfigurationTemplate' :: Maybe Text
arn = Maybe Text
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' UpdateReplicationConfigurationTemplate (Maybe Bool)
updateReplicationConfigurationTemplate_associateDefaultSecurityGroup = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe Bool
associateDefaultSecurityGroup :: Maybe Bool
$sel:associateDefaultSecurityGroup:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Bool
associateDefaultSecurityGroup} -> Maybe Bool
associateDefaultSecurityGroup) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe Bool
a -> UpdateReplicationConfigurationTemplate
s {$sel:associateDefaultSecurityGroup:UpdateReplicationConfigurationTemplate' :: Maybe Bool
associateDefaultSecurityGroup = Maybe Bool
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' UpdateReplicationConfigurationTemplate (Maybe Natural)
updateReplicationConfigurationTemplate_bandwidthThrottling = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe Natural
bandwidthThrottling :: Maybe Natural
$sel:bandwidthThrottling:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Natural
bandwidthThrottling} -> Maybe Natural
bandwidthThrottling) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe Natural
a -> UpdateReplicationConfigurationTemplate
s {$sel:bandwidthThrottling:UpdateReplicationConfigurationTemplate' :: Maybe Natural
bandwidthThrottling = Maybe Natural
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' UpdateReplicationConfigurationTemplate (Maybe Bool)
updateReplicationConfigurationTemplate_createPublicIP = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe Bool
createPublicIP :: Maybe Bool
$sel:createPublicIP:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Bool
createPublicIP} -> Maybe Bool
createPublicIP) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe Bool
a -> UpdateReplicationConfigurationTemplate
s {$sel:createPublicIP:UpdateReplicationConfigurationTemplate' :: Maybe Bool
createPublicIP = Maybe Bool
a} :: UpdateReplicationConfigurationTemplate)

-- | The data plane routing mechanism that will be used for replication.
updateReplicationConfigurationTemplate_dataPlaneRouting :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe ReplicationConfigurationDataPlaneRouting)
updateReplicationConfigurationTemplate_dataPlaneRouting :: Lens'
  UpdateReplicationConfigurationTemplate
  (Maybe ReplicationConfigurationDataPlaneRouting)
updateReplicationConfigurationTemplate_dataPlaneRouting = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting :: Maybe ReplicationConfigurationDataPlaneRouting
$sel:dataPlaneRouting:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting} -> Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe ReplicationConfigurationDataPlaneRouting
a -> UpdateReplicationConfigurationTemplate
s {$sel:dataPlaneRouting:UpdateReplicationConfigurationTemplate' :: Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting = Maybe ReplicationConfigurationDataPlaneRouting
a} :: UpdateReplicationConfigurationTemplate)

-- | The Staging Disk EBS volume type to be used during replication.
updateReplicationConfigurationTemplate_defaultLargeStagingDiskType :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe ReplicationConfigurationDefaultLargeStagingDiskType)
updateReplicationConfigurationTemplate_defaultLargeStagingDiskType :: Lens'
  UpdateReplicationConfigurationTemplate
  (Maybe ReplicationConfigurationDefaultLargeStagingDiskType)
updateReplicationConfigurationTemplate_defaultLargeStagingDiskType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType :: Maybe ReplicationConfigurationDefaultLargeStagingDiskType
$sel:defaultLargeStagingDiskType:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType} -> Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe ReplicationConfigurationDefaultLargeStagingDiskType
a -> UpdateReplicationConfigurationTemplate
s {$sel:defaultLargeStagingDiskType:UpdateReplicationConfigurationTemplate' :: Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType = Maybe ReplicationConfigurationDefaultLargeStagingDiskType
a} :: UpdateReplicationConfigurationTemplate)

-- | The type of EBS encryption to be used during replication.
updateReplicationConfigurationTemplate_ebsEncryption :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe ReplicationConfigurationEbsEncryption)
updateReplicationConfigurationTemplate_ebsEncryption :: Lens'
  UpdateReplicationConfigurationTemplate
  (Maybe ReplicationConfigurationEbsEncryption)
updateReplicationConfigurationTemplate_ebsEncryption = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe ReplicationConfigurationEbsEncryption
ebsEncryption :: Maybe ReplicationConfigurationEbsEncryption
$sel:ebsEncryption:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationEbsEncryption
ebsEncryption} -> Maybe ReplicationConfigurationEbsEncryption
ebsEncryption) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe ReplicationConfigurationEbsEncryption
a -> UpdateReplicationConfigurationTemplate
s {$sel:ebsEncryption:UpdateReplicationConfigurationTemplate' :: Maybe ReplicationConfigurationEbsEncryption
ebsEncryption = Maybe ReplicationConfigurationEbsEncryption
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' UpdateReplicationConfigurationTemplate (Maybe Text)
updateReplicationConfigurationTemplate_ebsEncryptionKeyArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe Text
ebsEncryptionKeyArn :: Maybe Text
$sel:ebsEncryptionKeyArn:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
ebsEncryptionKeyArn} -> Maybe Text
ebsEncryptionKeyArn) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe Text
a -> UpdateReplicationConfigurationTemplate
s {$sel:ebsEncryptionKeyArn:UpdateReplicationConfigurationTemplate' :: Maybe Text
ebsEncryptionKeyArn = Maybe Text
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'
  UpdateReplicationConfigurationTemplate
  (Maybe (NonEmpty PITPolicyRule))
updateReplicationConfigurationTemplate_pitPolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe (NonEmpty PITPolicyRule)
pitPolicy :: Maybe (NonEmpty PITPolicyRule)
$sel:pitPolicy:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe (NonEmpty PITPolicyRule)
pitPolicy} -> Maybe (NonEmpty PITPolicyRule)
pitPolicy) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe (NonEmpty PITPolicyRule)
a -> UpdateReplicationConfigurationTemplate
s {$sel:pitPolicy:UpdateReplicationConfigurationTemplate' :: Maybe (NonEmpty PITPolicyRule)
pitPolicy = Maybe (NonEmpty PITPolicyRule)
a} :: UpdateReplicationConfigurationTemplate) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The instance type to be used for the replication server.
updateReplicationConfigurationTemplate_replicationServerInstanceType :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)
updateReplicationConfigurationTemplate_replicationServerInstanceType :: Lens' UpdateReplicationConfigurationTemplate (Maybe Text)
updateReplicationConfigurationTemplate_replicationServerInstanceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe Text
replicationServerInstanceType :: Maybe Text
$sel:replicationServerInstanceType:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
replicationServerInstanceType} -> Maybe Text
replicationServerInstanceType) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe Text
a -> UpdateReplicationConfigurationTemplate
s {$sel:replicationServerInstanceType:UpdateReplicationConfigurationTemplate' :: Maybe Text
replicationServerInstanceType = Maybe Text
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' UpdateReplicationConfigurationTemplate (Maybe [Text])
updateReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe [Text]
replicationServersSecurityGroupsIDs :: Maybe [Text]
$sel:replicationServersSecurityGroupsIDs:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe [Text]
replicationServersSecurityGroupsIDs} -> Maybe [Text]
replicationServersSecurityGroupsIDs) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe [Text]
a -> UpdateReplicationConfigurationTemplate
s {$sel:replicationServersSecurityGroupsIDs:UpdateReplicationConfigurationTemplate' :: Maybe [Text]
replicationServersSecurityGroupsIDs = Maybe [Text]
a} :: UpdateReplicationConfigurationTemplate) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The subnet to be used by the replication staging area.
updateReplicationConfigurationTemplate_stagingAreaSubnetId :: Lens.Lens' UpdateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)
updateReplicationConfigurationTemplate_stagingAreaSubnetId :: Lens' UpdateReplicationConfigurationTemplate (Maybe Text)
updateReplicationConfigurationTemplate_stagingAreaSubnetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe Text
stagingAreaSubnetId :: Maybe Text
$sel:stagingAreaSubnetId:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
stagingAreaSubnetId} -> Maybe Text
stagingAreaSubnetId) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe Text
a -> UpdateReplicationConfigurationTemplate
s {$sel:stagingAreaSubnetId:UpdateReplicationConfigurationTemplate' :: Maybe Text
stagingAreaSubnetId = Maybe Text
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'
  UpdateReplicationConfigurationTemplate (Maybe (HashMap Text Text))
updateReplicationConfigurationTemplate_stagingAreaTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe (Sensitive (HashMap Text Text))
stagingAreaTags :: Maybe (Sensitive (HashMap Text Text))
$sel:stagingAreaTags:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe (Sensitive (HashMap Text Text))
stagingAreaTags} -> Maybe (Sensitive (HashMap Text Text))
stagingAreaTags) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe (Sensitive (HashMap Text Text))
a -> UpdateReplicationConfigurationTemplate
s {$sel:stagingAreaTags:UpdateReplicationConfigurationTemplate' :: Maybe (Sensitive (HashMap Text Text))
stagingAreaTags = Maybe (Sensitive (HashMap Text Text))
a} :: UpdateReplicationConfigurationTemplate) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping (forall a. Iso' (Sensitive a) a
Data._Sensitive forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
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' UpdateReplicationConfigurationTemplate (Maybe Bool)
updateReplicationConfigurationTemplate_useDedicatedReplicationServer = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Maybe Bool
useDedicatedReplicationServer :: Maybe Bool
$sel:useDedicatedReplicationServer:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Bool
useDedicatedReplicationServer} -> Maybe Bool
useDedicatedReplicationServer) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Maybe Bool
a -> UpdateReplicationConfigurationTemplate
s {$sel:useDedicatedReplicationServer:UpdateReplicationConfigurationTemplate' :: Maybe Bool
useDedicatedReplicationServer = Maybe Bool
a} :: UpdateReplicationConfigurationTemplate)

-- | The Replication Configuration Template ID.
updateReplicationConfigurationTemplate_replicationConfigurationTemplateID :: Lens.Lens' UpdateReplicationConfigurationTemplate Prelude.Text
updateReplicationConfigurationTemplate_replicationConfigurationTemplateID :: Lens' UpdateReplicationConfigurationTemplate Text
updateReplicationConfigurationTemplate_replicationConfigurationTemplateID = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfigurationTemplate' {Text
replicationConfigurationTemplateID :: Text
$sel:replicationConfigurationTemplateID:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Text
replicationConfigurationTemplateID} -> Text
replicationConfigurationTemplateID) (\s :: UpdateReplicationConfigurationTemplate
s@UpdateReplicationConfigurationTemplate' {} Text
a -> UpdateReplicationConfigurationTemplate
s {$sel:replicationConfigurationTemplateID:UpdateReplicationConfigurationTemplate' :: Text
replicationConfigurationTemplateID = Text
a} :: UpdateReplicationConfigurationTemplate)

instance
  Core.AWSRequest
    UpdateReplicationConfigurationTemplate
  where
  type
    AWSResponse
      UpdateReplicationConfigurationTemplate =
      ReplicationConfigurationTemplate
  request :: (Service -> Service)
-> UpdateReplicationConfigurationTemplate
-> Request UpdateReplicationConfigurationTemplate
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateReplicationConfigurationTemplate
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse UpdateReplicationConfigurationTemplate)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      (\Int
s ResponseHeaders
h Object
x -> forall a. FromJSON a => Object -> Either String a
Data.eitherParseJSON Object
x)

instance
  Prelude.Hashable
    UpdateReplicationConfigurationTemplate
  where
  hashWithSalt :: Int -> UpdateReplicationConfigurationTemplate -> Int
hashWithSalt
    Int
_salt
    UpdateReplicationConfigurationTemplate' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe (NonEmpty PITPolicyRule)
Maybe Text
Maybe (Sensitive (HashMap Text Text))
Maybe ReplicationConfigurationDataPlaneRouting
Maybe ReplicationConfigurationDefaultLargeStagingDiskType
Maybe ReplicationConfigurationEbsEncryption
Text
replicationConfigurationTemplateID :: Text
useDedicatedReplicationServer :: Maybe Bool
stagingAreaTags :: Maybe (Sensitive (HashMap Text Text))
stagingAreaSubnetId :: Maybe Text
replicationServersSecurityGroupsIDs :: Maybe [Text]
replicationServerInstanceType :: Maybe Text
pitPolicy :: Maybe (NonEmpty PITPolicyRule)
ebsEncryptionKeyArn :: Maybe Text
ebsEncryption :: Maybe ReplicationConfigurationEbsEncryption
defaultLargeStagingDiskType :: Maybe ReplicationConfigurationDefaultLargeStagingDiskType
dataPlaneRouting :: Maybe ReplicationConfigurationDataPlaneRouting
createPublicIP :: Maybe Bool
bandwidthThrottling :: Maybe Natural
associateDefaultSecurityGroup :: Maybe Bool
arn :: Maybe Text
$sel:replicationConfigurationTemplateID:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Text
$sel:useDedicatedReplicationServer:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Bool
$sel:stagingAreaTags:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe (Sensitive (HashMap Text Text))
$sel:stagingAreaSubnetId:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
$sel:replicationServersSecurityGroupsIDs:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe [Text]
$sel:replicationServerInstanceType:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
$sel:pitPolicy:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe (NonEmpty PITPolicyRule)
$sel:ebsEncryptionKeyArn:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
$sel:ebsEncryption:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationEbsEncryption
$sel:defaultLargeStagingDiskType:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationDefaultLargeStagingDiskType
$sel:dataPlaneRouting:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationDataPlaneRouting
$sel:createPublicIP:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Bool
$sel:bandwidthThrottling:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Natural
$sel:associateDefaultSecurityGroup:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Bool
$sel:arn:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
associateDefaultSecurityGroup
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
bandwidthThrottling
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
createPublicIP
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReplicationConfigurationEbsEncryption
ebsEncryption
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ebsEncryptionKeyArn
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty PITPolicyRule)
pitPolicy
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
replicationServerInstanceType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
replicationServersSecurityGroupsIDs
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
stagingAreaSubnetId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive (HashMap Text Text))
stagingAreaTags
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
useDedicatedReplicationServer
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
replicationConfigurationTemplateID

instance
  Prelude.NFData
    UpdateReplicationConfigurationTemplate
  where
  rnf :: UpdateReplicationConfigurationTemplate -> ()
rnf UpdateReplicationConfigurationTemplate' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe (NonEmpty PITPolicyRule)
Maybe Text
Maybe (Sensitive (HashMap Text Text))
Maybe ReplicationConfigurationDataPlaneRouting
Maybe ReplicationConfigurationDefaultLargeStagingDiskType
Maybe ReplicationConfigurationEbsEncryption
Text
replicationConfigurationTemplateID :: Text
useDedicatedReplicationServer :: Maybe Bool
stagingAreaTags :: Maybe (Sensitive (HashMap Text Text))
stagingAreaSubnetId :: Maybe Text
replicationServersSecurityGroupsIDs :: Maybe [Text]
replicationServerInstanceType :: Maybe Text
pitPolicy :: Maybe (NonEmpty PITPolicyRule)
ebsEncryptionKeyArn :: Maybe Text
ebsEncryption :: Maybe ReplicationConfigurationEbsEncryption
defaultLargeStagingDiskType :: Maybe ReplicationConfigurationDefaultLargeStagingDiskType
dataPlaneRouting :: Maybe ReplicationConfigurationDataPlaneRouting
createPublicIP :: Maybe Bool
bandwidthThrottling :: Maybe Natural
associateDefaultSecurityGroup :: Maybe Bool
arn :: Maybe Text
$sel:replicationConfigurationTemplateID:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Text
$sel:useDedicatedReplicationServer:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Bool
$sel:stagingAreaTags:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe (Sensitive (HashMap Text Text))
$sel:stagingAreaSubnetId:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
$sel:replicationServersSecurityGroupsIDs:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe [Text]
$sel:replicationServerInstanceType:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
$sel:pitPolicy:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe (NonEmpty PITPolicyRule)
$sel:ebsEncryptionKeyArn:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
$sel:ebsEncryption:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationEbsEncryption
$sel:defaultLargeStagingDiskType:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationDefaultLargeStagingDiskType
$sel:dataPlaneRouting:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationDataPlaneRouting
$sel:createPublicIP:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Bool
$sel:bandwidthThrottling:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Natural
$sel:associateDefaultSecurityGroup:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Bool
$sel:arn:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
associateDefaultSecurityGroup
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
bandwidthThrottling
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
createPublicIP
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ReplicationConfigurationEbsEncryption
ebsEncryption
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ebsEncryptionKeyArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty PITPolicyRule)
pitPolicy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
replicationServerInstanceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
replicationServersSecurityGroupsIDs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
stagingAreaSubnetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive (HashMap Text Text))
stagingAreaTags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
useDedicatedReplicationServer
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Text
replicationConfigurationTemplateID

instance
  Data.ToHeaders
    UpdateReplicationConfigurationTemplate
  where
  toHeaders :: UpdateReplicationConfigurationTemplate -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance
  Data.ToJSON
    UpdateReplicationConfigurationTemplate
  where
  toJSON :: UpdateReplicationConfigurationTemplate -> Value
toJSON UpdateReplicationConfigurationTemplate' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe (NonEmpty PITPolicyRule)
Maybe Text
Maybe (Sensitive (HashMap Text Text))
Maybe ReplicationConfigurationDataPlaneRouting
Maybe ReplicationConfigurationDefaultLargeStagingDiskType
Maybe ReplicationConfigurationEbsEncryption
Text
replicationConfigurationTemplateID :: Text
useDedicatedReplicationServer :: Maybe Bool
stagingAreaTags :: Maybe (Sensitive (HashMap Text Text))
stagingAreaSubnetId :: Maybe Text
replicationServersSecurityGroupsIDs :: Maybe [Text]
replicationServerInstanceType :: Maybe Text
pitPolicy :: Maybe (NonEmpty PITPolicyRule)
ebsEncryptionKeyArn :: Maybe Text
ebsEncryption :: Maybe ReplicationConfigurationEbsEncryption
defaultLargeStagingDiskType :: Maybe ReplicationConfigurationDefaultLargeStagingDiskType
dataPlaneRouting :: Maybe ReplicationConfigurationDataPlaneRouting
createPublicIP :: Maybe Bool
bandwidthThrottling :: Maybe Natural
associateDefaultSecurityGroup :: Maybe Bool
arn :: Maybe Text
$sel:replicationConfigurationTemplateID:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Text
$sel:useDedicatedReplicationServer:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Bool
$sel:stagingAreaTags:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe (Sensitive (HashMap Text Text))
$sel:stagingAreaSubnetId:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
$sel:replicationServersSecurityGroupsIDs:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe [Text]
$sel:replicationServerInstanceType:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
$sel:pitPolicy:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe (NonEmpty PITPolicyRule)
$sel:ebsEncryptionKeyArn:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
$sel:ebsEncryption:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationEbsEncryption
$sel:defaultLargeStagingDiskType:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationDefaultLargeStagingDiskType
$sel:dataPlaneRouting:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate
-> Maybe ReplicationConfigurationDataPlaneRouting
$sel:createPublicIP:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Bool
$sel:bandwidthThrottling:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Natural
$sel:associateDefaultSecurityGroup:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Bool
$sel:arn:UpdateReplicationConfigurationTemplate' :: UpdateReplicationConfigurationTemplate -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"arn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
arn,
            (Key
"associateDefaultSecurityGroup" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
associateDefaultSecurityGroup,
            (Key
"bandwidthThrottling" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
bandwidthThrottling,
            (Key
"createPublicIP" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
createPublicIP,
            (Key
"dataPlaneRouting" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting,
            (Key
"defaultLargeStagingDiskType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType,
            (Key
"ebsEncryption" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ReplicationConfigurationEbsEncryption
ebsEncryption,
            (Key
"ebsEncryptionKeyArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
ebsEncryptionKeyArn,
            (Key
"pitPolicy" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty PITPolicyRule)
pitPolicy,
            (Key
"replicationServerInstanceType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
replicationServerInstanceType,
            (Key
"replicationServersSecurityGroupsIDs" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
replicationServersSecurityGroupsIDs,
            (Key
"stagingAreaSubnetId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
stagingAreaSubnetId,
            (Key
"stagingAreaTags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Sensitive (HashMap Text Text))
stagingAreaTags,
            (Key
"useDedicatedReplicationServer" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
useDedicatedReplicationServer,
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"replicationConfigurationTemplateID"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
replicationConfigurationTemplateID
              )
          ]
      )

instance
  Data.ToPath
    UpdateReplicationConfigurationTemplate
  where
  toPath :: UpdateReplicationConfigurationTemplate -> ByteString
toPath =
    forall a b. a -> b -> a
Prelude.const
      ByteString
"/UpdateReplicationConfigurationTemplate"

instance
  Data.ToQuery
    UpdateReplicationConfigurationTemplate
  where
  toQuery :: UpdateReplicationConfigurationTemplate -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty