{-# 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.UpdateReplicationConfiguration
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Allows you to update multiple ReplicationConfigurations by Source Server
-- ID.
module Amazonka.MGN.UpdateReplicationConfiguration
  ( -- * Creating a Request
    UpdateReplicationConfiguration (..),
    newUpdateReplicationConfiguration,

    -- * Request Lenses
    updateReplicationConfiguration_associateDefaultSecurityGroup,
    updateReplicationConfiguration_bandwidthThrottling,
    updateReplicationConfiguration_createPublicIP,
    updateReplicationConfiguration_dataPlaneRouting,
    updateReplicationConfiguration_defaultLargeStagingDiskType,
    updateReplicationConfiguration_ebsEncryption,
    updateReplicationConfiguration_ebsEncryptionKeyArn,
    updateReplicationConfiguration_name,
    updateReplicationConfiguration_replicatedDisks,
    updateReplicationConfiguration_replicationServerInstanceType,
    updateReplicationConfiguration_replicationServersSecurityGroupsIDs,
    updateReplicationConfiguration_stagingAreaSubnetId,
    updateReplicationConfiguration_stagingAreaTags,
    updateReplicationConfiguration_useDedicatedReplicationServer,
    updateReplicationConfiguration_sourceServerID,

    -- * Destructuring the Response
    ReplicationConfiguration (..),
    newReplicationConfiguration,

    -- * Response Lenses
    replicationConfiguration_associateDefaultSecurityGroup,
    replicationConfiguration_bandwidthThrottling,
    replicationConfiguration_createPublicIP,
    replicationConfiguration_dataPlaneRouting,
    replicationConfiguration_defaultLargeStagingDiskType,
    replicationConfiguration_ebsEncryption,
    replicationConfiguration_ebsEncryptionKeyArn,
    replicationConfiguration_name,
    replicationConfiguration_replicatedDisks,
    replicationConfiguration_replicationServerInstanceType,
    replicationConfiguration_replicationServersSecurityGroupsIDs,
    replicationConfiguration_sourceServerID,
    replicationConfiguration_stagingAreaSubnetId,
    replicationConfiguration_stagingAreaTags,
    replicationConfiguration_useDedicatedReplicationServer,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MGN.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newUpdateReplicationConfiguration' smart constructor.
data UpdateReplicationConfiguration = UpdateReplicationConfiguration'
  { -- | Update replication configuration associate default Application Migration
    -- Service Security group request.
    UpdateReplicationConfiguration -> Maybe Bool
associateDefaultSecurityGroup :: Prelude.Maybe Prelude.Bool,
    -- | Update replication configuration bandwidth throttling request.
    UpdateReplicationConfiguration -> Maybe Natural
bandwidthThrottling :: Prelude.Maybe Prelude.Natural,
    -- | Update replication configuration create Public IP request.
    UpdateReplicationConfiguration -> Maybe Bool
createPublicIP :: Prelude.Maybe Prelude.Bool,
    -- | Update replication configuration data plane routing request.
    UpdateReplicationConfiguration
-> Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting :: Prelude.Maybe ReplicationConfigurationDataPlaneRouting,
    -- | Update replication configuration use default large Staging Disk type
    -- request.
    UpdateReplicationConfiguration
-> Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType :: Prelude.Maybe ReplicationConfigurationDefaultLargeStagingDiskType,
    -- | Update replication configuration EBS encryption request.
    UpdateReplicationConfiguration
-> Maybe ReplicationConfigurationEbsEncryption
ebsEncryption :: Prelude.Maybe ReplicationConfigurationEbsEncryption,
    -- | Update replication configuration EBS encryption key ARN request.
    UpdateReplicationConfiguration -> Maybe Text
ebsEncryptionKeyArn :: Prelude.Maybe Prelude.Text,
    -- | Update replication configuration name request.
    UpdateReplicationConfiguration -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | Update replication configuration replicated disks request.
    UpdateReplicationConfiguration
-> Maybe [ReplicationConfigurationReplicatedDisk]
replicatedDisks :: Prelude.Maybe [ReplicationConfigurationReplicatedDisk],
    -- | Update replication configuration Replication Server instance type
    -- request.
    UpdateReplicationConfiguration -> Maybe Text
replicationServerInstanceType :: Prelude.Maybe Prelude.Text,
    -- | Update replication configuration Replication Server Security Groups IDs
    -- request.
    UpdateReplicationConfiguration -> Maybe [Text]
replicationServersSecurityGroupsIDs :: Prelude.Maybe [Prelude.Text],
    -- | Update replication configuration Staging Area subnet request.
    UpdateReplicationConfiguration -> Maybe Text
stagingAreaSubnetId :: Prelude.Maybe Prelude.Text,
    -- | Update replication configuration Staging Area Tags request.
    UpdateReplicationConfiguration
-> Maybe (Sensitive (HashMap Text Text))
stagingAreaTags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)),
    -- | Update replication configuration use dedicated Replication Server
    -- request.
    UpdateReplicationConfiguration -> Maybe Bool
useDedicatedReplicationServer :: Prelude.Maybe Prelude.Bool,
    -- | Update replication configuration Source Server ID request.
    UpdateReplicationConfiguration -> Text
sourceServerID :: Prelude.Text
  }
  deriving (UpdateReplicationConfiguration
-> UpdateReplicationConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateReplicationConfiguration
-> UpdateReplicationConfiguration -> Bool
$c/= :: UpdateReplicationConfiguration
-> UpdateReplicationConfiguration -> Bool
== :: UpdateReplicationConfiguration
-> UpdateReplicationConfiguration -> Bool
$c== :: UpdateReplicationConfiguration
-> UpdateReplicationConfiguration -> Bool
Prelude.Eq, Int -> UpdateReplicationConfiguration -> ShowS
[UpdateReplicationConfiguration] -> ShowS
UpdateReplicationConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateReplicationConfiguration] -> ShowS
$cshowList :: [UpdateReplicationConfiguration] -> ShowS
show :: UpdateReplicationConfiguration -> String
$cshow :: UpdateReplicationConfiguration -> String
showsPrec :: Int -> UpdateReplicationConfiguration -> ShowS
$cshowsPrec :: Int -> UpdateReplicationConfiguration -> ShowS
Prelude.Show, forall x.
Rep UpdateReplicationConfiguration x
-> UpdateReplicationConfiguration
forall x.
UpdateReplicationConfiguration
-> Rep UpdateReplicationConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateReplicationConfiguration x
-> UpdateReplicationConfiguration
$cfrom :: forall x.
UpdateReplicationConfiguration
-> Rep UpdateReplicationConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'UpdateReplicationConfiguration' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'associateDefaultSecurityGroup', 'updateReplicationConfiguration_associateDefaultSecurityGroup' - Update replication configuration associate default Application Migration
-- Service Security group request.
--
-- 'bandwidthThrottling', 'updateReplicationConfiguration_bandwidthThrottling' - Update replication configuration bandwidth throttling request.
--
-- 'createPublicIP', 'updateReplicationConfiguration_createPublicIP' - Update replication configuration create Public IP request.
--
-- 'dataPlaneRouting', 'updateReplicationConfiguration_dataPlaneRouting' - Update replication configuration data plane routing request.
--
-- 'defaultLargeStagingDiskType', 'updateReplicationConfiguration_defaultLargeStagingDiskType' - Update replication configuration use default large Staging Disk type
-- request.
--
-- 'ebsEncryption', 'updateReplicationConfiguration_ebsEncryption' - Update replication configuration EBS encryption request.
--
-- 'ebsEncryptionKeyArn', 'updateReplicationConfiguration_ebsEncryptionKeyArn' - Update replication configuration EBS encryption key ARN request.
--
-- 'name', 'updateReplicationConfiguration_name' - Update replication configuration name request.
--
-- 'replicatedDisks', 'updateReplicationConfiguration_replicatedDisks' - Update replication configuration replicated disks request.
--
-- 'replicationServerInstanceType', 'updateReplicationConfiguration_replicationServerInstanceType' - Update replication configuration Replication Server instance type
-- request.
--
-- 'replicationServersSecurityGroupsIDs', 'updateReplicationConfiguration_replicationServersSecurityGroupsIDs' - Update replication configuration Replication Server Security Groups IDs
-- request.
--
-- 'stagingAreaSubnetId', 'updateReplicationConfiguration_stagingAreaSubnetId' - Update replication configuration Staging Area subnet request.
--
-- 'stagingAreaTags', 'updateReplicationConfiguration_stagingAreaTags' - Update replication configuration Staging Area Tags request.
--
-- 'useDedicatedReplicationServer', 'updateReplicationConfiguration_useDedicatedReplicationServer' - Update replication configuration use dedicated Replication Server
-- request.
--
-- 'sourceServerID', 'updateReplicationConfiguration_sourceServerID' - Update replication configuration Source Server ID request.
newUpdateReplicationConfiguration ::
  -- | 'sourceServerID'
  Prelude.Text ->
  UpdateReplicationConfiguration
newUpdateReplicationConfiguration :: Text -> UpdateReplicationConfiguration
newUpdateReplicationConfiguration Text
pSourceServerID_ =
  UpdateReplicationConfiguration'
    { $sel:associateDefaultSecurityGroup:UpdateReplicationConfiguration' :: Maybe Bool
associateDefaultSecurityGroup =
        forall a. Maybe a
Prelude.Nothing,
      $sel:bandwidthThrottling:UpdateReplicationConfiguration' :: Maybe Natural
bandwidthThrottling = forall a. Maybe a
Prelude.Nothing,
      $sel:createPublicIP:UpdateReplicationConfiguration' :: Maybe Bool
createPublicIP = forall a. Maybe a
Prelude.Nothing,
      $sel:dataPlaneRouting:UpdateReplicationConfiguration' :: Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultLargeStagingDiskType:UpdateReplicationConfiguration' :: Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType =
        forall a. Maybe a
Prelude.Nothing,
      $sel:ebsEncryption:UpdateReplicationConfiguration' :: Maybe ReplicationConfigurationEbsEncryption
ebsEncryption = forall a. Maybe a
Prelude.Nothing,
      $sel:ebsEncryptionKeyArn:UpdateReplicationConfiguration' :: Maybe Text
ebsEncryptionKeyArn = forall a. Maybe a
Prelude.Nothing,
      $sel:name:UpdateReplicationConfiguration' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:replicatedDisks:UpdateReplicationConfiguration' :: Maybe [ReplicationConfigurationReplicatedDisk]
replicatedDisks = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationServerInstanceType:UpdateReplicationConfiguration' :: Maybe Text
replicationServerInstanceType =
        forall a. Maybe a
Prelude.Nothing,
      $sel:replicationServersSecurityGroupsIDs:UpdateReplicationConfiguration' :: Maybe [Text]
replicationServersSecurityGroupsIDs =
        forall a. Maybe a
Prelude.Nothing,
      $sel:stagingAreaSubnetId:UpdateReplicationConfiguration' :: Maybe Text
stagingAreaSubnetId = forall a. Maybe a
Prelude.Nothing,
      $sel:stagingAreaTags:UpdateReplicationConfiguration' :: Maybe (Sensitive (HashMap Text Text))
stagingAreaTags = forall a. Maybe a
Prelude.Nothing,
      $sel:useDedicatedReplicationServer:UpdateReplicationConfiguration' :: Maybe Bool
useDedicatedReplicationServer =
        forall a. Maybe a
Prelude.Nothing,
      $sel:sourceServerID:UpdateReplicationConfiguration' :: Text
sourceServerID = Text
pSourceServerID_
    }

-- | Update replication configuration associate default Application Migration
-- Service Security group request.
updateReplicationConfiguration_associateDefaultSecurityGroup :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Bool)
updateReplicationConfiguration_associateDefaultSecurityGroup :: Lens' UpdateReplicationConfiguration (Maybe Bool)
updateReplicationConfiguration_associateDefaultSecurityGroup = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe Bool
associateDefaultSecurityGroup :: Maybe Bool
$sel:associateDefaultSecurityGroup:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration -> Maybe Bool
associateDefaultSecurityGroup} -> Maybe Bool
associateDefaultSecurityGroup) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe Bool
a -> UpdateReplicationConfiguration
s {$sel:associateDefaultSecurityGroup:UpdateReplicationConfiguration' :: Maybe Bool
associateDefaultSecurityGroup = Maybe Bool
a} :: UpdateReplicationConfiguration)

-- | Update replication configuration bandwidth throttling request.
updateReplicationConfiguration_bandwidthThrottling :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Natural)
updateReplicationConfiguration_bandwidthThrottling :: Lens' UpdateReplicationConfiguration (Maybe Natural)
updateReplicationConfiguration_bandwidthThrottling = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe Natural
bandwidthThrottling :: Maybe Natural
$sel:bandwidthThrottling:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration -> Maybe Natural
bandwidthThrottling} -> Maybe Natural
bandwidthThrottling) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe Natural
a -> UpdateReplicationConfiguration
s {$sel:bandwidthThrottling:UpdateReplicationConfiguration' :: Maybe Natural
bandwidthThrottling = Maybe Natural
a} :: UpdateReplicationConfiguration)

-- | Update replication configuration create Public IP request.
updateReplicationConfiguration_createPublicIP :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Bool)
updateReplicationConfiguration_createPublicIP :: Lens' UpdateReplicationConfiguration (Maybe Bool)
updateReplicationConfiguration_createPublicIP = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe Bool
createPublicIP :: Maybe Bool
$sel:createPublicIP:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration -> Maybe Bool
createPublicIP} -> Maybe Bool
createPublicIP) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe Bool
a -> UpdateReplicationConfiguration
s {$sel:createPublicIP:UpdateReplicationConfiguration' :: Maybe Bool
createPublicIP = Maybe Bool
a} :: UpdateReplicationConfiguration)

-- | Update replication configuration data plane routing request.
updateReplicationConfiguration_dataPlaneRouting :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe ReplicationConfigurationDataPlaneRouting)
updateReplicationConfiguration_dataPlaneRouting :: Lens'
  UpdateReplicationConfiguration
  (Maybe ReplicationConfigurationDataPlaneRouting)
updateReplicationConfiguration_dataPlaneRouting = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting :: Maybe ReplicationConfigurationDataPlaneRouting
$sel:dataPlaneRouting:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration
-> Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting} -> Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe ReplicationConfigurationDataPlaneRouting
a -> UpdateReplicationConfiguration
s {$sel:dataPlaneRouting:UpdateReplicationConfiguration' :: Maybe ReplicationConfigurationDataPlaneRouting
dataPlaneRouting = Maybe ReplicationConfigurationDataPlaneRouting
a} :: UpdateReplicationConfiguration)

-- | Update replication configuration use default large Staging Disk type
-- request.
updateReplicationConfiguration_defaultLargeStagingDiskType :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe ReplicationConfigurationDefaultLargeStagingDiskType)
updateReplicationConfiguration_defaultLargeStagingDiskType :: Lens'
  UpdateReplicationConfiguration
  (Maybe ReplicationConfigurationDefaultLargeStagingDiskType)
updateReplicationConfiguration_defaultLargeStagingDiskType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType :: Maybe ReplicationConfigurationDefaultLargeStagingDiskType
$sel:defaultLargeStagingDiskType:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration
-> Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType} -> Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe ReplicationConfigurationDefaultLargeStagingDiskType
a -> UpdateReplicationConfiguration
s {$sel:defaultLargeStagingDiskType:UpdateReplicationConfiguration' :: Maybe ReplicationConfigurationDefaultLargeStagingDiskType
defaultLargeStagingDiskType = Maybe ReplicationConfigurationDefaultLargeStagingDiskType
a} :: UpdateReplicationConfiguration)

-- | Update replication configuration EBS encryption request.
updateReplicationConfiguration_ebsEncryption :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe ReplicationConfigurationEbsEncryption)
updateReplicationConfiguration_ebsEncryption :: Lens'
  UpdateReplicationConfiguration
  (Maybe ReplicationConfigurationEbsEncryption)
updateReplicationConfiguration_ebsEncryption = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe ReplicationConfigurationEbsEncryption
ebsEncryption :: Maybe ReplicationConfigurationEbsEncryption
$sel:ebsEncryption:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration
-> Maybe ReplicationConfigurationEbsEncryption
ebsEncryption} -> Maybe ReplicationConfigurationEbsEncryption
ebsEncryption) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe ReplicationConfigurationEbsEncryption
a -> UpdateReplicationConfiguration
s {$sel:ebsEncryption:UpdateReplicationConfiguration' :: Maybe ReplicationConfigurationEbsEncryption
ebsEncryption = Maybe ReplicationConfigurationEbsEncryption
a} :: UpdateReplicationConfiguration)

-- | Update replication configuration EBS encryption key ARN request.
updateReplicationConfiguration_ebsEncryptionKeyArn :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Text)
updateReplicationConfiguration_ebsEncryptionKeyArn :: Lens' UpdateReplicationConfiguration (Maybe Text)
updateReplicationConfiguration_ebsEncryptionKeyArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe Text
ebsEncryptionKeyArn :: Maybe Text
$sel:ebsEncryptionKeyArn:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration -> Maybe Text
ebsEncryptionKeyArn} -> Maybe Text
ebsEncryptionKeyArn) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe Text
a -> UpdateReplicationConfiguration
s {$sel:ebsEncryptionKeyArn:UpdateReplicationConfiguration' :: Maybe Text
ebsEncryptionKeyArn = Maybe Text
a} :: UpdateReplicationConfiguration)

-- | Update replication configuration name request.
updateReplicationConfiguration_name :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Text)
updateReplicationConfiguration_name :: Lens' UpdateReplicationConfiguration (Maybe Text)
updateReplicationConfiguration_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe Text
name :: Maybe Text
$sel:name:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration -> Maybe Text
name} -> Maybe Text
name) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe Text
a -> UpdateReplicationConfiguration
s {$sel:name:UpdateReplicationConfiguration' :: Maybe Text
name = Maybe Text
a} :: UpdateReplicationConfiguration)

-- | Update replication configuration replicated disks request.
updateReplicationConfiguration_replicatedDisks :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe [ReplicationConfigurationReplicatedDisk])
updateReplicationConfiguration_replicatedDisks :: Lens'
  UpdateReplicationConfiguration
  (Maybe [ReplicationConfigurationReplicatedDisk])
updateReplicationConfiguration_replicatedDisks = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe [ReplicationConfigurationReplicatedDisk]
replicatedDisks :: Maybe [ReplicationConfigurationReplicatedDisk]
$sel:replicatedDisks:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration
-> Maybe [ReplicationConfigurationReplicatedDisk]
replicatedDisks} -> Maybe [ReplicationConfigurationReplicatedDisk]
replicatedDisks) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe [ReplicationConfigurationReplicatedDisk]
a -> UpdateReplicationConfiguration
s {$sel:replicatedDisks:UpdateReplicationConfiguration' :: Maybe [ReplicationConfigurationReplicatedDisk]
replicatedDisks = Maybe [ReplicationConfigurationReplicatedDisk]
a} :: UpdateReplicationConfiguration) 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

-- | Update replication configuration Replication Server instance type
-- request.
updateReplicationConfiguration_replicationServerInstanceType :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Text)
updateReplicationConfiguration_replicationServerInstanceType :: Lens' UpdateReplicationConfiguration (Maybe Text)
updateReplicationConfiguration_replicationServerInstanceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe Text
replicationServerInstanceType :: Maybe Text
$sel:replicationServerInstanceType:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration -> Maybe Text
replicationServerInstanceType} -> Maybe Text
replicationServerInstanceType) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe Text
a -> UpdateReplicationConfiguration
s {$sel:replicationServerInstanceType:UpdateReplicationConfiguration' :: Maybe Text
replicationServerInstanceType = Maybe Text
a} :: UpdateReplicationConfiguration)

-- | Update replication configuration Replication Server Security Groups IDs
-- request.
updateReplicationConfiguration_replicationServersSecurityGroupsIDs :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe [Prelude.Text])
updateReplicationConfiguration_replicationServersSecurityGroupsIDs :: Lens' UpdateReplicationConfiguration (Maybe [Text])
updateReplicationConfiguration_replicationServersSecurityGroupsIDs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe [Text]
replicationServersSecurityGroupsIDs :: Maybe [Text]
$sel:replicationServersSecurityGroupsIDs:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration -> Maybe [Text]
replicationServersSecurityGroupsIDs} -> Maybe [Text]
replicationServersSecurityGroupsIDs) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe [Text]
a -> UpdateReplicationConfiguration
s {$sel:replicationServersSecurityGroupsIDs:UpdateReplicationConfiguration' :: Maybe [Text]
replicationServersSecurityGroupsIDs = Maybe [Text]
a} :: UpdateReplicationConfiguration) 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

-- | Update replication configuration Staging Area subnet request.
updateReplicationConfiguration_stagingAreaSubnetId :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Text)
updateReplicationConfiguration_stagingAreaSubnetId :: Lens' UpdateReplicationConfiguration (Maybe Text)
updateReplicationConfiguration_stagingAreaSubnetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe Text
stagingAreaSubnetId :: Maybe Text
$sel:stagingAreaSubnetId:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration -> Maybe Text
stagingAreaSubnetId} -> Maybe Text
stagingAreaSubnetId) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe Text
a -> UpdateReplicationConfiguration
s {$sel:stagingAreaSubnetId:UpdateReplicationConfiguration' :: Maybe Text
stagingAreaSubnetId = Maybe Text
a} :: UpdateReplicationConfiguration)

-- | Update replication configuration Staging Area Tags request.
updateReplicationConfiguration_stagingAreaTags :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
updateReplicationConfiguration_stagingAreaTags :: Lens' UpdateReplicationConfiguration (Maybe (HashMap Text Text))
updateReplicationConfiguration_stagingAreaTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe (Sensitive (HashMap Text Text))
stagingAreaTags :: Maybe (Sensitive (HashMap Text Text))
$sel:stagingAreaTags:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration
-> Maybe (Sensitive (HashMap Text Text))
stagingAreaTags} -> Maybe (Sensitive (HashMap Text Text))
stagingAreaTags) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe (Sensitive (HashMap Text Text))
a -> UpdateReplicationConfiguration
s {$sel:stagingAreaTags:UpdateReplicationConfiguration' :: Maybe (Sensitive (HashMap Text Text))
stagingAreaTags = Maybe (Sensitive (HashMap Text Text))
a} :: UpdateReplicationConfiguration) 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)

-- | Update replication configuration use dedicated Replication Server
-- request.
updateReplicationConfiguration_useDedicatedReplicationServer :: Lens.Lens' UpdateReplicationConfiguration (Prelude.Maybe Prelude.Bool)
updateReplicationConfiguration_useDedicatedReplicationServer :: Lens' UpdateReplicationConfiguration (Maybe Bool)
updateReplicationConfiguration_useDedicatedReplicationServer = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Maybe Bool
useDedicatedReplicationServer :: Maybe Bool
$sel:useDedicatedReplicationServer:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration -> Maybe Bool
useDedicatedReplicationServer} -> Maybe Bool
useDedicatedReplicationServer) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Maybe Bool
a -> UpdateReplicationConfiguration
s {$sel:useDedicatedReplicationServer:UpdateReplicationConfiguration' :: Maybe Bool
useDedicatedReplicationServer = Maybe Bool
a} :: UpdateReplicationConfiguration)

-- | Update replication configuration Source Server ID request.
updateReplicationConfiguration_sourceServerID :: Lens.Lens' UpdateReplicationConfiguration Prelude.Text
updateReplicationConfiguration_sourceServerID :: Lens' UpdateReplicationConfiguration Text
updateReplicationConfiguration_sourceServerID = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationConfiguration' {Text
sourceServerID :: Text
$sel:sourceServerID:UpdateReplicationConfiguration' :: UpdateReplicationConfiguration -> Text
sourceServerID} -> Text
sourceServerID) (\s :: UpdateReplicationConfiguration
s@UpdateReplicationConfiguration' {} Text
a -> UpdateReplicationConfiguration
s {$sel:sourceServerID:UpdateReplicationConfiguration' :: Text
sourceServerID = Text
a} :: UpdateReplicationConfiguration)

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

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

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

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

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