{-# 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-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.DMS.Types.ReplicationInstance where

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

-- | Provides information that defines a replication instance.
--
-- /See:/ 'newReplicationInstance' smart constructor.
data ReplicationInstance = ReplicationInstance'
  { -- | The amount of storage (in gigabytes) that is allocated for the
    -- replication instance.
    ReplicationInstance -> Maybe Int
allocatedStorage :: Prelude.Maybe Prelude.Int,
    -- | Boolean value indicating if minor version upgrades will be automatically
    -- applied to the instance.
    ReplicationInstance -> Maybe Bool
autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,
    -- | The Availability Zone for the instance.
    ReplicationInstance -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | 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 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,
    -- | The expiration date of the free replication instance that is part of the
    -- Free DMS program.
    ReplicationInstance -> Maybe POSIX
freeUntil :: Prelude.Maybe Data.POSIX,
    -- | The time the replication instance was created.
    ReplicationInstance -> Maybe POSIX
instanceCreateTime :: Prelude.Maybe Data.POSIX,
    -- | 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,
    -- | 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 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.
    ReplicationInstance -> Maybe Text
networkType :: Prelude.Maybe Prelude.Text,
    -- | The pending modification values.
    ReplicationInstance -> Maybe ReplicationPendingModifiedValues
pendingModifiedValues :: Prelude.Maybe ReplicationPendingModifiedValues,
    -- | 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,
    -- | 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,
    -- | The Amazon Resource Name (ARN) of the replication instance.
    ReplicationInstance -> Maybe Text
replicationInstanceArn :: 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,
    -- | One or more IPv6 addresses for the replication instance.
    ReplicationInstance -> Maybe [Text]
replicationInstanceIpv6Addresses :: Prelude.Maybe [Prelude.Text],
    -- | The private IP address of the replication instance.
    ReplicationInstance -> Maybe Text
replicationInstancePrivateIpAddress :: Prelude.Maybe Prelude.Text,
    -- | One or more private IP addresses for the replication instance.
    ReplicationInstance -> Maybe [Text]
replicationInstancePrivateIpAddresses :: Prelude.Maybe [Prelude.Text],
    -- | The public IP address of the replication instance.
    ReplicationInstance -> Maybe Text
replicationInstancePublicIpAddress :: Prelude.Maybe Prelude.Text,
    -- | One or more public IP addresses for the replication instance.
    ReplicationInstance -> Maybe [Text]
replicationInstancePublicIpAddresses :: Prelude.Maybe [Prelude.Text],
    -- | 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,
    -- | The subnet group for the replication instance.
    ReplicationInstance -> Maybe ReplicationSubnetGroup
replicationSubnetGroup :: Prelude.Maybe ReplicationSubnetGroup,
    -- | The Availability Zone of the standby replication instance in a Multi-AZ
    -- deployment.
    ReplicationInstance -> Maybe Text
secondaryAvailabilityZone :: Prelude.Maybe Prelude.Text,
    -- | The VPC security group for the instance.
    ReplicationInstance -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups :: Prelude.Maybe [VpcSecurityGroupMembership]
  }
  deriving (ReplicationInstance -> ReplicationInstance -> Bool
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]
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
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. 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:
--
-- 'allocatedStorage', 'replicationInstance_allocatedStorage' - The amount of storage (in gigabytes) that is allocated for the
-- replication instance.
--
-- 'autoMinorVersionUpgrade', 'replicationInstance_autoMinorVersionUpgrade' - Boolean value indicating if minor version upgrades will be automatically
-- applied to the instance.
--
-- 'availabilityZone', 'replicationInstance_availabilityZone' - The Availability Zone for the instance.
--
-- 'dnsNameServers', 'replicationInstance_dnsNameServers' - The DNS name servers supported for the replication instance to access
-- your on-premise source or target database.
--
-- '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@.
--
-- 'freeUntil', 'replicationInstance_freeUntil' - The expiration date of the free replication instance that is part of the
-- Free DMS program.
--
-- 'instanceCreateTime', 'replicationInstance_instanceCreateTime' - The time the replication instance was created.
--
-- '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.
--
-- '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@.
--
-- 'networkType', 'replicationInstance_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.
--
-- 'pendingModifiedValues', 'replicationInstance_pendingModifiedValues' - The pending modification values.
--
-- 'preferredMaintenanceWindow', 'replicationInstance_preferredMaintenanceWindow' - The maintenance window times for the replication instance. Any pending
-- upgrades to the replication instance are performed during this time.
--
-- '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@.
--
-- 'replicationInstanceArn', 'replicationInstance_replicationInstanceArn' - The Amazon Resource Name (ARN) 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@
--
-- 'replicationInstanceIpv6Addresses', 'replicationInstance_replicationInstanceIpv6Addresses' - One or more IPv6 addresses for the replication instance.
--
-- 'replicationInstancePrivateIpAddress', 'replicationInstance_replicationInstancePrivateIpAddress' - The private IP address of the replication instance.
--
-- 'replicationInstancePrivateIpAddresses', 'replicationInstance_replicationInstancePrivateIpAddresses' - One or more private IP addresses for the replication instance.
--
-- 'replicationInstancePublicIpAddress', 'replicationInstance_replicationInstancePublicIpAddress' - The public IP address of the replication instance.
--
-- 'replicationInstancePublicIpAddresses', 'replicationInstance_replicationInstancePublicIpAddresses' - One or more public IP addresses for the replication instance.
--
-- '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\"@
--
-- 'replicationSubnetGroup', 'replicationInstance_replicationSubnetGroup' - The subnet group for the replication instance.
--
-- 'secondaryAvailabilityZone', 'replicationInstance_secondaryAvailabilityZone' - The Availability Zone of the standby replication instance in a Multi-AZ
-- deployment.
--
-- 'vpcSecurityGroups', 'replicationInstance_vpcSecurityGroups' - The VPC security group for the instance.
newReplicationInstance ::
  ReplicationInstance
newReplicationInstance :: ReplicationInstance
newReplicationInstance =
  ReplicationInstance'
    { $sel:allocatedStorage:ReplicationInstance' :: Maybe Int
allocatedStorage =
        forall a. Maybe a
Prelude.Nothing,
      $sel:autoMinorVersionUpgrade:ReplicationInstance' :: Maybe Bool
autoMinorVersionUpgrade = forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZone:ReplicationInstance' :: Maybe Text
availabilityZone = forall a. Maybe a
Prelude.Nothing,
      $sel:dnsNameServers:ReplicationInstance' :: Maybe Text
dnsNameServers = forall a. Maybe a
Prelude.Nothing,
      $sel:engineVersion:ReplicationInstance' :: Maybe Text
engineVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:freeUntil:ReplicationInstance' :: Maybe POSIX
freeUntil = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceCreateTime:ReplicationInstance' :: Maybe POSIX
instanceCreateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyId:ReplicationInstance' :: Maybe Text
kmsKeyId = forall a. Maybe a
Prelude.Nothing,
      $sel:multiAZ:ReplicationInstance' :: Maybe Bool
multiAZ = forall a. Maybe a
Prelude.Nothing,
      $sel:networkType:ReplicationInstance' :: Maybe Text
networkType = forall a. Maybe a
Prelude.Nothing,
      $sel:pendingModifiedValues:ReplicationInstance' :: Maybe ReplicationPendingModifiedValues
pendingModifiedValues = forall a. Maybe a
Prelude.Nothing,
      $sel:preferredMaintenanceWindow:ReplicationInstance' :: Maybe Text
preferredMaintenanceWindow = forall a. Maybe a
Prelude.Nothing,
      $sel:publiclyAccessible:ReplicationInstance' :: Maybe Bool
publiclyAccessible = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstanceArn:ReplicationInstance' :: Maybe Text
replicationInstanceArn = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstanceClass:ReplicationInstance' :: Maybe Text
replicationInstanceClass = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstanceIdentifier:ReplicationInstance' :: Maybe Text
replicationInstanceIdentifier = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstanceIpv6Addresses:ReplicationInstance' :: Maybe [Text]
replicationInstanceIpv6Addresses = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstancePrivateIpAddress:ReplicationInstance' :: Maybe Text
replicationInstancePrivateIpAddress =
        forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstancePrivateIpAddresses:ReplicationInstance' :: Maybe [Text]
replicationInstancePrivateIpAddresses =
        forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstancePublicIpAddress:ReplicationInstance' :: Maybe Text
replicationInstancePublicIpAddress = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstancePublicIpAddresses:ReplicationInstance' :: Maybe [Text]
replicationInstancePublicIpAddresses =
        forall a. Maybe a
Prelude.Nothing,
      $sel:replicationInstanceStatus:ReplicationInstance' :: Maybe Text
replicationInstanceStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationSubnetGroup:ReplicationInstance' :: Maybe ReplicationSubnetGroup
replicationSubnetGroup = forall a. Maybe a
Prelude.Nothing,
      $sel:secondaryAvailabilityZone:ReplicationInstance' :: Maybe Text
secondaryAvailabilityZone = forall a. Maybe a
Prelude.Nothing,
      $sel:vpcSecurityGroups:ReplicationInstance' :: Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups = forall a. Maybe a
Prelude.Nothing
    }

-- | The amount of storage (in gigabytes) that is allocated for the
-- replication instance.
replicationInstance_allocatedStorage :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Int)
replicationInstance_allocatedStorage :: Lens' ReplicationInstance (Maybe Int)
replicationInstance_allocatedStorage = 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)

-- | 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 :: Lens' ReplicationInstance (Maybe Bool)
replicationInstance_autoMinorVersionUpgrade = 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)

-- | The Availability Zone for the instance.
replicationInstance_availabilityZone :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_availabilityZone :: Lens' ReplicationInstance (Maybe Text)
replicationInstance_availabilityZone = 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 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 :: Lens' ReplicationInstance (Maybe Text)
replicationInstance_dnsNameServers = 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 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 :: Lens' ReplicationInstance (Maybe Text)
replicationInstance_engineVersion = 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)

-- | 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 :: Lens' ReplicationInstance (Maybe UTCTime)
replicationInstance_freeUntil = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The time the replication instance was created.
replicationInstance_instanceCreateTime :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.UTCTime)
replicationInstance_instanceCreateTime :: Lens' ReplicationInstance (Maybe UTCTime)
replicationInstance_instanceCreateTime = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | 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 :: Lens' ReplicationInstance (Maybe Text)
replicationInstance_kmsKeyId = 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)

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

-- | The pending modification values.
replicationInstance_pendingModifiedValues :: Lens.Lens' ReplicationInstance (Prelude.Maybe ReplicationPendingModifiedValues)
replicationInstance_pendingModifiedValues :: Lens' ReplicationInstance (Maybe ReplicationPendingModifiedValues)
replicationInstance_pendingModifiedValues = 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)

-- | 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 :: Lens' ReplicationInstance (Maybe Text)
replicationInstance_preferredMaintenanceWindow = 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)

-- | 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 :: Lens' ReplicationInstance (Maybe Bool)
replicationInstance_publiclyAccessible = 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)

-- | The Amazon Resource Name (ARN) of the replication instance.
replicationInstance_replicationInstanceArn :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_replicationInstanceArn :: Lens' ReplicationInstance (Maybe Text)
replicationInstance_replicationInstanceArn = 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 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 :: Lens' ReplicationInstance (Maybe Text)
replicationInstance_replicationInstanceClass = 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 :: Lens' ReplicationInstance (Maybe Text)
replicationInstance_replicationInstanceIdentifier = 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)

-- | One or more IPv6 addresses for the replication instance.
replicationInstance_replicationInstanceIpv6Addresses :: Lens.Lens' ReplicationInstance (Prelude.Maybe [Prelude.Text])
replicationInstance_replicationInstanceIpv6Addresses :: Lens' ReplicationInstance (Maybe [Text])
replicationInstance_replicationInstanceIpv6Addresses = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationInstance' {Maybe [Text]
replicationInstanceIpv6Addresses :: Maybe [Text]
$sel:replicationInstanceIpv6Addresses:ReplicationInstance' :: ReplicationInstance -> Maybe [Text]
replicationInstanceIpv6Addresses} -> Maybe [Text]
replicationInstanceIpv6Addresses) (\s :: ReplicationInstance
s@ReplicationInstance' {} Maybe [Text]
a -> ReplicationInstance
s {$sel:replicationInstanceIpv6Addresses:ReplicationInstance' :: Maybe [Text]
replicationInstanceIpv6Addresses = Maybe [Text]
a} :: ReplicationInstance) 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 private IP address of the replication instance.
replicationInstance_replicationInstancePrivateIpAddress :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_replicationInstancePrivateIpAddress :: Lens' ReplicationInstance (Maybe Text)
replicationInstance_replicationInstancePrivateIpAddress = 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)

-- | One or more private IP addresses for the replication instance.
replicationInstance_replicationInstancePrivateIpAddresses :: Lens.Lens' ReplicationInstance (Prelude.Maybe [Prelude.Text])
replicationInstance_replicationInstancePrivateIpAddresses :: Lens' ReplicationInstance (Maybe [Text])
replicationInstance_replicationInstancePrivateIpAddresses = 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) 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 public IP address of the replication instance.
replicationInstance_replicationInstancePublicIpAddress :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_replicationInstancePublicIpAddress :: Lens' ReplicationInstance (Maybe Text)
replicationInstance_replicationInstancePublicIpAddress = 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)

-- | One or more public IP addresses for the replication instance.
replicationInstance_replicationInstancePublicIpAddresses :: Lens.Lens' ReplicationInstance (Prelude.Maybe [Prelude.Text])
replicationInstance_replicationInstancePublicIpAddresses :: Lens' ReplicationInstance (Maybe [Text])
replicationInstance_replicationInstancePublicIpAddresses = 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) 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 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 :: Lens' ReplicationInstance (Maybe Text)
replicationInstance_replicationInstanceStatus = 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)

-- | The subnet group for the replication instance.
replicationInstance_replicationSubnetGroup :: Lens.Lens' ReplicationInstance (Prelude.Maybe ReplicationSubnetGroup)
replicationInstance_replicationSubnetGroup :: Lens' ReplicationInstance (Maybe ReplicationSubnetGroup)
replicationInstance_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 Availability Zone of the standby replication instance in a Multi-AZ
-- deployment.
replicationInstance_secondaryAvailabilityZone :: Lens.Lens' ReplicationInstance (Prelude.Maybe Prelude.Text)
replicationInstance_secondaryAvailabilityZone :: Lens' ReplicationInstance (Maybe Text)
replicationInstance_secondaryAvailabilityZone = 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 VPC security group for the instance.
replicationInstance_vpcSecurityGroups :: Lens.Lens' ReplicationInstance (Prelude.Maybe [VpcSecurityGroupMembership])
replicationInstance_vpcSecurityGroups :: Lens' ReplicationInstance (Maybe [VpcSecurityGroupMembership])
replicationInstance_vpcSecurityGroups = 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) 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

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

instance Prelude.Hashable ReplicationInstance where
  hashWithSalt :: Int -> ReplicationInstance -> Int
hashWithSalt Int
_salt ReplicationInstance' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [VpcSecurityGroupMembership]
Maybe Text
Maybe POSIX
Maybe ReplicationPendingModifiedValues
Maybe ReplicationSubnetGroup
vpcSecurityGroups :: Maybe [VpcSecurityGroupMembership]
secondaryAvailabilityZone :: Maybe Text
replicationSubnetGroup :: Maybe ReplicationSubnetGroup
replicationInstanceStatus :: Maybe Text
replicationInstancePublicIpAddresses :: Maybe [Text]
replicationInstancePublicIpAddress :: Maybe Text
replicationInstancePrivateIpAddresses :: Maybe [Text]
replicationInstancePrivateIpAddress :: Maybe Text
replicationInstanceIpv6Addresses :: Maybe [Text]
replicationInstanceIdentifier :: Maybe Text
replicationInstanceClass :: Maybe Text
replicationInstanceArn :: Maybe Text
publiclyAccessible :: Maybe Bool
preferredMaintenanceWindow :: Maybe Text
pendingModifiedValues :: Maybe ReplicationPendingModifiedValues
networkType :: Maybe Text
multiAZ :: Maybe Bool
kmsKeyId :: Maybe Text
instanceCreateTime :: Maybe POSIX
freeUntil :: Maybe POSIX
engineVersion :: Maybe Text
dnsNameServers :: Maybe Text
availabilityZone :: Maybe Text
autoMinorVersionUpgrade :: Maybe Bool
allocatedStorage :: Maybe Int
$sel:vpcSecurityGroups:ReplicationInstance' :: ReplicationInstance -> Maybe [VpcSecurityGroupMembership]
$sel:secondaryAvailabilityZone:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:replicationSubnetGroup:ReplicationInstance' :: ReplicationInstance -> Maybe ReplicationSubnetGroup
$sel:replicationInstanceStatus:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:replicationInstancePublicIpAddresses:ReplicationInstance' :: ReplicationInstance -> Maybe [Text]
$sel:replicationInstancePublicIpAddress:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:replicationInstancePrivateIpAddresses:ReplicationInstance' :: ReplicationInstance -> Maybe [Text]
$sel:replicationInstancePrivateIpAddress:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:replicationInstanceIpv6Addresses:ReplicationInstance' :: ReplicationInstance -> Maybe [Text]
$sel:replicationInstanceIdentifier:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:replicationInstanceClass:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:replicationInstanceArn:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:publiclyAccessible:ReplicationInstance' :: ReplicationInstance -> Maybe Bool
$sel:preferredMaintenanceWindow:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:pendingModifiedValues:ReplicationInstance' :: ReplicationInstance -> Maybe ReplicationPendingModifiedValues
$sel:networkType:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:multiAZ:ReplicationInstance' :: ReplicationInstance -> Maybe Bool
$sel:kmsKeyId:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:instanceCreateTime:ReplicationInstance' :: ReplicationInstance -> Maybe POSIX
$sel:freeUntil:ReplicationInstance' :: ReplicationInstance -> Maybe POSIX
$sel:engineVersion:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:dnsNameServers:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:availabilityZone:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:autoMinorVersionUpgrade:ReplicationInstance' :: ReplicationInstance -> Maybe Bool
$sel:allocatedStorage:ReplicationInstance' :: ReplicationInstance -> 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
autoMinorVersionUpgrade
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
availabilityZone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dnsNameServers
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
engineVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
freeUntil
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
instanceCreateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
kmsKeyId
      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 ReplicationPendingModifiedValues
pendingModifiedValues
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredMaintenanceWindow
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
publiclyAccessible
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
replicationInstanceArn
      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]
replicationInstanceIpv6Addresses
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
replicationInstancePrivateIpAddress
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
replicationInstancePrivateIpAddresses
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
replicationInstancePublicIpAddress
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
replicationInstancePublicIpAddresses
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
replicationInstanceStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReplicationSubnetGroup
replicationSubnetGroup
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
secondaryAvailabilityZone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups

instance Prelude.NFData ReplicationInstance where
  rnf :: ReplicationInstance -> ()
rnf ReplicationInstance' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [VpcSecurityGroupMembership]
Maybe Text
Maybe POSIX
Maybe ReplicationPendingModifiedValues
Maybe ReplicationSubnetGroup
vpcSecurityGroups :: Maybe [VpcSecurityGroupMembership]
secondaryAvailabilityZone :: Maybe Text
replicationSubnetGroup :: Maybe ReplicationSubnetGroup
replicationInstanceStatus :: Maybe Text
replicationInstancePublicIpAddresses :: Maybe [Text]
replicationInstancePublicIpAddress :: Maybe Text
replicationInstancePrivateIpAddresses :: Maybe [Text]
replicationInstancePrivateIpAddress :: Maybe Text
replicationInstanceIpv6Addresses :: Maybe [Text]
replicationInstanceIdentifier :: Maybe Text
replicationInstanceClass :: Maybe Text
replicationInstanceArn :: Maybe Text
publiclyAccessible :: Maybe Bool
preferredMaintenanceWindow :: Maybe Text
pendingModifiedValues :: Maybe ReplicationPendingModifiedValues
networkType :: Maybe Text
multiAZ :: Maybe Bool
kmsKeyId :: Maybe Text
instanceCreateTime :: Maybe POSIX
freeUntil :: Maybe POSIX
engineVersion :: Maybe Text
dnsNameServers :: Maybe Text
availabilityZone :: Maybe Text
autoMinorVersionUpgrade :: Maybe Bool
allocatedStorage :: Maybe Int
$sel:vpcSecurityGroups:ReplicationInstance' :: ReplicationInstance -> Maybe [VpcSecurityGroupMembership]
$sel:secondaryAvailabilityZone:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:replicationSubnetGroup:ReplicationInstance' :: ReplicationInstance -> Maybe ReplicationSubnetGroup
$sel:replicationInstanceStatus:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:replicationInstancePublicIpAddresses:ReplicationInstance' :: ReplicationInstance -> Maybe [Text]
$sel:replicationInstancePublicIpAddress:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:replicationInstancePrivateIpAddresses:ReplicationInstance' :: ReplicationInstance -> Maybe [Text]
$sel:replicationInstancePrivateIpAddress:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:replicationInstanceIpv6Addresses:ReplicationInstance' :: ReplicationInstance -> Maybe [Text]
$sel:replicationInstanceIdentifier:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:replicationInstanceClass:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:replicationInstanceArn:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:publiclyAccessible:ReplicationInstance' :: ReplicationInstance -> Maybe Bool
$sel:preferredMaintenanceWindow:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:pendingModifiedValues:ReplicationInstance' :: ReplicationInstance -> Maybe ReplicationPendingModifiedValues
$sel:networkType:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:multiAZ:ReplicationInstance' :: ReplicationInstance -> Maybe Bool
$sel:kmsKeyId:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:instanceCreateTime:ReplicationInstance' :: ReplicationInstance -> Maybe POSIX
$sel:freeUntil:ReplicationInstance' :: ReplicationInstance -> Maybe POSIX
$sel:engineVersion:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:dnsNameServers:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:availabilityZone:ReplicationInstance' :: ReplicationInstance -> Maybe Text
$sel:autoMinorVersionUpgrade:ReplicationInstance' :: ReplicationInstance -> Maybe Bool
$sel:allocatedStorage:ReplicationInstance' :: ReplicationInstance -> 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
autoMinorVersionUpgrade
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
availabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dnsNameServers
      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 POSIX
freeUntil
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
instanceCreateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
kmsKeyId
      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 ReplicationPendingModifiedValues
pendingModifiedValues
      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 Bool
publiclyAccessible
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
replicationInstanceArn
      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]
replicationInstanceIpv6Addresses
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
replicationInstancePrivateIpAddress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [Text]
replicationInstancePrivateIpAddresses
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
replicationInstancePublicIpAddress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [Text]
replicationInstancePublicIpAddresses
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
replicationInstanceStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ReplicationSubnetGroup
replicationSubnetGroup
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
secondaryAvailabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups