{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.DMS.Types.ReplicationInstance
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.DMS.Types.ReplicationInstance where

import qualified Amazonka.Core as Core
import Amazonka.DMS.Types.ReplicationPendingModifiedValues
import Amazonka.DMS.Types.ReplicationSubnetGroup
import Amazonka.DMS.Types.VpcSecurityGroupMembership
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Provides information that defines a replication instance.
--
-- /See:/ 'newReplicationInstance' smart constructor.
data ReplicationInstance = ReplicationInstance'
  { -- | The engine version number of the replication instance.
    --
    -- If an engine version number is not specified when a replication instance
    -- is created, the default is the latest engine version available.
    --
    -- When modifying a major engine version of an instance, also set
    -- @AllowMajorVersionUpgrade@ to @true@.
    ReplicationInstance -> Maybe Text
engineVersion :: Prelude.Maybe Prelude.Text,
    -- | Specifies the accessibility options for the replication instance. A
    -- value of @true@ represents an instance with a public IP address. A value
    -- of @false@ represents an instance with a private IP address. The default
    -- value is @true@.
    ReplicationInstance -> Maybe Bool
publiclyAccessible :: Prelude.Maybe Prelude.Bool,
    -- | Boolean value indicating if minor version upgrades will be automatically
    -- applied to the instance.
    ReplicationInstance -> Maybe Bool
autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,
    -- | One or more public IP addresses for the replication instance.
    ReplicationInstance -> Maybe [Text]
replicationInstancePublicIpAddresses :: Prelude.Maybe [Prelude.Text],
    -- | The subnet group for the replication instance.
    ReplicationInstance -> Maybe ReplicationSubnetGroup
replicationSubnetGroup :: Prelude.Maybe ReplicationSubnetGroup,
    -- | The time the replication instance was created.
    ReplicationInstance -> Maybe POSIX
instanceCreateTime :: Prelude.Maybe Core.POSIX,
    -- | The expiration date of the free replication instance that is part of the
    -- Free DMS program.
    ReplicationInstance -> Maybe POSIX
freeUntil :: Prelude.Maybe Core.POSIX,
    -- | The status of the replication instance. The possible return values
    -- include:
    --
    -- -   @\"available\"@
    --
    -- -   @\"creating\"@
    --
    -- -   @\"deleted\"@
    --
    -- -   @\"deleting\"@
    --
    -- -   @\"failed\"@
    --
    -- -   @\"modifying\"@
    --
    -- -   @\"upgrading\"@
    --
    -- -   @\"rebooting\"@
    --
    -- -   @\"resetting-master-credentials\"@
    --
    -- -   @\"storage-full\"@
    --
    -- -   @\"incompatible-credentials\"@
    --
    -- -   @\"incompatible-network\"@
    --
    -- -   @\"maintenance\"@
    ReplicationInstance -> Maybe Text
replicationInstanceStatus :: Prelude.Maybe Prelude.Text,
    -- | One or more private IP addresses for the replication instance.
    ReplicationInstance -> Maybe [Text]
replicationInstancePrivateIpAddresses :: Prelude.Maybe [Prelude.Text],
    -- | The maintenance window times for the replication instance. Any pending
    -- upgrades to the replication instance are performed during this time.
    ReplicationInstance -> Maybe Text
preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
    -- | The private IP address of the replication instance.
    ReplicationInstance -> Maybe Text
replicationInstancePrivateIpAddress :: Prelude.Maybe Prelude.Text,
    -- | An KMS key identifier that is used to encrypt the data on the
    -- replication instance.
    --
    -- If you don\'t specify a value for the @KmsKeyId@ parameter, then DMS
    -- uses your default encryption key.
    --
    -- KMS creates the default encryption key for your Amazon Web Services
    -- account. Your Amazon Web Services account has a different default
    -- encryption key for each Amazon Web Services Region.
    ReplicationInstance -> Maybe Text
kmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | The Availability Zone for the instance.
    ReplicationInstance -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | The VPC security group for the instance.
    ReplicationInstance -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups :: Prelude.Maybe [VpcSecurityGroupMembership],
    -- | 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@.
    ReplicationInstance -> Maybe Bool
multiAZ :: Prelude.Maybe Prelude.Bool,
    -- | The Availability Zone of the standby replication instance in a Multi-AZ
    -- deployment.
    ReplicationInstance -> Maybe Text
secondaryAvailabilityZone :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the replication instance.
    ReplicationInstance -> Maybe Text
replicationInstanceArn :: Prelude.Maybe Prelude.Text,
    -- | The amount of storage (in gigabytes) that is allocated for the
    -- replication instance.
    ReplicationInstance -> Maybe Int
allocatedStorage :: Prelude.Maybe Prelude.Int,
    -- | The DNS name servers supported for the replication instance to access
    -- your on-premise source or target database.
    ReplicationInstance -> Maybe Text
dnsNameServers :: Prelude.Maybe Prelude.Text,
    -- | The public IP address of the replication instance.
    ReplicationInstance -> Maybe Text
replicationInstancePublicIpAddress :: Prelude.Maybe Prelude.Text,
    -- | The compute and memory capacity of the replication instance as defined
    -- for the specified replication instance class. It is a required
    -- parameter, although a default value is pre-selected in the DMS console.
    --
    -- 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>.
    ReplicationInstance -> Maybe Text
replicationInstanceClass :: Prelude.Maybe Prelude.Text,
    -- | The replication instance identifier is a required parameter. This
    -- parameter is stored as a lowercase string.
    --
    -- Constraints:
    --
    -- -   Must contain 1-63 alphanumeric characters or hyphens.
    --
    -- -   First character must be a letter.
    --
    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
    --
    -- Example: @myrepinstance@
    ReplicationInstance -> Maybe Text
replicationInstanceIdentifier :: Prelude.Maybe Prelude.Text,
    -- | The pending modification values.
    ReplicationInstance -> Maybe ReplicationPendingModifiedValues
pendingModifiedValues :: Prelude.Maybe ReplicationPendingModifiedValues
  }
  deriving (ReplicationInstance -> ReplicationInstance -> Bool
(ReplicationInstance -> ReplicationInstance -> Bool)
-> (ReplicationInstance -> ReplicationInstance -> Bool)
-> Eq ReplicationInstance
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ReplicationInstance -> ReplicationInstance -> Bool
$c/= :: ReplicationInstance -> ReplicationInstance -> Bool
== :: ReplicationInstance -> ReplicationInstance -> Bool
$c== :: ReplicationInstance -> ReplicationInstance -> Bool
Prelude.Eq, ReadPrec [ReplicationInstance]
ReadPrec ReplicationInstance
Int -> ReadS ReplicationInstance
ReadS [ReplicationInstance]
(Int -> ReadS ReplicationInstance)
-> ReadS [ReplicationInstance]
-> ReadPrec ReplicationInstance
-> ReadPrec [ReplicationInstance]
-> Read ReplicationInstance
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ReplicationInstance]
$creadListPrec :: ReadPrec [ReplicationInstance]
readPrec :: ReadPrec ReplicationInstance
$creadPrec :: ReadPrec ReplicationInstance
readList :: ReadS [ReplicationInstance]
$creadList :: ReadS [ReplicationInstance]
readsPrec :: Int -> ReadS ReplicationInstance
$creadsPrec :: Int -> ReadS ReplicationInstance
Prelude.Read, Int -> ReplicationInstance -> ShowS
[ReplicationInstance] -> ShowS
ReplicationInstance -> String
(Int -> ReplicationInstance -> ShowS)
-> (ReplicationInstance -> String)
-> ([ReplicationInstance] -> ShowS)
-> Show ReplicationInstance
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ReplicationInstance] -> ShowS
$cshowList :: [ReplicationInstance] -> ShowS
show :: ReplicationInstance -> String
$cshow :: ReplicationInstance -> String
showsPrec :: Int -> ReplicationInstance -> ShowS
$cshowsPrec :: Int -> ReplicationInstance -> ShowS
Prelude.Show, (forall x. ReplicationInstance -> Rep ReplicationInstance x)
-> (forall x. Rep ReplicationInstance x -> ReplicationInstance)
-> Generic ReplicationInstance
forall x. Rep ReplicationInstance x -> ReplicationInstance
forall x. ReplicationInstance -> Rep ReplicationInstance x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ReplicationInstance x -> ReplicationInstance
$cfrom :: forall x. ReplicationInstance -> Rep ReplicationInstance x
Prelude.Generic)

-- |
-- Create a value of 'ReplicationInstance' 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:
--
-- 'engineVersion', 'replicationInstance_engineVersion' - The engine version number of the replication instance.
--
-- If an engine version number is not specified when a replication instance
-- is created, the default is the latest engine version available.
--
-- When modifying a major engine version of an instance, also set
-- @AllowMajorVersionUpgrade@ to @true@.
--
-- 'publiclyAccessible', 'replicationInstance_publiclyAccessible' - Specifies the accessibility options for the replication instance. A
-- value of @true@ represents an instance with a public IP address. A value
-- of @false@ represents an instance with a private IP address. The default
-- value is @true@.
--
-- 'autoMinorVersionUpgrade', 'replicationInstance_autoMinorVersionUpgrade' - Boolean value indicating if minor version upgrades will be automatically
-- applied to the instance.
--
-- 'replicationInstancePublicIpAddresses', 'replicationInstance_replicationInstancePublicIpAddresses' - One or more public IP addresses for the replication instance.
--
-- 'replicationSubnetGroup', 'replicationInstance_replicationSubnetGroup' - The subnet group for the replication instance.
--
-- 'instanceCreateTime', 'replicationInstance_instanceCreateTime' - The time the replication instance was created.
--
-- 'freeUntil', 'replicationInstance_freeUntil' - The expiration date of the free replication instance that is part of the
-- Free DMS program.
--
-- 'replicationInstanceStatus', 'replicationInstance_replicationInstanceStatus' - The status of the replication instance. The possible return values
-- include:
--
-- -   @\"available\"@
--
-- -   @\"creating\"@
--
-- -   @\"deleted\"@
--
-- -   @\"deleting\"@
--
-- -   @\"failed\"@
--
-- -   @\"modifying\"@
--
-- -   @\"upgrading\"@
--
-- -   @\"rebooting\"@
--
-- -   @\"resetting-master-credentials\"@
--
-- -   @\"storage-full\"@
--
-- -   @\"incompatible-credentials\"@
--
-- -   @\"incompatible-network\"@
--
-- -   @\"maintenance\"@
--
-- 'replicationInstancePrivateIpAddresses', 'replicationInstance_replicationInstancePrivateIpAddresses' - One or more private IP addresses for the replication instance.
--
-- 'preferredMaintenanceWindow', 'replicationInstance_preferredMaintenanceWindow' - The maintenance window times for the replication instance. Any pending
-- upgrades to the replication instance are performed during this time.
--
-- 'replicationInstancePrivateIpAddress', 'replicationInstance_replicationInstancePrivateIpAddress' - The private IP address of the replication instance.
--
-- 'kmsKeyId', 'replicationInstance_kmsKeyId' - An KMS key identifier that is used to encrypt the data on the
-- replication instance.
--
-- If you don\'t specify a value for the @KmsKeyId@ parameter, then DMS
-- uses your default encryption key.
--
-- KMS creates the default encryption key for your Amazon Web Services
-- account. Your Amazon Web Services account has a different default
-- encryption key for each Amazon Web Services Region.
--
-- 'availabilityZone', 'replicationInstance_availabilityZone' - The Availability Zone for the instance.
--
-- 'vpcSecurityGroups', 'replicationInstance_vpcSecurityGroups' - The VPC security group for the instance.
--
-- 'multiAZ', 'replicationInstance_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@.
--
-- 'secondaryAvailabilityZone', 'replicationInstance_secondaryAvailabilityZone' - The Availability Zone of the standby replication instance in a Multi-AZ
-- deployment.
--
-- 'replicationInstanceArn', 'replicationInstance_replicationInstanceArn' - The Amazon Resource Name (ARN) of the replication instance.
--
-- 'allocatedStorage', 'replicationInstance_allocatedStorage' - The amount of storage (in gigabytes) that is allocated for the
-- replication instance.
--
-- 'dnsNameServers', 'replicationInstance_dnsNameServers' - The DNS name servers supported for the replication instance to access
-- your on-premise source or target database.
--
-- 'replicationInstancePublicIpAddress', 'replicationInstance_replicationInstancePublicIpAddress' - The public IP address of the replication instance.
--
-- 'replicationInstanceClass', 'replicationInstance_replicationInstanceClass' - The compute and memory capacity of the replication instance as defined
-- for the specified replication instance class. It is a required
-- parameter, although a default value is pre-selected in the DMS console.
--
-- 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', 'replicationInstance_replicationInstanceIdentifier' - The replication instance identifier is a required parameter. This
-- parameter is stored as a lowercase string.
--
-- Constraints:
--
-- -   Must contain 1-63 alphanumeric characters or hyphens.
--
-- -   First character must be a letter.
--
-- -   Cannot end with a hyphen or contain two consecutive hyphens.
--
-- Example: @myrepinstance@
--
-- 'pendingModifiedValues', 'replicationInstance_pendingModifiedValues' - The pending modification values.
newReplicationInstance ::
  ReplicationInstance
newReplicationInstance :: ReplicationInstance
newReplicationInstance =
  ReplicationInstance' :: Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe [Text]
-> Maybe ReplicationSubnetGroup
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [VpcSecurityGroupMembership]
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ReplicationPendingModifiedValues
-> ReplicationInstance
ReplicationInstance'
    { $sel:engineVersion:ReplicationInstance' :: Maybe Text
engineVersion =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:publiclyAccessible:ReplicationInstance' :: Maybe Bool
publiclyAccessible = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:autoMinorVersionUpgrade:ReplicationInstance' :: Maybe Bool
autoMinorVersionUpgrade = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstancePublicIpAddresses:ReplicationInstance' :: Maybe [Text]
replicationInstancePublicIpAddresses =
        Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:replicationSubnetGroup:ReplicationInstance' :: Maybe ReplicationSubnetGroup
replicationSubnetGroup = Maybe ReplicationSubnetGroup
forall a. Maybe a
Prelude.Nothing,
      $sel:instanceCreateTime:ReplicationInstance' :: Maybe POSIX
instanceCreateTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:freeUntil:ReplicationInstance' :: Maybe POSIX
freeUntil = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstanceStatus:ReplicationInstance' :: Maybe Text
replicationInstanceStatus = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstancePrivateIpAddresses:ReplicationInstance' :: Maybe [Text]
replicationInstancePrivateIpAddresses =
        Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:preferredMaintenanceWindow:ReplicationInstance' :: Maybe Text
preferredMaintenanceWindow = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstancePrivateIpAddress:ReplicationInstance' :: Maybe Text
replicationInstancePrivateIpAddress =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyId:ReplicationInstance' :: Maybe Text
kmsKeyId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZone:ReplicationInstance' :: Maybe Text
availabilityZone = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcSecurityGroups:ReplicationInstance' :: Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups = Maybe [VpcSecurityGroupMembership]
forall a. Maybe a
Prelude.Nothing,
      $sel:multiAZ:ReplicationInstance' :: Maybe Bool
multiAZ = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:secondaryAvailabilityZone:ReplicationInstance' :: Maybe Text
secondaryAvailabilityZone = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstanceArn:ReplicationInstance' :: Maybe Text
replicationInstanceArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:allocatedStorage:ReplicationInstance' :: Maybe Int
allocatedStorage = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:dnsNameServers:ReplicationInstance' :: Maybe Text
dnsNameServers = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstancePublicIpAddress:ReplicationInstance' :: Maybe Text
replicationInstancePublicIpAddress = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstanceClass:ReplicationInstance' :: Maybe Text
replicationInstanceClass = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstanceIdentifier:ReplicationInstance' :: Maybe Text
replicationInstanceIdentifier = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:pendingModifiedValues:ReplicationInstance' :: Maybe ReplicationPendingModifiedValues
pendingModifiedValues = Maybe ReplicationPendingModifiedValues
forall a. Maybe a
Prelude.Nothing
    }

-- | The engine version number of the replication instance.
--
-- If an engine version number is not specified when a replication instance
-- is created, the default is the latest engine version available.
--
-- When modifying a major engine version of an instance, also set
-- @AllowMajorVersionUpgrade@ to @true@.
replicationInstance_engineVersion :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_engineVersion :: (Maybe Text -> f (Maybe Text))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_engineVersion = (ReplicationInstance -> Maybe Text)
-> (ReplicationInstance -> Maybe Text -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Text
engineVersion :: Maybe Text
$sel:engineVersion:ReplicationInstance' :: ReplicationInstance -> Maybe Text
engineVersion} -> Maybe Text
engineVersion) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Text
a -> ReplicationInstance
s {$sel:engineVersion:ReplicationInstance' :: Maybe Text
engineVersion = Maybe Text
a} :: ReplicationInstance)

-- | Specifies the accessibility options for the replication instance. A
-- value of @true@ represents an instance with a public IP address. A value
-- of @false@ represents an instance with a private IP address. The default
-- value is @true@.
replicationInstance_publiclyAccessible :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Bool)
replicationInstance_publiclyAccessible :: (Maybe Bool -> f (Maybe Bool))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_publiclyAccessible = (ReplicationInstance -> Maybe Bool)
-> (ReplicationInstance -> Maybe Bool -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Bool
publiclyAccessible :: Maybe Bool
$sel:publiclyAccessible:ReplicationInstance' :: ReplicationInstance -> Maybe Bool
publiclyAccessible} -> Maybe Bool
publiclyAccessible) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Bool
a -> ReplicationInstance
s {$sel:publiclyAccessible:ReplicationInstance' :: Maybe Bool
publiclyAccessible = Maybe Bool
a} :: ReplicationInstance)

-- | Boolean value indicating if minor version upgrades will be automatically
-- applied to the instance.
replicationInstance_autoMinorVersionUpgrade :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Bool)
replicationInstance_autoMinorVersionUpgrade :: (Maybe Bool -> f (Maybe Bool))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_autoMinorVersionUpgrade = (ReplicationInstance -> Maybe Bool)
-> (ReplicationInstance -> Maybe Bool -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Bool
autoMinorVersionUpgrade :: Maybe Bool
$sel:autoMinorVersionUpgrade:ReplicationInstance' :: ReplicationInstance -> Maybe Bool
autoMinorVersionUpgrade} -> Maybe Bool
autoMinorVersionUpgrade) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Bool
a -> ReplicationInstance
s {$sel:autoMinorVersionUpgrade:ReplicationInstance' :: Maybe Bool
autoMinorVersionUpgrade = Maybe Bool
a} :: ReplicationInstance)

-- | One or more public IP addresses for the replication instance.
replicationInstance_replicationInstancePublicIpAddresses :: Lens.Lens' ReplicationInstance (Prelude.Maybe [Prelude.Text])
replicationInstance_replicationInstancePublicIpAddresses :: (Maybe [Text] -> f (Maybe [Text]))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_replicationInstancePublicIpAddresses = (ReplicationInstance -> Maybe [Text])
-> (ReplicationInstance -> Maybe [Text] -> ReplicationInstance)
-> Lens
     ReplicationInstance
     ReplicationInstance
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe [Text]
replicationInstancePublicIpAddresses :: Maybe [Text]
$sel:replicationInstancePublicIpAddresses:ReplicationInstance' :: ReplicationInstance -> Maybe [Text]
replicationInstancePublicIpAddresses} -> Maybe [Text]
replicationInstancePublicIpAddresses) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe [Text]
a -> ReplicationInstance
s {$sel:replicationInstancePublicIpAddresses:ReplicationInstance' :: Maybe [Text]
replicationInstancePublicIpAddresses = Maybe [Text]
a} :: ReplicationInstance) ((Maybe [Text] -> f (Maybe [Text]))
 -> ReplicationInstance -> f ReplicationInstance)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> ReplicationInstance
-> f ReplicationInstance
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The subnet group for the replication instance.
replicationInstance_replicationSubnetGroup :: Lens.Lens' ReplicationInstance (Prelude.Maybe ReplicationSubnetGroup)
replicationInstance_replicationSubnetGroup :: (Maybe ReplicationSubnetGroup -> f (Maybe ReplicationSubnetGroup))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_replicationSubnetGroup = (ReplicationInstance -> Maybe ReplicationSubnetGroup)
-> (ReplicationInstance
    -> Maybe ReplicationSubnetGroup -> ReplicationInstance)
-> Lens
     ReplicationInstance
     ReplicationInstance
     (Maybe ReplicationSubnetGroup)
     (Maybe ReplicationSubnetGroup)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe ReplicationSubnetGroup
replicationSubnetGroup :: Maybe ReplicationSubnetGroup
$sel:replicationSubnetGroup:ReplicationInstance' :: ReplicationInstance -> Maybe ReplicationSubnetGroup
replicationSubnetGroup} -> Maybe ReplicationSubnetGroup
replicationSubnetGroup) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe ReplicationSubnetGroup
a -> ReplicationInstance
s {$sel:replicationSubnetGroup:ReplicationInstance' :: Maybe ReplicationSubnetGroup
replicationSubnetGroup = Maybe ReplicationSubnetGroup
a} :: ReplicationInstance)

-- | The time the replication instance was created.
replicationInstance_instanceCreateTime :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.UTCTime)
replicationInstance_instanceCreateTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_instanceCreateTime = (ReplicationInstance -> Maybe POSIX)
-> (ReplicationInstance -> Maybe POSIX -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe POSIX
instanceCreateTime :: Maybe POSIX
$sel:instanceCreateTime:ReplicationInstance' :: ReplicationInstance -> Maybe POSIX
instanceCreateTime} -> Maybe POSIX
instanceCreateTime) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe POSIX
a -> ReplicationInstance
s {$sel:instanceCreateTime:ReplicationInstance' :: Maybe POSIX
instanceCreateTime = Maybe POSIX
a} :: ReplicationInstance) ((Maybe POSIX -> f (Maybe POSIX))
 -> ReplicationInstance -> f ReplicationInstance)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> ReplicationInstance
-> f ReplicationInstance
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The expiration date of the free replication instance that is part of the
-- Free DMS program.
replicationInstance_freeUntil :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.UTCTime)
replicationInstance_freeUntil :: (Maybe UTCTime -> f (Maybe UTCTime))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_freeUntil = (ReplicationInstance -> Maybe POSIX)
-> (ReplicationInstance -> Maybe POSIX -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe POSIX
freeUntil :: Maybe POSIX
$sel:freeUntil:ReplicationInstance' :: ReplicationInstance -> Maybe POSIX
freeUntil} -> Maybe POSIX
freeUntil) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe POSIX
a -> ReplicationInstance
s {$sel:freeUntil:ReplicationInstance' :: Maybe POSIX
freeUntil = Maybe POSIX
a} :: ReplicationInstance) ((Maybe POSIX -> f (Maybe POSIX))
 -> ReplicationInstance -> f ReplicationInstance)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> ReplicationInstance
-> f ReplicationInstance
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The status of the replication instance. The possible return values
-- include:
--
-- -   @\"available\"@
--
-- -   @\"creating\"@
--
-- -   @\"deleted\"@
--
-- -   @\"deleting\"@
--
-- -   @\"failed\"@
--
-- -   @\"modifying\"@
--
-- -   @\"upgrading\"@
--
-- -   @\"rebooting\"@
--
-- -   @\"resetting-master-credentials\"@
--
-- -   @\"storage-full\"@
--
-- -   @\"incompatible-credentials\"@
--
-- -   @\"incompatible-network\"@
--
-- -   @\"maintenance\"@
replicationInstance_replicationInstanceStatus :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_replicationInstanceStatus :: (Maybe Text -> f (Maybe Text))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_replicationInstanceStatus = (ReplicationInstance -> Maybe Text)
-> (ReplicationInstance -> Maybe Text -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Text
replicationInstanceStatus :: Maybe Text
$sel:replicationInstanceStatus:ReplicationInstance' :: ReplicationInstance -> Maybe Text
replicationInstanceStatus} -> Maybe Text
replicationInstanceStatus) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Text
a -> ReplicationInstance
s {$sel:replicationInstanceStatus:ReplicationInstance' :: Maybe Text
replicationInstanceStatus = Maybe Text
a} :: ReplicationInstance)

-- | One or more private IP addresses for the replication instance.
replicationInstance_replicationInstancePrivateIpAddresses :: Lens.Lens' ReplicationInstance (Prelude.Maybe [Prelude.Text])
replicationInstance_replicationInstancePrivateIpAddresses :: (Maybe [Text] -> f (Maybe [Text]))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_replicationInstancePrivateIpAddresses = (ReplicationInstance -> Maybe [Text])
-> (ReplicationInstance -> Maybe [Text] -> ReplicationInstance)
-> Lens
     ReplicationInstance
     ReplicationInstance
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe [Text]
replicationInstancePrivateIpAddresses :: Maybe [Text]
$sel:replicationInstancePrivateIpAddresses:ReplicationInstance' :: ReplicationInstance -> Maybe [Text]
replicationInstancePrivateIpAddresses} -> Maybe [Text]
replicationInstancePrivateIpAddresses) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe [Text]
a -> ReplicationInstance
s {$sel:replicationInstancePrivateIpAddresses:ReplicationInstance' :: Maybe [Text]
replicationInstancePrivateIpAddresses = Maybe [Text]
a} :: ReplicationInstance) ((Maybe [Text] -> f (Maybe [Text]))
 -> ReplicationInstance -> f ReplicationInstance)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> ReplicationInstance
-> f ReplicationInstance
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The maintenance window times for the replication instance. Any pending
-- upgrades to the replication instance are performed during this time.
replicationInstance_preferredMaintenanceWindow :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_preferredMaintenanceWindow :: (Maybe Text -> f (Maybe Text))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_preferredMaintenanceWindow = (ReplicationInstance -> Maybe Text)
-> (ReplicationInstance -> Maybe Text -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Text
preferredMaintenanceWindow :: Maybe Text
$sel:preferredMaintenanceWindow:ReplicationInstance' :: ReplicationInstance -> Maybe Text
preferredMaintenanceWindow} -> Maybe Text
preferredMaintenanceWindow) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Text
a -> ReplicationInstance
s {$sel:preferredMaintenanceWindow:ReplicationInstance' :: Maybe Text
preferredMaintenanceWindow = Maybe Text
a} :: ReplicationInstance)

-- | The private IP address of the replication instance.
replicationInstance_replicationInstancePrivateIpAddress :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_replicationInstancePrivateIpAddress :: (Maybe Text -> f (Maybe Text))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_replicationInstancePrivateIpAddress = (ReplicationInstance -> Maybe Text)
-> (ReplicationInstance -> Maybe Text -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Text
replicationInstancePrivateIpAddress :: Maybe Text
$sel:replicationInstancePrivateIpAddress:ReplicationInstance' :: ReplicationInstance -> Maybe Text
replicationInstancePrivateIpAddress} -> Maybe Text
replicationInstancePrivateIpAddress) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Text
a -> ReplicationInstance
s {$sel:replicationInstancePrivateIpAddress:ReplicationInstance' :: Maybe Text
replicationInstancePrivateIpAddress = Maybe Text
a} :: ReplicationInstance)

-- | An KMS key identifier that is used to encrypt the data on the
-- replication instance.
--
-- If you don\'t specify a value for the @KmsKeyId@ parameter, then DMS
-- uses your default encryption key.
--
-- KMS creates the default encryption key for your Amazon Web Services
-- account. Your Amazon Web Services account has a different default
-- encryption key for each Amazon Web Services Region.
replicationInstance_kmsKeyId :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_kmsKeyId :: (Maybe Text -> f (Maybe Text))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_kmsKeyId = (ReplicationInstance -> Maybe Text)
-> (ReplicationInstance -> Maybe Text -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Text
kmsKeyId :: Maybe Text
$sel:kmsKeyId:ReplicationInstance' :: ReplicationInstance -> Maybe Text
kmsKeyId} -> Maybe Text
kmsKeyId) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Text
a -> ReplicationInstance
s {$sel:kmsKeyId:ReplicationInstance' :: Maybe Text
kmsKeyId = Maybe Text
a} :: ReplicationInstance)

-- | The Availability Zone for the instance.
replicationInstance_availabilityZone :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_availabilityZone :: (Maybe Text -> f (Maybe Text))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_availabilityZone = (ReplicationInstance -> Maybe Text)
-> (ReplicationInstance -> Maybe Text -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:ReplicationInstance' :: ReplicationInstance -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Text
a -> ReplicationInstance
s {$sel:availabilityZone:ReplicationInstance' :: Maybe Text
availabilityZone = Maybe Text
a} :: ReplicationInstance)

-- | The VPC security group for the instance.
replicationInstance_vpcSecurityGroups :: Lens.Lens' ReplicationInstance (Prelude.Maybe [VpcSecurityGroupMembership])
replicationInstance_vpcSecurityGroups :: (Maybe [VpcSecurityGroupMembership]
 -> f (Maybe [VpcSecurityGroupMembership]))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_vpcSecurityGroups = (ReplicationInstance -> Maybe [VpcSecurityGroupMembership])
-> (ReplicationInstance
    -> Maybe [VpcSecurityGroupMembership] -> ReplicationInstance)
-> Lens
     ReplicationInstance
     ReplicationInstance
     (Maybe [VpcSecurityGroupMembership])
     (Maybe [VpcSecurityGroupMembership])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups :: Maybe [VpcSecurityGroupMembership]
$sel:vpcSecurityGroups:ReplicationInstance' :: ReplicationInstance -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups} -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe [VpcSecurityGroupMembership]
a -> ReplicationInstance
s {$sel:vpcSecurityGroups:ReplicationInstance' :: Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups = Maybe [VpcSecurityGroupMembership]
a} :: ReplicationInstance) ((Maybe [VpcSecurityGroupMembership]
  -> f (Maybe [VpcSecurityGroupMembership]))
 -> ReplicationInstance -> f ReplicationInstance)
-> ((Maybe [VpcSecurityGroupMembership]
     -> f (Maybe [VpcSecurityGroupMembership]))
    -> Maybe [VpcSecurityGroupMembership]
    -> f (Maybe [VpcSecurityGroupMembership]))
-> (Maybe [VpcSecurityGroupMembership]
    -> f (Maybe [VpcSecurityGroupMembership]))
-> ReplicationInstance
-> f ReplicationInstance
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [VpcSecurityGroupMembership]
  [VpcSecurityGroupMembership]
  [VpcSecurityGroupMembership]
  [VpcSecurityGroupMembership]
-> Iso
     (Maybe [VpcSecurityGroupMembership])
     (Maybe [VpcSecurityGroupMembership])
     (Maybe [VpcSecurityGroupMembership])
     (Maybe [VpcSecurityGroupMembership])
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 AnIso
  [VpcSecurityGroupMembership]
  [VpcSecurityGroupMembership]
  [VpcSecurityGroupMembership]
  [VpcSecurityGroupMembership]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | 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@.
replicationInstance_multiAZ :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Bool)
replicationInstance_multiAZ :: (Maybe Bool -> f (Maybe Bool))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_multiAZ = (ReplicationInstance -> Maybe Bool)
-> (ReplicationInstance -> Maybe Bool -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Bool
multiAZ :: Maybe Bool
$sel:multiAZ:ReplicationInstance' :: ReplicationInstance -> Maybe Bool
multiAZ} -> Maybe Bool
multiAZ) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Bool
a -> ReplicationInstance
s {$sel:multiAZ:ReplicationInstance' :: Maybe Bool
multiAZ = Maybe Bool
a} :: ReplicationInstance)

-- | The Availability Zone of the standby replication instance in a Multi-AZ
-- deployment.
replicationInstance_secondaryAvailabilityZone :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_secondaryAvailabilityZone :: (Maybe Text -> f (Maybe Text))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_secondaryAvailabilityZone = (ReplicationInstance -> Maybe Text)
-> (ReplicationInstance -> Maybe Text -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Text
secondaryAvailabilityZone :: Maybe Text
$sel:secondaryAvailabilityZone:ReplicationInstance' :: ReplicationInstance -> Maybe Text
secondaryAvailabilityZone} -> Maybe Text
secondaryAvailabilityZone) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Text
a -> ReplicationInstance
s {$sel:secondaryAvailabilityZone:ReplicationInstance' :: Maybe Text
secondaryAvailabilityZone = Maybe Text
a} :: ReplicationInstance)

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

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

-- | The DNS name servers supported for the replication instance to access
-- your on-premise source or target database.
replicationInstance_dnsNameServers :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_dnsNameServers :: (Maybe Text -> f (Maybe Text))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_dnsNameServers = (ReplicationInstance -> Maybe Text)
-> (ReplicationInstance -> Maybe Text -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Text
dnsNameServers :: Maybe Text
$sel:dnsNameServers:ReplicationInstance' :: ReplicationInstance -> Maybe Text
dnsNameServers} -> Maybe Text
dnsNameServers) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Text
a -> ReplicationInstance
s {$sel:dnsNameServers:ReplicationInstance' :: Maybe Text
dnsNameServers = Maybe Text
a} :: ReplicationInstance)

-- | The public IP address of the replication instance.
replicationInstance_replicationInstancePublicIpAddress :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_replicationInstancePublicIpAddress :: (Maybe Text -> f (Maybe Text))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_replicationInstancePublicIpAddress = (ReplicationInstance -> Maybe Text)
-> (ReplicationInstance -> Maybe Text -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Text
replicationInstancePublicIpAddress :: Maybe Text
$sel:replicationInstancePublicIpAddress:ReplicationInstance' :: ReplicationInstance -> Maybe Text
replicationInstancePublicIpAddress} -> Maybe Text
replicationInstancePublicIpAddress) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Text
a -> ReplicationInstance
s {$sel:replicationInstancePublicIpAddress:ReplicationInstance' :: Maybe Text
replicationInstancePublicIpAddress = Maybe Text
a} :: ReplicationInstance)

-- | The compute and memory capacity of the replication instance as defined
-- for the specified replication instance class. It is a required
-- parameter, although a default value is pre-selected in the DMS console.
--
-- 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>.
replicationInstance_replicationInstanceClass :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_replicationInstanceClass :: (Maybe Text -> f (Maybe Text))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_replicationInstanceClass = (ReplicationInstance -> Maybe Text)
-> (ReplicationInstance -> Maybe Text -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Text
replicationInstanceClass :: Maybe Text
$sel:replicationInstanceClass:ReplicationInstance' :: ReplicationInstance -> Maybe Text
replicationInstanceClass} -> Maybe Text
replicationInstanceClass) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Text
a -> ReplicationInstance
s {$sel:replicationInstanceClass:ReplicationInstance' :: Maybe Text
replicationInstanceClass = Maybe Text
a} :: ReplicationInstance)

-- | The replication instance identifier is a required parameter. This
-- parameter is stored as a lowercase string.
--
-- Constraints:
--
-- -   Must contain 1-63 alphanumeric characters or hyphens.
--
-- -   First character must be a letter.
--
-- -   Cannot end with a hyphen or contain two consecutive hyphens.
--
-- Example: @myrepinstance@
replicationInstance_replicationInstanceIdentifier :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_replicationInstanceIdentifier :: (Maybe Text -> f (Maybe Text))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_replicationInstanceIdentifier = (ReplicationInstance -> Maybe Text)
-> (ReplicationInstance -> Maybe Text -> ReplicationInstance)
-> Lens
     ReplicationInstance ReplicationInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe Text
replicationInstanceIdentifier :: Maybe Text
$sel:replicationInstanceIdentifier:ReplicationInstance' :: ReplicationInstance -> Maybe Text
replicationInstanceIdentifier} -> Maybe Text
replicationInstanceIdentifier) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe Text
a -> ReplicationInstance
s {$sel:replicationInstanceIdentifier:ReplicationInstance' :: Maybe Text
replicationInstanceIdentifier = Maybe Text
a} :: ReplicationInstance)

-- | The pending modification values.
replicationInstance_pendingModifiedValues :: Lens.Lens' ReplicationInstance (Prelude.Maybe ReplicationPendingModifiedValues)
replicationInstance_pendingModifiedValues :: (Maybe ReplicationPendingModifiedValues
 -> f (Maybe ReplicationPendingModifiedValues))
-> ReplicationInstance -> f ReplicationInstance
replicationInstance_pendingModifiedValues = (ReplicationInstance -> Maybe ReplicationPendingModifiedValues)
-> (ReplicationInstance
    -> Maybe ReplicationPendingModifiedValues -> ReplicationInstance)
-> Lens
     ReplicationInstance
     ReplicationInstance
     (Maybe ReplicationPendingModifiedValues)
     (Maybe ReplicationPendingModifiedValues)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe ReplicationPendingModifiedValues
pendingModifiedValues :: Maybe ReplicationPendingModifiedValues
$sel:pendingModifiedValues:ReplicationInstance' :: ReplicationInstance -> Maybe ReplicationPendingModifiedValues
pendingModifiedValues} -> Maybe ReplicationPendingModifiedValues
pendingModifiedValues) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe ReplicationPendingModifiedValues
a -> ReplicationInstance
s {$sel:pendingModifiedValues:ReplicationInstance' :: Maybe ReplicationPendingModifiedValues
pendingModifiedValues = Maybe ReplicationPendingModifiedValues
a} :: ReplicationInstance)

instance Core.FromJSON ReplicationInstance where
  parseJSON :: Value -> Parser ReplicationInstance
parseJSON =
    String
-> (Object -> Parser ReplicationInstance)
-> Value
-> Parser ReplicationInstance
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"ReplicationInstance"
      ( \Object
x ->
          Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe [Text]
-> Maybe ReplicationSubnetGroup
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [VpcSecurityGroupMembership]
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ReplicationPendingModifiedValues
-> ReplicationInstance
ReplicationInstance'
            (Maybe Text
 -> Maybe Bool
 -> Maybe Bool
 -> Maybe [Text]
 -> Maybe ReplicationSubnetGroup
 -> Maybe POSIX
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe [Text]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [VpcSecurityGroupMembership]
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe ReplicationPendingModifiedValues
 -> ReplicationInstance)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe ReplicationSubnetGroup
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EngineVersion")
            Parser
  (Maybe Bool
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe ReplicationSubnetGroup
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Bool
      -> Maybe [Text]
      -> Maybe ReplicationSubnetGroup
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PubliclyAccessible")
            Parser
  (Maybe Bool
   -> Maybe [Text]
   -> Maybe ReplicationSubnetGroup
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Bool)
-> Parser
     (Maybe [Text]
      -> Maybe ReplicationSubnetGroup
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AutoMinorVersionUpgrade")
            Parser
  (Maybe [Text]
   -> Maybe ReplicationSubnetGroup
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe [Text])
-> Parser
     (Maybe ReplicationSubnetGroup
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReplicationInstancePublicIpAddresses"
                            Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe ReplicationSubnetGroup
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe ReplicationSubnetGroup)
-> Parser
     (Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ReplicationSubnetGroup)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReplicationSubnetGroup")
            Parser
  (Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"InstanceCreateTime")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FreeUntil")
            Parser
  (Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReplicationInstanceStatus")
            Parser
  (Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe [Text])
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReplicationInstancePrivateIpAddresses"
                            Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PreferredMaintenanceWindow")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReplicationInstancePrivateIpAddress")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"KmsKeyId")
            Parser
  (Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Text)
-> Parser
     (Maybe [VpcSecurityGroupMembership]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AvailabilityZone")
            Parser
  (Maybe [VpcSecurityGroupMembership]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe [VpcSecurityGroupMembership])
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text -> Parser (Maybe (Maybe [VpcSecurityGroupMembership]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VpcSecurityGroups"
                            Parser (Maybe (Maybe [VpcSecurityGroupMembership]))
-> Maybe [VpcSecurityGroupMembership]
-> Parser (Maybe [VpcSecurityGroupMembership])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [VpcSecurityGroupMembership]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MultiAZ")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SecondaryAvailabilityZone")
            Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReplicationInstanceArn")
            Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AllocatedStorage")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DnsNameServers")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe ReplicationPendingModifiedValues
      -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReplicationInstancePublicIpAddress")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe ReplicationPendingModifiedValues
   -> ReplicationInstance)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe ReplicationPendingModifiedValues -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReplicationInstanceClass")
            Parser
  (Maybe Text
   -> Maybe ReplicationPendingModifiedValues -> ReplicationInstance)
-> Parser (Maybe Text)
-> Parser
     (Maybe ReplicationPendingModifiedValues -> ReplicationInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReplicationInstanceIdentifier")
            Parser
  (Maybe ReplicationPendingModifiedValues -> ReplicationInstance)
-> Parser (Maybe ReplicationPendingModifiedValues)
-> Parser ReplicationInstance
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ReplicationPendingModifiedValues)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PendingModifiedValues")
      )

instance Prelude.Hashable ReplicationInstance

instance Prelude.NFData ReplicationInstance