{-# 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.MGN.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.MGN.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_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_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.MGN.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'
  { -- | Request to configure an EBS encryption key during Replication Settings
    -- template creation.
    CreateReplicationConfigurationTemplate -> Maybe Text
ebsEncryptionKeyArn :: Prelude.Maybe Prelude.Text,
    -- | Request to configure tags during Replication Settings template creation.
    CreateReplicationConfigurationTemplate
-> Maybe (Sensitive (HashMap Text Text))
tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
    -- | Request to associate the default Application Migration Service Security
    -- group with the Replication Settings template.
    CreateReplicationConfigurationTemplate -> Bool
associateDefaultSecurityGroup :: Prelude.Bool,
    -- | Request to configure bandwidth throttling during Replication Settings
    -- template creation.
    CreateReplicationConfigurationTemplate -> Natural
bandwidthThrottling :: Prelude.Natural,
    -- | Request to create Public IP during Replication Settings template
    -- creation.
    CreateReplicationConfigurationTemplate -> Bool
createPublicIP :: Prelude.Bool,
    -- | Request to configure data plane routing during Replication Settings
    -- template creation.
    CreateReplicationConfigurationTemplate
-> ReplicationConfigurationDataPlaneRouting
dataPlaneRouting :: ReplicationConfigurationDataPlaneRouting,
    -- | Request to configure the default large staging disk EBS volume type
    -- during Replication Settings template creation.
    CreateReplicationConfigurationTemplate
-> ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType :: ReplicationConfigurationDefaultLargeStagingDiskType,
    -- | Request to configure EBS encryption during Replication Settings template
    -- creation.
    CreateReplicationConfigurationTemplate
-> ReplicationConfigurationEbsEncryption
ebsEncryption :: ReplicationConfigurationEbsEncryption,
    -- | Request to configure the Replication Server instance type during
    -- Replication Settings template creation.
    CreateReplicationConfigurationTemplate -> Text
replicationServerInstanceType :: Prelude.Text,
    -- | Request to configure the Replication Server Security group ID during
    -- Replication Settings template creation.
    CreateReplicationConfigurationTemplate -> [Text]
replicationServersSecurityGroupsIDs :: [Prelude.Text],
    -- | Request to configure the Staging Area subnet ID during Replication
    -- Settings template creation.
    CreateReplicationConfigurationTemplate -> Text
stagingAreaSubnetId :: Prelude.Text,
    -- | Request to configure Staging Area tags during Replication Settings
    -- template creation.
    CreateReplicationConfigurationTemplate
-> Sensitive (HashMap Text Text)
stagingAreaTags :: Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Request to use Dedicated Replication Servers during Replication Settings
    -- template creation.
    CreateReplicationConfigurationTemplate -> Bool
useDedicatedReplicationServer :: Prelude.Bool
  }
  deriving (CreateReplicationConfigurationTemplate
-> CreateReplicationConfigurationTemplate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateReplicationConfigurationTemplate
-> CreateReplicationConfigurationTemplate -> Bool
$c/= :: CreateReplicationConfigurationTemplate
-> CreateReplicationConfigurationTemplate -> Bool
== :: CreateReplicationConfigurationTemplate
-> CreateReplicationConfigurationTemplate -> Bool
$c== :: CreateReplicationConfigurationTemplate
-> CreateReplicationConfigurationTemplate -> Bool
Prelude.Eq, Int -> CreateReplicationConfigurationTemplate -> ShowS
[CreateReplicationConfigurationTemplate] -> ShowS
CreateReplicationConfigurationTemplate -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateReplicationConfigurationTemplate] -> ShowS
$cshowList :: [CreateReplicationConfigurationTemplate] -> ShowS
show :: CreateReplicationConfigurationTemplate -> String
$cshow :: CreateReplicationConfigurationTemplate -> String
showsPrec :: Int -> CreateReplicationConfigurationTemplate -> ShowS
$cshowsPrec :: Int -> CreateReplicationConfigurationTemplate -> ShowS
Prelude.Show, forall x.
Rep CreateReplicationConfigurationTemplate x
-> CreateReplicationConfigurationTemplate
forall x.
CreateReplicationConfigurationTemplate
-> Rep CreateReplicationConfigurationTemplate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateReplicationConfigurationTemplate x
-> CreateReplicationConfigurationTemplate
$cfrom :: forall x.
CreateReplicationConfigurationTemplate
-> Rep CreateReplicationConfigurationTemplate x
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' - Request to configure an EBS encryption key during Replication Settings
-- template creation.
--
-- 'tags', 'createReplicationConfigurationTemplate_tags' - Request to configure tags during Replication Settings template creation.
--
-- 'associateDefaultSecurityGroup', 'createReplicationConfigurationTemplate_associateDefaultSecurityGroup' - Request to associate the default Application Migration Service Security
-- group with the Replication Settings template.
--
-- 'bandwidthThrottling', 'createReplicationConfigurationTemplate_bandwidthThrottling' - Request to configure bandwidth throttling during Replication Settings
-- template creation.
--
-- 'createPublicIP', 'createReplicationConfigurationTemplate_createPublicIP' - Request to create Public IP during Replication Settings template
-- creation.
--
-- 'dataPlaneRouting', 'createReplicationConfigurationTemplate_dataPlaneRouting' - Request to configure data plane routing during Replication Settings
-- template creation.
--
-- 'defaultLargeStagingDiskType', 'createReplicationConfigurationTemplate_defaultLargeStagingDiskType' - Request to configure the default large staging disk EBS volume type
-- during Replication Settings template creation.
--
-- 'ebsEncryption', 'createReplicationConfigurationTemplate_ebsEncryption' - Request to configure EBS encryption during Replication Settings template
-- creation.
--
-- 'replicationServerInstanceType', 'createReplicationConfigurationTemplate_replicationServerInstanceType' - Request to configure the Replication Server instance type during
-- Replication Settings template creation.
--
-- 'replicationServersSecurityGroupsIDs', 'createReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs' - Request to configure the Replication Server Security group ID during
-- Replication Settings template creation.
--
-- 'stagingAreaSubnetId', 'createReplicationConfigurationTemplate_stagingAreaSubnetId' - Request to configure the Staging Area subnet ID during Replication
-- Settings template creation.
--
-- 'stagingAreaTags', 'createReplicationConfigurationTemplate_stagingAreaTags' - Request to configure Staging Area tags during Replication Settings
-- template creation.
--
-- 'useDedicatedReplicationServer', 'createReplicationConfigurationTemplate_useDedicatedReplicationServer' - Request to use Dedicated Replication Servers during Replication Settings
-- template creation.
newCreateReplicationConfigurationTemplate ::
  -- | 'associateDefaultSecurityGroup'
  Prelude.Bool ->
  -- | 'bandwidthThrottling'
  Prelude.Natural ->
  -- | 'createPublicIP'
  Prelude.Bool ->
  -- | 'dataPlaneRouting'
  ReplicationConfigurationDataPlaneRouting ->
  -- | 'defaultLargeStagingDiskType'
  ReplicationConfigurationDefaultLargeStagingDiskType ->
  -- | 'ebsEncryption'
  ReplicationConfigurationEbsEncryption ->
  -- | 'replicationServerInstanceType'
  Prelude.Text ->
  -- | 'stagingAreaSubnetId'
  Prelude.Text ->
  -- | 'useDedicatedReplicationServer'
  Prelude.Bool ->
  CreateReplicationConfigurationTemplate
newCreateReplicationConfigurationTemplate :: Bool
-> Natural
-> Bool
-> ReplicationConfigurationDataPlaneRouting
-> ReplicationConfigurationDefaultLargeStagingDiskType
-> ReplicationConfigurationEbsEncryption
-> Text
-> Text
-> Bool
-> CreateReplicationConfigurationTemplate
newCreateReplicationConfigurationTemplate
  Bool
pAssociateDefaultSecurityGroup_
  Natural
pBandwidthThrottling_
  Bool
pCreatePublicIP_
  ReplicationConfigurationDataPlaneRouting
pDataPlaneRouting_
  ReplicationConfigurationDefaultLargeStagingDiskType
pDefaultLargeStagingDiskType_
  ReplicationConfigurationEbsEncryption
pEbsEncryption_
  Text
pReplicationServerInstanceType_
  Text
pStagingAreaSubnetId_
  Bool
pUseDedicatedReplicationServer_ =
    CreateReplicationConfigurationTemplate'
      { $sel:ebsEncryptionKeyArn:CreateReplicationConfigurationTemplate' :: Maybe Text
ebsEncryptionKeyArn =
          forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateReplicationConfigurationTemplate' :: Maybe (Sensitive (HashMap Text Text))
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:associateDefaultSecurityGroup:CreateReplicationConfigurationTemplate' :: Bool
associateDefaultSecurityGroup =
          Bool
pAssociateDefaultSecurityGroup_,
        $sel:bandwidthThrottling:CreateReplicationConfigurationTemplate' :: Natural
bandwidthThrottling =
          Natural
pBandwidthThrottling_,
        $sel:createPublicIP:CreateReplicationConfigurationTemplate' :: Bool
createPublicIP = Bool
pCreatePublicIP_,
        $sel:dataPlaneRouting:CreateReplicationConfigurationTemplate' :: ReplicationConfigurationDataPlaneRouting
dataPlaneRouting =
          ReplicationConfigurationDataPlaneRouting
pDataPlaneRouting_,
        $sel:defaultLargeStagingDiskType:CreateReplicationConfigurationTemplate' :: ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType =
          ReplicationConfigurationDefaultLargeStagingDiskType
pDefaultLargeStagingDiskType_,
        $sel:ebsEncryption:CreateReplicationConfigurationTemplate' :: ReplicationConfigurationEbsEncryption
ebsEncryption = ReplicationConfigurationEbsEncryption
pEbsEncryption_,
        $sel:replicationServerInstanceType:CreateReplicationConfigurationTemplate' :: Text
replicationServerInstanceType =
          Text
pReplicationServerInstanceType_,
        $sel:replicationServersSecurityGroupsIDs:CreateReplicationConfigurationTemplate' :: [Text]
replicationServersSecurityGroupsIDs =
          forall a. Monoid a => a
Prelude.mempty,
        $sel:stagingAreaSubnetId:CreateReplicationConfigurationTemplate' :: Text
stagingAreaSubnetId =
          Text
pStagingAreaSubnetId_,
        $sel:stagingAreaTags:CreateReplicationConfigurationTemplate' :: Sensitive (HashMap Text Text)
stagingAreaTags = forall a. Monoid a => a
Prelude.mempty,
        $sel:useDedicatedReplicationServer:CreateReplicationConfigurationTemplate' :: Bool
useDedicatedReplicationServer =
          Bool
pUseDedicatedReplicationServer_
      }

-- | Request to configure an EBS encryption key during Replication Settings
-- template creation.
createReplicationConfigurationTemplate_ebsEncryptionKeyArn :: Lens.Lens' CreateReplicationConfigurationTemplate (Prelude.Maybe Prelude.Text)
createReplicationConfigurationTemplate_ebsEncryptionKeyArn :: Lens' CreateReplicationConfigurationTemplate (Maybe Text)
createReplicationConfigurationTemplate_ebsEncryptionKeyArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {Maybe Text
ebsEncryptionKeyArn :: Maybe Text
$sel:ebsEncryptionKeyArn:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Maybe Text
ebsEncryptionKeyArn} -> Maybe Text
ebsEncryptionKeyArn) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} Maybe Text
a -> CreateReplicationConfigurationTemplate
s {$sel:ebsEncryptionKeyArn:CreateReplicationConfigurationTemplate' :: Maybe Text
ebsEncryptionKeyArn = Maybe Text
a} :: CreateReplicationConfigurationTemplate)

-- | Request to configure tags during Replication Settings template creation.
createReplicationConfigurationTemplate_tags :: Lens.Lens' CreateReplicationConfigurationTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createReplicationConfigurationTemplate_tags :: Lens'
  CreateReplicationConfigurationTemplate (Maybe (HashMap Text Text))
createReplicationConfigurationTemplate_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {Maybe (Sensitive (HashMap Text Text))
tags :: Maybe (Sensitive (HashMap Text Text))
$sel:tags:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> Maybe (Sensitive (HashMap Text Text))
tags} -> Maybe (Sensitive (HashMap Text Text))
tags) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} Maybe (Sensitive (HashMap Text Text))
a -> CreateReplicationConfigurationTemplate
s {$sel:tags:CreateReplicationConfigurationTemplate' :: Maybe (Sensitive (HashMap Text Text))
tags = Maybe (Sensitive (HashMap Text Text))
a} :: CreateReplicationConfigurationTemplate) 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)

-- | Request to associate the default Application Migration Service Security
-- group with the Replication Settings template.
createReplicationConfigurationTemplate_associateDefaultSecurityGroup :: Lens.Lens' CreateReplicationConfigurationTemplate Prelude.Bool
createReplicationConfigurationTemplate_associateDefaultSecurityGroup :: Lens' CreateReplicationConfigurationTemplate Bool
createReplicationConfigurationTemplate_associateDefaultSecurityGroup = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {Bool
associateDefaultSecurityGroup :: Bool
$sel:associateDefaultSecurityGroup:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Bool
associateDefaultSecurityGroup} -> Bool
associateDefaultSecurityGroup) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} Bool
a -> CreateReplicationConfigurationTemplate
s {$sel:associateDefaultSecurityGroup:CreateReplicationConfigurationTemplate' :: Bool
associateDefaultSecurityGroup = Bool
a} :: CreateReplicationConfigurationTemplate)

-- | Request to configure bandwidth throttling during Replication Settings
-- template creation.
createReplicationConfigurationTemplate_bandwidthThrottling :: Lens.Lens' CreateReplicationConfigurationTemplate Prelude.Natural
createReplicationConfigurationTemplate_bandwidthThrottling :: Lens' CreateReplicationConfigurationTemplate Natural
createReplicationConfigurationTemplate_bandwidthThrottling = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {Natural
bandwidthThrottling :: Natural
$sel:bandwidthThrottling:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Natural
bandwidthThrottling} -> Natural
bandwidthThrottling) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} Natural
a -> CreateReplicationConfigurationTemplate
s {$sel:bandwidthThrottling:CreateReplicationConfigurationTemplate' :: Natural
bandwidthThrottling = Natural
a} :: CreateReplicationConfigurationTemplate)

-- | Request to create Public IP during Replication Settings template
-- creation.
createReplicationConfigurationTemplate_createPublicIP :: Lens.Lens' CreateReplicationConfigurationTemplate Prelude.Bool
createReplicationConfigurationTemplate_createPublicIP :: Lens' CreateReplicationConfigurationTemplate Bool
createReplicationConfigurationTemplate_createPublicIP = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {Bool
createPublicIP :: Bool
$sel:createPublicIP:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Bool
createPublicIP} -> Bool
createPublicIP) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} Bool
a -> CreateReplicationConfigurationTemplate
s {$sel:createPublicIP:CreateReplicationConfigurationTemplate' :: Bool
createPublicIP = Bool
a} :: CreateReplicationConfigurationTemplate)

-- | Request to configure data plane routing during Replication Settings
-- template creation.
createReplicationConfigurationTemplate_dataPlaneRouting :: Lens.Lens' CreateReplicationConfigurationTemplate ReplicationConfigurationDataPlaneRouting
createReplicationConfigurationTemplate_dataPlaneRouting :: Lens'
  CreateReplicationConfigurationTemplate
  ReplicationConfigurationDataPlaneRouting
createReplicationConfigurationTemplate_dataPlaneRouting = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {ReplicationConfigurationDataPlaneRouting
dataPlaneRouting :: ReplicationConfigurationDataPlaneRouting
$sel:dataPlaneRouting:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> ReplicationConfigurationDataPlaneRouting
dataPlaneRouting} -> ReplicationConfigurationDataPlaneRouting
dataPlaneRouting) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} ReplicationConfigurationDataPlaneRouting
a -> CreateReplicationConfigurationTemplate
s {$sel:dataPlaneRouting:CreateReplicationConfigurationTemplate' :: ReplicationConfigurationDataPlaneRouting
dataPlaneRouting = ReplicationConfigurationDataPlaneRouting
a} :: CreateReplicationConfigurationTemplate)

-- | Request to configure the default large staging disk EBS volume type
-- during Replication Settings template creation.
createReplicationConfigurationTemplate_defaultLargeStagingDiskType :: Lens.Lens' CreateReplicationConfigurationTemplate ReplicationConfigurationDefaultLargeStagingDiskType
createReplicationConfigurationTemplate_defaultLargeStagingDiskType :: Lens'
  CreateReplicationConfigurationTemplate
  ReplicationConfigurationDefaultLargeStagingDiskType
createReplicationConfigurationTemplate_defaultLargeStagingDiskType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType :: ReplicationConfigurationDefaultLargeStagingDiskType
$sel:defaultLargeStagingDiskType:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType} -> ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} ReplicationConfigurationDefaultLargeStagingDiskType
a -> CreateReplicationConfigurationTemplate
s {$sel:defaultLargeStagingDiskType:CreateReplicationConfigurationTemplate' :: ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType = ReplicationConfigurationDefaultLargeStagingDiskType
a} :: CreateReplicationConfigurationTemplate)

-- | Request to configure EBS encryption during Replication Settings template
-- creation.
createReplicationConfigurationTemplate_ebsEncryption :: Lens.Lens' CreateReplicationConfigurationTemplate ReplicationConfigurationEbsEncryption
createReplicationConfigurationTemplate_ebsEncryption :: Lens'
  CreateReplicationConfigurationTemplate
  ReplicationConfigurationEbsEncryption
createReplicationConfigurationTemplate_ebsEncryption = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {ReplicationConfigurationEbsEncryption
ebsEncryption :: ReplicationConfigurationEbsEncryption
$sel:ebsEncryption:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> ReplicationConfigurationEbsEncryption
ebsEncryption} -> ReplicationConfigurationEbsEncryption
ebsEncryption) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} ReplicationConfigurationEbsEncryption
a -> CreateReplicationConfigurationTemplate
s {$sel:ebsEncryption:CreateReplicationConfigurationTemplate' :: ReplicationConfigurationEbsEncryption
ebsEncryption = ReplicationConfigurationEbsEncryption
a} :: CreateReplicationConfigurationTemplate)

-- | Request to configure the Replication Server instance type during
-- Replication Settings template creation.
createReplicationConfigurationTemplate_replicationServerInstanceType :: Lens.Lens' CreateReplicationConfigurationTemplate Prelude.Text
createReplicationConfigurationTemplate_replicationServerInstanceType :: Lens' CreateReplicationConfigurationTemplate Text
createReplicationConfigurationTemplate_replicationServerInstanceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {Text
replicationServerInstanceType :: Text
$sel:replicationServerInstanceType:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Text
replicationServerInstanceType} -> Text
replicationServerInstanceType) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} Text
a -> CreateReplicationConfigurationTemplate
s {$sel:replicationServerInstanceType:CreateReplicationConfigurationTemplate' :: Text
replicationServerInstanceType = Text
a} :: CreateReplicationConfigurationTemplate)

-- | Request to configure the Replication Server Security group ID during
-- Replication Settings template creation.
createReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs :: Lens.Lens' CreateReplicationConfigurationTemplate [Prelude.Text]
createReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs :: Lens' CreateReplicationConfigurationTemplate [Text]
createReplicationConfigurationTemplate_replicationServersSecurityGroupsIDs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {[Text]
replicationServersSecurityGroupsIDs :: [Text]
$sel:replicationServersSecurityGroupsIDs:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> [Text]
replicationServersSecurityGroupsIDs} -> [Text]
replicationServersSecurityGroupsIDs) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} [Text]
a -> CreateReplicationConfigurationTemplate
s {$sel:replicationServersSecurityGroupsIDs:CreateReplicationConfigurationTemplate' :: [Text]
replicationServersSecurityGroupsIDs = [Text]
a} :: CreateReplicationConfigurationTemplate) 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

-- | Request to configure the Staging Area subnet ID during Replication
-- Settings template creation.
createReplicationConfigurationTemplate_stagingAreaSubnetId :: Lens.Lens' CreateReplicationConfigurationTemplate Prelude.Text
createReplicationConfigurationTemplate_stagingAreaSubnetId :: Lens' CreateReplicationConfigurationTemplate Text
createReplicationConfigurationTemplate_stagingAreaSubnetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {Text
stagingAreaSubnetId :: Text
$sel:stagingAreaSubnetId:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Text
stagingAreaSubnetId} -> Text
stagingAreaSubnetId) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} Text
a -> CreateReplicationConfigurationTemplate
s {$sel:stagingAreaSubnetId:CreateReplicationConfigurationTemplate' :: Text
stagingAreaSubnetId = Text
a} :: CreateReplicationConfigurationTemplate)

-- | Request to configure Staging Area tags during Replication Settings
-- template creation.
createReplicationConfigurationTemplate_stagingAreaTags :: Lens.Lens' CreateReplicationConfigurationTemplate (Prelude.HashMap Prelude.Text Prelude.Text)
createReplicationConfigurationTemplate_stagingAreaTags :: Lens' CreateReplicationConfigurationTemplate (HashMap Text Text)
createReplicationConfigurationTemplate_stagingAreaTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {Sensitive (HashMap Text Text)
stagingAreaTags :: Sensitive (HashMap Text Text)
$sel:stagingAreaTags:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> Sensitive (HashMap Text Text)
stagingAreaTags} -> Sensitive (HashMap Text Text)
stagingAreaTags) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} Sensitive (HashMap Text Text)
a -> CreateReplicationConfigurationTemplate
s {$sel:stagingAreaTags:CreateReplicationConfigurationTemplate' :: Sensitive (HashMap Text Text)
stagingAreaTags = Sensitive (HashMap Text Text)
a} :: CreateReplicationConfigurationTemplate) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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

-- | Request to use Dedicated Replication Servers during Replication Settings
-- template creation.
createReplicationConfigurationTemplate_useDedicatedReplicationServer :: Lens.Lens' CreateReplicationConfigurationTemplate Prelude.Bool
createReplicationConfigurationTemplate_useDedicatedReplicationServer :: Lens' CreateReplicationConfigurationTemplate Bool
createReplicationConfigurationTemplate_useDedicatedReplicationServer = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateReplicationConfigurationTemplate' {Bool
useDedicatedReplicationServer :: Bool
$sel:useDedicatedReplicationServer:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Bool
useDedicatedReplicationServer} -> Bool
useDedicatedReplicationServer) (\s :: CreateReplicationConfigurationTemplate
s@CreateReplicationConfigurationTemplate' {} Bool
a -> CreateReplicationConfigurationTemplate
s {$sel:useDedicatedReplicationServer:CreateReplicationConfigurationTemplate' :: Bool
useDedicatedReplicationServer = Bool
a} :: CreateReplicationConfigurationTemplate)

instance
  Core.AWSRequest
    CreateReplicationConfigurationTemplate
  where
  type
    AWSResponse
      CreateReplicationConfigurationTemplate =
      ReplicationConfigurationTemplate
  request :: (Service -> Service)
-> CreateReplicationConfigurationTemplate
-> Request CreateReplicationConfigurationTemplate
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 CreateReplicationConfigurationTemplate
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse CreateReplicationConfigurationTemplate)))
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
    CreateReplicationConfigurationTemplate
  where
  hashWithSalt :: Int -> CreateReplicationConfigurationTemplate -> Int
hashWithSalt
    Int
_salt
    CreateReplicationConfigurationTemplate' {Bool
Natural
[Text]
Maybe Text
Maybe (Sensitive (HashMap Text Text))
Text
Sensitive (HashMap Text Text)
ReplicationConfigurationDataPlaneRouting
ReplicationConfigurationDefaultLargeStagingDiskType
ReplicationConfigurationEbsEncryption
useDedicatedReplicationServer :: Bool
stagingAreaTags :: Sensitive (HashMap Text Text)
stagingAreaSubnetId :: Text
replicationServersSecurityGroupsIDs :: [Text]
replicationServerInstanceType :: Text
ebsEncryption :: ReplicationConfigurationEbsEncryption
defaultLargeStagingDiskType :: ReplicationConfigurationDefaultLargeStagingDiskType
dataPlaneRouting :: ReplicationConfigurationDataPlaneRouting
createPublicIP :: Bool
bandwidthThrottling :: Natural
associateDefaultSecurityGroup :: Bool
tags :: Maybe (Sensitive (HashMap Text Text))
ebsEncryptionKeyArn :: Maybe Text
$sel:useDedicatedReplicationServer:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Bool
$sel:stagingAreaTags:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> Sensitive (HashMap Text Text)
$sel:stagingAreaSubnetId:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Text
$sel:replicationServersSecurityGroupsIDs:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> [Text]
$sel:replicationServerInstanceType:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Text
$sel:ebsEncryption:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> ReplicationConfigurationEbsEncryption
$sel:defaultLargeStagingDiskType:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> ReplicationConfigurationDefaultLargeStagingDiskType
$sel:dataPlaneRouting:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> ReplicationConfigurationDataPlaneRouting
$sel:createPublicIP:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Bool
$sel:bandwidthThrottling:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Natural
$sel:associateDefaultSecurityGroup:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Bool
$sel:tags:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> Maybe (Sensitive (HashMap Text Text))
$sel:ebsEncryptionKeyArn:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ebsEncryptionKeyArn
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive (HashMap Text Text))
tags
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Bool
associateDefaultSecurityGroup
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Natural
bandwidthThrottling
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Bool
createPublicIP
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ReplicationConfigurationDataPlaneRouting
dataPlaneRouting
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ReplicationConfigurationEbsEncryption
ebsEncryption
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
replicationServerInstanceType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [Text]
replicationServersSecurityGroupsIDs
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
stagingAreaSubnetId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Sensitive (HashMap Text Text)
stagingAreaTags
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Bool
useDedicatedReplicationServer

instance
  Prelude.NFData
    CreateReplicationConfigurationTemplate
  where
  rnf :: CreateReplicationConfigurationTemplate -> ()
rnf CreateReplicationConfigurationTemplate' {Bool
Natural
[Text]
Maybe Text
Maybe (Sensitive (HashMap Text Text))
Text
Sensitive (HashMap Text Text)
ReplicationConfigurationDataPlaneRouting
ReplicationConfigurationDefaultLargeStagingDiskType
ReplicationConfigurationEbsEncryption
useDedicatedReplicationServer :: Bool
stagingAreaTags :: Sensitive (HashMap Text Text)
stagingAreaSubnetId :: Text
replicationServersSecurityGroupsIDs :: [Text]
replicationServerInstanceType :: Text
ebsEncryption :: ReplicationConfigurationEbsEncryption
defaultLargeStagingDiskType :: ReplicationConfigurationDefaultLargeStagingDiskType
dataPlaneRouting :: ReplicationConfigurationDataPlaneRouting
createPublicIP :: Bool
bandwidthThrottling :: Natural
associateDefaultSecurityGroup :: Bool
tags :: Maybe (Sensitive (HashMap Text Text))
ebsEncryptionKeyArn :: Maybe Text
$sel:useDedicatedReplicationServer:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Bool
$sel:stagingAreaTags:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> Sensitive (HashMap Text Text)
$sel:stagingAreaSubnetId:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Text
$sel:replicationServersSecurityGroupsIDs:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> [Text]
$sel:replicationServerInstanceType:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Text
$sel:ebsEncryption:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> ReplicationConfigurationEbsEncryption
$sel:defaultLargeStagingDiskType:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> ReplicationConfigurationDefaultLargeStagingDiskType
$sel:dataPlaneRouting:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> ReplicationConfigurationDataPlaneRouting
$sel:createPublicIP:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Bool
$sel:bandwidthThrottling:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Natural
$sel:associateDefaultSecurityGroup:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Bool
$sel:tags:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> Maybe (Sensitive (HashMap Text Text))
$sel:ebsEncryptionKeyArn:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Maybe Text
..} =
    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 (Sensitive (HashMap Text Text))
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Bool
associateDefaultSecurityGroup
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Natural
bandwidthThrottling
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Bool
createPublicIP
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ReplicationConfigurationDataPlaneRouting
dataPlaneRouting
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ReplicationConfigurationEbsEncryption
ebsEncryption
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
replicationServerInstanceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [Text]
replicationServersSecurityGroupsIDs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
stagingAreaSubnetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Sensitive (HashMap Text Text)
stagingAreaTags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Bool
useDedicatedReplicationServer

instance
  Data.ToHeaders
    CreateReplicationConfigurationTemplate
  where
  toHeaders :: CreateReplicationConfigurationTemplate -> 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
    CreateReplicationConfigurationTemplate
  where
  toJSON :: CreateReplicationConfigurationTemplate -> Value
toJSON CreateReplicationConfigurationTemplate' {Bool
Natural
[Text]
Maybe Text
Maybe (Sensitive (HashMap Text Text))
Text
Sensitive (HashMap Text Text)
ReplicationConfigurationDataPlaneRouting
ReplicationConfigurationDefaultLargeStagingDiskType
ReplicationConfigurationEbsEncryption
useDedicatedReplicationServer :: Bool
stagingAreaTags :: Sensitive (HashMap Text Text)
stagingAreaSubnetId :: Text
replicationServersSecurityGroupsIDs :: [Text]
replicationServerInstanceType :: Text
ebsEncryption :: ReplicationConfigurationEbsEncryption
defaultLargeStagingDiskType :: ReplicationConfigurationDefaultLargeStagingDiskType
dataPlaneRouting :: ReplicationConfigurationDataPlaneRouting
createPublicIP :: Bool
bandwidthThrottling :: Natural
associateDefaultSecurityGroup :: Bool
tags :: Maybe (Sensitive (HashMap Text Text))
ebsEncryptionKeyArn :: Maybe Text
$sel:useDedicatedReplicationServer:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Bool
$sel:stagingAreaTags:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> Sensitive (HashMap Text Text)
$sel:stagingAreaSubnetId:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Text
$sel:replicationServersSecurityGroupsIDs:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> [Text]
$sel:replicationServerInstanceType:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Text
$sel:ebsEncryption:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> ReplicationConfigurationEbsEncryption
$sel:defaultLargeStagingDiskType:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> ReplicationConfigurationDefaultLargeStagingDiskType
$sel:dataPlaneRouting:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> ReplicationConfigurationDataPlaneRouting
$sel:createPublicIP:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Bool
$sel:bandwidthThrottling:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Natural
$sel:associateDefaultSecurityGroup:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Bool
$sel:tags:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate
-> Maybe (Sensitive (HashMap Text Text))
$sel:ebsEncryptionKeyArn:CreateReplicationConfigurationTemplate' :: CreateReplicationConfigurationTemplate -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (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
"tags" 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))
tags,
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"associateDefaultSecurityGroup"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Bool
associateDefaultSecurityGroup
              ),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"bandwidthThrottling" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Natural
bandwidthThrottling),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"createPublicIP" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Bool
createPublicIP),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"dataPlaneRouting" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ReplicationConfigurationDataPlaneRouting
dataPlaneRouting),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"defaultLargeStagingDiskType"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType
              ),
            forall a. a -> Maybe a
Prelude.Just (Key
"ebsEncryption" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ReplicationConfigurationEbsEncryption
ebsEncryption),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"replicationServerInstanceType"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
replicationServerInstanceType
              ),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"replicationServersSecurityGroupsIDs"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= [Text]
replicationServersSecurityGroupsIDs
              ),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"stagingAreaSubnetId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
stagingAreaSubnetId),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"stagingAreaTags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Sensitive (HashMap Text Text)
stagingAreaTags),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"useDedicatedReplicationServer"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Bool
useDedicatedReplicationServer
              )
          ]
      )

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

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