{-# 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.DocumentDB.Types.DBInstance
-- 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.DocumentDB.Types.DBInstance where

import qualified Amazonka.Core as Core
import Amazonka.DocumentDB.Types.DBInstanceStatusInfo
import Amazonka.DocumentDB.Types.DBSubnetGroup
import Amazonka.DocumentDB.Types.Endpoint
import Amazonka.DocumentDB.Types.PendingModifiedValues
import Amazonka.DocumentDB.Types.VpcSecurityGroupMembership
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Detailed information about an instance.
--
-- /See:/ 'newDBInstance' smart constructor.
data DBInstance = DBInstance'
  { -- | Indicates the database engine version.
    DBInstance -> Maybe Text
engineVersion :: Prelude.Maybe Prelude.Text,
    -- | Specifies whether or not the instance is encrypted.
    DBInstance -> Maybe Bool
storageEncrypted :: Prelude.Maybe Prelude.Bool,
    -- | Contains the name of the cluster that the instance is a member of if the
    -- instance is a member of a cluster.
    DBInstance -> Maybe Text
dbClusterIdentifier :: Prelude.Maybe Prelude.Text,
    -- | Not supported. Amazon DocumentDB does not currently support public
    -- endpoints. The value of @PubliclyAccessible@ is always @false@.
    DBInstance -> Maybe Bool
publiclyAccessible :: Prelude.Maybe Prelude.Bool,
    -- | Does not apply. This parameter does not apply to Amazon DocumentDB.
    -- Amazon DocumentDB does not perform minor version upgrades regardless of
    -- the value set.
    DBInstance -> Maybe Bool
autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,
    -- | The Amazon Resource Name (ARN) for the instance.
    DBInstance -> Maybe Text
dbInstanceArn :: Prelude.Maybe Prelude.Text,
    -- | Provides the date and time that the instance was created.
    DBInstance -> Maybe ISO8601
instanceCreateTime :: Prelude.Maybe Core.ISO8601,
    -- | Provides the name of the database engine to be used for this instance.
    DBInstance -> Maybe Text
engine :: Prelude.Maybe Prelude.Text,
    -- | Specifies the latest time to which a database can be restored with
    -- point-in-time restore.
    DBInstance -> Maybe ISO8601
latestRestorableTime :: Prelude.Maybe Core.ISO8601,
    -- | Contains the name of the compute and memory capacity class of the
    -- instance.
    DBInstance -> Maybe Text
dbInstanceClass :: Prelude.Maybe Prelude.Text,
    -- | A value that specifies the order in which an Amazon DocumentDB replica
    -- is promoted to the primary instance after a failure of the existing
    -- primary instance.
    DBInstance -> Maybe Int
promotionTier :: Prelude.Maybe Prelude.Int,
    -- | Specifies the weekly time range during which system maintenance can
    -- occur, in Universal Coordinated Time (UTC).
    DBInstance -> Maybe Text
preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the CA certificate for this DB instance.
    DBInstance -> Maybe Text
cACertificateIdentifier :: Prelude.Maybe Prelude.Text,
    -- | Contains a user-provided database identifier. This identifier is the
    -- unique key that identifies an instance.
    DBInstance -> Maybe Text
dbInstanceIdentifier :: Prelude.Maybe Prelude.Text,
    -- | If @StorageEncrypted@ is @true@, the KMS key identifier for the
    -- encrypted instance.
    DBInstance -> Maybe Text
kmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | Specifies the daily time range during which automated backups are
    -- created if automated backups are enabled, as determined by the
    -- @BackupRetentionPeriod@.
    DBInstance -> Maybe Text
preferredBackupWindow :: Prelude.Maybe Prelude.Text,
    -- | Specifies the name of the Availability Zone that the instance is located
    -- in.
    DBInstance -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | Provides a list of VPC security group elements that the instance belongs
    -- to.
    DBInstance -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups :: Prelude.Maybe [VpcSecurityGroupMembership],
    -- | Specifies the number of days for which automatic snapshots are retained.
    DBInstance -> Maybe Int
backupRetentionPeriod :: Prelude.Maybe Prelude.Int,
    -- | Specifies information on the subnet group that is associated with the
    -- instance, including the name, description, and subnets in the subnet
    -- group.
    DBInstance -> Maybe DBSubnetGroup
dbSubnetGroup :: Prelude.Maybe DBSubnetGroup,
    -- | A list of log types that this instance is configured to export to
    -- CloudWatch Logs.
    DBInstance -> Maybe [Text]
enabledCloudwatchLogsExports :: Prelude.Maybe [Prelude.Text],
    -- | The Region-unique, immutable identifier for the instance. This
    -- identifier is found in CloudTrail log entries whenever the KMS key for
    -- the instance is accessed.
    DBInstance -> Maybe Text
dbiResourceId :: Prelude.Maybe Prelude.Text,
    -- | Specifies the connection endpoint.
    DBInstance -> Maybe Endpoint
endpoint :: Prelude.Maybe Endpoint,
    -- | Specifies the current state of this database.
    DBInstance -> Maybe Text
dbInstanceStatus :: Prelude.Maybe Prelude.Text,
    -- | Specifies that changes to the instance are pending. This element is
    -- included only when changes are pending. Specific changes are identified
    -- by subelements.
    DBInstance -> Maybe PendingModifiedValues
pendingModifiedValues :: Prelude.Maybe PendingModifiedValues,
    -- | The status of a read replica. If the instance is not a read replica,
    -- this is blank.
    DBInstance -> Maybe [DBInstanceStatusInfo]
statusInfos :: Prelude.Maybe [DBInstanceStatusInfo]
  }
  deriving (DBInstance -> DBInstance -> Bool
(DBInstance -> DBInstance -> Bool)
-> (DBInstance -> DBInstance -> Bool) -> Eq DBInstance
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DBInstance -> DBInstance -> Bool
$c/= :: DBInstance -> DBInstance -> Bool
== :: DBInstance -> DBInstance -> Bool
$c== :: DBInstance -> DBInstance -> Bool
Prelude.Eq, ReadPrec [DBInstance]
ReadPrec DBInstance
Int -> ReadS DBInstance
ReadS [DBInstance]
(Int -> ReadS DBInstance)
-> ReadS [DBInstance]
-> ReadPrec DBInstance
-> ReadPrec [DBInstance]
-> Read DBInstance
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DBInstance]
$creadListPrec :: ReadPrec [DBInstance]
readPrec :: ReadPrec DBInstance
$creadPrec :: ReadPrec DBInstance
readList :: ReadS [DBInstance]
$creadList :: ReadS [DBInstance]
readsPrec :: Int -> ReadS DBInstance
$creadsPrec :: Int -> ReadS DBInstance
Prelude.Read, Int -> DBInstance -> ShowS
[DBInstance] -> ShowS
DBInstance -> String
(Int -> DBInstance -> ShowS)
-> (DBInstance -> String)
-> ([DBInstance] -> ShowS)
-> Show DBInstance
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DBInstance] -> ShowS
$cshowList :: [DBInstance] -> ShowS
show :: DBInstance -> String
$cshow :: DBInstance -> String
showsPrec :: Int -> DBInstance -> ShowS
$cshowsPrec :: Int -> DBInstance -> ShowS
Prelude.Show, (forall x. DBInstance -> Rep DBInstance x)
-> (forall x. Rep DBInstance x -> DBInstance) -> Generic DBInstance
forall x. Rep DBInstance x -> DBInstance
forall x. DBInstance -> Rep DBInstance x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DBInstance x -> DBInstance
$cfrom :: forall x. DBInstance -> Rep DBInstance x
Prelude.Generic)

-- |
-- Create a value of 'DBInstance' 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', 'dbInstance_engineVersion' - Indicates the database engine version.
--
-- 'storageEncrypted', 'dbInstance_storageEncrypted' - Specifies whether or not the instance is encrypted.
--
-- 'dbClusterIdentifier', 'dbInstance_dbClusterIdentifier' - Contains the name of the cluster that the instance is a member of if the
-- instance is a member of a cluster.
--
-- 'publiclyAccessible', 'dbInstance_publiclyAccessible' - Not supported. Amazon DocumentDB does not currently support public
-- endpoints. The value of @PubliclyAccessible@ is always @false@.
--
-- 'autoMinorVersionUpgrade', 'dbInstance_autoMinorVersionUpgrade' - Does not apply. This parameter does not apply to Amazon DocumentDB.
-- Amazon DocumentDB does not perform minor version upgrades regardless of
-- the value set.
--
-- 'dbInstanceArn', 'dbInstance_dbInstanceArn' - The Amazon Resource Name (ARN) for the instance.
--
-- 'instanceCreateTime', 'dbInstance_instanceCreateTime' - Provides the date and time that the instance was created.
--
-- 'engine', 'dbInstance_engine' - Provides the name of the database engine to be used for this instance.
--
-- 'latestRestorableTime', 'dbInstance_latestRestorableTime' - Specifies the latest time to which a database can be restored with
-- point-in-time restore.
--
-- 'dbInstanceClass', 'dbInstance_dbInstanceClass' - Contains the name of the compute and memory capacity class of the
-- instance.
--
-- 'promotionTier', 'dbInstance_promotionTier' - A value that specifies the order in which an Amazon DocumentDB replica
-- is promoted to the primary instance after a failure of the existing
-- primary instance.
--
-- 'preferredMaintenanceWindow', 'dbInstance_preferredMaintenanceWindow' - Specifies the weekly time range during which system maintenance can
-- occur, in Universal Coordinated Time (UTC).
--
-- 'cACertificateIdentifier', 'dbInstance_cACertificateIdentifier' - The identifier of the CA certificate for this DB instance.
--
-- 'dbInstanceIdentifier', 'dbInstance_dbInstanceIdentifier' - Contains a user-provided database identifier. This identifier is the
-- unique key that identifies an instance.
--
-- 'kmsKeyId', 'dbInstance_kmsKeyId' - If @StorageEncrypted@ is @true@, the KMS key identifier for the
-- encrypted instance.
--
-- 'preferredBackupWindow', 'dbInstance_preferredBackupWindow' - Specifies the daily time range during which automated backups are
-- created if automated backups are enabled, as determined by the
-- @BackupRetentionPeriod@.
--
-- 'availabilityZone', 'dbInstance_availabilityZone' - Specifies the name of the Availability Zone that the instance is located
-- in.
--
-- 'vpcSecurityGroups', 'dbInstance_vpcSecurityGroups' - Provides a list of VPC security group elements that the instance belongs
-- to.
--
-- 'backupRetentionPeriod', 'dbInstance_backupRetentionPeriod' - Specifies the number of days for which automatic snapshots are retained.
--
-- 'dbSubnetGroup', 'dbInstance_dbSubnetGroup' - Specifies information on the subnet group that is associated with the
-- instance, including the name, description, and subnets in the subnet
-- group.
--
-- 'enabledCloudwatchLogsExports', 'dbInstance_enabledCloudwatchLogsExports' - A list of log types that this instance is configured to export to
-- CloudWatch Logs.
--
-- 'dbiResourceId', 'dbInstance_dbiResourceId' - The Region-unique, immutable identifier for the instance. This
-- identifier is found in CloudTrail log entries whenever the KMS key for
-- the instance is accessed.
--
-- 'endpoint', 'dbInstance_endpoint' - Specifies the connection endpoint.
--
-- 'dbInstanceStatus', 'dbInstance_dbInstanceStatus' - Specifies the current state of this database.
--
-- 'pendingModifiedValues', 'dbInstance_pendingModifiedValues' - Specifies that changes to the instance are pending. This element is
-- included only when changes are pending. Specific changes are identified
-- by subelements.
--
-- 'statusInfos', 'dbInstance_statusInfos' - The status of a read replica. If the instance is not a read replica,
-- this is blank.
newDBInstance ::
  DBInstance
newDBInstance :: DBInstance
newDBInstance =
  DBInstance' :: Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [VpcSecurityGroupMembership]
-> Maybe Int
-> Maybe DBSubnetGroup
-> Maybe [Text]
-> Maybe Text
-> Maybe Endpoint
-> Maybe Text
-> Maybe PendingModifiedValues
-> Maybe [DBInstanceStatusInfo]
-> DBInstance
DBInstance'
    { $sel:engineVersion:DBInstance' :: Maybe Text
engineVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:storageEncrypted:DBInstance' :: Maybe Bool
storageEncrypted = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:dbClusterIdentifier:DBInstance' :: Maybe Text
dbClusterIdentifier = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:publiclyAccessible:DBInstance' :: Maybe Bool
publiclyAccessible = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:autoMinorVersionUpgrade:DBInstance' :: Maybe Bool
autoMinorVersionUpgrade = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:dbInstanceArn:DBInstance' :: Maybe Text
dbInstanceArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:instanceCreateTime:DBInstance' :: Maybe ISO8601
instanceCreateTime = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:engine:DBInstance' :: Maybe Text
engine = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:latestRestorableTime:DBInstance' :: Maybe ISO8601
latestRestorableTime = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:dbInstanceClass:DBInstance' :: Maybe Text
dbInstanceClass = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:promotionTier:DBInstance' :: Maybe Int
promotionTier = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:preferredMaintenanceWindow:DBInstance' :: Maybe Text
preferredMaintenanceWindow = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:cACertificateIdentifier:DBInstance' :: Maybe Text
cACertificateIdentifier = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:dbInstanceIdentifier:DBInstance' :: Maybe Text
dbInstanceIdentifier = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyId:DBInstance' :: Maybe Text
kmsKeyId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:preferredBackupWindow:DBInstance' :: Maybe Text
preferredBackupWindow = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZone:DBInstance' :: Maybe Text
availabilityZone = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcSecurityGroups:DBInstance' :: Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups = Maybe [VpcSecurityGroupMembership]
forall a. Maybe a
Prelude.Nothing,
      $sel:backupRetentionPeriod:DBInstance' :: Maybe Int
backupRetentionPeriod = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:dbSubnetGroup:DBInstance' :: Maybe DBSubnetGroup
dbSubnetGroup = Maybe DBSubnetGroup
forall a. Maybe a
Prelude.Nothing,
      $sel:enabledCloudwatchLogsExports:DBInstance' :: Maybe [Text]
enabledCloudwatchLogsExports = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:dbiResourceId:DBInstance' :: Maybe Text
dbiResourceId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:endpoint:DBInstance' :: Maybe Endpoint
endpoint = Maybe Endpoint
forall a. Maybe a
Prelude.Nothing,
      $sel:dbInstanceStatus:DBInstance' :: Maybe Text
dbInstanceStatus = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:pendingModifiedValues:DBInstance' :: Maybe PendingModifiedValues
pendingModifiedValues = Maybe PendingModifiedValues
forall a. Maybe a
Prelude.Nothing,
      $sel:statusInfos:DBInstance' :: Maybe [DBInstanceStatusInfo]
statusInfos = Maybe [DBInstanceStatusInfo]
forall a. Maybe a
Prelude.Nothing
    }

-- | Indicates the database engine version.
dbInstance_engineVersion :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_engineVersion :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_engineVersion = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
engineVersion :: Maybe Text
$sel:engineVersion:DBInstance' :: DBInstance -> Maybe Text
engineVersion} -> Maybe Text
engineVersion) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:engineVersion:DBInstance' :: Maybe Text
engineVersion = Maybe Text
a} :: DBInstance)

-- | Specifies whether or not the instance is encrypted.
dbInstance_storageEncrypted :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Bool)
dbInstance_storageEncrypted :: (Maybe Bool -> f (Maybe Bool)) -> DBInstance -> f DBInstance
dbInstance_storageEncrypted = (DBInstance -> Maybe Bool)
-> (DBInstance -> Maybe Bool -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Bool
storageEncrypted :: Maybe Bool
$sel:storageEncrypted:DBInstance' :: DBInstance -> Maybe Bool
storageEncrypted} -> Maybe Bool
storageEncrypted) (\s :: DBInstance
s@DBInstance' {} Maybe Bool
a -> DBInstance
s {$sel:storageEncrypted:DBInstance' :: Maybe Bool
storageEncrypted = Maybe Bool
a} :: DBInstance)

-- | Contains the name of the cluster that the instance is a member of if the
-- instance is a member of a cluster.
dbInstance_dbClusterIdentifier :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_dbClusterIdentifier :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_dbClusterIdentifier = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
dbClusterIdentifier :: Maybe Text
$sel:dbClusterIdentifier:DBInstance' :: DBInstance -> Maybe Text
dbClusterIdentifier} -> Maybe Text
dbClusterIdentifier) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:dbClusterIdentifier:DBInstance' :: Maybe Text
dbClusterIdentifier = Maybe Text
a} :: DBInstance)

-- | Not supported. Amazon DocumentDB does not currently support public
-- endpoints. The value of @PubliclyAccessible@ is always @false@.
dbInstance_publiclyAccessible :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Bool)
dbInstance_publiclyAccessible :: (Maybe Bool -> f (Maybe Bool)) -> DBInstance -> f DBInstance
dbInstance_publiclyAccessible = (DBInstance -> Maybe Bool)
-> (DBInstance -> Maybe Bool -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Bool
publiclyAccessible :: Maybe Bool
$sel:publiclyAccessible:DBInstance' :: DBInstance -> Maybe Bool
publiclyAccessible} -> Maybe Bool
publiclyAccessible) (\s :: DBInstance
s@DBInstance' {} Maybe Bool
a -> DBInstance
s {$sel:publiclyAccessible:DBInstance' :: Maybe Bool
publiclyAccessible = Maybe Bool
a} :: DBInstance)

-- | Does not apply. This parameter does not apply to Amazon DocumentDB.
-- Amazon DocumentDB does not perform minor version upgrades regardless of
-- the value set.
dbInstance_autoMinorVersionUpgrade :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Bool)
dbInstance_autoMinorVersionUpgrade :: (Maybe Bool -> f (Maybe Bool)) -> DBInstance -> f DBInstance
dbInstance_autoMinorVersionUpgrade = (DBInstance -> Maybe Bool)
-> (DBInstance -> Maybe Bool -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Bool
autoMinorVersionUpgrade :: Maybe Bool
$sel:autoMinorVersionUpgrade:DBInstance' :: DBInstance -> Maybe Bool
autoMinorVersionUpgrade} -> Maybe Bool
autoMinorVersionUpgrade) (\s :: DBInstance
s@DBInstance' {} Maybe Bool
a -> DBInstance
s {$sel:autoMinorVersionUpgrade:DBInstance' :: Maybe Bool
autoMinorVersionUpgrade = Maybe Bool
a} :: DBInstance)

-- | The Amazon Resource Name (ARN) for the instance.
dbInstance_dbInstanceArn :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_dbInstanceArn :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_dbInstanceArn = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
dbInstanceArn :: Maybe Text
$sel:dbInstanceArn:DBInstance' :: DBInstance -> Maybe Text
dbInstanceArn} -> Maybe Text
dbInstanceArn) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:dbInstanceArn:DBInstance' :: Maybe Text
dbInstanceArn = Maybe Text
a} :: DBInstance)

-- | Provides the date and time that the instance was created.
dbInstance_instanceCreateTime :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.UTCTime)
dbInstance_instanceCreateTime :: (Maybe UTCTime -> f (Maybe UTCTime)) -> DBInstance -> f DBInstance
dbInstance_instanceCreateTime = (DBInstance -> Maybe ISO8601)
-> (DBInstance -> Maybe ISO8601 -> DBInstance)
-> Lens DBInstance DBInstance (Maybe ISO8601) (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe ISO8601
instanceCreateTime :: Maybe ISO8601
$sel:instanceCreateTime:DBInstance' :: DBInstance -> Maybe ISO8601
instanceCreateTime} -> Maybe ISO8601
instanceCreateTime) (\s :: DBInstance
s@DBInstance' {} Maybe ISO8601
a -> DBInstance
s {$sel:instanceCreateTime:DBInstance' :: Maybe ISO8601
instanceCreateTime = Maybe ISO8601
a} :: DBInstance) ((Maybe ISO8601 -> f (Maybe ISO8601))
 -> DBInstance -> f DBInstance)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DBInstance
-> f DBInstance
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso ISO8601 ISO8601 UTCTime UTCTime
-> Iso
     (Maybe ISO8601) (Maybe ISO8601) (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 ISO8601 ISO8601 UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Provides the name of the database engine to be used for this instance.
dbInstance_engine :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_engine :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_engine = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
engine :: Maybe Text
$sel:engine:DBInstance' :: DBInstance -> Maybe Text
engine} -> Maybe Text
engine) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:engine:DBInstance' :: Maybe Text
engine = Maybe Text
a} :: DBInstance)

-- | Specifies the latest time to which a database can be restored with
-- point-in-time restore.
dbInstance_latestRestorableTime :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.UTCTime)
dbInstance_latestRestorableTime :: (Maybe UTCTime -> f (Maybe UTCTime)) -> DBInstance -> f DBInstance
dbInstance_latestRestorableTime = (DBInstance -> Maybe ISO8601)
-> (DBInstance -> Maybe ISO8601 -> DBInstance)
-> Lens DBInstance DBInstance (Maybe ISO8601) (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe ISO8601
latestRestorableTime :: Maybe ISO8601
$sel:latestRestorableTime:DBInstance' :: DBInstance -> Maybe ISO8601
latestRestorableTime} -> Maybe ISO8601
latestRestorableTime) (\s :: DBInstance
s@DBInstance' {} Maybe ISO8601
a -> DBInstance
s {$sel:latestRestorableTime:DBInstance' :: Maybe ISO8601
latestRestorableTime = Maybe ISO8601
a} :: DBInstance) ((Maybe ISO8601 -> f (Maybe ISO8601))
 -> DBInstance -> f DBInstance)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DBInstance
-> f DBInstance
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso ISO8601 ISO8601 UTCTime UTCTime
-> Iso
     (Maybe ISO8601) (Maybe ISO8601) (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 ISO8601 ISO8601 UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Contains the name of the compute and memory capacity class of the
-- instance.
dbInstance_dbInstanceClass :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_dbInstanceClass :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_dbInstanceClass = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
dbInstanceClass :: Maybe Text
$sel:dbInstanceClass:DBInstance' :: DBInstance -> Maybe Text
dbInstanceClass} -> Maybe Text
dbInstanceClass) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:dbInstanceClass:DBInstance' :: Maybe Text
dbInstanceClass = Maybe Text
a} :: DBInstance)

-- | A value that specifies the order in which an Amazon DocumentDB replica
-- is promoted to the primary instance after a failure of the existing
-- primary instance.
dbInstance_promotionTier :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Int)
dbInstance_promotionTier :: (Maybe Int -> f (Maybe Int)) -> DBInstance -> f DBInstance
dbInstance_promotionTier = (DBInstance -> Maybe Int)
-> (DBInstance -> Maybe Int -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Int
promotionTier :: Maybe Int
$sel:promotionTier:DBInstance' :: DBInstance -> Maybe Int
promotionTier} -> Maybe Int
promotionTier) (\s :: DBInstance
s@DBInstance' {} Maybe Int
a -> DBInstance
s {$sel:promotionTier:DBInstance' :: Maybe Int
promotionTier = Maybe Int
a} :: DBInstance)

-- | Specifies the weekly time range during which system maintenance can
-- occur, in Universal Coordinated Time (UTC).
dbInstance_preferredMaintenanceWindow :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_preferredMaintenanceWindow :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_preferredMaintenanceWindow = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
preferredMaintenanceWindow :: Maybe Text
$sel:preferredMaintenanceWindow:DBInstance' :: DBInstance -> Maybe Text
preferredMaintenanceWindow} -> Maybe Text
preferredMaintenanceWindow) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:preferredMaintenanceWindow:DBInstance' :: Maybe Text
preferredMaintenanceWindow = Maybe Text
a} :: DBInstance)

-- | The identifier of the CA certificate for this DB instance.
dbInstance_cACertificateIdentifier :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_cACertificateIdentifier :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_cACertificateIdentifier = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
cACertificateIdentifier :: Maybe Text
$sel:cACertificateIdentifier:DBInstance' :: DBInstance -> Maybe Text
cACertificateIdentifier} -> Maybe Text
cACertificateIdentifier) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:cACertificateIdentifier:DBInstance' :: Maybe Text
cACertificateIdentifier = Maybe Text
a} :: DBInstance)

-- | Contains a user-provided database identifier. This identifier is the
-- unique key that identifies an instance.
dbInstance_dbInstanceIdentifier :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_dbInstanceIdentifier :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_dbInstanceIdentifier = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
dbInstanceIdentifier :: Maybe Text
$sel:dbInstanceIdentifier:DBInstance' :: DBInstance -> Maybe Text
dbInstanceIdentifier} -> Maybe Text
dbInstanceIdentifier) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:dbInstanceIdentifier:DBInstance' :: Maybe Text
dbInstanceIdentifier = Maybe Text
a} :: DBInstance)

-- | If @StorageEncrypted@ is @true@, the KMS key identifier for the
-- encrypted instance.
dbInstance_kmsKeyId :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_kmsKeyId :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_kmsKeyId = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
kmsKeyId :: Maybe Text
$sel:kmsKeyId:DBInstance' :: DBInstance -> Maybe Text
kmsKeyId} -> Maybe Text
kmsKeyId) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:kmsKeyId:DBInstance' :: Maybe Text
kmsKeyId = Maybe Text
a} :: DBInstance)

-- | Specifies the daily time range during which automated backups are
-- created if automated backups are enabled, as determined by the
-- @BackupRetentionPeriod@.
dbInstance_preferredBackupWindow :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_preferredBackupWindow :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_preferredBackupWindow = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
preferredBackupWindow :: Maybe Text
$sel:preferredBackupWindow:DBInstance' :: DBInstance -> Maybe Text
preferredBackupWindow} -> Maybe Text
preferredBackupWindow) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:preferredBackupWindow:DBInstance' :: Maybe Text
preferredBackupWindow = Maybe Text
a} :: DBInstance)

-- | Specifies the name of the Availability Zone that the instance is located
-- in.
dbInstance_availabilityZone :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_availabilityZone :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_availabilityZone = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:DBInstance' :: DBInstance -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:availabilityZone:DBInstance' :: Maybe Text
availabilityZone = Maybe Text
a} :: DBInstance)

-- | Provides a list of VPC security group elements that the instance belongs
-- to.
dbInstance_vpcSecurityGroups :: Lens.Lens' DBInstance (Prelude.Maybe [VpcSecurityGroupMembership])
dbInstance_vpcSecurityGroups :: (Maybe [VpcSecurityGroupMembership]
 -> f (Maybe [VpcSecurityGroupMembership]))
-> DBInstance -> f DBInstance
dbInstance_vpcSecurityGroups = (DBInstance -> Maybe [VpcSecurityGroupMembership])
-> (DBInstance -> Maybe [VpcSecurityGroupMembership] -> DBInstance)
-> Lens
     DBInstance
     DBInstance
     (Maybe [VpcSecurityGroupMembership])
     (Maybe [VpcSecurityGroupMembership])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups :: Maybe [VpcSecurityGroupMembership]
$sel:vpcSecurityGroups:DBInstance' :: DBInstance -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups} -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups) (\s :: DBInstance
s@DBInstance' {} Maybe [VpcSecurityGroupMembership]
a -> DBInstance
s {$sel:vpcSecurityGroups:DBInstance' :: Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups = Maybe [VpcSecurityGroupMembership]
a} :: DBInstance) ((Maybe [VpcSecurityGroupMembership]
  -> f (Maybe [VpcSecurityGroupMembership]))
 -> DBInstance -> f DBInstance)
-> ((Maybe [VpcSecurityGroupMembership]
     -> f (Maybe [VpcSecurityGroupMembership]))
    -> Maybe [VpcSecurityGroupMembership]
    -> f (Maybe [VpcSecurityGroupMembership]))
-> (Maybe [VpcSecurityGroupMembership]
    -> f (Maybe [VpcSecurityGroupMembership]))
-> DBInstance
-> f DBInstance
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 the number of days for which automatic snapshots are retained.
dbInstance_backupRetentionPeriod :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Int)
dbInstance_backupRetentionPeriod :: (Maybe Int -> f (Maybe Int)) -> DBInstance -> f DBInstance
dbInstance_backupRetentionPeriod = (DBInstance -> Maybe Int)
-> (DBInstance -> Maybe Int -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Int
backupRetentionPeriod :: Maybe Int
$sel:backupRetentionPeriod:DBInstance' :: DBInstance -> Maybe Int
backupRetentionPeriod} -> Maybe Int
backupRetentionPeriod) (\s :: DBInstance
s@DBInstance' {} Maybe Int
a -> DBInstance
s {$sel:backupRetentionPeriod:DBInstance' :: Maybe Int
backupRetentionPeriod = Maybe Int
a} :: DBInstance)

-- | Specifies information on the subnet group that is associated with the
-- instance, including the name, description, and subnets in the subnet
-- group.
dbInstance_dbSubnetGroup :: Lens.Lens' DBInstance (Prelude.Maybe DBSubnetGroup)
dbInstance_dbSubnetGroup :: (Maybe DBSubnetGroup -> f (Maybe DBSubnetGroup))
-> DBInstance -> f DBInstance
dbInstance_dbSubnetGroup = (DBInstance -> Maybe DBSubnetGroup)
-> (DBInstance -> Maybe DBSubnetGroup -> DBInstance)
-> Lens
     DBInstance DBInstance (Maybe DBSubnetGroup) (Maybe DBSubnetGroup)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe DBSubnetGroup
dbSubnetGroup :: Maybe DBSubnetGroup
$sel:dbSubnetGroup:DBInstance' :: DBInstance -> Maybe DBSubnetGroup
dbSubnetGroup} -> Maybe DBSubnetGroup
dbSubnetGroup) (\s :: DBInstance
s@DBInstance' {} Maybe DBSubnetGroup
a -> DBInstance
s {$sel:dbSubnetGroup:DBInstance' :: Maybe DBSubnetGroup
dbSubnetGroup = Maybe DBSubnetGroup
a} :: DBInstance)

-- | A list of log types that this instance is configured to export to
-- CloudWatch Logs.
dbInstance_enabledCloudwatchLogsExports :: Lens.Lens' DBInstance (Prelude.Maybe [Prelude.Text])
dbInstance_enabledCloudwatchLogsExports :: (Maybe [Text] -> f (Maybe [Text])) -> DBInstance -> f DBInstance
dbInstance_enabledCloudwatchLogsExports = (DBInstance -> Maybe [Text])
-> (DBInstance -> Maybe [Text] -> DBInstance)
-> Lens DBInstance DBInstance (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe [Text]
enabledCloudwatchLogsExports :: Maybe [Text]
$sel:enabledCloudwatchLogsExports:DBInstance' :: DBInstance -> Maybe [Text]
enabledCloudwatchLogsExports} -> Maybe [Text]
enabledCloudwatchLogsExports) (\s :: DBInstance
s@DBInstance' {} Maybe [Text]
a -> DBInstance
s {$sel:enabledCloudwatchLogsExports:DBInstance' :: Maybe [Text]
enabledCloudwatchLogsExports = Maybe [Text]
a} :: DBInstance) ((Maybe [Text] -> f (Maybe [Text])) -> DBInstance -> f DBInstance)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> DBInstance
-> f DBInstance
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 Region-unique, immutable identifier for the instance. This
-- identifier is found in CloudTrail log entries whenever the KMS key for
-- the instance is accessed.
dbInstance_dbiResourceId :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_dbiResourceId :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_dbiResourceId = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
dbiResourceId :: Maybe Text
$sel:dbiResourceId:DBInstance' :: DBInstance -> Maybe Text
dbiResourceId} -> Maybe Text
dbiResourceId) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:dbiResourceId:DBInstance' :: Maybe Text
dbiResourceId = Maybe Text
a} :: DBInstance)

-- | Specifies the connection endpoint.
dbInstance_endpoint :: Lens.Lens' DBInstance (Prelude.Maybe Endpoint)
dbInstance_endpoint :: (Maybe Endpoint -> f (Maybe Endpoint))
-> DBInstance -> f DBInstance
dbInstance_endpoint = (DBInstance -> Maybe Endpoint)
-> (DBInstance -> Maybe Endpoint -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Endpoint) (Maybe Endpoint)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Endpoint
endpoint :: Maybe Endpoint
$sel:endpoint:DBInstance' :: DBInstance -> Maybe Endpoint
endpoint} -> Maybe Endpoint
endpoint) (\s :: DBInstance
s@DBInstance' {} Maybe Endpoint
a -> DBInstance
s {$sel:endpoint:DBInstance' :: Maybe Endpoint
endpoint = Maybe Endpoint
a} :: DBInstance)

-- | Specifies the current state of this database.
dbInstance_dbInstanceStatus :: Lens.Lens' DBInstance (Prelude.Maybe Prelude.Text)
dbInstance_dbInstanceStatus :: (Maybe Text -> f (Maybe Text)) -> DBInstance -> f DBInstance
dbInstance_dbInstanceStatus = (DBInstance -> Maybe Text)
-> (DBInstance -> Maybe Text -> DBInstance)
-> Lens DBInstance DBInstance (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe Text
dbInstanceStatus :: Maybe Text
$sel:dbInstanceStatus:DBInstance' :: DBInstance -> Maybe Text
dbInstanceStatus} -> Maybe Text
dbInstanceStatus) (\s :: DBInstance
s@DBInstance' {} Maybe Text
a -> DBInstance
s {$sel:dbInstanceStatus:DBInstance' :: Maybe Text
dbInstanceStatus = Maybe Text
a} :: DBInstance)

-- | Specifies that changes to the instance are pending. This element is
-- included only when changes are pending. Specific changes are identified
-- by subelements.
dbInstance_pendingModifiedValues :: Lens.Lens' DBInstance (Prelude.Maybe PendingModifiedValues)
dbInstance_pendingModifiedValues :: (Maybe PendingModifiedValues -> f (Maybe PendingModifiedValues))
-> DBInstance -> f DBInstance
dbInstance_pendingModifiedValues = (DBInstance -> Maybe PendingModifiedValues)
-> (DBInstance -> Maybe PendingModifiedValues -> DBInstance)
-> Lens
     DBInstance
     DBInstance
     (Maybe PendingModifiedValues)
     (Maybe PendingModifiedValues)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe PendingModifiedValues
pendingModifiedValues :: Maybe PendingModifiedValues
$sel:pendingModifiedValues:DBInstance' :: DBInstance -> Maybe PendingModifiedValues
pendingModifiedValues} -> Maybe PendingModifiedValues
pendingModifiedValues) (\s :: DBInstance
s@DBInstance' {} Maybe PendingModifiedValues
a -> DBInstance
s {$sel:pendingModifiedValues:DBInstance' :: Maybe PendingModifiedValues
pendingModifiedValues = Maybe PendingModifiedValues
a} :: DBInstance)

-- | The status of a read replica. If the instance is not a read replica,
-- this is blank.
dbInstance_statusInfos :: Lens.Lens' DBInstance (Prelude.Maybe [DBInstanceStatusInfo])
dbInstance_statusInfos :: (Maybe [DBInstanceStatusInfo] -> f (Maybe [DBInstanceStatusInfo]))
-> DBInstance -> f DBInstance
dbInstance_statusInfos = (DBInstance -> Maybe [DBInstanceStatusInfo])
-> (DBInstance -> Maybe [DBInstanceStatusInfo] -> DBInstance)
-> Lens
     DBInstance
     DBInstance
     (Maybe [DBInstanceStatusInfo])
     (Maybe [DBInstanceStatusInfo])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBInstance' {Maybe [DBInstanceStatusInfo]
statusInfos :: Maybe [DBInstanceStatusInfo]
$sel:statusInfos:DBInstance' :: DBInstance -> Maybe [DBInstanceStatusInfo]
statusInfos} -> Maybe [DBInstanceStatusInfo]
statusInfos) (\s :: DBInstance
s@DBInstance' {} Maybe [DBInstanceStatusInfo]
a -> DBInstance
s {$sel:statusInfos:DBInstance' :: Maybe [DBInstanceStatusInfo]
statusInfos = Maybe [DBInstanceStatusInfo]
a} :: DBInstance) ((Maybe [DBInstanceStatusInfo] -> f (Maybe [DBInstanceStatusInfo]))
 -> DBInstance -> f DBInstance)
-> ((Maybe [DBInstanceStatusInfo]
     -> f (Maybe [DBInstanceStatusInfo]))
    -> Maybe [DBInstanceStatusInfo]
    -> f (Maybe [DBInstanceStatusInfo]))
-> (Maybe [DBInstanceStatusInfo]
    -> f (Maybe [DBInstanceStatusInfo]))
-> DBInstance
-> f DBInstance
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [DBInstanceStatusInfo]
  [DBInstanceStatusInfo]
  [DBInstanceStatusInfo]
  [DBInstanceStatusInfo]
-> Iso
     (Maybe [DBInstanceStatusInfo])
     (Maybe [DBInstanceStatusInfo])
     (Maybe [DBInstanceStatusInfo])
     (Maybe [DBInstanceStatusInfo])
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
  [DBInstanceStatusInfo]
  [DBInstanceStatusInfo]
  [DBInstanceStatusInfo]
  [DBInstanceStatusInfo]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.FromXML DBInstance where
  parseXML :: [Node] -> Either String DBInstance
parseXML [Node]
x =
    Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [VpcSecurityGroupMembership]
-> Maybe Int
-> Maybe DBSubnetGroup
-> Maybe [Text]
-> Maybe Text
-> Maybe Endpoint
-> Maybe Text
-> Maybe PendingModifiedValues
-> Maybe [DBInstanceStatusInfo]
-> DBInstance
DBInstance'
      (Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Bool
 -> Maybe Text
 -> Maybe ISO8601
 -> Maybe Text
 -> Maybe ISO8601
 -> Maybe Text
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [VpcSecurityGroupMembership]
 -> Maybe Int
 -> Maybe DBSubnetGroup
 -> Maybe [Text]
 -> Maybe Text
 -> Maybe Endpoint
 -> Maybe Text
 -> Maybe PendingModifiedValues
 -> Maybe [DBInstanceStatusInfo]
 -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Bool
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"EngineVersion")
      Either
  String
  (Maybe Bool
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Text
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Bool)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"StorageEncrypted")
      Either
  String
  (Maybe Text
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DBClusterIdentifier")
      Either
  String
  (Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Bool)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PubliclyAccessible")
      Either
  String
  (Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Bool)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"AutoMinorVersionUpgrade")
      Either
  String
  (Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe ISO8601
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DBInstanceArn")
      Either
  String
  (Maybe ISO8601
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe ISO8601)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"InstanceCreateTime")
      Either
  String
  (Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe ISO8601
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Engine")
      Either
  String
  (Maybe ISO8601
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe ISO8601)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"LatestRestorableTime")
      Either
  String
  (Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DBInstanceClass")
      Either
  String
  (Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Int)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Int)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PromotionTier")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PreferredMaintenanceWindow")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"CACertificateIdentifier")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DBInstanceIdentifier")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"KmsKeyId")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PreferredBackupWindow")
      Either
  String
  (Maybe Text
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"AvailabilityZone")
      Either
  String
  (Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe [VpcSecurityGroupMembership])
-> Either
     String
     (Maybe Int
      -> Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"VpcSecurityGroups"
                      Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                      Either String [Node]
-> ([Node] -> Either String (Maybe [VpcSecurityGroupMembership]))
-> Either String (Maybe [VpcSecurityGroupMembership])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [VpcSecurityGroupMembership])
-> [Node] -> Either String (Maybe [VpcSecurityGroupMembership])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may
                        (Text -> [Node] -> Either String [VpcSecurityGroupMembership]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"VpcSecurityGroupMembership")
                  )
      Either
  String
  (Maybe Int
   -> Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Int)
-> Either
     String
     (Maybe DBSubnetGroup
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Int)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"BackupRetentionPeriod")
      Either
  String
  (Maybe DBSubnetGroup
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe DBSubnetGroup)
-> Either
     String
     (Maybe [Text]
      -> Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe DBSubnetGroup)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DBSubnetGroup")
      Either
  String
  (Maybe [Text]
   -> Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe [Text])
-> Either
     String
     (Maybe Text
      -> Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"EnabledCloudwatchLogsExports"
                      Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                      Either String [Node]
-> ([Node] -> Either String (Maybe [Text]))
-> Either String (Maybe [Text])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [Text])
-> [Node] -> Either String (Maybe [Text])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [Text]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )
      Either
  String
  (Maybe Text
   -> Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Endpoint
      -> Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DbiResourceId")
      Either
  String
  (Maybe Endpoint
   -> Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Endpoint)
-> Either
     String
     (Maybe Text
      -> Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo]
      -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Endpoint)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Endpoint")
      Either
  String
  (Maybe Text
   -> Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo]
   -> DBInstance)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe PendingModifiedValues
      -> Maybe [DBInstanceStatusInfo] -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DBInstanceStatus")
      Either
  String
  (Maybe PendingModifiedValues
   -> Maybe [DBInstanceStatusInfo] -> DBInstance)
-> Either String (Maybe PendingModifiedValues)
-> Either String (Maybe [DBInstanceStatusInfo] -> DBInstance)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe PendingModifiedValues)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PendingModifiedValues")
      Either String (Maybe [DBInstanceStatusInfo] -> DBInstance)
-> Either String (Maybe [DBInstanceStatusInfo])
-> Either String DBInstance
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"StatusInfos" Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                      Either String [Node]
-> ([Node] -> Either String (Maybe [DBInstanceStatusInfo]))
-> Either String (Maybe [DBInstanceStatusInfo])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [DBInstanceStatusInfo])
-> [Node] -> Either String (Maybe [DBInstanceStatusInfo])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [DBInstanceStatusInfo]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"DBInstanceStatusInfo")
                  )

instance Prelude.Hashable DBInstance

instance Prelude.NFData DBInstance