{-# 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.DMS.ModifyReplicationInstance
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Modifies the replication instance to apply new settings. You can change
-- one or more parameters by specifying these parameters and the new values
-- in the request.
--
-- Some settings are applied during the maintenance window.
module Amazonka.DMS.ModifyReplicationInstance
  ( -- * Creating a Request
    ModifyReplicationInstance (..),
    newModifyReplicationInstance,

    -- * Request Lenses
    modifyReplicationInstance_allocatedStorage,
    modifyReplicationInstance_allowMajorVersionUpgrade,
    modifyReplicationInstance_applyImmediately,
    modifyReplicationInstance_autoMinorVersionUpgrade,
    modifyReplicationInstance_engineVersion,
    modifyReplicationInstance_multiAZ,
    modifyReplicationInstance_networkType,
    modifyReplicationInstance_preferredMaintenanceWindow,
    modifyReplicationInstance_replicationInstanceClass,
    modifyReplicationInstance_replicationInstanceIdentifier,
    modifyReplicationInstance_vpcSecurityGroupIds,
    modifyReplicationInstance_replicationInstanceArn,

    -- * Destructuring the Response
    ModifyReplicationInstanceResponse (..),
    newModifyReplicationInstanceResponse,

    -- * Response Lenses
    modifyReplicationInstanceResponse_replicationInstance,
    modifyReplicationInstanceResponse_httpStatus,
  )
where

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

-- |
--
-- /See:/ 'newModifyReplicationInstance' smart constructor.
data ModifyReplicationInstance = ModifyReplicationInstance'
  { -- | The amount of storage (in gigabytes) to be allocated for the replication
    -- instance.
    ModifyReplicationInstance -> Maybe Int
allocatedStorage :: Prelude.Maybe Prelude.Int,
    -- | Indicates that major version upgrades are allowed. Changing this
    -- parameter does not result in an outage, and the change is asynchronously
    -- applied as soon as possible.
    --
    -- This parameter must be set to @true@ when specifying a value for the
    -- @EngineVersion@ parameter that is a different major version than the
    -- replication instance\'s current version.
    ModifyReplicationInstance -> Maybe Bool
allowMajorVersionUpgrade :: Prelude.Maybe Prelude.Bool,
    -- | Indicates whether the changes should be applied immediately or during
    -- the next maintenance window.
    ModifyReplicationInstance -> Maybe Bool
applyImmediately :: Prelude.Maybe Prelude.Bool,
    -- | A value that indicates that minor version upgrades are applied
    -- automatically to the replication instance during the maintenance window.
    -- Changing this parameter doesn\'t result in an outage, except in the case
    -- described following. The change is asynchronously applied as soon as
    -- possible.
    --
    -- An outage does result if these factors apply:
    --
    -- -   This parameter is set to @true@ during the maintenance window.
    --
    -- -   A newer minor version is available.
    --
    -- -   DMS has enabled automatic patching for the given engine version.
    ModifyReplicationInstance -> Maybe Bool
autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,
    -- | The engine version number of the replication instance.
    --
    -- When modifying a major engine version of an instance, also set
    -- @AllowMajorVersionUpgrade@ to @true@.
    ModifyReplicationInstance -> Maybe Text
engineVersion :: Prelude.Maybe Prelude.Text,
    -- | Specifies whether the replication instance is a Multi-AZ deployment. You
    -- can\'t set the @AvailabilityZone@ parameter if the Multi-AZ parameter is
    -- set to @true@.
    ModifyReplicationInstance -> Maybe Bool
multiAZ :: Prelude.Maybe Prelude.Bool,
    -- | The type of IP address protocol used by a replication instance, such as
    -- IPv4 only or Dual-stack that supports both IPv4 and IPv6 addressing.
    -- IPv6 only is not yet supported.
    ModifyReplicationInstance -> Maybe Text
networkType :: Prelude.Maybe Prelude.Text,
    -- | The weekly time range (in UTC) during which system maintenance can
    -- occur, which might result in an outage. Changing this parameter does not
    -- result in an outage, except in the following situation, and the change
    -- is asynchronously applied as soon as possible. If moving this window to
    -- the current time, there must be at least 30 minutes between the current
    -- time and end of the window to ensure pending changes are applied.
    --
    -- Default: Uses existing setting
    --
    -- Format: ddd:hh24:mi-ddd:hh24:mi
    --
    -- Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun
    --
    -- Constraints: Must be at least 30 minutes
    ModifyReplicationInstance -> Maybe Text
preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
    -- | The compute and memory capacity of the replication instance as defined
    -- for the specified replication instance class. For example to specify the
    -- instance class dms.c4.large, set this parameter to @\"dms.c4.large\"@.
    --
    -- For more information on the settings and capacities for the available
    -- replication instance classes, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth Selecting the right DMS replication instance for your migration>.
    ModifyReplicationInstance -> Maybe Text
replicationInstanceClass :: Prelude.Maybe Prelude.Text,
    -- | The replication instance identifier. This parameter is stored as a
    -- lowercase string.
    ModifyReplicationInstance -> Maybe Text
replicationInstanceIdentifier :: Prelude.Maybe Prelude.Text,
    -- | Specifies the VPC security group to be used with the replication
    -- instance. The VPC security group must work with the VPC containing the
    -- replication instance.
    ModifyReplicationInstance -> Maybe [Text]
vpcSecurityGroupIds :: Prelude.Maybe [Prelude.Text],
    -- | The Amazon Resource Name (ARN) of the replication instance.
    ModifyReplicationInstance -> Text
replicationInstanceArn :: Prelude.Text
  }
  deriving (ModifyReplicationInstance -> ModifyReplicationInstance -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyReplicationInstance -> ModifyReplicationInstance -> Bool
$c/= :: ModifyReplicationInstance -> ModifyReplicationInstance -> Bool
== :: ModifyReplicationInstance -> ModifyReplicationInstance -> Bool
$c== :: ModifyReplicationInstance -> ModifyReplicationInstance -> Bool
Prelude.Eq, ReadPrec [ModifyReplicationInstance]
ReadPrec ModifyReplicationInstance
Int -> ReadS ModifyReplicationInstance
ReadS [ModifyReplicationInstance]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyReplicationInstance]
$creadListPrec :: ReadPrec [ModifyReplicationInstance]
readPrec :: ReadPrec ModifyReplicationInstance
$creadPrec :: ReadPrec ModifyReplicationInstance
readList :: ReadS [ModifyReplicationInstance]
$creadList :: ReadS [ModifyReplicationInstance]
readsPrec :: Int -> ReadS ModifyReplicationInstance
$creadsPrec :: Int -> ReadS ModifyReplicationInstance
Prelude.Read, Int -> ModifyReplicationInstance -> ShowS
[ModifyReplicationInstance] -> ShowS
ModifyReplicationInstance -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyReplicationInstance] -> ShowS
$cshowList :: [ModifyReplicationInstance] -> ShowS
show :: ModifyReplicationInstance -> String
$cshow :: ModifyReplicationInstance -> String
showsPrec :: Int -> ModifyReplicationInstance -> ShowS
$cshowsPrec :: Int -> ModifyReplicationInstance -> ShowS
Prelude.Show, forall x.
Rep ModifyReplicationInstance x -> ModifyReplicationInstance
forall x.
ModifyReplicationInstance -> Rep ModifyReplicationInstance x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModifyReplicationInstance x -> ModifyReplicationInstance
$cfrom :: forall x.
ModifyReplicationInstance -> Rep ModifyReplicationInstance x
Prelude.Generic)

-- |
-- Create a value of 'ModifyReplicationInstance' 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:
--
-- 'allocatedStorage', 'modifyReplicationInstance_allocatedStorage' - The amount of storage (in gigabytes) to be allocated for the replication
-- instance.
--
-- 'allowMajorVersionUpgrade', 'modifyReplicationInstance_allowMajorVersionUpgrade' - Indicates that major version upgrades are allowed. Changing this
-- parameter does not result in an outage, and the change is asynchronously
-- applied as soon as possible.
--
-- This parameter must be set to @true@ when specifying a value for the
-- @EngineVersion@ parameter that is a different major version than the
-- replication instance\'s current version.
--
-- 'applyImmediately', 'modifyReplicationInstance_applyImmediately' - Indicates whether the changes should be applied immediately or during
-- the next maintenance window.
--
-- 'autoMinorVersionUpgrade', 'modifyReplicationInstance_autoMinorVersionUpgrade' - A value that indicates that minor version upgrades are applied
-- automatically to the replication instance during the maintenance window.
-- Changing this parameter doesn\'t result in an outage, except in the case
-- described following. The change is asynchronously applied as soon as
-- possible.
--
-- An outage does result if these factors apply:
--
-- -   This parameter is set to @true@ during the maintenance window.
--
-- -   A newer minor version is available.
--
-- -   DMS has enabled automatic patching for the given engine version.
--
-- 'engineVersion', 'modifyReplicationInstance_engineVersion' - The engine version number of the replication instance.
--
-- When modifying a major engine version of an instance, also set
-- @AllowMajorVersionUpgrade@ to @true@.
--
-- 'multiAZ', 'modifyReplicationInstance_multiAZ' - Specifies whether the replication instance is a Multi-AZ deployment. You
-- can\'t set the @AvailabilityZone@ parameter if the Multi-AZ parameter is
-- set to @true@.
--
-- 'networkType', 'modifyReplicationInstance_networkType' - The type of IP address protocol used by a replication instance, such as
-- IPv4 only or Dual-stack that supports both IPv4 and IPv6 addressing.
-- IPv6 only is not yet supported.
--
-- 'preferredMaintenanceWindow', 'modifyReplicationInstance_preferredMaintenanceWindow' - The weekly time range (in UTC) during which system maintenance can
-- occur, which might result in an outage. Changing this parameter does not
-- result in an outage, except in the following situation, and the change
-- is asynchronously applied as soon as possible. If moving this window to
-- the current time, there must be at least 30 minutes between the current
-- time and end of the window to ensure pending changes are applied.
--
-- Default: Uses existing setting
--
-- Format: ddd:hh24:mi-ddd:hh24:mi
--
-- Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun
--
-- Constraints: Must be at least 30 minutes
--
-- 'replicationInstanceClass', 'modifyReplicationInstance_replicationInstanceClass' - The compute and memory capacity of the replication instance as defined
-- for the specified replication instance class. For example to specify the
-- instance class dms.c4.large, set this parameter to @\"dms.c4.large\"@.
--
-- For more information on the settings and capacities for the available
-- replication instance classes, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth Selecting the right DMS replication instance for your migration>.
--
-- 'replicationInstanceIdentifier', 'modifyReplicationInstance_replicationInstanceIdentifier' - The replication instance identifier. This parameter is stored as a
-- lowercase string.
--
-- 'vpcSecurityGroupIds', 'modifyReplicationInstance_vpcSecurityGroupIds' - Specifies the VPC security group to be used with the replication
-- instance. The VPC security group must work with the VPC containing the
-- replication instance.
--
-- 'replicationInstanceArn', 'modifyReplicationInstance_replicationInstanceArn' - The Amazon Resource Name (ARN) of the replication instance.
newModifyReplicationInstance ::
  -- | 'replicationInstanceArn'
  Prelude.Text ->
  ModifyReplicationInstance
newModifyReplicationInstance :: Text -> ModifyReplicationInstance
newModifyReplicationInstance Text
pReplicationInstanceArn_ =
  ModifyReplicationInstance'
    { $sel:allocatedStorage:ModifyReplicationInstance' :: Maybe Int
allocatedStorage =
        forall a. Maybe a
Prelude.Nothing,
      $sel:allowMajorVersionUpgrade:ModifyReplicationInstance' :: Maybe Bool
allowMajorVersionUpgrade = forall a. Maybe a
Prelude.Nothing,
      $sel:applyImmediately:ModifyReplicationInstance' :: Maybe Bool
applyImmediately = forall a. Maybe a
Prelude.Nothing,
      $sel:autoMinorVersionUpgrade:ModifyReplicationInstance' :: Maybe Bool
autoMinorVersionUpgrade = forall a. Maybe a
Prelude.Nothing,
      $sel:engineVersion:ModifyReplicationInstance' :: Maybe Text
engineVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:multiAZ:ModifyReplicationInstance' :: Maybe Bool
multiAZ = forall a. Maybe a
Prelude.Nothing,
      $sel:networkType:ModifyReplicationInstance' :: Maybe Text
networkType = forall a. Maybe a
Prelude.Nothing,
      $sel:preferredMaintenanceWindow:ModifyReplicationInstance' :: Maybe Text
preferredMaintenanceWindow = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstanceClass:ModifyReplicationInstance' :: Maybe Text
replicationInstanceClass = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstanceIdentifier:ModifyReplicationInstance' :: Maybe Text
replicationInstanceIdentifier = forall a. Maybe a
Prelude.Nothing,
      $sel:vpcSecurityGroupIds:ModifyReplicationInstance' :: Maybe [Text]
vpcSecurityGroupIds = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstanceArn:ModifyReplicationInstance' :: Text
replicationInstanceArn =
        Text
pReplicationInstanceArn_
    }

-- | The amount of storage (in gigabytes) to be allocated for the replication
-- instance.
modifyReplicationInstance_allocatedStorage :: Lens.Lens' ModifyReplicationInstance (Prelude.Maybe Prelude.Int)
modifyReplicationInstance_allocatedStorage :: Lens' ModifyReplicationInstance (Maybe Int)
modifyReplicationInstance_allocatedStorage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstance' {Maybe Int
allocatedStorage :: Maybe Int
$sel:allocatedStorage:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Int
allocatedStorage} -> Maybe Int
allocatedStorage) (\s :: ModifyReplicationInstance
s@ModifyReplicationInstance' {} Maybe Int
a -> ModifyReplicationInstance
s {$sel:allocatedStorage:ModifyReplicationInstance' :: Maybe Int
allocatedStorage = Maybe Int
a} :: ModifyReplicationInstance)

-- | Indicates that major version upgrades are allowed. Changing this
-- parameter does not result in an outage, and the change is asynchronously
-- applied as soon as possible.
--
-- This parameter must be set to @true@ when specifying a value for the
-- @EngineVersion@ parameter that is a different major version than the
-- replication instance\'s current version.
modifyReplicationInstance_allowMajorVersionUpgrade :: Lens.Lens' ModifyReplicationInstance (Prelude.Maybe Prelude.Bool)
modifyReplicationInstance_allowMajorVersionUpgrade :: Lens' ModifyReplicationInstance (Maybe Bool)
modifyReplicationInstance_allowMajorVersionUpgrade = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstance' {Maybe Bool
allowMajorVersionUpgrade :: Maybe Bool
$sel:allowMajorVersionUpgrade:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
allowMajorVersionUpgrade} -> Maybe Bool
allowMajorVersionUpgrade) (\s :: ModifyReplicationInstance
s@ModifyReplicationInstance' {} Maybe Bool
a -> ModifyReplicationInstance
s {$sel:allowMajorVersionUpgrade:ModifyReplicationInstance' :: Maybe Bool
allowMajorVersionUpgrade = Maybe Bool
a} :: ModifyReplicationInstance)

-- | Indicates whether the changes should be applied immediately or during
-- the next maintenance window.
modifyReplicationInstance_applyImmediately :: Lens.Lens' ModifyReplicationInstance (Prelude.Maybe Prelude.Bool)
modifyReplicationInstance_applyImmediately :: Lens' ModifyReplicationInstance (Maybe Bool)
modifyReplicationInstance_applyImmediately = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstance' {Maybe Bool
applyImmediately :: Maybe Bool
$sel:applyImmediately:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
applyImmediately} -> Maybe Bool
applyImmediately) (\s :: ModifyReplicationInstance
s@ModifyReplicationInstance' {} Maybe Bool
a -> ModifyReplicationInstance
s {$sel:applyImmediately:ModifyReplicationInstance' :: Maybe Bool
applyImmediately = Maybe Bool
a} :: ModifyReplicationInstance)

-- | A value that indicates that minor version upgrades are applied
-- automatically to the replication instance during the maintenance window.
-- Changing this parameter doesn\'t result in an outage, except in the case
-- described following. The change is asynchronously applied as soon as
-- possible.
--
-- An outage does result if these factors apply:
--
-- -   This parameter is set to @true@ during the maintenance window.
--
-- -   A newer minor version is available.
--
-- -   DMS has enabled automatic patching for the given engine version.
modifyReplicationInstance_autoMinorVersionUpgrade :: Lens.Lens' ModifyReplicationInstance (Prelude.Maybe Prelude.Bool)
modifyReplicationInstance_autoMinorVersionUpgrade :: Lens' ModifyReplicationInstance (Maybe Bool)
modifyReplicationInstance_autoMinorVersionUpgrade = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstance' {Maybe Bool
autoMinorVersionUpgrade :: Maybe Bool
$sel:autoMinorVersionUpgrade:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
autoMinorVersionUpgrade} -> Maybe Bool
autoMinorVersionUpgrade) (\s :: ModifyReplicationInstance
s@ModifyReplicationInstance' {} Maybe Bool
a -> ModifyReplicationInstance
s {$sel:autoMinorVersionUpgrade:ModifyReplicationInstance' :: Maybe Bool
autoMinorVersionUpgrade = Maybe Bool
a} :: ModifyReplicationInstance)

-- | The engine version number of the replication instance.
--
-- When modifying a major engine version of an instance, also set
-- @AllowMajorVersionUpgrade@ to @true@.
modifyReplicationInstance_engineVersion :: Lens.Lens' ModifyReplicationInstance (Prelude.Maybe Prelude.Text)
modifyReplicationInstance_engineVersion :: Lens' ModifyReplicationInstance (Maybe Text)
modifyReplicationInstance_engineVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstance' {Maybe Text
engineVersion :: Maybe Text
$sel:engineVersion:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
engineVersion} -> Maybe Text
engineVersion) (\s :: ModifyReplicationInstance
s@ModifyReplicationInstance' {} Maybe Text
a -> ModifyReplicationInstance
s {$sel:engineVersion:ModifyReplicationInstance' :: Maybe Text
engineVersion = Maybe Text
a} :: ModifyReplicationInstance)

-- | Specifies whether the replication instance is a Multi-AZ deployment. You
-- can\'t set the @AvailabilityZone@ parameter if the Multi-AZ parameter is
-- set to @true@.
modifyReplicationInstance_multiAZ :: Lens.Lens' ModifyReplicationInstance (Prelude.Maybe Prelude.Bool)
modifyReplicationInstance_multiAZ :: Lens' ModifyReplicationInstance (Maybe Bool)
modifyReplicationInstance_multiAZ = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstance' {Maybe Bool
multiAZ :: Maybe Bool
$sel:multiAZ:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
multiAZ} -> Maybe Bool
multiAZ) (\s :: ModifyReplicationInstance
s@ModifyReplicationInstance' {} Maybe Bool
a -> ModifyReplicationInstance
s {$sel:multiAZ:ModifyReplicationInstance' :: Maybe Bool
multiAZ = Maybe Bool
a} :: ModifyReplicationInstance)

-- | The type of IP address protocol used by a replication instance, such as
-- IPv4 only or Dual-stack that supports both IPv4 and IPv6 addressing.
-- IPv6 only is not yet supported.
modifyReplicationInstance_networkType :: Lens.Lens' ModifyReplicationInstance (Prelude.Maybe Prelude.Text)
modifyReplicationInstance_networkType :: Lens' ModifyReplicationInstance (Maybe Text)
modifyReplicationInstance_networkType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstance' {Maybe Text
networkType :: Maybe Text
$sel:networkType:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
networkType} -> Maybe Text
networkType) (\s :: ModifyReplicationInstance
s@ModifyReplicationInstance' {} Maybe Text
a -> ModifyReplicationInstance
s {$sel:networkType:ModifyReplicationInstance' :: Maybe Text
networkType = Maybe Text
a} :: ModifyReplicationInstance)

-- | The weekly time range (in UTC) during which system maintenance can
-- occur, which might result in an outage. Changing this parameter does not
-- result in an outage, except in the following situation, and the change
-- is asynchronously applied as soon as possible. If moving this window to
-- the current time, there must be at least 30 minutes between the current
-- time and end of the window to ensure pending changes are applied.
--
-- Default: Uses existing setting
--
-- Format: ddd:hh24:mi-ddd:hh24:mi
--
-- Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun
--
-- Constraints: Must be at least 30 minutes
modifyReplicationInstance_preferredMaintenanceWindow :: Lens.Lens' ModifyReplicationInstance (Prelude.Maybe Prelude.Text)
modifyReplicationInstance_preferredMaintenanceWindow :: Lens' ModifyReplicationInstance (Maybe Text)
modifyReplicationInstance_preferredMaintenanceWindow = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstance' {Maybe Text
preferredMaintenanceWindow :: Maybe Text
$sel:preferredMaintenanceWindow:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
preferredMaintenanceWindow} -> Maybe Text
preferredMaintenanceWindow) (\s :: ModifyReplicationInstance
s@ModifyReplicationInstance' {} Maybe Text
a -> ModifyReplicationInstance
s {$sel:preferredMaintenanceWindow:ModifyReplicationInstance' :: Maybe Text
preferredMaintenanceWindow = Maybe Text
a} :: ModifyReplicationInstance)

-- | The compute and memory capacity of the replication instance as defined
-- for the specified replication instance class. For example to specify the
-- instance class dms.c4.large, set this parameter to @\"dms.c4.large\"@.
--
-- For more information on the settings and capacities for the available
-- replication instance classes, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth Selecting the right DMS replication instance for your migration>.
modifyReplicationInstance_replicationInstanceClass :: Lens.Lens' ModifyReplicationInstance (Prelude.Maybe Prelude.Text)
modifyReplicationInstance_replicationInstanceClass :: Lens' ModifyReplicationInstance (Maybe Text)
modifyReplicationInstance_replicationInstanceClass = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstance' {Maybe Text
replicationInstanceClass :: Maybe Text
$sel:replicationInstanceClass:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
replicationInstanceClass} -> Maybe Text
replicationInstanceClass) (\s :: ModifyReplicationInstance
s@ModifyReplicationInstance' {} Maybe Text
a -> ModifyReplicationInstance
s {$sel:replicationInstanceClass:ModifyReplicationInstance' :: Maybe Text
replicationInstanceClass = Maybe Text
a} :: ModifyReplicationInstance)

-- | The replication instance identifier. This parameter is stored as a
-- lowercase string.
modifyReplicationInstance_replicationInstanceIdentifier :: Lens.Lens' ModifyReplicationInstance (Prelude.Maybe Prelude.Text)
modifyReplicationInstance_replicationInstanceIdentifier :: Lens' ModifyReplicationInstance (Maybe Text)
modifyReplicationInstance_replicationInstanceIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstance' {Maybe Text
replicationInstanceIdentifier :: Maybe Text
$sel:replicationInstanceIdentifier:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
replicationInstanceIdentifier} -> Maybe Text
replicationInstanceIdentifier) (\s :: ModifyReplicationInstance
s@ModifyReplicationInstance' {} Maybe Text
a -> ModifyReplicationInstance
s {$sel:replicationInstanceIdentifier:ModifyReplicationInstance' :: Maybe Text
replicationInstanceIdentifier = Maybe Text
a} :: ModifyReplicationInstance)

-- | Specifies the VPC security group to be used with the replication
-- instance. The VPC security group must work with the VPC containing the
-- replication instance.
modifyReplicationInstance_vpcSecurityGroupIds :: Lens.Lens' ModifyReplicationInstance (Prelude.Maybe [Prelude.Text])
modifyReplicationInstance_vpcSecurityGroupIds :: Lens' ModifyReplicationInstance (Maybe [Text])
modifyReplicationInstance_vpcSecurityGroupIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstance' {Maybe [Text]
vpcSecurityGroupIds :: Maybe [Text]
$sel:vpcSecurityGroupIds:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe [Text]
vpcSecurityGroupIds} -> Maybe [Text]
vpcSecurityGroupIds) (\s :: ModifyReplicationInstance
s@ModifyReplicationInstance' {} Maybe [Text]
a -> ModifyReplicationInstance
s {$sel:vpcSecurityGroupIds:ModifyReplicationInstance' :: Maybe [Text]
vpcSecurityGroupIds = Maybe [Text]
a} :: ModifyReplicationInstance) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon Resource Name (ARN) of the replication instance.
modifyReplicationInstance_replicationInstanceArn :: Lens.Lens' ModifyReplicationInstance Prelude.Text
modifyReplicationInstance_replicationInstanceArn :: Lens' ModifyReplicationInstance Text
modifyReplicationInstance_replicationInstanceArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstance' {Text
replicationInstanceArn :: Text
$sel:replicationInstanceArn:ModifyReplicationInstance' :: ModifyReplicationInstance -> Text
replicationInstanceArn} -> Text
replicationInstanceArn) (\s :: ModifyReplicationInstance
s@ModifyReplicationInstance' {} Text
a -> ModifyReplicationInstance
s {$sel:replicationInstanceArn:ModifyReplicationInstance' :: Text
replicationInstanceArn = Text
a} :: ModifyReplicationInstance)

instance Core.AWSRequest ModifyReplicationInstance where
  type
    AWSResponse ModifyReplicationInstance =
      ModifyReplicationInstanceResponse
  request :: (Service -> Service)
-> ModifyReplicationInstance -> Request ModifyReplicationInstance
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 ModifyReplicationInstance
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ModifyReplicationInstance)))
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 ->
          Maybe ReplicationInstance
-> Int -> ModifyReplicationInstanceResponse
ModifyReplicationInstanceResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"ReplicationInstance")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable ModifyReplicationInstance where
  hashWithSalt :: Int -> ModifyReplicationInstance -> Int
hashWithSalt Int
_salt ModifyReplicationInstance' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe Text
Text
replicationInstanceArn :: Text
vpcSecurityGroupIds :: Maybe [Text]
replicationInstanceIdentifier :: Maybe Text
replicationInstanceClass :: Maybe Text
preferredMaintenanceWindow :: Maybe Text
networkType :: Maybe Text
multiAZ :: Maybe Bool
engineVersion :: Maybe Text
autoMinorVersionUpgrade :: Maybe Bool
applyImmediately :: Maybe Bool
allowMajorVersionUpgrade :: Maybe Bool
allocatedStorage :: Maybe Int
$sel:replicationInstanceArn:ModifyReplicationInstance' :: ModifyReplicationInstance -> Text
$sel:vpcSecurityGroupIds:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe [Text]
$sel:replicationInstanceIdentifier:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:replicationInstanceClass:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:preferredMaintenanceWindow:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:networkType:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:multiAZ:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
$sel:engineVersion:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:autoMinorVersionUpgrade:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
$sel:applyImmediately:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
$sel:allowMajorVersionUpgrade:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
$sel:allocatedStorage:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Int
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
allocatedStorage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
allowMajorVersionUpgrade
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
applyImmediately
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
autoMinorVersionUpgrade
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
engineVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
multiAZ
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
networkType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredMaintenanceWindow
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
replicationInstanceClass
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
replicationInstanceIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
vpcSecurityGroupIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
replicationInstanceArn

instance Prelude.NFData ModifyReplicationInstance where
  rnf :: ModifyReplicationInstance -> ()
rnf ModifyReplicationInstance' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe Text
Text
replicationInstanceArn :: Text
vpcSecurityGroupIds :: Maybe [Text]
replicationInstanceIdentifier :: Maybe Text
replicationInstanceClass :: Maybe Text
preferredMaintenanceWindow :: Maybe Text
networkType :: Maybe Text
multiAZ :: Maybe Bool
engineVersion :: Maybe Text
autoMinorVersionUpgrade :: Maybe Bool
applyImmediately :: Maybe Bool
allowMajorVersionUpgrade :: Maybe Bool
allocatedStorage :: Maybe Int
$sel:replicationInstanceArn:ModifyReplicationInstance' :: ModifyReplicationInstance -> Text
$sel:vpcSecurityGroupIds:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe [Text]
$sel:replicationInstanceIdentifier:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:replicationInstanceClass:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:preferredMaintenanceWindow:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:networkType:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:multiAZ:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
$sel:engineVersion:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:autoMinorVersionUpgrade:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
$sel:applyImmediately:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
$sel:allowMajorVersionUpgrade:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
$sel:allocatedStorage:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
allocatedStorage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
allowMajorVersionUpgrade
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
applyImmediately
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
autoMinorVersionUpgrade
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
engineVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
multiAZ
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
networkType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
preferredMaintenanceWindow
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
replicationInstanceClass
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
replicationInstanceIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
vpcSecurityGroupIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
replicationInstanceArn

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

instance Data.ToJSON ModifyReplicationInstance where
  toJSON :: ModifyReplicationInstance -> Value
toJSON ModifyReplicationInstance' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe Text
Text
replicationInstanceArn :: Text
vpcSecurityGroupIds :: Maybe [Text]
replicationInstanceIdentifier :: Maybe Text
replicationInstanceClass :: Maybe Text
preferredMaintenanceWindow :: Maybe Text
networkType :: Maybe Text
multiAZ :: Maybe Bool
engineVersion :: Maybe Text
autoMinorVersionUpgrade :: Maybe Bool
applyImmediately :: Maybe Bool
allowMajorVersionUpgrade :: Maybe Bool
allocatedStorage :: Maybe Int
$sel:replicationInstanceArn:ModifyReplicationInstance' :: ModifyReplicationInstance -> Text
$sel:vpcSecurityGroupIds:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe [Text]
$sel:replicationInstanceIdentifier:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:replicationInstanceClass:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:preferredMaintenanceWindow:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:networkType:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:multiAZ:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
$sel:engineVersion:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Text
$sel:autoMinorVersionUpgrade:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
$sel:applyImmediately:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
$sel:allowMajorVersionUpgrade:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Bool
$sel:allocatedStorage:ModifyReplicationInstance' :: ModifyReplicationInstance -> Maybe Int
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AllocatedStorage" 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 Int
allocatedStorage,
            (Key
"AllowMajorVersionUpgrade" 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
allowMajorVersionUpgrade,
            (Key
"ApplyImmediately" 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
applyImmediately,
            (Key
"AutoMinorVersionUpgrade" 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
autoMinorVersionUpgrade,
            (Key
"EngineVersion" 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
engineVersion,
            (Key
"MultiAZ" 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
multiAZ,
            (Key
"NetworkType" 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
networkType,
            (Key
"PreferredMaintenanceWindow" 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
preferredMaintenanceWindow,
            (Key
"ReplicationInstanceClass" 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
replicationInstanceClass,
            (Key
"ReplicationInstanceIdentifier" 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
replicationInstanceIdentifier,
            (Key
"VpcSecurityGroupIds" 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]
vpcSecurityGroupIds,
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"ReplicationInstanceArn"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
replicationInstanceArn
              )
          ]
      )

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

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

-- |
--
-- /See:/ 'newModifyReplicationInstanceResponse' smart constructor.
data ModifyReplicationInstanceResponse = ModifyReplicationInstanceResponse'
  { -- | The modified replication instance.
    ModifyReplicationInstanceResponse -> Maybe ReplicationInstance
replicationInstance :: Prelude.Maybe ReplicationInstance,
    -- | The response's http status code.
    ModifyReplicationInstanceResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ModifyReplicationInstanceResponse
-> ModifyReplicationInstanceResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyReplicationInstanceResponse
-> ModifyReplicationInstanceResponse -> Bool
$c/= :: ModifyReplicationInstanceResponse
-> ModifyReplicationInstanceResponse -> Bool
== :: ModifyReplicationInstanceResponse
-> ModifyReplicationInstanceResponse -> Bool
$c== :: ModifyReplicationInstanceResponse
-> ModifyReplicationInstanceResponse -> Bool
Prelude.Eq, ReadPrec [ModifyReplicationInstanceResponse]
ReadPrec ModifyReplicationInstanceResponse
Int -> ReadS ModifyReplicationInstanceResponse
ReadS [ModifyReplicationInstanceResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyReplicationInstanceResponse]
$creadListPrec :: ReadPrec [ModifyReplicationInstanceResponse]
readPrec :: ReadPrec ModifyReplicationInstanceResponse
$creadPrec :: ReadPrec ModifyReplicationInstanceResponse
readList :: ReadS [ModifyReplicationInstanceResponse]
$creadList :: ReadS [ModifyReplicationInstanceResponse]
readsPrec :: Int -> ReadS ModifyReplicationInstanceResponse
$creadsPrec :: Int -> ReadS ModifyReplicationInstanceResponse
Prelude.Read, Int -> ModifyReplicationInstanceResponse -> ShowS
[ModifyReplicationInstanceResponse] -> ShowS
ModifyReplicationInstanceResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyReplicationInstanceResponse] -> ShowS
$cshowList :: [ModifyReplicationInstanceResponse] -> ShowS
show :: ModifyReplicationInstanceResponse -> String
$cshow :: ModifyReplicationInstanceResponse -> String
showsPrec :: Int -> ModifyReplicationInstanceResponse -> ShowS
$cshowsPrec :: Int -> ModifyReplicationInstanceResponse -> ShowS
Prelude.Show, forall x.
Rep ModifyReplicationInstanceResponse x
-> ModifyReplicationInstanceResponse
forall x.
ModifyReplicationInstanceResponse
-> Rep ModifyReplicationInstanceResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModifyReplicationInstanceResponse x
-> ModifyReplicationInstanceResponse
$cfrom :: forall x.
ModifyReplicationInstanceResponse
-> Rep ModifyReplicationInstanceResponse x
Prelude.Generic)

-- |
-- Create a value of 'ModifyReplicationInstanceResponse' 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:
--
-- 'replicationInstance', 'modifyReplicationInstanceResponse_replicationInstance' - The modified replication instance.
--
-- 'httpStatus', 'modifyReplicationInstanceResponse_httpStatus' - The response's http status code.
newModifyReplicationInstanceResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ModifyReplicationInstanceResponse
newModifyReplicationInstanceResponse :: Int -> ModifyReplicationInstanceResponse
newModifyReplicationInstanceResponse Int
pHttpStatus_ =
  ModifyReplicationInstanceResponse'
    { $sel:replicationInstance:ModifyReplicationInstanceResponse' :: Maybe ReplicationInstance
replicationInstance =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ModifyReplicationInstanceResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The modified replication instance.
modifyReplicationInstanceResponse_replicationInstance :: Lens.Lens' ModifyReplicationInstanceResponse (Prelude.Maybe ReplicationInstance)
modifyReplicationInstanceResponse_replicationInstance :: Lens' ModifyReplicationInstanceResponse (Maybe ReplicationInstance)
modifyReplicationInstanceResponse_replicationInstance = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstanceResponse' {Maybe ReplicationInstance
replicationInstance :: Maybe ReplicationInstance
$sel:replicationInstance:ModifyReplicationInstanceResponse' :: ModifyReplicationInstanceResponse -> Maybe ReplicationInstance
replicationInstance} -> Maybe ReplicationInstance
replicationInstance) (\s :: ModifyReplicationInstanceResponse
s@ModifyReplicationInstanceResponse' {} Maybe ReplicationInstance
a -> ModifyReplicationInstanceResponse
s {$sel:replicationInstance:ModifyReplicationInstanceResponse' :: Maybe ReplicationInstance
replicationInstance = Maybe ReplicationInstance
a} :: ModifyReplicationInstanceResponse)

-- | The response's http status code.
modifyReplicationInstanceResponse_httpStatus :: Lens.Lens' ModifyReplicationInstanceResponse Prelude.Int
modifyReplicationInstanceResponse_httpStatus :: Lens' ModifyReplicationInstanceResponse Int
modifyReplicationInstanceResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyReplicationInstanceResponse' {Int
httpStatus :: Int
$sel:httpStatus:ModifyReplicationInstanceResponse' :: ModifyReplicationInstanceResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ModifyReplicationInstanceResponse
s@ModifyReplicationInstanceResponse' {} Int
a -> ModifyReplicationInstanceResponse
s {$sel:httpStatus:ModifyReplicationInstanceResponse' :: Int
httpStatus = Int
a} :: ModifyReplicationInstanceResponse)

instance
  Prelude.NFData
    ModifyReplicationInstanceResponse
  where
  rnf :: ModifyReplicationInstanceResponse -> ()
rnf ModifyReplicationInstanceResponse' {Int
Maybe ReplicationInstance
httpStatus :: Int
replicationInstance :: Maybe ReplicationInstance
$sel:httpStatus:ModifyReplicationInstanceResponse' :: ModifyReplicationInstanceResponse -> Int
$sel:replicationInstance:ModifyReplicationInstanceResponse' :: ModifyReplicationInstanceResponse -> Maybe ReplicationInstance
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ReplicationInstance
replicationInstance
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus