{-# 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.Neptune.Types.DBCluster
-- 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.Neptune.Types.DBCluster where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.Neptune.Types.DBClusterMember
import Amazonka.Neptune.Types.DBClusterOptionGroupStatus
import Amazonka.Neptune.Types.DBClusterRole
import Amazonka.Neptune.Types.VpcSecurityGroupMembership
import qualified Amazonka.Prelude as Prelude

-- | Contains the details of an Amazon Neptune DB cluster.
--
-- This data type is used as a response element in the DescribeDBClusters
-- action.
--
-- /See:/ 'newDBCluster' smart constructor.
data DBCluster = DBCluster'
  { -- | Indicates the database engine version.
    DBCluster -> Maybe Text
engineVersion :: Prelude.Maybe Prelude.Text,
    -- | Specifies the current state of this DB cluster.
    DBCluster -> Maybe Text
status :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether or not the DB cluster has deletion protection enabled.
    -- The database can\'t be deleted when deletion protection is enabled.
    DBCluster -> Maybe Bool
deletionProtection :: Prelude.Maybe Prelude.Bool,
    -- | Time at which the DB cluster will be automatically restarted.
    DBCluster -> Maybe ISO8601
automaticRestartTime :: Prelude.Maybe Core.ISO8601,
    -- | Specifies whether the DB cluster is encrypted.
    DBCluster -> Maybe Bool
storageEncrypted :: Prelude.Maybe Prelude.Bool,
    -- | Contains a user-supplied DB cluster identifier. This identifier is the
    -- unique key that identifies a DB cluster.
    DBCluster -> Maybe Text
dbClusterIdentifier :: Prelude.Maybe Prelude.Text,
    -- | Provides the list of instances that make up the DB cluster.
    DBCluster -> Maybe [DBClusterMember]
dbClusterMembers :: Prelude.Maybe [DBClusterMember],
    -- | Contains one or more identifiers of the Read Replicas associated with
    -- this DB cluster.
    DBCluster -> Maybe [Text]
readReplicaIdentifiers :: Prelude.Maybe [Prelude.Text],
    -- | Not supported by Neptune.
    DBCluster -> Maybe Text
replicationSourceIdentifier :: Prelude.Maybe Prelude.Text,
    -- | Specifies the ID that Amazon Route 53 assigns when you create a hosted
    -- zone.
    DBCluster -> Maybe Text
hostedZoneId :: Prelude.Maybe Prelude.Text,
    -- | Specifies the name of the DB cluster parameter group for the DB cluster.
    DBCluster -> Maybe Text
dbClusterParameterGroup :: Prelude.Maybe Prelude.Text,
    -- | Not supported by Neptune.
    DBCluster -> Maybe Text
masterUsername :: Prelude.Maybe Prelude.Text,
    -- | True if mapping of Amazon Identity and Access Management (IAM) accounts
    -- to database accounts is enabled, and otherwise false.
    DBCluster -> Maybe Bool
iAMDatabaseAuthenticationEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The Amazon Region-unique, immutable identifier for the DB cluster. This
    -- identifier is found in Amazon CloudTrail log entries whenever the Amazon
    -- KMS key for the DB cluster is accessed.
    DBCluster -> Maybe Text
dbClusterResourceId :: Prelude.Maybe Prelude.Text,
    -- | Specifies the earliest time to which a database can be restored with
    -- point-in-time restore.
    DBCluster -> Maybe ISO8601
earliestRestorableTime :: Prelude.Maybe Core.ISO8601,
    -- | Provides the name of the database engine to be used for this DB cluster.
    DBCluster -> Maybe Text
engine :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) for the DB cluster.
    DBCluster -> Maybe Text
dbClusterArn :: Prelude.Maybe Prelude.Text,
    -- | Identifies the clone group to which the DB cluster is associated.
    DBCluster -> Maybe Text
cloneGroupId :: Prelude.Maybe Prelude.Text,
    -- | Specifies the latest time to which a database can be restored with
    -- point-in-time restore.
    DBCluster -> Maybe ISO8601
latestRestorableTime :: Prelude.Maybe Core.ISO8601,
    -- | If set to @true@, the DB cluster can be cloned across accounts.
    DBCluster -> Maybe Bool
crossAccountClone :: Prelude.Maybe Prelude.Bool,
    -- | Specifies the weekly time range during which system maintenance can
    -- occur, in Universal Coordinated Time (UTC).
    DBCluster -> Maybe Text
preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
    -- | Provides the list of EC2 Availability Zones that instances in the DB
    -- cluster can be created in.
    DBCluster -> Maybe [Text]
availabilityZones :: Prelude.Maybe [Prelude.Text],
    -- | Not supported by Neptune.
    DBCluster -> Maybe Text
characterSetName :: Prelude.Maybe Prelude.Text,
    -- | If @StorageEncrypted@ is true, the Amazon KMS key identifier for the
    -- encrypted DB cluster.
    DBCluster -> 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@.
    DBCluster -> Maybe Text
preferredBackupWindow :: Prelude.Maybe Prelude.Text,
    -- | Provides a list of the Amazon Identity and Access Management (IAM) roles
    -- that are associated with the DB cluster. IAM roles that are associated
    -- with a DB cluster grant permission for the DB cluster to access other
    -- Amazon services on your behalf.
    DBCluster -> Maybe [DBClusterRole]
associatedRoles :: Prelude.Maybe [DBClusterRole],
    -- | Provides a list of VPC security groups that the DB cluster belongs to.
    DBCluster -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups :: Prelude.Maybe [VpcSecurityGroupMembership],
    -- | Specifies the number of days for which automatic DB snapshots are
    -- retained.
    DBCluster -> Maybe Int
backupRetentionPeriod :: Prelude.Maybe Prelude.Int,
    -- | Specifies information on the subnet group associated with the DB
    -- cluster, including the name, description, and subnets in the subnet
    -- group.
    DBCluster -> Maybe Text
dbSubnetGroup :: Prelude.Maybe Prelude.Text,
    -- | Contains the name of the initial database of this DB cluster that was
    -- provided at create time, if one was specified when the DB cluster was
    -- created. This same name is returned for the life of the DB cluster.
    DBCluster -> Maybe Text
databaseName :: Prelude.Maybe Prelude.Text,
    -- | Specifies whether the DB cluster has instances in multiple Availability
    -- Zones.
    DBCluster -> Maybe Bool
multiAZ :: Prelude.Maybe Prelude.Bool,
    -- | A list of log types that this DB cluster is configured to export to
    -- CloudWatch Logs.
    DBCluster -> Maybe [Text]
enabledCloudwatchLogsExports :: Prelude.Maybe [Prelude.Text],
    -- | @AllocatedStorage@ always returns 1, because Neptune DB cluster storage
    -- size is not fixed, but instead automatically adjusts as needed.
    DBCluster -> Maybe Int
allocatedStorage :: Prelude.Maybe Prelude.Int,
    -- | /If set to @true@, tags are copied to any snapshot of the DB cluster
    -- that is created./
    DBCluster -> Maybe Bool
copyTagsToSnapshot :: Prelude.Maybe Prelude.Bool,
    -- | Specifies the time when the DB cluster was created, in Universal
    -- Coordinated Time (UTC).
    DBCluster -> Maybe ISO8601
clusterCreateTime :: Prelude.Maybe Core.ISO8601,
    -- | Specifies the connection endpoint for the primary instance of the DB
    -- cluster.
    DBCluster -> Maybe Text
endpoint :: Prelude.Maybe Prelude.Text,
    -- | Specifies the progress of the operation as a percentage.
    DBCluster -> Maybe Text
percentProgress :: Prelude.Maybe Prelude.Text,
    -- | The reader endpoint for the DB cluster. The reader endpoint for a DB
    -- cluster load-balances connections across the Read Replicas that are
    -- available in a DB cluster. As clients request new connections to the
    -- reader endpoint, Neptune distributes the connection requests among the
    -- Read Replicas in the DB cluster. This functionality can help balance
    -- your read workload across multiple Read Replicas in your DB cluster.
    --
    -- If a failover occurs, and the Read Replica that you are connected to is
    -- promoted to be the primary instance, your connection is dropped. To
    -- continue sending your read workload to other Read Replicas in the
    -- cluster, you can then reconnect to the reader endpoint.
    DBCluster -> Maybe Text
readerEndpoint :: Prelude.Maybe Prelude.Text,
    -- | Specifies the port that the database engine is listening on.
    DBCluster -> Maybe Int
port :: Prelude.Maybe Prelude.Int,
    -- | Not supported by Neptune.
    DBCluster -> Maybe [DBClusterOptionGroupStatus]
dbClusterOptionGroupMemberships :: Prelude.Maybe [DBClusterOptionGroupStatus]
  }
  deriving (DBCluster -> DBCluster -> Bool
(DBCluster -> DBCluster -> Bool)
-> (DBCluster -> DBCluster -> Bool) -> Eq DBCluster
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DBCluster -> DBCluster -> Bool
$c/= :: DBCluster -> DBCluster -> Bool
== :: DBCluster -> DBCluster -> Bool
$c== :: DBCluster -> DBCluster -> Bool
Prelude.Eq, ReadPrec [DBCluster]
ReadPrec DBCluster
Int -> ReadS DBCluster
ReadS [DBCluster]
(Int -> ReadS DBCluster)
-> ReadS [DBCluster]
-> ReadPrec DBCluster
-> ReadPrec [DBCluster]
-> Read DBCluster
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DBCluster]
$creadListPrec :: ReadPrec [DBCluster]
readPrec :: ReadPrec DBCluster
$creadPrec :: ReadPrec DBCluster
readList :: ReadS [DBCluster]
$creadList :: ReadS [DBCluster]
readsPrec :: Int -> ReadS DBCluster
$creadsPrec :: Int -> ReadS DBCluster
Prelude.Read, Int -> DBCluster -> ShowS
[DBCluster] -> ShowS
DBCluster -> String
(Int -> DBCluster -> ShowS)
-> (DBCluster -> String)
-> ([DBCluster] -> ShowS)
-> Show DBCluster
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DBCluster] -> ShowS
$cshowList :: [DBCluster] -> ShowS
show :: DBCluster -> String
$cshow :: DBCluster -> String
showsPrec :: Int -> DBCluster -> ShowS
$cshowsPrec :: Int -> DBCluster -> ShowS
Prelude.Show, (forall x. DBCluster -> Rep DBCluster x)
-> (forall x. Rep DBCluster x -> DBCluster) -> Generic DBCluster
forall x. Rep DBCluster x -> DBCluster
forall x. DBCluster -> Rep DBCluster x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DBCluster x -> DBCluster
$cfrom :: forall x. DBCluster -> Rep DBCluster x
Prelude.Generic)

-- |
-- Create a value of 'DBCluster' 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', 'dbCluster_engineVersion' - Indicates the database engine version.
--
-- 'status', 'dbCluster_status' - Specifies the current state of this DB cluster.
--
-- 'deletionProtection', 'dbCluster_deletionProtection' - Indicates whether or not the DB cluster has deletion protection enabled.
-- The database can\'t be deleted when deletion protection is enabled.
--
-- 'automaticRestartTime', 'dbCluster_automaticRestartTime' - Time at which the DB cluster will be automatically restarted.
--
-- 'storageEncrypted', 'dbCluster_storageEncrypted' - Specifies whether the DB cluster is encrypted.
--
-- 'dbClusterIdentifier', 'dbCluster_dbClusterIdentifier' - Contains a user-supplied DB cluster identifier. This identifier is the
-- unique key that identifies a DB cluster.
--
-- 'dbClusterMembers', 'dbCluster_dbClusterMembers' - Provides the list of instances that make up the DB cluster.
--
-- 'readReplicaIdentifiers', 'dbCluster_readReplicaIdentifiers' - Contains one or more identifiers of the Read Replicas associated with
-- this DB cluster.
--
-- 'replicationSourceIdentifier', 'dbCluster_replicationSourceIdentifier' - Not supported by Neptune.
--
-- 'hostedZoneId', 'dbCluster_hostedZoneId' - Specifies the ID that Amazon Route 53 assigns when you create a hosted
-- zone.
--
-- 'dbClusterParameterGroup', 'dbCluster_dbClusterParameterGroup' - Specifies the name of the DB cluster parameter group for the DB cluster.
--
-- 'masterUsername', 'dbCluster_masterUsername' - Not supported by Neptune.
--
-- 'iAMDatabaseAuthenticationEnabled', 'dbCluster_iAMDatabaseAuthenticationEnabled' - True if mapping of Amazon Identity and Access Management (IAM) accounts
-- to database accounts is enabled, and otherwise false.
--
-- 'dbClusterResourceId', 'dbCluster_dbClusterResourceId' - The Amazon Region-unique, immutable identifier for the DB cluster. This
-- identifier is found in Amazon CloudTrail log entries whenever the Amazon
-- KMS key for the DB cluster is accessed.
--
-- 'earliestRestorableTime', 'dbCluster_earliestRestorableTime' - Specifies the earliest time to which a database can be restored with
-- point-in-time restore.
--
-- 'engine', 'dbCluster_engine' - Provides the name of the database engine to be used for this DB cluster.
--
-- 'dbClusterArn', 'dbCluster_dbClusterArn' - The Amazon Resource Name (ARN) for the DB cluster.
--
-- 'cloneGroupId', 'dbCluster_cloneGroupId' - Identifies the clone group to which the DB cluster is associated.
--
-- 'latestRestorableTime', 'dbCluster_latestRestorableTime' - Specifies the latest time to which a database can be restored with
-- point-in-time restore.
--
-- 'crossAccountClone', 'dbCluster_crossAccountClone' - If set to @true@, the DB cluster can be cloned across accounts.
--
-- 'preferredMaintenanceWindow', 'dbCluster_preferredMaintenanceWindow' - Specifies the weekly time range during which system maintenance can
-- occur, in Universal Coordinated Time (UTC).
--
-- 'availabilityZones', 'dbCluster_availabilityZones' - Provides the list of EC2 Availability Zones that instances in the DB
-- cluster can be created in.
--
-- 'characterSetName', 'dbCluster_characterSetName' - Not supported by Neptune.
--
-- 'kmsKeyId', 'dbCluster_kmsKeyId' - If @StorageEncrypted@ is true, the Amazon KMS key identifier for the
-- encrypted DB cluster.
--
-- 'preferredBackupWindow', 'dbCluster_preferredBackupWindow' - Specifies the daily time range during which automated backups are
-- created if automated backups are enabled, as determined by the
-- @BackupRetentionPeriod@.
--
-- 'associatedRoles', 'dbCluster_associatedRoles' - Provides a list of the Amazon Identity and Access Management (IAM) roles
-- that are associated with the DB cluster. IAM roles that are associated
-- with a DB cluster grant permission for the DB cluster to access other
-- Amazon services on your behalf.
--
-- 'vpcSecurityGroups', 'dbCluster_vpcSecurityGroups' - Provides a list of VPC security groups that the DB cluster belongs to.
--
-- 'backupRetentionPeriod', 'dbCluster_backupRetentionPeriod' - Specifies the number of days for which automatic DB snapshots are
-- retained.
--
-- 'dbSubnetGroup', 'dbCluster_dbSubnetGroup' - Specifies information on the subnet group associated with the DB
-- cluster, including the name, description, and subnets in the subnet
-- group.
--
-- 'databaseName', 'dbCluster_databaseName' - Contains the name of the initial database of this DB cluster that was
-- provided at create time, if one was specified when the DB cluster was
-- created. This same name is returned for the life of the DB cluster.
--
-- 'multiAZ', 'dbCluster_multiAZ' - Specifies whether the DB cluster has instances in multiple Availability
-- Zones.
--
-- 'enabledCloudwatchLogsExports', 'dbCluster_enabledCloudwatchLogsExports' - A list of log types that this DB cluster is configured to export to
-- CloudWatch Logs.
--
-- 'allocatedStorage', 'dbCluster_allocatedStorage' - @AllocatedStorage@ always returns 1, because Neptune DB cluster storage
-- size is not fixed, but instead automatically adjusts as needed.
--
-- 'copyTagsToSnapshot', 'dbCluster_copyTagsToSnapshot' - /If set to @true@, tags are copied to any snapshot of the DB cluster
-- that is created./
--
-- 'clusterCreateTime', 'dbCluster_clusterCreateTime' - Specifies the time when the DB cluster was created, in Universal
-- Coordinated Time (UTC).
--
-- 'endpoint', 'dbCluster_endpoint' - Specifies the connection endpoint for the primary instance of the DB
-- cluster.
--
-- 'percentProgress', 'dbCluster_percentProgress' - Specifies the progress of the operation as a percentage.
--
-- 'readerEndpoint', 'dbCluster_readerEndpoint' - The reader endpoint for the DB cluster. The reader endpoint for a DB
-- cluster load-balances connections across the Read Replicas that are
-- available in a DB cluster. As clients request new connections to the
-- reader endpoint, Neptune distributes the connection requests among the
-- Read Replicas in the DB cluster. This functionality can help balance
-- your read workload across multiple Read Replicas in your DB cluster.
--
-- If a failover occurs, and the Read Replica that you are connected to is
-- promoted to be the primary instance, your connection is dropped. To
-- continue sending your read workload to other Read Replicas in the
-- cluster, you can then reconnect to the reader endpoint.
--
-- 'port', 'dbCluster_port' - Specifies the port that the database engine is listening on.
--
-- 'dbClusterOptionGroupMemberships', 'dbCluster_dbClusterOptionGroupMemberships' - Not supported by Neptune.
newDBCluster ::
  DBCluster
newDBCluster :: DBCluster
newDBCluster =
  DBCluster' :: Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe ISO8601
-> Maybe Bool
-> Maybe Text
-> Maybe [DBClusterMember]
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ISO8601
-> Maybe Bool
-> Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [DBClusterRole]
-> Maybe [VpcSecurityGroupMembership]
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe [Text]
-> Maybe Int
-> Maybe Bool
-> Maybe ISO8601
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe [DBClusterOptionGroupStatus]
-> DBCluster
DBCluster'
    { $sel:engineVersion:DBCluster' :: Maybe Text
engineVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:status:DBCluster' :: Maybe Text
status = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:deletionProtection:DBCluster' :: Maybe Bool
deletionProtection = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:automaticRestartTime:DBCluster' :: Maybe ISO8601
automaticRestartTime = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:storageEncrypted:DBCluster' :: Maybe Bool
storageEncrypted = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:dbClusterIdentifier:DBCluster' :: Maybe Text
dbClusterIdentifier = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:dbClusterMembers:DBCluster' :: Maybe [DBClusterMember]
dbClusterMembers = Maybe [DBClusterMember]
forall a. Maybe a
Prelude.Nothing,
      $sel:readReplicaIdentifiers:DBCluster' :: Maybe [Text]
readReplicaIdentifiers = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:replicationSourceIdentifier:DBCluster' :: Maybe Text
replicationSourceIdentifier = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:hostedZoneId:DBCluster' :: Maybe Text
hostedZoneId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:dbClusterParameterGroup:DBCluster' :: Maybe Text
dbClusterParameterGroup = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:masterUsername:DBCluster' :: Maybe Text
masterUsername = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:iAMDatabaseAuthenticationEnabled:DBCluster' :: Maybe Bool
iAMDatabaseAuthenticationEnabled = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:dbClusterResourceId:DBCluster' :: Maybe Text
dbClusterResourceId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:earliestRestorableTime:DBCluster' :: Maybe ISO8601
earliestRestorableTime = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:engine:DBCluster' :: Maybe Text
engine = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:dbClusterArn:DBCluster' :: Maybe Text
dbClusterArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:cloneGroupId:DBCluster' :: Maybe Text
cloneGroupId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:latestRestorableTime:DBCluster' :: Maybe ISO8601
latestRestorableTime = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:crossAccountClone:DBCluster' :: Maybe Bool
crossAccountClone = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:preferredMaintenanceWindow:DBCluster' :: Maybe Text
preferredMaintenanceWindow = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZones:DBCluster' :: Maybe [Text]
availabilityZones = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:characterSetName:DBCluster' :: Maybe Text
characterSetName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyId:DBCluster' :: Maybe Text
kmsKeyId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:preferredBackupWindow:DBCluster' :: Maybe Text
preferredBackupWindow = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:associatedRoles:DBCluster' :: Maybe [DBClusterRole]
associatedRoles = Maybe [DBClusterRole]
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcSecurityGroups:DBCluster' :: Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups = Maybe [VpcSecurityGroupMembership]
forall a. Maybe a
Prelude.Nothing,
      $sel:backupRetentionPeriod:DBCluster' :: Maybe Int
backupRetentionPeriod = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:dbSubnetGroup:DBCluster' :: Maybe Text
dbSubnetGroup = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:databaseName:DBCluster' :: Maybe Text
databaseName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:multiAZ:DBCluster' :: Maybe Bool
multiAZ = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:enabledCloudwatchLogsExports:DBCluster' :: Maybe [Text]
enabledCloudwatchLogsExports = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:allocatedStorage:DBCluster' :: Maybe Int
allocatedStorage = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:copyTagsToSnapshot:DBCluster' :: Maybe Bool
copyTagsToSnapshot = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterCreateTime:DBCluster' :: Maybe ISO8601
clusterCreateTime = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:endpoint:DBCluster' :: Maybe Text
endpoint = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:percentProgress:DBCluster' :: Maybe Text
percentProgress = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:readerEndpoint:DBCluster' :: Maybe Text
readerEndpoint = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:port:DBCluster' :: Maybe Int
port = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:dbClusterOptionGroupMemberships:DBCluster' :: Maybe [DBClusterOptionGroupStatus]
dbClusterOptionGroupMemberships = Maybe [DBClusterOptionGroupStatus]
forall a. Maybe a
Prelude.Nothing
    }

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

-- | Specifies the current state of this DB cluster.
dbCluster_status :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_status :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_status = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
status :: Maybe Text
$sel:status:DBCluster' :: DBCluster -> Maybe Text
status} -> Maybe Text
status) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:status:DBCluster' :: Maybe Text
status = Maybe Text
a} :: DBCluster)

-- | Indicates whether or not the DB cluster has deletion protection enabled.
-- The database can\'t be deleted when deletion protection is enabled.
dbCluster_deletionProtection :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Bool)
dbCluster_deletionProtection :: (Maybe Bool -> f (Maybe Bool)) -> DBCluster -> f DBCluster
dbCluster_deletionProtection = (DBCluster -> Maybe Bool)
-> (DBCluster -> Maybe Bool -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Bool
deletionProtection :: Maybe Bool
$sel:deletionProtection:DBCluster' :: DBCluster -> Maybe Bool
deletionProtection} -> Maybe Bool
deletionProtection) (\s :: DBCluster
s@DBCluster' {} Maybe Bool
a -> DBCluster
s {$sel:deletionProtection:DBCluster' :: Maybe Bool
deletionProtection = Maybe Bool
a} :: DBCluster)

-- | Time at which the DB cluster will be automatically restarted.
dbCluster_automaticRestartTime :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.UTCTime)
dbCluster_automaticRestartTime :: (Maybe UTCTime -> f (Maybe UTCTime)) -> DBCluster -> f DBCluster
dbCluster_automaticRestartTime = (DBCluster -> Maybe ISO8601)
-> (DBCluster -> Maybe ISO8601 -> DBCluster)
-> Lens DBCluster DBCluster (Maybe ISO8601) (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe ISO8601
automaticRestartTime :: Maybe ISO8601
$sel:automaticRestartTime:DBCluster' :: DBCluster -> Maybe ISO8601
automaticRestartTime} -> Maybe ISO8601
automaticRestartTime) (\s :: DBCluster
s@DBCluster' {} Maybe ISO8601
a -> DBCluster
s {$sel:automaticRestartTime:DBCluster' :: Maybe ISO8601
automaticRestartTime = Maybe ISO8601
a} :: DBCluster) ((Maybe ISO8601 -> f (Maybe ISO8601)) -> DBCluster -> f DBCluster)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DBCluster
-> f DBCluster
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

-- | Specifies whether the DB cluster is encrypted.
dbCluster_storageEncrypted :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Bool)
dbCluster_storageEncrypted :: (Maybe Bool -> f (Maybe Bool)) -> DBCluster -> f DBCluster
dbCluster_storageEncrypted = (DBCluster -> Maybe Bool)
-> (DBCluster -> Maybe Bool -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Bool
storageEncrypted :: Maybe Bool
$sel:storageEncrypted:DBCluster' :: DBCluster -> Maybe Bool
storageEncrypted} -> Maybe Bool
storageEncrypted) (\s :: DBCluster
s@DBCluster' {} Maybe Bool
a -> DBCluster
s {$sel:storageEncrypted:DBCluster' :: Maybe Bool
storageEncrypted = Maybe Bool
a} :: DBCluster)

-- | Contains a user-supplied DB cluster identifier. This identifier is the
-- unique key that identifies a DB cluster.
dbCluster_dbClusterIdentifier :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_dbClusterIdentifier :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_dbClusterIdentifier = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
dbClusterIdentifier :: Maybe Text
$sel:dbClusterIdentifier:DBCluster' :: DBCluster -> Maybe Text
dbClusterIdentifier} -> Maybe Text
dbClusterIdentifier) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:dbClusterIdentifier:DBCluster' :: Maybe Text
dbClusterIdentifier = Maybe Text
a} :: DBCluster)

-- | Provides the list of instances that make up the DB cluster.
dbCluster_dbClusterMembers :: Lens.Lens' DBCluster (Prelude.Maybe [DBClusterMember])
dbCluster_dbClusterMembers :: (Maybe [DBClusterMember] -> f (Maybe [DBClusterMember]))
-> DBCluster -> f DBCluster
dbCluster_dbClusterMembers = (DBCluster -> Maybe [DBClusterMember])
-> (DBCluster -> Maybe [DBClusterMember] -> DBCluster)
-> Lens
     DBCluster
     DBCluster
     (Maybe [DBClusterMember])
     (Maybe [DBClusterMember])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe [DBClusterMember]
dbClusterMembers :: Maybe [DBClusterMember]
$sel:dbClusterMembers:DBCluster' :: DBCluster -> Maybe [DBClusterMember]
dbClusterMembers} -> Maybe [DBClusterMember]
dbClusterMembers) (\s :: DBCluster
s@DBCluster' {} Maybe [DBClusterMember]
a -> DBCluster
s {$sel:dbClusterMembers:DBCluster' :: Maybe [DBClusterMember]
dbClusterMembers = Maybe [DBClusterMember]
a} :: DBCluster) ((Maybe [DBClusterMember] -> f (Maybe [DBClusterMember]))
 -> DBCluster -> f DBCluster)
-> ((Maybe [DBClusterMember] -> f (Maybe [DBClusterMember]))
    -> Maybe [DBClusterMember] -> f (Maybe [DBClusterMember]))
-> (Maybe [DBClusterMember] -> f (Maybe [DBClusterMember]))
-> DBCluster
-> f DBCluster
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [DBClusterMember]
  [DBClusterMember]
  [DBClusterMember]
  [DBClusterMember]
-> Iso
     (Maybe [DBClusterMember])
     (Maybe [DBClusterMember])
     (Maybe [DBClusterMember])
     (Maybe [DBClusterMember])
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
  [DBClusterMember]
  [DBClusterMember]
  [DBClusterMember]
  [DBClusterMember]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Contains one or more identifiers of the Read Replicas associated with
-- this DB cluster.
dbCluster_readReplicaIdentifiers :: Lens.Lens' DBCluster (Prelude.Maybe [Prelude.Text])
dbCluster_readReplicaIdentifiers :: (Maybe [Text] -> f (Maybe [Text])) -> DBCluster -> f DBCluster
dbCluster_readReplicaIdentifiers = (DBCluster -> Maybe [Text])
-> (DBCluster -> Maybe [Text] -> DBCluster)
-> Lens DBCluster DBCluster (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe [Text]
readReplicaIdentifiers :: Maybe [Text]
$sel:readReplicaIdentifiers:DBCluster' :: DBCluster -> Maybe [Text]
readReplicaIdentifiers} -> Maybe [Text]
readReplicaIdentifiers) (\s :: DBCluster
s@DBCluster' {} Maybe [Text]
a -> DBCluster
s {$sel:readReplicaIdentifiers:DBCluster' :: Maybe [Text]
readReplicaIdentifiers = Maybe [Text]
a} :: DBCluster) ((Maybe [Text] -> f (Maybe [Text])) -> DBCluster -> f DBCluster)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> DBCluster
-> f DBCluster
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

-- | Not supported by Neptune.
dbCluster_replicationSourceIdentifier :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_replicationSourceIdentifier :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_replicationSourceIdentifier = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
replicationSourceIdentifier :: Maybe Text
$sel:replicationSourceIdentifier:DBCluster' :: DBCluster -> Maybe Text
replicationSourceIdentifier} -> Maybe Text
replicationSourceIdentifier) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:replicationSourceIdentifier:DBCluster' :: Maybe Text
replicationSourceIdentifier = Maybe Text
a} :: DBCluster)

-- | Specifies the ID that Amazon Route 53 assigns when you create a hosted
-- zone.
dbCluster_hostedZoneId :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_hostedZoneId :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_hostedZoneId = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
hostedZoneId :: Maybe Text
$sel:hostedZoneId:DBCluster' :: DBCluster -> Maybe Text
hostedZoneId} -> Maybe Text
hostedZoneId) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:hostedZoneId:DBCluster' :: Maybe Text
hostedZoneId = Maybe Text
a} :: DBCluster)

-- | Specifies the name of the DB cluster parameter group for the DB cluster.
dbCluster_dbClusterParameterGroup :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_dbClusterParameterGroup :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_dbClusterParameterGroup = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
dbClusterParameterGroup :: Maybe Text
$sel:dbClusterParameterGroup:DBCluster' :: DBCluster -> Maybe Text
dbClusterParameterGroup} -> Maybe Text
dbClusterParameterGroup) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:dbClusterParameterGroup:DBCluster' :: Maybe Text
dbClusterParameterGroup = Maybe Text
a} :: DBCluster)

-- | Not supported by Neptune.
dbCluster_masterUsername :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_masterUsername :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_masterUsername = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
masterUsername :: Maybe Text
$sel:masterUsername:DBCluster' :: DBCluster -> Maybe Text
masterUsername} -> Maybe Text
masterUsername) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:masterUsername:DBCluster' :: Maybe Text
masterUsername = Maybe Text
a} :: DBCluster)

-- | True if mapping of Amazon Identity and Access Management (IAM) accounts
-- to database accounts is enabled, and otherwise false.
dbCluster_iAMDatabaseAuthenticationEnabled :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Bool)
dbCluster_iAMDatabaseAuthenticationEnabled :: (Maybe Bool -> f (Maybe Bool)) -> DBCluster -> f DBCluster
dbCluster_iAMDatabaseAuthenticationEnabled = (DBCluster -> Maybe Bool)
-> (DBCluster -> Maybe Bool -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Bool
iAMDatabaseAuthenticationEnabled :: Maybe Bool
$sel:iAMDatabaseAuthenticationEnabled:DBCluster' :: DBCluster -> Maybe Bool
iAMDatabaseAuthenticationEnabled} -> Maybe Bool
iAMDatabaseAuthenticationEnabled) (\s :: DBCluster
s@DBCluster' {} Maybe Bool
a -> DBCluster
s {$sel:iAMDatabaseAuthenticationEnabled:DBCluster' :: Maybe Bool
iAMDatabaseAuthenticationEnabled = Maybe Bool
a} :: DBCluster)

-- | The Amazon Region-unique, immutable identifier for the DB cluster. This
-- identifier is found in Amazon CloudTrail log entries whenever the Amazon
-- KMS key for the DB cluster is accessed.
dbCluster_dbClusterResourceId :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_dbClusterResourceId :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_dbClusterResourceId = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
dbClusterResourceId :: Maybe Text
$sel:dbClusterResourceId:DBCluster' :: DBCluster -> Maybe Text
dbClusterResourceId} -> Maybe Text
dbClusterResourceId) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:dbClusterResourceId:DBCluster' :: Maybe Text
dbClusterResourceId = Maybe Text
a} :: DBCluster)

-- | Specifies the earliest time to which a database can be restored with
-- point-in-time restore.
dbCluster_earliestRestorableTime :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.UTCTime)
dbCluster_earliestRestorableTime :: (Maybe UTCTime -> f (Maybe UTCTime)) -> DBCluster -> f DBCluster
dbCluster_earliestRestorableTime = (DBCluster -> Maybe ISO8601)
-> (DBCluster -> Maybe ISO8601 -> DBCluster)
-> Lens DBCluster DBCluster (Maybe ISO8601) (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe ISO8601
earliestRestorableTime :: Maybe ISO8601
$sel:earliestRestorableTime:DBCluster' :: DBCluster -> Maybe ISO8601
earliestRestorableTime} -> Maybe ISO8601
earliestRestorableTime) (\s :: DBCluster
s@DBCluster' {} Maybe ISO8601
a -> DBCluster
s {$sel:earliestRestorableTime:DBCluster' :: Maybe ISO8601
earliestRestorableTime = Maybe ISO8601
a} :: DBCluster) ((Maybe ISO8601 -> f (Maybe ISO8601)) -> DBCluster -> f DBCluster)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DBCluster
-> f DBCluster
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 DB cluster.
dbCluster_engine :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_engine :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_engine = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
engine :: Maybe Text
$sel:engine:DBCluster' :: DBCluster -> Maybe Text
engine} -> Maybe Text
engine) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:engine:DBCluster' :: Maybe Text
engine = Maybe Text
a} :: DBCluster)

-- | The Amazon Resource Name (ARN) for the DB cluster.
dbCluster_dbClusterArn :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_dbClusterArn :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_dbClusterArn = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
dbClusterArn :: Maybe Text
$sel:dbClusterArn:DBCluster' :: DBCluster -> Maybe Text
dbClusterArn} -> Maybe Text
dbClusterArn) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:dbClusterArn:DBCluster' :: Maybe Text
dbClusterArn = Maybe Text
a} :: DBCluster)

-- | Identifies the clone group to which the DB cluster is associated.
dbCluster_cloneGroupId :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_cloneGroupId :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_cloneGroupId = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
cloneGroupId :: Maybe Text
$sel:cloneGroupId:DBCluster' :: DBCluster -> Maybe Text
cloneGroupId} -> Maybe Text
cloneGroupId) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:cloneGroupId:DBCluster' :: Maybe Text
cloneGroupId = Maybe Text
a} :: DBCluster)

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

-- | If set to @true@, the DB cluster can be cloned across accounts.
dbCluster_crossAccountClone :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Bool)
dbCluster_crossAccountClone :: (Maybe Bool -> f (Maybe Bool)) -> DBCluster -> f DBCluster
dbCluster_crossAccountClone = (DBCluster -> Maybe Bool)
-> (DBCluster -> Maybe Bool -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Bool
crossAccountClone :: Maybe Bool
$sel:crossAccountClone:DBCluster' :: DBCluster -> Maybe Bool
crossAccountClone} -> Maybe Bool
crossAccountClone) (\s :: DBCluster
s@DBCluster' {} Maybe Bool
a -> DBCluster
s {$sel:crossAccountClone:DBCluster' :: Maybe Bool
crossAccountClone = Maybe Bool
a} :: DBCluster)

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

-- | Provides the list of EC2 Availability Zones that instances in the DB
-- cluster can be created in.
dbCluster_availabilityZones :: Lens.Lens' DBCluster (Prelude.Maybe [Prelude.Text])
dbCluster_availabilityZones :: (Maybe [Text] -> f (Maybe [Text])) -> DBCluster -> f DBCluster
dbCluster_availabilityZones = (DBCluster -> Maybe [Text])
-> (DBCluster -> Maybe [Text] -> DBCluster)
-> Lens DBCluster DBCluster (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe [Text]
availabilityZones :: Maybe [Text]
$sel:availabilityZones:DBCluster' :: DBCluster -> Maybe [Text]
availabilityZones} -> Maybe [Text]
availabilityZones) (\s :: DBCluster
s@DBCluster' {} Maybe [Text]
a -> DBCluster
s {$sel:availabilityZones:DBCluster' :: Maybe [Text]
availabilityZones = Maybe [Text]
a} :: DBCluster) ((Maybe [Text] -> f (Maybe [Text])) -> DBCluster -> f DBCluster)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> DBCluster
-> f DBCluster
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

-- | Not supported by Neptune.
dbCluster_characterSetName :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_characterSetName :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_characterSetName = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
characterSetName :: Maybe Text
$sel:characterSetName:DBCluster' :: DBCluster -> Maybe Text
characterSetName} -> Maybe Text
characterSetName) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:characterSetName:DBCluster' :: Maybe Text
characterSetName = Maybe Text
a} :: DBCluster)

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

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

-- | Provides a list of the Amazon Identity and Access Management (IAM) roles
-- that are associated with the DB cluster. IAM roles that are associated
-- with a DB cluster grant permission for the DB cluster to access other
-- Amazon services on your behalf.
dbCluster_associatedRoles :: Lens.Lens' DBCluster (Prelude.Maybe [DBClusterRole])
dbCluster_associatedRoles :: (Maybe [DBClusterRole] -> f (Maybe [DBClusterRole]))
-> DBCluster -> f DBCluster
dbCluster_associatedRoles = (DBCluster -> Maybe [DBClusterRole])
-> (DBCluster -> Maybe [DBClusterRole] -> DBCluster)
-> Lens
     DBCluster DBCluster (Maybe [DBClusterRole]) (Maybe [DBClusterRole])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe [DBClusterRole]
associatedRoles :: Maybe [DBClusterRole]
$sel:associatedRoles:DBCluster' :: DBCluster -> Maybe [DBClusterRole]
associatedRoles} -> Maybe [DBClusterRole]
associatedRoles) (\s :: DBCluster
s@DBCluster' {} Maybe [DBClusterRole]
a -> DBCluster
s {$sel:associatedRoles:DBCluster' :: Maybe [DBClusterRole]
associatedRoles = Maybe [DBClusterRole]
a} :: DBCluster) ((Maybe [DBClusterRole] -> f (Maybe [DBClusterRole]))
 -> DBCluster -> f DBCluster)
-> ((Maybe [DBClusterRole] -> f (Maybe [DBClusterRole]))
    -> Maybe [DBClusterRole] -> f (Maybe [DBClusterRole]))
-> (Maybe [DBClusterRole] -> f (Maybe [DBClusterRole]))
-> DBCluster
-> f DBCluster
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [DBClusterRole] [DBClusterRole] [DBClusterRole] [DBClusterRole]
-> Iso
     (Maybe [DBClusterRole])
     (Maybe [DBClusterRole])
     (Maybe [DBClusterRole])
     (Maybe [DBClusterRole])
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
  [DBClusterRole] [DBClusterRole] [DBClusterRole] [DBClusterRole]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Provides a list of VPC security groups that the DB cluster belongs to.
dbCluster_vpcSecurityGroups :: Lens.Lens' DBCluster (Prelude.Maybe [VpcSecurityGroupMembership])
dbCluster_vpcSecurityGroups :: (Maybe [VpcSecurityGroupMembership]
 -> f (Maybe [VpcSecurityGroupMembership]))
-> DBCluster -> f DBCluster
dbCluster_vpcSecurityGroups = (DBCluster -> Maybe [VpcSecurityGroupMembership])
-> (DBCluster -> Maybe [VpcSecurityGroupMembership] -> DBCluster)
-> Lens
     DBCluster
     DBCluster
     (Maybe [VpcSecurityGroupMembership])
     (Maybe [VpcSecurityGroupMembership])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups :: Maybe [VpcSecurityGroupMembership]
$sel:vpcSecurityGroups:DBCluster' :: DBCluster -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups} -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups) (\s :: DBCluster
s@DBCluster' {} Maybe [VpcSecurityGroupMembership]
a -> DBCluster
s {$sel:vpcSecurityGroups:DBCluster' :: Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups = Maybe [VpcSecurityGroupMembership]
a} :: DBCluster) ((Maybe [VpcSecurityGroupMembership]
  -> f (Maybe [VpcSecurityGroupMembership]))
 -> DBCluster -> f DBCluster)
-> ((Maybe [VpcSecurityGroupMembership]
     -> f (Maybe [VpcSecurityGroupMembership]))
    -> Maybe [VpcSecurityGroupMembership]
    -> f (Maybe [VpcSecurityGroupMembership]))
-> (Maybe [VpcSecurityGroupMembership]
    -> f (Maybe [VpcSecurityGroupMembership]))
-> DBCluster
-> f DBCluster
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 DB snapshots are
-- retained.
dbCluster_backupRetentionPeriod :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Int)
dbCluster_backupRetentionPeriod :: (Maybe Int -> f (Maybe Int)) -> DBCluster -> f DBCluster
dbCluster_backupRetentionPeriod = (DBCluster -> Maybe Int)
-> (DBCluster -> Maybe Int -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Int
backupRetentionPeriod :: Maybe Int
$sel:backupRetentionPeriod:DBCluster' :: DBCluster -> Maybe Int
backupRetentionPeriod} -> Maybe Int
backupRetentionPeriod) (\s :: DBCluster
s@DBCluster' {} Maybe Int
a -> DBCluster
s {$sel:backupRetentionPeriod:DBCluster' :: Maybe Int
backupRetentionPeriod = Maybe Int
a} :: DBCluster)

-- | Specifies information on the subnet group associated with the DB
-- cluster, including the name, description, and subnets in the subnet
-- group.
dbCluster_dbSubnetGroup :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_dbSubnetGroup :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_dbSubnetGroup = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
dbSubnetGroup :: Maybe Text
$sel:dbSubnetGroup:DBCluster' :: DBCluster -> Maybe Text
dbSubnetGroup} -> Maybe Text
dbSubnetGroup) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:dbSubnetGroup:DBCluster' :: Maybe Text
dbSubnetGroup = Maybe Text
a} :: DBCluster)

-- | Contains the name of the initial database of this DB cluster that was
-- provided at create time, if one was specified when the DB cluster was
-- created. This same name is returned for the life of the DB cluster.
dbCluster_databaseName :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_databaseName :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_databaseName = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
databaseName :: Maybe Text
$sel:databaseName:DBCluster' :: DBCluster -> Maybe Text
databaseName} -> Maybe Text
databaseName) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:databaseName:DBCluster' :: Maybe Text
databaseName = Maybe Text
a} :: DBCluster)

-- | Specifies whether the DB cluster has instances in multiple Availability
-- Zones.
dbCluster_multiAZ :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Bool)
dbCluster_multiAZ :: (Maybe Bool -> f (Maybe Bool)) -> DBCluster -> f DBCluster
dbCluster_multiAZ = (DBCluster -> Maybe Bool)
-> (DBCluster -> Maybe Bool -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Bool
multiAZ :: Maybe Bool
$sel:multiAZ:DBCluster' :: DBCluster -> Maybe Bool
multiAZ} -> Maybe Bool
multiAZ) (\s :: DBCluster
s@DBCluster' {} Maybe Bool
a -> DBCluster
s {$sel:multiAZ:DBCluster' :: Maybe Bool
multiAZ = Maybe Bool
a} :: DBCluster)

-- | A list of log types that this DB cluster is configured to export to
-- CloudWatch Logs.
dbCluster_enabledCloudwatchLogsExports :: Lens.Lens' DBCluster (Prelude.Maybe [Prelude.Text])
dbCluster_enabledCloudwatchLogsExports :: (Maybe [Text] -> f (Maybe [Text])) -> DBCluster -> f DBCluster
dbCluster_enabledCloudwatchLogsExports = (DBCluster -> Maybe [Text])
-> (DBCluster -> Maybe [Text] -> DBCluster)
-> Lens DBCluster DBCluster (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe [Text]
enabledCloudwatchLogsExports :: Maybe [Text]
$sel:enabledCloudwatchLogsExports:DBCluster' :: DBCluster -> Maybe [Text]
enabledCloudwatchLogsExports} -> Maybe [Text]
enabledCloudwatchLogsExports) (\s :: DBCluster
s@DBCluster' {} Maybe [Text]
a -> DBCluster
s {$sel:enabledCloudwatchLogsExports:DBCluster' :: Maybe [Text]
enabledCloudwatchLogsExports = Maybe [Text]
a} :: DBCluster) ((Maybe [Text] -> f (Maybe [Text])) -> DBCluster -> f DBCluster)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> DBCluster
-> f DBCluster
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

-- | @AllocatedStorage@ always returns 1, because Neptune DB cluster storage
-- size is not fixed, but instead automatically adjusts as needed.
dbCluster_allocatedStorage :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Int)
dbCluster_allocatedStorage :: (Maybe Int -> f (Maybe Int)) -> DBCluster -> f DBCluster
dbCluster_allocatedStorage = (DBCluster -> Maybe Int)
-> (DBCluster -> Maybe Int -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Int
allocatedStorage :: Maybe Int
$sel:allocatedStorage:DBCluster' :: DBCluster -> Maybe Int
allocatedStorage} -> Maybe Int
allocatedStorage) (\s :: DBCluster
s@DBCluster' {} Maybe Int
a -> DBCluster
s {$sel:allocatedStorage:DBCluster' :: Maybe Int
allocatedStorage = Maybe Int
a} :: DBCluster)

-- | /If set to @true@, tags are copied to any snapshot of the DB cluster
-- that is created./
dbCluster_copyTagsToSnapshot :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Bool)
dbCluster_copyTagsToSnapshot :: (Maybe Bool -> f (Maybe Bool)) -> DBCluster -> f DBCluster
dbCluster_copyTagsToSnapshot = (DBCluster -> Maybe Bool)
-> (DBCluster -> Maybe Bool -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Bool
copyTagsToSnapshot :: Maybe Bool
$sel:copyTagsToSnapshot:DBCluster' :: DBCluster -> Maybe Bool
copyTagsToSnapshot} -> Maybe Bool
copyTagsToSnapshot) (\s :: DBCluster
s@DBCluster' {} Maybe Bool
a -> DBCluster
s {$sel:copyTagsToSnapshot:DBCluster' :: Maybe Bool
copyTagsToSnapshot = Maybe Bool
a} :: DBCluster)

-- | Specifies the time when the DB cluster was created, in Universal
-- Coordinated Time (UTC).
dbCluster_clusterCreateTime :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.UTCTime)
dbCluster_clusterCreateTime :: (Maybe UTCTime -> f (Maybe UTCTime)) -> DBCluster -> f DBCluster
dbCluster_clusterCreateTime = (DBCluster -> Maybe ISO8601)
-> (DBCluster -> Maybe ISO8601 -> DBCluster)
-> Lens DBCluster DBCluster (Maybe ISO8601) (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe ISO8601
clusterCreateTime :: Maybe ISO8601
$sel:clusterCreateTime:DBCluster' :: DBCluster -> Maybe ISO8601
clusterCreateTime} -> Maybe ISO8601
clusterCreateTime) (\s :: DBCluster
s@DBCluster' {} Maybe ISO8601
a -> DBCluster
s {$sel:clusterCreateTime:DBCluster' :: Maybe ISO8601
clusterCreateTime = Maybe ISO8601
a} :: DBCluster) ((Maybe ISO8601 -> f (Maybe ISO8601)) -> DBCluster -> f DBCluster)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DBCluster
-> f DBCluster
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

-- | Specifies the connection endpoint for the primary instance of the DB
-- cluster.
dbCluster_endpoint :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_endpoint :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_endpoint = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
endpoint :: Maybe Text
$sel:endpoint:DBCluster' :: DBCluster -> Maybe Text
endpoint} -> Maybe Text
endpoint) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:endpoint:DBCluster' :: Maybe Text
endpoint = Maybe Text
a} :: DBCluster)

-- | Specifies the progress of the operation as a percentage.
dbCluster_percentProgress :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_percentProgress :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_percentProgress = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
percentProgress :: Maybe Text
$sel:percentProgress:DBCluster' :: DBCluster -> Maybe Text
percentProgress} -> Maybe Text
percentProgress) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:percentProgress:DBCluster' :: Maybe Text
percentProgress = Maybe Text
a} :: DBCluster)

-- | The reader endpoint for the DB cluster. The reader endpoint for a DB
-- cluster load-balances connections across the Read Replicas that are
-- available in a DB cluster. As clients request new connections to the
-- reader endpoint, Neptune distributes the connection requests among the
-- Read Replicas in the DB cluster. This functionality can help balance
-- your read workload across multiple Read Replicas in your DB cluster.
--
-- If a failover occurs, and the Read Replica that you are connected to is
-- promoted to be the primary instance, your connection is dropped. To
-- continue sending your read workload to other Read Replicas in the
-- cluster, you can then reconnect to the reader endpoint.
dbCluster_readerEndpoint :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Text)
dbCluster_readerEndpoint :: (Maybe Text -> f (Maybe Text)) -> DBCluster -> f DBCluster
dbCluster_readerEndpoint = (DBCluster -> Maybe Text)
-> (DBCluster -> Maybe Text -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Text
readerEndpoint :: Maybe Text
$sel:readerEndpoint:DBCluster' :: DBCluster -> Maybe Text
readerEndpoint} -> Maybe Text
readerEndpoint) (\s :: DBCluster
s@DBCluster' {} Maybe Text
a -> DBCluster
s {$sel:readerEndpoint:DBCluster' :: Maybe Text
readerEndpoint = Maybe Text
a} :: DBCluster)

-- | Specifies the port that the database engine is listening on.
dbCluster_port :: Lens.Lens' DBCluster (Prelude.Maybe Prelude.Int)
dbCluster_port :: (Maybe Int -> f (Maybe Int)) -> DBCluster -> f DBCluster
dbCluster_port = (DBCluster -> Maybe Int)
-> (DBCluster -> Maybe Int -> DBCluster)
-> Lens DBCluster DBCluster (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe Int
port :: Maybe Int
$sel:port:DBCluster' :: DBCluster -> Maybe Int
port} -> Maybe Int
port) (\s :: DBCluster
s@DBCluster' {} Maybe Int
a -> DBCluster
s {$sel:port:DBCluster' :: Maybe Int
port = Maybe Int
a} :: DBCluster)

-- | Not supported by Neptune.
dbCluster_dbClusterOptionGroupMemberships :: Lens.Lens' DBCluster (Prelude.Maybe [DBClusterOptionGroupStatus])
dbCluster_dbClusterOptionGroupMemberships :: (Maybe [DBClusterOptionGroupStatus]
 -> f (Maybe [DBClusterOptionGroupStatus]))
-> DBCluster -> f DBCluster
dbCluster_dbClusterOptionGroupMemberships = (DBCluster -> Maybe [DBClusterOptionGroupStatus])
-> (DBCluster -> Maybe [DBClusterOptionGroupStatus] -> DBCluster)
-> Lens
     DBCluster
     DBCluster
     (Maybe [DBClusterOptionGroupStatus])
     (Maybe [DBClusterOptionGroupStatus])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DBCluster' {Maybe [DBClusterOptionGroupStatus]
dbClusterOptionGroupMemberships :: Maybe [DBClusterOptionGroupStatus]
$sel:dbClusterOptionGroupMemberships:DBCluster' :: DBCluster -> Maybe [DBClusterOptionGroupStatus]
dbClusterOptionGroupMemberships} -> Maybe [DBClusterOptionGroupStatus]
dbClusterOptionGroupMemberships) (\s :: DBCluster
s@DBCluster' {} Maybe [DBClusterOptionGroupStatus]
a -> DBCluster
s {$sel:dbClusterOptionGroupMemberships:DBCluster' :: Maybe [DBClusterOptionGroupStatus]
dbClusterOptionGroupMemberships = Maybe [DBClusterOptionGroupStatus]
a} :: DBCluster) ((Maybe [DBClusterOptionGroupStatus]
  -> f (Maybe [DBClusterOptionGroupStatus]))
 -> DBCluster -> f DBCluster)
-> ((Maybe [DBClusterOptionGroupStatus]
     -> f (Maybe [DBClusterOptionGroupStatus]))
    -> Maybe [DBClusterOptionGroupStatus]
    -> f (Maybe [DBClusterOptionGroupStatus]))
-> (Maybe [DBClusterOptionGroupStatus]
    -> f (Maybe [DBClusterOptionGroupStatus]))
-> DBCluster
-> f DBCluster
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [DBClusterOptionGroupStatus]
  [DBClusterOptionGroupStatus]
  [DBClusterOptionGroupStatus]
  [DBClusterOptionGroupStatus]
-> Iso
     (Maybe [DBClusterOptionGroupStatus])
     (Maybe [DBClusterOptionGroupStatus])
     (Maybe [DBClusterOptionGroupStatus])
     (Maybe [DBClusterOptionGroupStatus])
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
  [DBClusterOptionGroupStatus]
  [DBClusterOptionGroupStatus]
  [DBClusterOptionGroupStatus]
  [DBClusterOptionGroupStatus]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.FromXML DBCluster where
  parseXML :: [Node] -> Either String DBCluster
parseXML [Node]
x =
    Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe ISO8601
-> Maybe Bool
-> Maybe Text
-> Maybe [DBClusterMember]
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ISO8601
-> Maybe Bool
-> Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [DBClusterRole]
-> Maybe [VpcSecurityGroupMembership]
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe [Text]
-> Maybe Int
-> Maybe Bool
-> Maybe ISO8601
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe [DBClusterOptionGroupStatus]
-> DBCluster
DBCluster'
      (Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe ISO8601
 -> Maybe Bool
 -> Maybe Text
 -> Maybe [DBClusterMember]
 -> Maybe [Text]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe ISO8601
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe ISO8601
 -> Maybe Bool
 -> Maybe Text
 -> Maybe [Text]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [DBClusterRole]
 -> Maybe [VpcSecurityGroupMembership]
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe [Text]
 -> Maybe Int
 -> Maybe Bool
 -> Maybe ISO8601
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Int
 -> Maybe [DBClusterOptionGroupStatus]
 -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [DBClusterMember]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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 Text
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [DBClusterMember]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Bool
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [DBClusterMember]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"Status")
      Either
  String
  (Maybe Bool
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [DBClusterMember]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [DBClusterMember]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"DeletionProtection")
      Either
  String
  (Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [DBClusterMember]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe Bool
      -> Maybe Text
      -> Maybe [DBClusterMember]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"AutomaticRestartTime")
      Either
  String
  (Maybe Bool
   -> Maybe Text
   -> Maybe [DBClusterMember]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Text
      -> Maybe [DBClusterMember]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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 [DBClusterMember]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [DBClusterMember]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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 [DBClusterMember]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe [DBClusterMember])
-> Either
     String
     (Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"DBClusterMembers"
                      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 [DBClusterMember]))
-> Either String (Maybe [DBClusterMember])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [DBClusterMember])
-> [Node] -> Either String (Maybe [DBClusterMember])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [DBClusterMember]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"DBClusterMember")
                  )
      Either
  String
  (Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe [Text])
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"ReadReplicaIdentifiers"
                      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
"ReadReplicaIdentifier")
                  )
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"ReplicationSourceIdentifier")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"HostedZoneId")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"DBClusterParameterGroup")
      Either
  String
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Bool
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"MasterUsername")
      Either
  String
  (Maybe Bool
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Text
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"IAMDatabaseAuthenticationEnabled")
      Either
  String
  (Maybe Text
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"DbClusterResourceId")
      Either
  String
  (Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"EarliestRestorableTime")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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 Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"DBClusterArn")
      Either
  String
  (Maybe Text
   -> Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe ISO8601
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"CloneGroupId")
      Either
  String
  (Maybe ISO8601
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe Bool
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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 Bool
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"CrossAccountClone")
      Either
  String
  (Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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 [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe [Text])
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"AvailabilityZones"
                      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
"AvailabilityZone")
                  )
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"CharacterSetName")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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 [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [DBClusterRole]
      -> Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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 [DBClusterRole]
   -> Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe [DBClusterRole])
-> Either
     String
     (Maybe [VpcSecurityGroupMembership]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"AssociatedRoles" 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 [DBClusterRole]))
-> Either String (Maybe [DBClusterRole])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [DBClusterRole])
-> [Node] -> Either String (Maybe [DBClusterRole])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [DBClusterRole]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"DBClusterRole")
                  )
      Either
  String
  (Maybe [VpcSecurityGroupMembership]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe [VpcSecurityGroupMembership])
-> Either
     String
     (Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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 Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Int)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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 Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"DBSubnetGroup")
      Either
  String
  (Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Bool
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"DatabaseName")
      Either
  String
  (Maybe Bool
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"MultiAZ")
      Either
  String
  (Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe [Text])
-> Either
     String
     (Maybe Int
      -> Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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 Int
   -> Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Int)
-> Either
     String
     (Maybe Bool
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"AllocatedStorage")
      Either
  String
  (Maybe Bool
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"CopyTagsToSnapshot")
      Either
  String
  (Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"ClusterCreateTime")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe [DBClusterOptionGroupStatus]
      -> DBCluster)
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
"Endpoint")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe [DBClusterOptionGroupStatus]
   -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Int -> Maybe [DBClusterOptionGroupStatus] -> DBCluster)
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
"PercentProgress")
      Either
  String
  (Maybe Text
   -> Maybe Int -> Maybe [DBClusterOptionGroupStatus] -> DBCluster)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Int -> Maybe [DBClusterOptionGroupStatus] -> DBCluster)
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
"ReaderEndpoint")
      Either
  String
  (Maybe Int -> Maybe [DBClusterOptionGroupStatus] -> DBCluster)
-> Either String (Maybe Int)
-> Either String (Maybe [DBClusterOptionGroupStatus] -> DBCluster)
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
"Port")
      Either String (Maybe [DBClusterOptionGroupStatus] -> DBCluster)
-> Either String (Maybe [DBClusterOptionGroupStatus])
-> Either String DBCluster
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
"DBClusterOptionGroupMemberships"
                      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 [DBClusterOptionGroupStatus]))
-> Either String (Maybe [DBClusterOptionGroupStatus])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [DBClusterOptionGroupStatus])
-> [Node] -> Either String (Maybe [DBClusterOptionGroupStatus])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [DBClusterOptionGroupStatus]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"DBClusterOptionGroup")
                  )

instance Prelude.Hashable DBCluster

instance Prelude.NFData DBCluster