{-# 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.SecurityHub.Types.AwsRedshiftClusterDetails
-- 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.SecurityHub.Types.AwsRedshiftClusterDetails where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.SecurityHub.Types.AwsRedshiftClusterClusterNode
import Amazonka.SecurityHub.Types.AwsRedshiftClusterClusterParameterGroup
import Amazonka.SecurityHub.Types.AwsRedshiftClusterClusterSecurityGroup
import Amazonka.SecurityHub.Types.AwsRedshiftClusterClusterSnapshotCopyStatus
import Amazonka.SecurityHub.Types.AwsRedshiftClusterDeferredMaintenanceWindow
import Amazonka.SecurityHub.Types.AwsRedshiftClusterElasticIpStatus
import Amazonka.SecurityHub.Types.AwsRedshiftClusterEndpoint
import Amazonka.SecurityHub.Types.AwsRedshiftClusterHsmStatus
import Amazonka.SecurityHub.Types.AwsRedshiftClusterIamRole
import Amazonka.SecurityHub.Types.AwsRedshiftClusterPendingModifiedValues
import Amazonka.SecurityHub.Types.AwsRedshiftClusterResizeInfo
import Amazonka.SecurityHub.Types.AwsRedshiftClusterRestoreStatus
import Amazonka.SecurityHub.Types.AwsRedshiftClusterVpcSecurityGroup

-- | Details about an Amazon Redshift cluster.
--
-- /See:/ 'newAwsRedshiftClusterDetails' smart constructor.
data AwsRedshiftClusterDetails = AwsRedshiftClusterDetails'
  { -- | Information about the resize operation for the cluster.
    AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterResizeInfo
resizeInfo :: Prelude.Maybe AwsRedshiftClusterResizeInfo,
    -- | Information about the status of a cluster restore action. Only applies
    -- to a cluster that was created by restoring a snapshot.
    AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterRestoreStatus
restoreStatus :: Prelude.Maybe AwsRedshiftClusterRestoreStatus,
    -- | The default number of days to retain a manual snapshot.
    --
    -- If the value is -1, the snapshot is retained indefinitely.
    --
    -- This setting doesn\'t change the retention period of existing snapshots.
    --
    -- Valid values: Either -1 or an integer between 1 and 3,653
    AwsRedshiftClusterDetails -> Maybe Int
manualSnapshotRetentionPeriod :: Prelude.Maybe Prelude.Int,
    -- | Indicates whether to create the cluster with enhanced VPC routing
    -- enabled.
    AwsRedshiftClusterDetails -> Maybe Bool
enhancedVpcRouting :: Prelude.Maybe Prelude.Bool,
    -- | Information about the destination Region and retention period for the
    -- cross-Region snapshot copy.
    AwsRedshiftClusterDetails
-> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
clusterSnapshotCopyStatus :: Prelude.Maybe AwsRedshiftClusterClusterSnapshotCopyStatus,
    -- | The availability status of the cluster for queries. Possible values are
    -- the following:
    --
    -- -   @Available@ - The cluster is available for queries.
    --
    -- -   @Unavailable@ - The cluster is not available for queries.
    --
    -- -   @Maintenance@ - The cluster is intermittently available for queries
    --     due to maintenance activities.
    --
    -- -   @Modifying@ -The cluster is intermittently available for queries due
    --     to changes that modify the cluster.
    --
    -- -   @Failed@ - The cluster failed and is not available for queries.
    AwsRedshiftClusterDetails -> Maybe Text
clusterAvailabilityStatus :: Prelude.Maybe Prelude.Text,
    -- | The specific revision number of the database in the cluster.
    AwsRedshiftClusterDetails -> Maybe Text
clusterRevisionNumber :: Prelude.Maybe Prelude.Text,
    -- | A unique identifier for the cluster snapshot schedule.
    AwsRedshiftClusterDetails -> Maybe Text
snapshotScheduleIdentifier :: Prelude.Maybe Prelude.Text,
    -- | Whether the cluster can be accessed from a public network.
    AwsRedshiftClusterDetails -> Maybe Bool
publiclyAccessible :: Prelude.Maybe Prelude.Bool,
    -- | The master user name for the cluster. This name is used to connect to
    -- the database that is specified in as the value of @DBName@.
    AwsRedshiftClusterDetails -> Maybe Text
masterUsername :: Prelude.Maybe Prelude.Text,
    -- | The name of the maintenance track for the cluster.
    AwsRedshiftClusterDetails -> Maybe Text
maintenanceTrackName :: Prelude.Maybe Prelude.Text,
    -- | Indicates when the next snapshot is expected to be taken. The cluster
    -- must have a valid snapshot schedule and have backups enabled.
    --
    -- Uses the @date-time@ format specified in
    -- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
    -- The value cannot contain spaces. For example,
    -- @2020-03-22T13:22:13.933Z@.
    AwsRedshiftClusterDetails -> Maybe Text
expectedNextSnapshotScheduleTime :: Prelude.Maybe Prelude.Text,
    -- | The number of nodes that you can use the elastic resize method to resize
    -- the cluster to.
    AwsRedshiftClusterDetails -> Maybe Text
elasticResizeNumberOfNodeOptions :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the VPC that the cluster is in, if the cluster is in a
    -- VPC.
    AwsRedshiftClusterDetails -> Maybe Text
vpcId :: Prelude.Maybe Prelude.Text,
    -- | A list of cluster security groups that are associated with the cluster.
    AwsRedshiftClusterDetails
-> Maybe [AwsRedshiftClusterClusterSecurityGroup]
clusterSecurityGroups :: Prelude.Maybe [AwsRedshiftClusterClusterSecurityGroup],
    -- | The number of days that automatic cluster snapshots are retained.
    AwsRedshiftClusterDetails -> Maybe Int
automatedSnapshotRetentionPeriod :: Prelude.Maybe Prelude.Int,
    -- | The current state of the cluster snapshot schedule.
    --
    -- Valid values: @MODIFYING@ | @ACTIVE@ | @FAILED@
    AwsRedshiftClusterDetails -> Maybe Text
snapshotScheduleState :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether the data in the cluster is encrypted at rest.
    AwsRedshiftClusterDetails -> Maybe Bool
encrypted :: Prelude.Maybe Prelude.Bool,
    -- | The name of the subnet group that is associated with the cluster. This
    -- parameter is valid only when the cluster is in a VPC.
    AwsRedshiftClusterDetails -> Maybe Text
clusterSubnetGroupName :: Prelude.Maybe Prelude.Text,
    -- | The status of the next expected snapshot.
    --
    -- Valid values: @OnTrack@ | @Pending@
    AwsRedshiftClusterDetails -> Maybe Text
expectedNextSnapshotScheduleTimeStatus :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier of the cluster.
    AwsRedshiftClusterDetails -> Maybe Text
clusterIdentifier :: Prelude.Maybe Prelude.Text,
    -- | List of time windows during which maintenance was deferred.
    AwsRedshiftClusterDetails
-> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
deferredMaintenanceWindows :: Prelude.Maybe [AwsRedshiftClusterDeferredMaintenanceWindow],
    -- | The number of compute nodes in the cluster.
    AwsRedshiftClusterDetails -> Maybe Int
numberOfNodes :: Prelude.Maybe Prelude.Int,
    -- | The public key for the cluster.
    AwsRedshiftClusterDetails -> Maybe Text
clusterPublicKey :: Prelude.Maybe Prelude.Text,
    -- | The weekly time range, in Universal Coordinated Time (UTC), during which
    -- system maintenance can occur.
    --
    -- Format: @ \<day>:HH:MM-\<day>:HH:MM@
    --
    -- For the day values, use @mon@ | @tue@ | @wed@ | @thu@ | @fri@ | @sat@ |
    -- @sun@
    --
    -- For example, @sun:09:32-sun:10:02@
    AwsRedshiftClusterDetails -> Maybe Text
preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the KMS encryption key that is used to encrypt data in
    -- the cluster.
    AwsRedshiftClusterDetails -> Maybe Text
kmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | The list of cluster parameter groups that are associated with this
    -- cluster.
    AwsRedshiftClusterDetails
-> Maybe [AwsRedshiftClusterClusterParameterGroup]
clusterParameterGroups :: Prelude.Maybe [AwsRedshiftClusterClusterParameterGroup],
    -- | The name of the Availability Zone in which the cluster is located.
    AwsRedshiftClusterDetails -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | The list of VPC security groups that the cluster belongs to, if the
    -- cluster is in a VPC.
    AwsRedshiftClusterDetails
-> Maybe [AwsRedshiftClusterVpcSecurityGroup]
vpcSecurityGroups :: Prelude.Maybe [AwsRedshiftClusterVpcSecurityGroup],
    -- | Information about whether the Amazon Redshift cluster finished applying
    -- any changes to hardware security module (HSM) settings that were
    -- specified in a modify cluster command.
    AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterHsmStatus
hsmStatus :: Prelude.Maybe AwsRedshiftClusterHsmStatus,
    -- | A list of IAM roles that the cluster can use to access other Amazon Web
    -- Services services.
    AwsRedshiftClusterDetails -> Maybe [AwsRedshiftClusterIamRole]
iamRoles :: Prelude.Maybe [AwsRedshiftClusterIamRole],
    -- | A list of cluster operations that are waiting to start.
    AwsRedshiftClusterDetails -> Maybe [Text]
pendingActions :: Prelude.Maybe [Prelude.Text],
    -- | Information about the status of the Elastic IP (EIP) address.
    AwsRedshiftClusterDetails
-> Maybe AwsRedshiftClusterElasticIpStatus
elasticIpStatus :: Prelude.Maybe AwsRedshiftClusterElasticIpStatus,
    -- | The version ID of the Amazon Redshift engine that runs on the cluster.
    AwsRedshiftClusterDetails -> Maybe Text
clusterVersion :: Prelude.Maybe Prelude.Text,
    -- | The node type for the nodes in the cluster.
    AwsRedshiftClusterDetails -> Maybe Text
nodeType :: Prelude.Maybe Prelude.Text,
    -- | Indicates the start of the next maintenance window.
    --
    -- Uses the @date-time@ format specified in
    -- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
    -- The value cannot contain spaces. For example,
    -- @2020-03-22T13:22:13.933Z@.
    AwsRedshiftClusterDetails -> Maybe Text
nextMaintenanceWindowStartTime :: Prelude.Maybe Prelude.Text,
    -- | Indicates when the cluster was created.
    --
    -- Uses the @date-time@ format specified in
    -- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
    -- The value cannot contain spaces. For example,
    -- @2020-03-22T13:22:13.933Z@.
    AwsRedshiftClusterDetails -> Maybe Text
clusterCreateTime :: Prelude.Maybe Prelude.Text,
    -- | The connection endpoint.
    AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterEndpoint
endpoint :: Prelude.Maybe AwsRedshiftClusterEndpoint,
    -- | Indicates whether major version upgrades are applied automatically to
    -- the cluster during the maintenance window.
    AwsRedshiftClusterDetails -> Maybe Bool
allowVersionUpgrade :: Prelude.Maybe Prelude.Bool,
    -- | The current status of the cluster.
    --
    -- Valid values: @available@ | @available, prep-for-resize@ |
    -- @available, resize-cleanup@ |@ cancelling-resize@ | @creating@ |
    -- @deleting@ | @final-snapshot@ | @hardware-failure@ | @incompatible-hsm@
    -- |@ incompatible-network@ | @incompatible-parameters@ |
    -- @incompatible-restore@ | @modifying@ | @paused@ | @rebooting@ |
    -- @renaming@ | @resizing@ | @rotating-keys@ | @storage-full@ |
    -- @updating-hsm@
    AwsRedshiftClusterDetails -> Maybe Text
clusterStatus :: Prelude.Maybe Prelude.Text,
    -- | A list of changes to the cluster that are currently pending.
    AwsRedshiftClusterDetails
-> Maybe AwsRedshiftClusterPendingModifiedValues
pendingModifiedValues :: Prelude.Maybe AwsRedshiftClusterPendingModifiedValues,
    -- | The nodes in the cluster.
    AwsRedshiftClusterDetails -> Maybe [AwsRedshiftClusterClusterNode]
clusterNodes :: Prelude.Maybe [AwsRedshiftClusterClusterNode],
    -- | The name of the initial database that was created when the cluster was
    -- created.
    --
    -- The same name is returned for the life of the cluster.
    --
    -- If an initial database is not specified, a database named @devdev@ is
    -- created by default.
    AwsRedshiftClusterDetails -> Maybe Text
dbName :: Prelude.Maybe Prelude.Text
  }
  deriving (AwsRedshiftClusterDetails -> AwsRedshiftClusterDetails -> Bool
(AwsRedshiftClusterDetails -> AwsRedshiftClusterDetails -> Bool)
-> (AwsRedshiftClusterDetails -> AwsRedshiftClusterDetails -> Bool)
-> Eq AwsRedshiftClusterDetails
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AwsRedshiftClusterDetails -> AwsRedshiftClusterDetails -> Bool
$c/= :: AwsRedshiftClusterDetails -> AwsRedshiftClusterDetails -> Bool
== :: AwsRedshiftClusterDetails -> AwsRedshiftClusterDetails -> Bool
$c== :: AwsRedshiftClusterDetails -> AwsRedshiftClusterDetails -> Bool
Prelude.Eq, ReadPrec [AwsRedshiftClusterDetails]
ReadPrec AwsRedshiftClusterDetails
Int -> ReadS AwsRedshiftClusterDetails
ReadS [AwsRedshiftClusterDetails]
(Int -> ReadS AwsRedshiftClusterDetails)
-> ReadS [AwsRedshiftClusterDetails]
-> ReadPrec AwsRedshiftClusterDetails
-> ReadPrec [AwsRedshiftClusterDetails]
-> Read AwsRedshiftClusterDetails
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AwsRedshiftClusterDetails]
$creadListPrec :: ReadPrec [AwsRedshiftClusterDetails]
readPrec :: ReadPrec AwsRedshiftClusterDetails
$creadPrec :: ReadPrec AwsRedshiftClusterDetails
readList :: ReadS [AwsRedshiftClusterDetails]
$creadList :: ReadS [AwsRedshiftClusterDetails]
readsPrec :: Int -> ReadS AwsRedshiftClusterDetails
$creadsPrec :: Int -> ReadS AwsRedshiftClusterDetails
Prelude.Read, Int -> AwsRedshiftClusterDetails -> ShowS
[AwsRedshiftClusterDetails] -> ShowS
AwsRedshiftClusterDetails -> String
(Int -> AwsRedshiftClusterDetails -> ShowS)
-> (AwsRedshiftClusterDetails -> String)
-> ([AwsRedshiftClusterDetails] -> ShowS)
-> Show AwsRedshiftClusterDetails
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AwsRedshiftClusterDetails] -> ShowS
$cshowList :: [AwsRedshiftClusterDetails] -> ShowS
show :: AwsRedshiftClusterDetails -> String
$cshow :: AwsRedshiftClusterDetails -> String
showsPrec :: Int -> AwsRedshiftClusterDetails -> ShowS
$cshowsPrec :: Int -> AwsRedshiftClusterDetails -> ShowS
Prelude.Show, (forall x.
 AwsRedshiftClusterDetails -> Rep AwsRedshiftClusterDetails x)
-> (forall x.
    Rep AwsRedshiftClusterDetails x -> AwsRedshiftClusterDetails)
-> Generic AwsRedshiftClusterDetails
forall x.
Rep AwsRedshiftClusterDetails x -> AwsRedshiftClusterDetails
forall x.
AwsRedshiftClusterDetails -> Rep AwsRedshiftClusterDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep AwsRedshiftClusterDetails x -> AwsRedshiftClusterDetails
$cfrom :: forall x.
AwsRedshiftClusterDetails -> Rep AwsRedshiftClusterDetails x
Prelude.Generic)

-- |
-- Create a value of 'AwsRedshiftClusterDetails' 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:
--
-- 'resizeInfo', 'awsRedshiftClusterDetails_resizeInfo' - Information about the resize operation for the cluster.
--
-- 'restoreStatus', 'awsRedshiftClusterDetails_restoreStatus' - Information about the status of a cluster restore action. Only applies
-- to a cluster that was created by restoring a snapshot.
--
-- 'manualSnapshotRetentionPeriod', 'awsRedshiftClusterDetails_manualSnapshotRetentionPeriod' - The default number of days to retain a manual snapshot.
--
-- If the value is -1, the snapshot is retained indefinitely.
--
-- This setting doesn\'t change the retention period of existing snapshots.
--
-- Valid values: Either -1 or an integer between 1 and 3,653
--
-- 'enhancedVpcRouting', 'awsRedshiftClusterDetails_enhancedVpcRouting' - Indicates whether to create the cluster with enhanced VPC routing
-- enabled.
--
-- 'clusterSnapshotCopyStatus', 'awsRedshiftClusterDetails_clusterSnapshotCopyStatus' - Information about the destination Region and retention period for the
-- cross-Region snapshot copy.
--
-- 'clusterAvailabilityStatus', 'awsRedshiftClusterDetails_clusterAvailabilityStatus' - The availability status of the cluster for queries. Possible values are
-- the following:
--
-- -   @Available@ - The cluster is available for queries.
--
-- -   @Unavailable@ - The cluster is not available for queries.
--
-- -   @Maintenance@ - The cluster is intermittently available for queries
--     due to maintenance activities.
--
-- -   @Modifying@ -The cluster is intermittently available for queries due
--     to changes that modify the cluster.
--
-- -   @Failed@ - The cluster failed and is not available for queries.
--
-- 'clusterRevisionNumber', 'awsRedshiftClusterDetails_clusterRevisionNumber' - The specific revision number of the database in the cluster.
--
-- 'snapshotScheduleIdentifier', 'awsRedshiftClusterDetails_snapshotScheduleIdentifier' - A unique identifier for the cluster snapshot schedule.
--
-- 'publiclyAccessible', 'awsRedshiftClusterDetails_publiclyAccessible' - Whether the cluster can be accessed from a public network.
--
-- 'masterUsername', 'awsRedshiftClusterDetails_masterUsername' - The master user name for the cluster. This name is used to connect to
-- the database that is specified in as the value of @DBName@.
--
-- 'maintenanceTrackName', 'awsRedshiftClusterDetails_maintenanceTrackName' - The name of the maintenance track for the cluster.
--
-- 'expectedNextSnapshotScheduleTime', 'awsRedshiftClusterDetails_expectedNextSnapshotScheduleTime' - Indicates when the next snapshot is expected to be taken. The cluster
-- must have a valid snapshot schedule and have backups enabled.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
--
-- 'elasticResizeNumberOfNodeOptions', 'awsRedshiftClusterDetails_elasticResizeNumberOfNodeOptions' - The number of nodes that you can use the elastic resize method to resize
-- the cluster to.
--
-- 'vpcId', 'awsRedshiftClusterDetails_vpcId' - The identifier of the VPC that the cluster is in, if the cluster is in a
-- VPC.
--
-- 'clusterSecurityGroups', 'awsRedshiftClusterDetails_clusterSecurityGroups' - A list of cluster security groups that are associated with the cluster.
--
-- 'automatedSnapshotRetentionPeriod', 'awsRedshiftClusterDetails_automatedSnapshotRetentionPeriod' - The number of days that automatic cluster snapshots are retained.
--
-- 'snapshotScheduleState', 'awsRedshiftClusterDetails_snapshotScheduleState' - The current state of the cluster snapshot schedule.
--
-- Valid values: @MODIFYING@ | @ACTIVE@ | @FAILED@
--
-- 'encrypted', 'awsRedshiftClusterDetails_encrypted' - Indicates whether the data in the cluster is encrypted at rest.
--
-- 'clusterSubnetGroupName', 'awsRedshiftClusterDetails_clusterSubnetGroupName' - The name of the subnet group that is associated with the cluster. This
-- parameter is valid only when the cluster is in a VPC.
--
-- 'expectedNextSnapshotScheduleTimeStatus', 'awsRedshiftClusterDetails_expectedNextSnapshotScheduleTimeStatus' - The status of the next expected snapshot.
--
-- Valid values: @OnTrack@ | @Pending@
--
-- 'clusterIdentifier', 'awsRedshiftClusterDetails_clusterIdentifier' - The unique identifier of the cluster.
--
-- 'deferredMaintenanceWindows', 'awsRedshiftClusterDetails_deferredMaintenanceWindows' - List of time windows during which maintenance was deferred.
--
-- 'numberOfNodes', 'awsRedshiftClusterDetails_numberOfNodes' - The number of compute nodes in the cluster.
--
-- 'clusterPublicKey', 'awsRedshiftClusterDetails_clusterPublicKey' - The public key for the cluster.
--
-- 'preferredMaintenanceWindow', 'awsRedshiftClusterDetails_preferredMaintenanceWindow' - The weekly time range, in Universal Coordinated Time (UTC), during which
-- system maintenance can occur.
--
-- Format: @ \<day>:HH:MM-\<day>:HH:MM@
--
-- For the day values, use @mon@ | @tue@ | @wed@ | @thu@ | @fri@ | @sat@ |
-- @sun@
--
-- For example, @sun:09:32-sun:10:02@
--
-- 'kmsKeyId', 'awsRedshiftClusterDetails_kmsKeyId' - The identifier of the KMS encryption key that is used to encrypt data in
-- the cluster.
--
-- 'clusterParameterGroups', 'awsRedshiftClusterDetails_clusterParameterGroups' - The list of cluster parameter groups that are associated with this
-- cluster.
--
-- 'availabilityZone', 'awsRedshiftClusterDetails_availabilityZone' - The name of the Availability Zone in which the cluster is located.
--
-- 'vpcSecurityGroups', 'awsRedshiftClusterDetails_vpcSecurityGroups' - The list of VPC security groups that the cluster belongs to, if the
-- cluster is in a VPC.
--
-- 'hsmStatus', 'awsRedshiftClusterDetails_hsmStatus' - Information about whether the Amazon Redshift cluster finished applying
-- any changes to hardware security module (HSM) settings that were
-- specified in a modify cluster command.
--
-- 'iamRoles', 'awsRedshiftClusterDetails_iamRoles' - A list of IAM roles that the cluster can use to access other Amazon Web
-- Services services.
--
-- 'pendingActions', 'awsRedshiftClusterDetails_pendingActions' - A list of cluster operations that are waiting to start.
--
-- 'elasticIpStatus', 'awsRedshiftClusterDetails_elasticIpStatus' - Information about the status of the Elastic IP (EIP) address.
--
-- 'clusterVersion', 'awsRedshiftClusterDetails_clusterVersion' - The version ID of the Amazon Redshift engine that runs on the cluster.
--
-- 'nodeType', 'awsRedshiftClusterDetails_nodeType' - The node type for the nodes in the cluster.
--
-- 'nextMaintenanceWindowStartTime', 'awsRedshiftClusterDetails_nextMaintenanceWindowStartTime' - Indicates the start of the next maintenance window.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
--
-- 'clusterCreateTime', 'awsRedshiftClusterDetails_clusterCreateTime' - Indicates when the cluster was created.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
--
-- 'endpoint', 'awsRedshiftClusterDetails_endpoint' - The connection endpoint.
--
-- 'allowVersionUpgrade', 'awsRedshiftClusterDetails_allowVersionUpgrade' - Indicates whether major version upgrades are applied automatically to
-- the cluster during the maintenance window.
--
-- 'clusterStatus', 'awsRedshiftClusterDetails_clusterStatus' - The current status of the cluster.
--
-- Valid values: @available@ | @available, prep-for-resize@ |
-- @available, resize-cleanup@ |@ cancelling-resize@ | @creating@ |
-- @deleting@ | @final-snapshot@ | @hardware-failure@ | @incompatible-hsm@
-- |@ incompatible-network@ | @incompatible-parameters@ |
-- @incompatible-restore@ | @modifying@ | @paused@ | @rebooting@ |
-- @renaming@ | @resizing@ | @rotating-keys@ | @storage-full@ |
-- @updating-hsm@
--
-- 'pendingModifiedValues', 'awsRedshiftClusterDetails_pendingModifiedValues' - A list of changes to the cluster that are currently pending.
--
-- 'clusterNodes', 'awsRedshiftClusterDetails_clusterNodes' - The nodes in the cluster.
--
-- 'dbName', 'awsRedshiftClusterDetails_dbName' - The name of the initial database that was created when the cluster was
-- created.
--
-- The same name is returned for the life of the cluster.
--
-- If an initial database is not specified, a database named @devdev@ is
-- created by default.
newAwsRedshiftClusterDetails ::
  AwsRedshiftClusterDetails
newAwsRedshiftClusterDetails :: AwsRedshiftClusterDetails
newAwsRedshiftClusterDetails =
  AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterResizeInfo
-> Maybe AwsRedshiftClusterRestoreStatus
-> Maybe Int
-> Maybe Bool
-> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [AwsRedshiftClusterClusterSecurityGroup]
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [AwsRedshiftClusterClusterParameterGroup]
-> Maybe Text
-> Maybe [AwsRedshiftClusterVpcSecurityGroup]
-> Maybe AwsRedshiftClusterHsmStatus
-> Maybe [AwsRedshiftClusterIamRole]
-> Maybe [Text]
-> Maybe AwsRedshiftClusterElasticIpStatus
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe AwsRedshiftClusterEndpoint
-> Maybe Bool
-> Maybe Text
-> Maybe AwsRedshiftClusterPendingModifiedValues
-> Maybe [AwsRedshiftClusterClusterNode]
-> Maybe Text
-> AwsRedshiftClusterDetails
AwsRedshiftClusterDetails'
    { $sel:resizeInfo:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterResizeInfo
resizeInfo =
        Maybe AwsRedshiftClusterResizeInfo
forall a. Maybe a
Prelude.Nothing,
      $sel:restoreStatus:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterRestoreStatus
restoreStatus = Maybe AwsRedshiftClusterRestoreStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:manualSnapshotRetentionPeriod:AwsRedshiftClusterDetails' :: Maybe Int
manualSnapshotRetentionPeriod = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:enhancedVpcRouting:AwsRedshiftClusterDetails' :: Maybe Bool
enhancedVpcRouting = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterSnapshotCopyStatus:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
clusterSnapshotCopyStatus = Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterAvailabilityStatus:AwsRedshiftClusterDetails' :: Maybe Text
clusterAvailabilityStatus = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterRevisionNumber:AwsRedshiftClusterDetails' :: Maybe Text
clusterRevisionNumber = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:snapshotScheduleIdentifier:AwsRedshiftClusterDetails' :: Maybe Text
snapshotScheduleIdentifier = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:publiclyAccessible:AwsRedshiftClusterDetails' :: Maybe Bool
publiclyAccessible = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:masterUsername:AwsRedshiftClusterDetails' :: Maybe Text
masterUsername = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:maintenanceTrackName:AwsRedshiftClusterDetails' :: Maybe Text
maintenanceTrackName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:expectedNextSnapshotScheduleTime:AwsRedshiftClusterDetails' :: Maybe Text
expectedNextSnapshotScheduleTime =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:elasticResizeNumberOfNodeOptions:AwsRedshiftClusterDetails' :: Maybe Text
elasticResizeNumberOfNodeOptions =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcId:AwsRedshiftClusterDetails' :: Maybe Text
vpcId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterSecurityGroups:AwsRedshiftClusterDetails' :: Maybe [AwsRedshiftClusterClusterSecurityGroup]
clusterSecurityGroups = Maybe [AwsRedshiftClusterClusterSecurityGroup]
forall a. Maybe a
Prelude.Nothing,
      $sel:automatedSnapshotRetentionPeriod:AwsRedshiftClusterDetails' :: Maybe Int
automatedSnapshotRetentionPeriod =
        Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:snapshotScheduleState:AwsRedshiftClusterDetails' :: Maybe Text
snapshotScheduleState = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:encrypted:AwsRedshiftClusterDetails' :: Maybe Bool
encrypted = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterSubnetGroupName:AwsRedshiftClusterDetails' :: Maybe Text
clusterSubnetGroupName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:expectedNextSnapshotScheduleTimeStatus:AwsRedshiftClusterDetails' :: Maybe Text
expectedNextSnapshotScheduleTimeStatus =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterIdentifier:AwsRedshiftClusterDetails' :: Maybe Text
clusterIdentifier = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:deferredMaintenanceWindows:AwsRedshiftClusterDetails' :: Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
deferredMaintenanceWindows = Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
forall a. Maybe a
Prelude.Nothing,
      $sel:numberOfNodes:AwsRedshiftClusterDetails' :: Maybe Int
numberOfNodes = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterPublicKey:AwsRedshiftClusterDetails' :: Maybe Text
clusterPublicKey = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:preferredMaintenanceWindow:AwsRedshiftClusterDetails' :: Maybe Text
preferredMaintenanceWindow = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyId:AwsRedshiftClusterDetails' :: Maybe Text
kmsKeyId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterParameterGroups:AwsRedshiftClusterDetails' :: Maybe [AwsRedshiftClusterClusterParameterGroup]
clusterParameterGroups = Maybe [AwsRedshiftClusterClusterParameterGroup]
forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZone:AwsRedshiftClusterDetails' :: Maybe Text
availabilityZone = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcSecurityGroups:AwsRedshiftClusterDetails' :: Maybe [AwsRedshiftClusterVpcSecurityGroup]
vpcSecurityGroups = Maybe [AwsRedshiftClusterVpcSecurityGroup]
forall a. Maybe a
Prelude.Nothing,
      $sel:hsmStatus:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterHsmStatus
hsmStatus = Maybe AwsRedshiftClusterHsmStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:iamRoles:AwsRedshiftClusterDetails' :: Maybe [AwsRedshiftClusterIamRole]
iamRoles = Maybe [AwsRedshiftClusterIamRole]
forall a. Maybe a
Prelude.Nothing,
      $sel:pendingActions:AwsRedshiftClusterDetails' :: Maybe [Text]
pendingActions = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:elasticIpStatus:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterElasticIpStatus
elasticIpStatus = Maybe AwsRedshiftClusterElasticIpStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterVersion:AwsRedshiftClusterDetails' :: Maybe Text
clusterVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:nodeType:AwsRedshiftClusterDetails' :: Maybe Text
nodeType = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:nextMaintenanceWindowStartTime:AwsRedshiftClusterDetails' :: Maybe Text
nextMaintenanceWindowStartTime = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterCreateTime:AwsRedshiftClusterDetails' :: Maybe Text
clusterCreateTime = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:endpoint:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterEndpoint
endpoint = Maybe AwsRedshiftClusterEndpoint
forall a. Maybe a
Prelude.Nothing,
      $sel:allowVersionUpgrade:AwsRedshiftClusterDetails' :: Maybe Bool
allowVersionUpgrade = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterStatus:AwsRedshiftClusterDetails' :: Maybe Text
clusterStatus = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:pendingModifiedValues:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterPendingModifiedValues
pendingModifiedValues = Maybe AwsRedshiftClusterPendingModifiedValues
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterNodes:AwsRedshiftClusterDetails' :: Maybe [AwsRedshiftClusterClusterNode]
clusterNodes = Maybe [AwsRedshiftClusterClusterNode]
forall a. Maybe a
Prelude.Nothing,
      $sel:dbName:AwsRedshiftClusterDetails' :: Maybe Text
dbName = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | Information about the resize operation for the cluster.
awsRedshiftClusterDetails_resizeInfo :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe AwsRedshiftClusterResizeInfo)
awsRedshiftClusterDetails_resizeInfo :: (Maybe AwsRedshiftClusterResizeInfo
 -> f (Maybe AwsRedshiftClusterResizeInfo))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_resizeInfo = (AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterResizeInfo)
-> (AwsRedshiftClusterDetails
    -> Maybe AwsRedshiftClusterResizeInfo -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe AwsRedshiftClusterResizeInfo)
     (Maybe AwsRedshiftClusterResizeInfo)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe AwsRedshiftClusterResizeInfo
resizeInfo :: Maybe AwsRedshiftClusterResizeInfo
$sel:resizeInfo:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterResizeInfo
resizeInfo} -> Maybe AwsRedshiftClusterResizeInfo
resizeInfo) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe AwsRedshiftClusterResizeInfo
a -> AwsRedshiftClusterDetails
s {$sel:resizeInfo:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterResizeInfo
resizeInfo = Maybe AwsRedshiftClusterResizeInfo
a} :: AwsRedshiftClusterDetails)

-- | Information about the status of a cluster restore action. Only applies
-- to a cluster that was created by restoring a snapshot.
awsRedshiftClusterDetails_restoreStatus :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe AwsRedshiftClusterRestoreStatus)
awsRedshiftClusterDetails_restoreStatus :: (Maybe AwsRedshiftClusterRestoreStatus
 -> f (Maybe AwsRedshiftClusterRestoreStatus))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_restoreStatus = (AwsRedshiftClusterDetails
 -> Maybe AwsRedshiftClusterRestoreStatus)
-> (AwsRedshiftClusterDetails
    -> Maybe AwsRedshiftClusterRestoreStatus
    -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe AwsRedshiftClusterRestoreStatus)
     (Maybe AwsRedshiftClusterRestoreStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe AwsRedshiftClusterRestoreStatus
restoreStatus :: Maybe AwsRedshiftClusterRestoreStatus
$sel:restoreStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterRestoreStatus
restoreStatus} -> Maybe AwsRedshiftClusterRestoreStatus
restoreStatus) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe AwsRedshiftClusterRestoreStatus
a -> AwsRedshiftClusterDetails
s {$sel:restoreStatus:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterRestoreStatus
restoreStatus = Maybe AwsRedshiftClusterRestoreStatus
a} :: AwsRedshiftClusterDetails)

-- | The default number of days to retain a manual snapshot.
--
-- If the value is -1, the snapshot is retained indefinitely.
--
-- This setting doesn\'t change the retention period of existing snapshots.
--
-- Valid values: Either -1 or an integer between 1 and 3,653
awsRedshiftClusterDetails_manualSnapshotRetentionPeriod :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Int)
awsRedshiftClusterDetails_manualSnapshotRetentionPeriod :: (Maybe Int -> f (Maybe Int))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_manualSnapshotRetentionPeriod = (AwsRedshiftClusterDetails -> Maybe Int)
-> (AwsRedshiftClusterDetails
    -> Maybe Int -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Int
manualSnapshotRetentionPeriod :: Maybe Int
$sel:manualSnapshotRetentionPeriod:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Int
manualSnapshotRetentionPeriod} -> Maybe Int
manualSnapshotRetentionPeriod) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Int
a -> AwsRedshiftClusterDetails
s {$sel:manualSnapshotRetentionPeriod:AwsRedshiftClusterDetails' :: Maybe Int
manualSnapshotRetentionPeriod = Maybe Int
a} :: AwsRedshiftClusterDetails)

-- | Indicates whether to create the cluster with enhanced VPC routing
-- enabled.
awsRedshiftClusterDetails_enhancedVpcRouting :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Bool)
awsRedshiftClusterDetails_enhancedVpcRouting :: (Maybe Bool -> f (Maybe Bool))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_enhancedVpcRouting = (AwsRedshiftClusterDetails -> Maybe Bool)
-> (AwsRedshiftClusterDetails
    -> Maybe Bool -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Bool
enhancedVpcRouting :: Maybe Bool
$sel:enhancedVpcRouting:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Bool
enhancedVpcRouting} -> Maybe Bool
enhancedVpcRouting) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Bool
a -> AwsRedshiftClusterDetails
s {$sel:enhancedVpcRouting:AwsRedshiftClusterDetails' :: Maybe Bool
enhancedVpcRouting = Maybe Bool
a} :: AwsRedshiftClusterDetails)

-- | Information about the destination Region and retention period for the
-- cross-Region snapshot copy.
awsRedshiftClusterDetails_clusterSnapshotCopyStatus :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe AwsRedshiftClusterClusterSnapshotCopyStatus)
awsRedshiftClusterDetails_clusterSnapshotCopyStatus :: (Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
 -> f (Maybe AwsRedshiftClusterClusterSnapshotCopyStatus))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_clusterSnapshotCopyStatus = (AwsRedshiftClusterDetails
 -> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus)
-> (AwsRedshiftClusterDetails
    -> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
    -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe AwsRedshiftClusterClusterSnapshotCopyStatus)
     (Maybe AwsRedshiftClusterClusterSnapshotCopyStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
clusterSnapshotCopyStatus :: Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
$sel:clusterSnapshotCopyStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
clusterSnapshotCopyStatus} -> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
clusterSnapshotCopyStatus) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
a -> AwsRedshiftClusterDetails
s {$sel:clusterSnapshotCopyStatus:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
clusterSnapshotCopyStatus = Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
a} :: AwsRedshiftClusterDetails)

-- | The availability status of the cluster for queries. Possible values are
-- the following:
--
-- -   @Available@ - The cluster is available for queries.
--
-- -   @Unavailable@ - The cluster is not available for queries.
--
-- -   @Maintenance@ - The cluster is intermittently available for queries
--     due to maintenance activities.
--
-- -   @Modifying@ -The cluster is intermittently available for queries due
--     to changes that modify the cluster.
--
-- -   @Failed@ - The cluster failed and is not available for queries.
awsRedshiftClusterDetails_clusterAvailabilityStatus :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_clusterAvailabilityStatus :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_clusterAvailabilityStatus = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
clusterAvailabilityStatus :: Maybe Text
$sel:clusterAvailabilityStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
clusterAvailabilityStatus} -> Maybe Text
clusterAvailabilityStatus) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:clusterAvailabilityStatus:AwsRedshiftClusterDetails' :: Maybe Text
clusterAvailabilityStatus = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | The specific revision number of the database in the cluster.
awsRedshiftClusterDetails_clusterRevisionNumber :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_clusterRevisionNumber :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_clusterRevisionNumber = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
clusterRevisionNumber :: Maybe Text
$sel:clusterRevisionNumber:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
clusterRevisionNumber} -> Maybe Text
clusterRevisionNumber) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:clusterRevisionNumber:AwsRedshiftClusterDetails' :: Maybe Text
clusterRevisionNumber = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | A unique identifier for the cluster snapshot schedule.
awsRedshiftClusterDetails_snapshotScheduleIdentifier :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_snapshotScheduleIdentifier :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_snapshotScheduleIdentifier = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
snapshotScheduleIdentifier :: Maybe Text
$sel:snapshotScheduleIdentifier:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
snapshotScheduleIdentifier} -> Maybe Text
snapshotScheduleIdentifier) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:snapshotScheduleIdentifier:AwsRedshiftClusterDetails' :: Maybe Text
snapshotScheduleIdentifier = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | Whether the cluster can be accessed from a public network.
awsRedshiftClusterDetails_publiclyAccessible :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Bool)
awsRedshiftClusterDetails_publiclyAccessible :: (Maybe Bool -> f (Maybe Bool))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_publiclyAccessible = (AwsRedshiftClusterDetails -> Maybe Bool)
-> (AwsRedshiftClusterDetails
    -> Maybe Bool -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Bool
publiclyAccessible :: Maybe Bool
$sel:publiclyAccessible:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Bool
publiclyAccessible} -> Maybe Bool
publiclyAccessible) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Bool
a -> AwsRedshiftClusterDetails
s {$sel:publiclyAccessible:AwsRedshiftClusterDetails' :: Maybe Bool
publiclyAccessible = Maybe Bool
a} :: AwsRedshiftClusterDetails)

-- | The master user name for the cluster. This name is used to connect to
-- the database that is specified in as the value of @DBName@.
awsRedshiftClusterDetails_masterUsername :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_masterUsername :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_masterUsername = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
masterUsername :: Maybe Text
$sel:masterUsername:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
masterUsername} -> Maybe Text
masterUsername) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:masterUsername:AwsRedshiftClusterDetails' :: Maybe Text
masterUsername = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | The name of the maintenance track for the cluster.
awsRedshiftClusterDetails_maintenanceTrackName :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_maintenanceTrackName :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_maintenanceTrackName = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
maintenanceTrackName :: Maybe Text
$sel:maintenanceTrackName:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
maintenanceTrackName} -> Maybe Text
maintenanceTrackName) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:maintenanceTrackName:AwsRedshiftClusterDetails' :: Maybe Text
maintenanceTrackName = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | Indicates when the next snapshot is expected to be taken. The cluster
-- must have a valid snapshot schedule and have backups enabled.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
awsRedshiftClusterDetails_expectedNextSnapshotScheduleTime :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_expectedNextSnapshotScheduleTime :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_expectedNextSnapshotScheduleTime = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
expectedNextSnapshotScheduleTime :: Maybe Text
$sel:expectedNextSnapshotScheduleTime:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
expectedNextSnapshotScheduleTime} -> Maybe Text
expectedNextSnapshotScheduleTime) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:expectedNextSnapshotScheduleTime:AwsRedshiftClusterDetails' :: Maybe Text
expectedNextSnapshotScheduleTime = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | The number of nodes that you can use the elastic resize method to resize
-- the cluster to.
awsRedshiftClusterDetails_elasticResizeNumberOfNodeOptions :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_elasticResizeNumberOfNodeOptions :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_elasticResizeNumberOfNodeOptions = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
elasticResizeNumberOfNodeOptions :: Maybe Text
$sel:elasticResizeNumberOfNodeOptions:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
elasticResizeNumberOfNodeOptions} -> Maybe Text
elasticResizeNumberOfNodeOptions) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:elasticResizeNumberOfNodeOptions:AwsRedshiftClusterDetails' :: Maybe Text
elasticResizeNumberOfNodeOptions = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | The identifier of the VPC that the cluster is in, if the cluster is in a
-- VPC.
awsRedshiftClusterDetails_vpcId :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_vpcId :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_vpcId = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
vpcId :: Maybe Text
$sel:vpcId:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
vpcId} -> Maybe Text
vpcId) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:vpcId:AwsRedshiftClusterDetails' :: Maybe Text
vpcId = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | A list of cluster security groups that are associated with the cluster.
awsRedshiftClusterDetails_clusterSecurityGroups :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe [AwsRedshiftClusterClusterSecurityGroup])
awsRedshiftClusterDetails_clusterSecurityGroups :: (Maybe [AwsRedshiftClusterClusterSecurityGroup]
 -> f (Maybe [AwsRedshiftClusterClusterSecurityGroup]))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_clusterSecurityGroups = (AwsRedshiftClusterDetails
 -> Maybe [AwsRedshiftClusterClusterSecurityGroup])
-> (AwsRedshiftClusterDetails
    -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
    -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe [AwsRedshiftClusterClusterSecurityGroup])
     (Maybe [AwsRedshiftClusterClusterSecurityGroup])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe [AwsRedshiftClusterClusterSecurityGroup]
clusterSecurityGroups :: Maybe [AwsRedshiftClusterClusterSecurityGroup]
$sel:clusterSecurityGroups:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe [AwsRedshiftClusterClusterSecurityGroup]
clusterSecurityGroups} -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
clusterSecurityGroups) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe [AwsRedshiftClusterClusterSecurityGroup]
a -> AwsRedshiftClusterDetails
s {$sel:clusterSecurityGroups:AwsRedshiftClusterDetails' :: Maybe [AwsRedshiftClusterClusterSecurityGroup]
clusterSecurityGroups = Maybe [AwsRedshiftClusterClusterSecurityGroup]
a} :: AwsRedshiftClusterDetails) ((Maybe [AwsRedshiftClusterClusterSecurityGroup]
  -> f (Maybe [AwsRedshiftClusterClusterSecurityGroup]))
 -> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails)
-> ((Maybe [AwsRedshiftClusterClusterSecurityGroup]
     -> f (Maybe [AwsRedshiftClusterClusterSecurityGroup]))
    -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
    -> f (Maybe [AwsRedshiftClusterClusterSecurityGroup]))
-> (Maybe [AwsRedshiftClusterClusterSecurityGroup]
    -> f (Maybe [AwsRedshiftClusterClusterSecurityGroup]))
-> AwsRedshiftClusterDetails
-> f AwsRedshiftClusterDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AwsRedshiftClusterClusterSecurityGroup]
  [AwsRedshiftClusterClusterSecurityGroup]
  [AwsRedshiftClusterClusterSecurityGroup]
  [AwsRedshiftClusterClusterSecurityGroup]
-> Iso
     (Maybe [AwsRedshiftClusterClusterSecurityGroup])
     (Maybe [AwsRedshiftClusterClusterSecurityGroup])
     (Maybe [AwsRedshiftClusterClusterSecurityGroup])
     (Maybe [AwsRedshiftClusterClusterSecurityGroup])
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
  [AwsRedshiftClusterClusterSecurityGroup]
  [AwsRedshiftClusterClusterSecurityGroup]
  [AwsRedshiftClusterClusterSecurityGroup]
  [AwsRedshiftClusterClusterSecurityGroup]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The number of days that automatic cluster snapshots are retained.
awsRedshiftClusterDetails_automatedSnapshotRetentionPeriod :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Int)
awsRedshiftClusterDetails_automatedSnapshotRetentionPeriod :: (Maybe Int -> f (Maybe Int))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_automatedSnapshotRetentionPeriod = (AwsRedshiftClusterDetails -> Maybe Int)
-> (AwsRedshiftClusterDetails
    -> Maybe Int -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Int
automatedSnapshotRetentionPeriod :: Maybe Int
$sel:automatedSnapshotRetentionPeriod:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Int
automatedSnapshotRetentionPeriod} -> Maybe Int
automatedSnapshotRetentionPeriod) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Int
a -> AwsRedshiftClusterDetails
s {$sel:automatedSnapshotRetentionPeriod:AwsRedshiftClusterDetails' :: Maybe Int
automatedSnapshotRetentionPeriod = Maybe Int
a} :: AwsRedshiftClusterDetails)

-- | The current state of the cluster snapshot schedule.
--
-- Valid values: @MODIFYING@ | @ACTIVE@ | @FAILED@
awsRedshiftClusterDetails_snapshotScheduleState :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_snapshotScheduleState :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_snapshotScheduleState = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
snapshotScheduleState :: Maybe Text
$sel:snapshotScheduleState:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
snapshotScheduleState} -> Maybe Text
snapshotScheduleState) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:snapshotScheduleState:AwsRedshiftClusterDetails' :: Maybe Text
snapshotScheduleState = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | Indicates whether the data in the cluster is encrypted at rest.
awsRedshiftClusterDetails_encrypted :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Bool)
awsRedshiftClusterDetails_encrypted :: (Maybe Bool -> f (Maybe Bool))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_encrypted = (AwsRedshiftClusterDetails -> Maybe Bool)
-> (AwsRedshiftClusterDetails
    -> Maybe Bool -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Bool
encrypted :: Maybe Bool
$sel:encrypted:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Bool
encrypted} -> Maybe Bool
encrypted) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Bool
a -> AwsRedshiftClusterDetails
s {$sel:encrypted:AwsRedshiftClusterDetails' :: Maybe Bool
encrypted = Maybe Bool
a} :: AwsRedshiftClusterDetails)

-- | The name of the subnet group that is associated with the cluster. This
-- parameter is valid only when the cluster is in a VPC.
awsRedshiftClusterDetails_clusterSubnetGroupName :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_clusterSubnetGroupName :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_clusterSubnetGroupName = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
clusterSubnetGroupName :: Maybe Text
$sel:clusterSubnetGroupName:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
clusterSubnetGroupName} -> Maybe Text
clusterSubnetGroupName) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:clusterSubnetGroupName:AwsRedshiftClusterDetails' :: Maybe Text
clusterSubnetGroupName = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | The status of the next expected snapshot.
--
-- Valid values: @OnTrack@ | @Pending@
awsRedshiftClusterDetails_expectedNextSnapshotScheduleTimeStatus :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_expectedNextSnapshotScheduleTimeStatus :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_expectedNextSnapshotScheduleTimeStatus = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
expectedNextSnapshotScheduleTimeStatus :: Maybe Text
$sel:expectedNextSnapshotScheduleTimeStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
expectedNextSnapshotScheduleTimeStatus} -> Maybe Text
expectedNextSnapshotScheduleTimeStatus) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:expectedNextSnapshotScheduleTimeStatus:AwsRedshiftClusterDetails' :: Maybe Text
expectedNextSnapshotScheduleTimeStatus = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | The unique identifier of the cluster.
awsRedshiftClusterDetails_clusterIdentifier :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_clusterIdentifier :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_clusterIdentifier = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
clusterIdentifier :: Maybe Text
$sel:clusterIdentifier:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
clusterIdentifier} -> Maybe Text
clusterIdentifier) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:clusterIdentifier:AwsRedshiftClusterDetails' :: Maybe Text
clusterIdentifier = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | List of time windows during which maintenance was deferred.
awsRedshiftClusterDetails_deferredMaintenanceWindows :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe [AwsRedshiftClusterDeferredMaintenanceWindow])
awsRedshiftClusterDetails_deferredMaintenanceWindows :: (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
 -> f (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_deferredMaintenanceWindows = (AwsRedshiftClusterDetails
 -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow])
-> (AwsRedshiftClusterDetails
    -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
    -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow])
     (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
deferredMaintenanceWindows :: Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
$sel:deferredMaintenanceWindows:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
deferredMaintenanceWindows} -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
deferredMaintenanceWindows) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
a -> AwsRedshiftClusterDetails
s {$sel:deferredMaintenanceWindows:AwsRedshiftClusterDetails' :: Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
deferredMaintenanceWindows = Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
a} :: AwsRedshiftClusterDetails) ((Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
  -> f (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]))
 -> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails)
-> ((Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
     -> f (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]))
    -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
    -> f (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]))
-> (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
    -> f (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]))
-> AwsRedshiftClusterDetails
-> f AwsRedshiftClusterDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AwsRedshiftClusterDeferredMaintenanceWindow]
  [AwsRedshiftClusterDeferredMaintenanceWindow]
  [AwsRedshiftClusterDeferredMaintenanceWindow]
  [AwsRedshiftClusterDeferredMaintenanceWindow]
-> Iso
     (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow])
     (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow])
     (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow])
     (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow])
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
  [AwsRedshiftClusterDeferredMaintenanceWindow]
  [AwsRedshiftClusterDeferredMaintenanceWindow]
  [AwsRedshiftClusterDeferredMaintenanceWindow]
  [AwsRedshiftClusterDeferredMaintenanceWindow]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The number of compute nodes in the cluster.
awsRedshiftClusterDetails_numberOfNodes :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Int)
awsRedshiftClusterDetails_numberOfNodes :: (Maybe Int -> f (Maybe Int))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_numberOfNodes = (AwsRedshiftClusterDetails -> Maybe Int)
-> (AwsRedshiftClusterDetails
    -> Maybe Int -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Int
numberOfNodes :: Maybe Int
$sel:numberOfNodes:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Int
numberOfNodes} -> Maybe Int
numberOfNodes) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Int
a -> AwsRedshiftClusterDetails
s {$sel:numberOfNodes:AwsRedshiftClusterDetails' :: Maybe Int
numberOfNodes = Maybe Int
a} :: AwsRedshiftClusterDetails)

-- | The public key for the cluster.
awsRedshiftClusterDetails_clusterPublicKey :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_clusterPublicKey :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_clusterPublicKey = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
clusterPublicKey :: Maybe Text
$sel:clusterPublicKey:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
clusterPublicKey} -> Maybe Text
clusterPublicKey) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:clusterPublicKey:AwsRedshiftClusterDetails' :: Maybe Text
clusterPublicKey = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | The weekly time range, in Universal Coordinated Time (UTC), during which
-- system maintenance can occur.
--
-- Format: @ \<day>:HH:MM-\<day>:HH:MM@
--
-- For the day values, use @mon@ | @tue@ | @wed@ | @thu@ | @fri@ | @sat@ |
-- @sun@
--
-- For example, @sun:09:32-sun:10:02@
awsRedshiftClusterDetails_preferredMaintenanceWindow :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_preferredMaintenanceWindow :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_preferredMaintenanceWindow = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
preferredMaintenanceWindow :: Maybe Text
$sel:preferredMaintenanceWindow:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
preferredMaintenanceWindow} -> Maybe Text
preferredMaintenanceWindow) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:preferredMaintenanceWindow:AwsRedshiftClusterDetails' :: Maybe Text
preferredMaintenanceWindow = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | The identifier of the KMS encryption key that is used to encrypt data in
-- the cluster.
awsRedshiftClusterDetails_kmsKeyId :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_kmsKeyId :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_kmsKeyId = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
kmsKeyId :: Maybe Text
$sel:kmsKeyId:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
kmsKeyId} -> Maybe Text
kmsKeyId) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:kmsKeyId:AwsRedshiftClusterDetails' :: Maybe Text
kmsKeyId = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | The list of cluster parameter groups that are associated with this
-- cluster.
awsRedshiftClusterDetails_clusterParameterGroups :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe [AwsRedshiftClusterClusterParameterGroup])
awsRedshiftClusterDetails_clusterParameterGroups :: (Maybe [AwsRedshiftClusterClusterParameterGroup]
 -> f (Maybe [AwsRedshiftClusterClusterParameterGroup]))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_clusterParameterGroups = (AwsRedshiftClusterDetails
 -> Maybe [AwsRedshiftClusterClusterParameterGroup])
-> (AwsRedshiftClusterDetails
    -> Maybe [AwsRedshiftClusterClusterParameterGroup]
    -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe [AwsRedshiftClusterClusterParameterGroup])
     (Maybe [AwsRedshiftClusterClusterParameterGroup])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe [AwsRedshiftClusterClusterParameterGroup]
clusterParameterGroups :: Maybe [AwsRedshiftClusterClusterParameterGroup]
$sel:clusterParameterGroups:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe [AwsRedshiftClusterClusterParameterGroup]
clusterParameterGroups} -> Maybe [AwsRedshiftClusterClusterParameterGroup]
clusterParameterGroups) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe [AwsRedshiftClusterClusterParameterGroup]
a -> AwsRedshiftClusterDetails
s {$sel:clusterParameterGroups:AwsRedshiftClusterDetails' :: Maybe [AwsRedshiftClusterClusterParameterGroup]
clusterParameterGroups = Maybe [AwsRedshiftClusterClusterParameterGroup]
a} :: AwsRedshiftClusterDetails) ((Maybe [AwsRedshiftClusterClusterParameterGroup]
  -> f (Maybe [AwsRedshiftClusterClusterParameterGroup]))
 -> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails)
-> ((Maybe [AwsRedshiftClusterClusterParameterGroup]
     -> f (Maybe [AwsRedshiftClusterClusterParameterGroup]))
    -> Maybe [AwsRedshiftClusterClusterParameterGroup]
    -> f (Maybe [AwsRedshiftClusterClusterParameterGroup]))
-> (Maybe [AwsRedshiftClusterClusterParameterGroup]
    -> f (Maybe [AwsRedshiftClusterClusterParameterGroup]))
-> AwsRedshiftClusterDetails
-> f AwsRedshiftClusterDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AwsRedshiftClusterClusterParameterGroup]
  [AwsRedshiftClusterClusterParameterGroup]
  [AwsRedshiftClusterClusterParameterGroup]
  [AwsRedshiftClusterClusterParameterGroup]
-> Iso
     (Maybe [AwsRedshiftClusterClusterParameterGroup])
     (Maybe [AwsRedshiftClusterClusterParameterGroup])
     (Maybe [AwsRedshiftClusterClusterParameterGroup])
     (Maybe [AwsRedshiftClusterClusterParameterGroup])
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
  [AwsRedshiftClusterClusterParameterGroup]
  [AwsRedshiftClusterClusterParameterGroup]
  [AwsRedshiftClusterClusterParameterGroup]
  [AwsRedshiftClusterClusterParameterGroup]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the Availability Zone in which the cluster is located.
awsRedshiftClusterDetails_availabilityZone :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_availabilityZone :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_availabilityZone = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:availabilityZone:AwsRedshiftClusterDetails' :: Maybe Text
availabilityZone = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | The list of VPC security groups that the cluster belongs to, if the
-- cluster is in a VPC.
awsRedshiftClusterDetails_vpcSecurityGroups :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe [AwsRedshiftClusterVpcSecurityGroup])
awsRedshiftClusterDetails_vpcSecurityGroups :: (Maybe [AwsRedshiftClusterVpcSecurityGroup]
 -> f (Maybe [AwsRedshiftClusterVpcSecurityGroup]))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_vpcSecurityGroups = (AwsRedshiftClusterDetails
 -> Maybe [AwsRedshiftClusterVpcSecurityGroup])
-> (AwsRedshiftClusterDetails
    -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
    -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe [AwsRedshiftClusterVpcSecurityGroup])
     (Maybe [AwsRedshiftClusterVpcSecurityGroup])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe [AwsRedshiftClusterVpcSecurityGroup]
vpcSecurityGroups :: Maybe [AwsRedshiftClusterVpcSecurityGroup]
$sel:vpcSecurityGroups:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe [AwsRedshiftClusterVpcSecurityGroup]
vpcSecurityGroups} -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
vpcSecurityGroups) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe [AwsRedshiftClusterVpcSecurityGroup]
a -> AwsRedshiftClusterDetails
s {$sel:vpcSecurityGroups:AwsRedshiftClusterDetails' :: Maybe [AwsRedshiftClusterVpcSecurityGroup]
vpcSecurityGroups = Maybe [AwsRedshiftClusterVpcSecurityGroup]
a} :: AwsRedshiftClusterDetails) ((Maybe [AwsRedshiftClusterVpcSecurityGroup]
  -> f (Maybe [AwsRedshiftClusterVpcSecurityGroup]))
 -> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails)
-> ((Maybe [AwsRedshiftClusterVpcSecurityGroup]
     -> f (Maybe [AwsRedshiftClusterVpcSecurityGroup]))
    -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
    -> f (Maybe [AwsRedshiftClusterVpcSecurityGroup]))
-> (Maybe [AwsRedshiftClusterVpcSecurityGroup]
    -> f (Maybe [AwsRedshiftClusterVpcSecurityGroup]))
-> AwsRedshiftClusterDetails
-> f AwsRedshiftClusterDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AwsRedshiftClusterVpcSecurityGroup]
  [AwsRedshiftClusterVpcSecurityGroup]
  [AwsRedshiftClusterVpcSecurityGroup]
  [AwsRedshiftClusterVpcSecurityGroup]
-> Iso
     (Maybe [AwsRedshiftClusterVpcSecurityGroup])
     (Maybe [AwsRedshiftClusterVpcSecurityGroup])
     (Maybe [AwsRedshiftClusterVpcSecurityGroup])
     (Maybe [AwsRedshiftClusterVpcSecurityGroup])
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
  [AwsRedshiftClusterVpcSecurityGroup]
  [AwsRedshiftClusterVpcSecurityGroup]
  [AwsRedshiftClusterVpcSecurityGroup]
  [AwsRedshiftClusterVpcSecurityGroup]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Information about whether the Amazon Redshift cluster finished applying
-- any changes to hardware security module (HSM) settings that were
-- specified in a modify cluster command.
awsRedshiftClusterDetails_hsmStatus :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe AwsRedshiftClusterHsmStatus)
awsRedshiftClusterDetails_hsmStatus :: (Maybe AwsRedshiftClusterHsmStatus
 -> f (Maybe AwsRedshiftClusterHsmStatus))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_hsmStatus = (AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterHsmStatus)
-> (AwsRedshiftClusterDetails
    -> Maybe AwsRedshiftClusterHsmStatus -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe AwsRedshiftClusterHsmStatus)
     (Maybe AwsRedshiftClusterHsmStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe AwsRedshiftClusterHsmStatus
hsmStatus :: Maybe AwsRedshiftClusterHsmStatus
$sel:hsmStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterHsmStatus
hsmStatus} -> Maybe AwsRedshiftClusterHsmStatus
hsmStatus) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe AwsRedshiftClusterHsmStatus
a -> AwsRedshiftClusterDetails
s {$sel:hsmStatus:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterHsmStatus
hsmStatus = Maybe AwsRedshiftClusterHsmStatus
a} :: AwsRedshiftClusterDetails)

-- | A list of IAM roles that the cluster can use to access other Amazon Web
-- Services services.
awsRedshiftClusterDetails_iamRoles :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe [AwsRedshiftClusterIamRole])
awsRedshiftClusterDetails_iamRoles :: (Maybe [AwsRedshiftClusterIamRole]
 -> f (Maybe [AwsRedshiftClusterIamRole]))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_iamRoles = (AwsRedshiftClusterDetails -> Maybe [AwsRedshiftClusterIamRole])
-> (AwsRedshiftClusterDetails
    -> Maybe [AwsRedshiftClusterIamRole] -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe [AwsRedshiftClusterIamRole])
     (Maybe [AwsRedshiftClusterIamRole])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe [AwsRedshiftClusterIamRole]
iamRoles :: Maybe [AwsRedshiftClusterIamRole]
$sel:iamRoles:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe [AwsRedshiftClusterIamRole]
iamRoles} -> Maybe [AwsRedshiftClusterIamRole]
iamRoles) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe [AwsRedshiftClusterIamRole]
a -> AwsRedshiftClusterDetails
s {$sel:iamRoles:AwsRedshiftClusterDetails' :: Maybe [AwsRedshiftClusterIamRole]
iamRoles = Maybe [AwsRedshiftClusterIamRole]
a} :: AwsRedshiftClusterDetails) ((Maybe [AwsRedshiftClusterIamRole]
  -> f (Maybe [AwsRedshiftClusterIamRole]))
 -> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails)
-> ((Maybe [AwsRedshiftClusterIamRole]
     -> f (Maybe [AwsRedshiftClusterIamRole]))
    -> Maybe [AwsRedshiftClusterIamRole]
    -> f (Maybe [AwsRedshiftClusterIamRole]))
-> (Maybe [AwsRedshiftClusterIamRole]
    -> f (Maybe [AwsRedshiftClusterIamRole]))
-> AwsRedshiftClusterDetails
-> f AwsRedshiftClusterDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AwsRedshiftClusterIamRole]
  [AwsRedshiftClusterIamRole]
  [AwsRedshiftClusterIamRole]
  [AwsRedshiftClusterIamRole]
-> Iso
     (Maybe [AwsRedshiftClusterIamRole])
     (Maybe [AwsRedshiftClusterIamRole])
     (Maybe [AwsRedshiftClusterIamRole])
     (Maybe [AwsRedshiftClusterIamRole])
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
  [AwsRedshiftClusterIamRole]
  [AwsRedshiftClusterIamRole]
  [AwsRedshiftClusterIamRole]
  [AwsRedshiftClusterIamRole]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A list of cluster operations that are waiting to start.
awsRedshiftClusterDetails_pendingActions :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe [Prelude.Text])
awsRedshiftClusterDetails_pendingActions :: (Maybe [Text] -> f (Maybe [Text]))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_pendingActions = (AwsRedshiftClusterDetails -> Maybe [Text])
-> (AwsRedshiftClusterDetails
    -> Maybe [Text] -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe [Text]
pendingActions :: Maybe [Text]
$sel:pendingActions:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe [Text]
pendingActions} -> Maybe [Text]
pendingActions) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe [Text]
a -> AwsRedshiftClusterDetails
s {$sel:pendingActions:AwsRedshiftClusterDetails' :: Maybe [Text]
pendingActions = Maybe [Text]
a} :: AwsRedshiftClusterDetails) ((Maybe [Text] -> f (Maybe [Text]))
 -> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> AwsRedshiftClusterDetails
-> f AwsRedshiftClusterDetails
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

-- | Information about the status of the Elastic IP (EIP) address.
awsRedshiftClusterDetails_elasticIpStatus :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe AwsRedshiftClusterElasticIpStatus)
awsRedshiftClusterDetails_elasticIpStatus :: (Maybe AwsRedshiftClusterElasticIpStatus
 -> f (Maybe AwsRedshiftClusterElasticIpStatus))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_elasticIpStatus = (AwsRedshiftClusterDetails
 -> Maybe AwsRedshiftClusterElasticIpStatus)
-> (AwsRedshiftClusterDetails
    -> Maybe AwsRedshiftClusterElasticIpStatus
    -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe AwsRedshiftClusterElasticIpStatus)
     (Maybe AwsRedshiftClusterElasticIpStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe AwsRedshiftClusterElasticIpStatus
elasticIpStatus :: Maybe AwsRedshiftClusterElasticIpStatus
$sel:elasticIpStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe AwsRedshiftClusterElasticIpStatus
elasticIpStatus} -> Maybe AwsRedshiftClusterElasticIpStatus
elasticIpStatus) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe AwsRedshiftClusterElasticIpStatus
a -> AwsRedshiftClusterDetails
s {$sel:elasticIpStatus:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterElasticIpStatus
elasticIpStatus = Maybe AwsRedshiftClusterElasticIpStatus
a} :: AwsRedshiftClusterDetails)

-- | The version ID of the Amazon Redshift engine that runs on the cluster.
awsRedshiftClusterDetails_clusterVersion :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_clusterVersion :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_clusterVersion = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
clusterVersion :: Maybe Text
$sel:clusterVersion:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
clusterVersion} -> Maybe Text
clusterVersion) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:clusterVersion:AwsRedshiftClusterDetails' :: Maybe Text
clusterVersion = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | The node type for the nodes in the cluster.
awsRedshiftClusterDetails_nodeType :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_nodeType :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_nodeType = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
nodeType :: Maybe Text
$sel:nodeType:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
nodeType} -> Maybe Text
nodeType) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:nodeType:AwsRedshiftClusterDetails' :: Maybe Text
nodeType = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | Indicates the start of the next maintenance window.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
awsRedshiftClusterDetails_nextMaintenanceWindowStartTime :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_nextMaintenanceWindowStartTime :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_nextMaintenanceWindowStartTime = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
nextMaintenanceWindowStartTime :: Maybe Text
$sel:nextMaintenanceWindowStartTime:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
nextMaintenanceWindowStartTime} -> Maybe Text
nextMaintenanceWindowStartTime) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:nextMaintenanceWindowStartTime:AwsRedshiftClusterDetails' :: Maybe Text
nextMaintenanceWindowStartTime = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | Indicates when the cluster was created.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
awsRedshiftClusterDetails_clusterCreateTime :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_clusterCreateTime :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_clusterCreateTime = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
clusterCreateTime :: Maybe Text
$sel:clusterCreateTime:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
clusterCreateTime} -> Maybe Text
clusterCreateTime) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:clusterCreateTime:AwsRedshiftClusterDetails' :: Maybe Text
clusterCreateTime = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | The connection endpoint.
awsRedshiftClusterDetails_endpoint :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe AwsRedshiftClusterEndpoint)
awsRedshiftClusterDetails_endpoint :: (Maybe AwsRedshiftClusterEndpoint
 -> f (Maybe AwsRedshiftClusterEndpoint))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_endpoint = (AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterEndpoint)
-> (AwsRedshiftClusterDetails
    -> Maybe AwsRedshiftClusterEndpoint -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe AwsRedshiftClusterEndpoint)
     (Maybe AwsRedshiftClusterEndpoint)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe AwsRedshiftClusterEndpoint
endpoint :: Maybe AwsRedshiftClusterEndpoint
$sel:endpoint:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterEndpoint
endpoint} -> Maybe AwsRedshiftClusterEndpoint
endpoint) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe AwsRedshiftClusterEndpoint
a -> AwsRedshiftClusterDetails
s {$sel:endpoint:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterEndpoint
endpoint = Maybe AwsRedshiftClusterEndpoint
a} :: AwsRedshiftClusterDetails)

-- | Indicates whether major version upgrades are applied automatically to
-- the cluster during the maintenance window.
awsRedshiftClusterDetails_allowVersionUpgrade :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Bool)
awsRedshiftClusterDetails_allowVersionUpgrade :: (Maybe Bool -> f (Maybe Bool))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_allowVersionUpgrade = (AwsRedshiftClusterDetails -> Maybe Bool)
-> (AwsRedshiftClusterDetails
    -> Maybe Bool -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Bool
allowVersionUpgrade :: Maybe Bool
$sel:allowVersionUpgrade:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Bool
allowVersionUpgrade} -> Maybe Bool
allowVersionUpgrade) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Bool
a -> AwsRedshiftClusterDetails
s {$sel:allowVersionUpgrade:AwsRedshiftClusterDetails' :: Maybe Bool
allowVersionUpgrade = Maybe Bool
a} :: AwsRedshiftClusterDetails)

-- | The current status of the cluster.
--
-- Valid values: @available@ | @available, prep-for-resize@ |
-- @available, resize-cleanup@ |@ cancelling-resize@ | @creating@ |
-- @deleting@ | @final-snapshot@ | @hardware-failure@ | @incompatible-hsm@
-- |@ incompatible-network@ | @incompatible-parameters@ |
-- @incompatible-restore@ | @modifying@ | @paused@ | @rebooting@ |
-- @renaming@ | @resizing@ | @rotating-keys@ | @storage-full@ |
-- @updating-hsm@
awsRedshiftClusterDetails_clusterStatus :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_clusterStatus :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_clusterStatus = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
clusterStatus :: Maybe Text
$sel:clusterStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
clusterStatus} -> Maybe Text
clusterStatus) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:clusterStatus:AwsRedshiftClusterDetails' :: Maybe Text
clusterStatus = Maybe Text
a} :: AwsRedshiftClusterDetails)

-- | A list of changes to the cluster that are currently pending.
awsRedshiftClusterDetails_pendingModifiedValues :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe AwsRedshiftClusterPendingModifiedValues)
awsRedshiftClusterDetails_pendingModifiedValues :: (Maybe AwsRedshiftClusterPendingModifiedValues
 -> f (Maybe AwsRedshiftClusterPendingModifiedValues))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_pendingModifiedValues = (AwsRedshiftClusterDetails
 -> Maybe AwsRedshiftClusterPendingModifiedValues)
-> (AwsRedshiftClusterDetails
    -> Maybe AwsRedshiftClusterPendingModifiedValues
    -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe AwsRedshiftClusterPendingModifiedValues)
     (Maybe AwsRedshiftClusterPendingModifiedValues)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe AwsRedshiftClusterPendingModifiedValues
pendingModifiedValues :: Maybe AwsRedshiftClusterPendingModifiedValues
$sel:pendingModifiedValues:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe AwsRedshiftClusterPendingModifiedValues
pendingModifiedValues} -> Maybe AwsRedshiftClusterPendingModifiedValues
pendingModifiedValues) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe AwsRedshiftClusterPendingModifiedValues
a -> AwsRedshiftClusterDetails
s {$sel:pendingModifiedValues:AwsRedshiftClusterDetails' :: Maybe AwsRedshiftClusterPendingModifiedValues
pendingModifiedValues = Maybe AwsRedshiftClusterPendingModifiedValues
a} :: AwsRedshiftClusterDetails)

-- | The nodes in the cluster.
awsRedshiftClusterDetails_clusterNodes :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe [AwsRedshiftClusterClusterNode])
awsRedshiftClusterDetails_clusterNodes :: (Maybe [AwsRedshiftClusterClusterNode]
 -> f (Maybe [AwsRedshiftClusterClusterNode]))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_clusterNodes = (AwsRedshiftClusterDetails
 -> Maybe [AwsRedshiftClusterClusterNode])
-> (AwsRedshiftClusterDetails
    -> Maybe [AwsRedshiftClusterClusterNode]
    -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe [AwsRedshiftClusterClusterNode])
     (Maybe [AwsRedshiftClusterClusterNode])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe [AwsRedshiftClusterClusterNode]
clusterNodes :: Maybe [AwsRedshiftClusterClusterNode]
$sel:clusterNodes:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe [AwsRedshiftClusterClusterNode]
clusterNodes} -> Maybe [AwsRedshiftClusterClusterNode]
clusterNodes) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe [AwsRedshiftClusterClusterNode]
a -> AwsRedshiftClusterDetails
s {$sel:clusterNodes:AwsRedshiftClusterDetails' :: Maybe [AwsRedshiftClusterClusterNode]
clusterNodes = Maybe [AwsRedshiftClusterClusterNode]
a} :: AwsRedshiftClusterDetails) ((Maybe [AwsRedshiftClusterClusterNode]
  -> f (Maybe [AwsRedshiftClusterClusterNode]))
 -> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails)
-> ((Maybe [AwsRedshiftClusterClusterNode]
     -> f (Maybe [AwsRedshiftClusterClusterNode]))
    -> Maybe [AwsRedshiftClusterClusterNode]
    -> f (Maybe [AwsRedshiftClusterClusterNode]))
-> (Maybe [AwsRedshiftClusterClusterNode]
    -> f (Maybe [AwsRedshiftClusterClusterNode]))
-> AwsRedshiftClusterDetails
-> f AwsRedshiftClusterDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AwsRedshiftClusterClusterNode]
  [AwsRedshiftClusterClusterNode]
  [AwsRedshiftClusterClusterNode]
  [AwsRedshiftClusterClusterNode]
-> Iso
     (Maybe [AwsRedshiftClusterClusterNode])
     (Maybe [AwsRedshiftClusterClusterNode])
     (Maybe [AwsRedshiftClusterClusterNode])
     (Maybe [AwsRedshiftClusterClusterNode])
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
  [AwsRedshiftClusterClusterNode]
  [AwsRedshiftClusterClusterNode]
  [AwsRedshiftClusterClusterNode]
  [AwsRedshiftClusterClusterNode]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the initial database that was created when the cluster was
-- created.
--
-- The same name is returned for the life of the cluster.
--
-- If an initial database is not specified, a database named @devdev@ is
-- created by default.
awsRedshiftClusterDetails_dbName :: Lens.Lens' AwsRedshiftClusterDetails (Prelude.Maybe Prelude.Text)
awsRedshiftClusterDetails_dbName :: (Maybe Text -> f (Maybe Text))
-> AwsRedshiftClusterDetails -> f AwsRedshiftClusterDetails
awsRedshiftClusterDetails_dbName = (AwsRedshiftClusterDetails -> Maybe Text)
-> (AwsRedshiftClusterDetails
    -> Maybe Text -> AwsRedshiftClusterDetails)
-> Lens
     AwsRedshiftClusterDetails
     AwsRedshiftClusterDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsRedshiftClusterDetails' {Maybe Text
dbName :: Maybe Text
$sel:dbName:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
dbName} -> Maybe Text
dbName) (\s :: AwsRedshiftClusterDetails
s@AwsRedshiftClusterDetails' {} Maybe Text
a -> AwsRedshiftClusterDetails
s {$sel:dbName:AwsRedshiftClusterDetails' :: Maybe Text
dbName = Maybe Text
a} :: AwsRedshiftClusterDetails)

instance Core.FromJSON AwsRedshiftClusterDetails where
  parseJSON :: Value -> Parser AwsRedshiftClusterDetails
parseJSON =
    String
-> (Object -> Parser AwsRedshiftClusterDetails)
-> Value
-> Parser AwsRedshiftClusterDetails
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"AwsRedshiftClusterDetails"
      ( \Object
x ->
          Maybe AwsRedshiftClusterResizeInfo
-> Maybe AwsRedshiftClusterRestoreStatus
-> Maybe Int
-> Maybe Bool
-> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [AwsRedshiftClusterClusterSecurityGroup]
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [AwsRedshiftClusterClusterParameterGroup]
-> Maybe Text
-> Maybe [AwsRedshiftClusterVpcSecurityGroup]
-> Maybe AwsRedshiftClusterHsmStatus
-> Maybe [AwsRedshiftClusterIamRole]
-> Maybe [Text]
-> Maybe AwsRedshiftClusterElasticIpStatus
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe AwsRedshiftClusterEndpoint
-> Maybe Bool
-> Maybe Text
-> Maybe AwsRedshiftClusterPendingModifiedValues
-> Maybe [AwsRedshiftClusterClusterNode]
-> Maybe Text
-> AwsRedshiftClusterDetails
AwsRedshiftClusterDetails'
            (Maybe AwsRedshiftClusterResizeInfo
 -> Maybe AwsRedshiftClusterRestoreStatus
 -> Maybe Int
 -> Maybe Bool
 -> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
 -> Maybe Int
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [AwsRedshiftClusterClusterParameterGroup]
 -> Maybe Text
 -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
 -> Maybe AwsRedshiftClusterHsmStatus
 -> Maybe [AwsRedshiftClusterIamRole]
 -> Maybe [Text]
 -> Maybe AwsRedshiftClusterElasticIpStatus
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe AwsRedshiftClusterEndpoint
 -> Maybe Bool
 -> Maybe Text
 -> Maybe AwsRedshiftClusterPendingModifiedValues
 -> Maybe [AwsRedshiftClusterClusterNode]
 -> Maybe Text
 -> AwsRedshiftClusterDetails)
-> Parser (Maybe AwsRedshiftClusterResizeInfo)
-> Parser
     (Maybe AwsRedshiftClusterRestoreStatus
      -> Maybe Int
      -> Maybe Bool
      -> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe AwsRedshiftClusterResizeInfo)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ResizeInfo")
            Parser
  (Maybe AwsRedshiftClusterRestoreStatus
   -> Maybe Int
   -> Maybe Bool
   -> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe AwsRedshiftClusterRestoreStatus)
-> Parser
     (Maybe Int
      -> Maybe Bool
      -> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsRedshiftClusterRestoreStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RestoreStatus")
            Parser
  (Maybe Int
   -> Maybe Bool
   -> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Int)
-> Parser
     (Maybe Bool
      -> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ManualSnapshotRetentionPeriod")
            Parser
  (Maybe Bool
   -> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Bool)
-> Parser
     (Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EnhancedVpcRouting")
            Parser
  (Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe AwsRedshiftClusterClusterSnapshotCopyStatus)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text
-> Parser (Maybe AwsRedshiftClusterClusterSnapshotCopyStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterSnapshotCopyStatus")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterAvailabilityStatus")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterRevisionNumber")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SnapshotScheduleIdentifier")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PubliclyAccessible")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MasterUsername")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MaintenanceTrackName")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExpectedNextSnapshotScheduleTime")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ElasticResizeNumberOfNodeOptions")
            Parser
  (Maybe Text
   -> Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe [AwsRedshiftClusterClusterSecurityGroup]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VpcId")
            Parser
  (Maybe [AwsRedshiftClusterClusterSecurityGroup]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe [AwsRedshiftClusterClusterSecurityGroup])
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text
-> Parser (Maybe (Maybe [AwsRedshiftClusterClusterSecurityGroup]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterSecurityGroups"
                            Parser (Maybe (Maybe [AwsRedshiftClusterClusterSecurityGroup]))
-> Maybe [AwsRedshiftClusterClusterSecurityGroup]
-> Parser (Maybe [AwsRedshiftClusterClusterSecurityGroup])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [AwsRedshiftClusterClusterSecurityGroup]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AutomatedSnapshotRetentionPeriod")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SnapshotScheduleState")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Encrypted")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterSubnetGroupName")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExpectedNextSnapshotScheduleTimeStatus")
            Parser
  (Maybe Text
   -> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterIdentifier")
            Parser
  (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow])
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text
-> Parser
     (Maybe (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DeferredMaintenanceWindows"
                            Parser
  (Maybe (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]))
-> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
-> Parser (Maybe [AwsRedshiftClusterDeferredMaintenanceWindow])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NumberOfNodes")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterPublicKey")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PreferredMaintenanceWindow")
            Parser
  (Maybe Text
   -> Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe [AwsRedshiftClusterClusterParameterGroup]
      -> Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"KmsKeyId")
            Parser
  (Maybe [AwsRedshiftClusterClusterParameterGroup]
   -> Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe [AwsRedshiftClusterClusterParameterGroup])
-> Parser
     (Maybe Text
      -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text
-> Parser (Maybe (Maybe [AwsRedshiftClusterClusterParameterGroup]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterParameterGroups"
                            Parser (Maybe (Maybe [AwsRedshiftClusterClusterParameterGroup]))
-> Maybe [AwsRedshiftClusterClusterParameterGroup]
-> Parser (Maybe [AwsRedshiftClusterClusterParameterGroup])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [AwsRedshiftClusterClusterParameterGroup]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Text
   -> Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe [AwsRedshiftClusterVpcSecurityGroup]
      -> Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AvailabilityZone")
            Parser
  (Maybe [AwsRedshiftClusterVpcSecurityGroup]
   -> Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe [AwsRedshiftClusterVpcSecurityGroup])
-> Parser
     (Maybe AwsRedshiftClusterHsmStatus
      -> Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text
-> Parser (Maybe (Maybe [AwsRedshiftClusterVpcSecurityGroup]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VpcSecurityGroups"
                            Parser (Maybe (Maybe [AwsRedshiftClusterVpcSecurityGroup]))
-> Maybe [AwsRedshiftClusterVpcSecurityGroup]
-> Parser (Maybe [AwsRedshiftClusterVpcSecurityGroup])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [AwsRedshiftClusterVpcSecurityGroup]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe AwsRedshiftClusterHsmStatus
   -> Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe AwsRedshiftClusterHsmStatus)
-> Parser
     (Maybe [AwsRedshiftClusterIamRole]
      -> Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsRedshiftClusterHsmStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"HsmStatus")
            Parser
  (Maybe [AwsRedshiftClusterIamRole]
   -> Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe [AwsRedshiftClusterIamRole])
-> Parser
     (Maybe [Text]
      -> Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe (Maybe [AwsRedshiftClusterIamRole]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"IamRoles" Parser (Maybe (Maybe [AwsRedshiftClusterIamRole]))
-> Maybe [AwsRedshiftClusterIamRole]
-> Parser (Maybe [AwsRedshiftClusterIamRole])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [AwsRedshiftClusterIamRole]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe [Text]
   -> Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe [Text])
-> Parser
     (Maybe AwsRedshiftClusterElasticIpStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PendingActions" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe AwsRedshiftClusterElasticIpStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe AwsRedshiftClusterElasticIpStatus)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsRedshiftClusterElasticIpStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ElasticIpStatus")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterVersion")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NodeType")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NextMaintenanceWindowStartTime")
            Parser
  (Maybe Text
   -> Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe AwsRedshiftClusterEndpoint
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterCreateTime")
            Parser
  (Maybe AwsRedshiftClusterEndpoint
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe AwsRedshiftClusterEndpoint)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsRedshiftClusterEndpoint)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Endpoint")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AllowVersionUpgrade")
            Parser
  (Maybe Text
   -> Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe AwsRedshiftClusterPendingModifiedValues
      -> Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text
      -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterStatus")
            Parser
  (Maybe AwsRedshiftClusterPendingModifiedValues
   -> Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text
   -> AwsRedshiftClusterDetails)
-> Parser (Maybe AwsRedshiftClusterPendingModifiedValues)
-> Parser
     (Maybe [AwsRedshiftClusterClusterNode]
      -> Maybe Text -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe AwsRedshiftClusterPendingModifiedValues)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PendingModifiedValues")
            Parser
  (Maybe [AwsRedshiftClusterClusterNode]
   -> Maybe Text -> AwsRedshiftClusterDetails)
-> Parser (Maybe [AwsRedshiftClusterClusterNode])
-> Parser (Maybe Text -> AwsRedshiftClusterDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe (Maybe [AwsRedshiftClusterClusterNode]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClusterNodes" Parser (Maybe (Maybe [AwsRedshiftClusterClusterNode]))
-> Maybe [AwsRedshiftClusterClusterNode]
-> Parser (Maybe [AwsRedshiftClusterClusterNode])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [AwsRedshiftClusterClusterNode]
forall a. Monoid a => a
Prelude.mempty)
            Parser (Maybe Text -> AwsRedshiftClusterDetails)
-> Parser (Maybe Text) -> Parser AwsRedshiftClusterDetails
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DBName")
      )

instance Prelude.Hashable AwsRedshiftClusterDetails

instance Prelude.NFData AwsRedshiftClusterDetails

instance Core.ToJSON AwsRedshiftClusterDetails where
  toJSON :: AwsRedshiftClusterDetails -> Value
toJSON AwsRedshiftClusterDetails' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [AwsRedshiftClusterClusterNode]
Maybe [AwsRedshiftClusterClusterParameterGroup]
Maybe [AwsRedshiftClusterClusterSecurityGroup]
Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
Maybe [AwsRedshiftClusterIamRole]
Maybe [AwsRedshiftClusterVpcSecurityGroup]
Maybe Text
Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
Maybe AwsRedshiftClusterElasticIpStatus
Maybe AwsRedshiftClusterEndpoint
Maybe AwsRedshiftClusterHsmStatus
Maybe AwsRedshiftClusterPendingModifiedValues
Maybe AwsRedshiftClusterResizeInfo
Maybe AwsRedshiftClusterRestoreStatus
dbName :: Maybe Text
clusterNodes :: Maybe [AwsRedshiftClusterClusterNode]
pendingModifiedValues :: Maybe AwsRedshiftClusterPendingModifiedValues
clusterStatus :: Maybe Text
allowVersionUpgrade :: Maybe Bool
endpoint :: Maybe AwsRedshiftClusterEndpoint
clusterCreateTime :: Maybe Text
nextMaintenanceWindowStartTime :: Maybe Text
nodeType :: Maybe Text
clusterVersion :: Maybe Text
elasticIpStatus :: Maybe AwsRedshiftClusterElasticIpStatus
pendingActions :: Maybe [Text]
iamRoles :: Maybe [AwsRedshiftClusterIamRole]
hsmStatus :: Maybe AwsRedshiftClusterHsmStatus
vpcSecurityGroups :: Maybe [AwsRedshiftClusterVpcSecurityGroup]
availabilityZone :: Maybe Text
clusterParameterGroups :: Maybe [AwsRedshiftClusterClusterParameterGroup]
kmsKeyId :: Maybe Text
preferredMaintenanceWindow :: Maybe Text
clusterPublicKey :: Maybe Text
numberOfNodes :: Maybe Int
deferredMaintenanceWindows :: Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
clusterIdentifier :: Maybe Text
expectedNextSnapshotScheduleTimeStatus :: Maybe Text
clusterSubnetGroupName :: Maybe Text
encrypted :: Maybe Bool
snapshotScheduleState :: Maybe Text
automatedSnapshotRetentionPeriod :: Maybe Int
clusterSecurityGroups :: Maybe [AwsRedshiftClusterClusterSecurityGroup]
vpcId :: Maybe Text
elasticResizeNumberOfNodeOptions :: Maybe Text
expectedNextSnapshotScheduleTime :: Maybe Text
maintenanceTrackName :: Maybe Text
masterUsername :: Maybe Text
publiclyAccessible :: Maybe Bool
snapshotScheduleIdentifier :: Maybe Text
clusterRevisionNumber :: Maybe Text
clusterAvailabilityStatus :: Maybe Text
clusterSnapshotCopyStatus :: Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
enhancedVpcRouting :: Maybe Bool
manualSnapshotRetentionPeriod :: Maybe Int
restoreStatus :: Maybe AwsRedshiftClusterRestoreStatus
resizeInfo :: Maybe AwsRedshiftClusterResizeInfo
$sel:dbName:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:clusterNodes:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe [AwsRedshiftClusterClusterNode]
$sel:pendingModifiedValues:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe AwsRedshiftClusterPendingModifiedValues
$sel:clusterStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:allowVersionUpgrade:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Bool
$sel:endpoint:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterEndpoint
$sel:clusterCreateTime:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:nextMaintenanceWindowStartTime:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:nodeType:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:clusterVersion:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:elasticIpStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe AwsRedshiftClusterElasticIpStatus
$sel:pendingActions:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe [Text]
$sel:iamRoles:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe [AwsRedshiftClusterIamRole]
$sel:hsmStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterHsmStatus
$sel:vpcSecurityGroups:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe [AwsRedshiftClusterVpcSecurityGroup]
$sel:availabilityZone:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:clusterParameterGroups:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe [AwsRedshiftClusterClusterParameterGroup]
$sel:kmsKeyId:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:preferredMaintenanceWindow:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:clusterPublicKey:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:numberOfNodes:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Int
$sel:deferredMaintenanceWindows:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
$sel:clusterIdentifier:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:expectedNextSnapshotScheduleTimeStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:clusterSubnetGroupName:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:encrypted:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Bool
$sel:snapshotScheduleState:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:automatedSnapshotRetentionPeriod:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Int
$sel:clusterSecurityGroups:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe [AwsRedshiftClusterClusterSecurityGroup]
$sel:vpcId:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:elasticResizeNumberOfNodeOptions:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:expectedNextSnapshotScheduleTime:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:maintenanceTrackName:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:masterUsername:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:publiclyAccessible:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Bool
$sel:snapshotScheduleIdentifier:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:clusterRevisionNumber:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:clusterAvailabilityStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Text
$sel:clusterSnapshotCopyStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails
-> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
$sel:enhancedVpcRouting:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Bool
$sel:manualSnapshotRetentionPeriod:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe Int
$sel:restoreStatus:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterRestoreStatus
$sel:resizeInfo:AwsRedshiftClusterDetails' :: AwsRedshiftClusterDetails -> Maybe AwsRedshiftClusterResizeInfo
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"ResizeInfo" Text -> AwsRedshiftClusterResizeInfo -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (AwsRedshiftClusterResizeInfo -> Pair)
-> Maybe AwsRedshiftClusterResizeInfo -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsRedshiftClusterResizeInfo
resizeInfo,
            (Text
"RestoreStatus" Text -> AwsRedshiftClusterRestoreStatus -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (AwsRedshiftClusterRestoreStatus -> Pair)
-> Maybe AwsRedshiftClusterRestoreStatus -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsRedshiftClusterRestoreStatus
restoreStatus,
            (Text
"ManualSnapshotRetentionPeriod" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
manualSnapshotRetentionPeriod,
            (Text
"EnhancedVpcRouting" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
enhancedVpcRouting,
            (Text
"ClusterSnapshotCopyStatus" Text -> AwsRedshiftClusterClusterSnapshotCopyStatus -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (AwsRedshiftClusterClusterSnapshotCopyStatus -> Pair)
-> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsRedshiftClusterClusterSnapshotCopyStatus
clusterSnapshotCopyStatus,
            (Text
"ClusterAvailabilityStatus" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clusterAvailabilityStatus,
            (Text
"ClusterRevisionNumber" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clusterRevisionNumber,
            (Text
"SnapshotScheduleIdentifier" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
snapshotScheduleIdentifier,
            (Text
"PubliclyAccessible" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
publiclyAccessible,
            (Text
"MasterUsername" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
masterUsername,
            (Text
"MaintenanceTrackName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
maintenanceTrackName,
            (Text
"ExpectedNextSnapshotScheduleTime" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
expectedNextSnapshotScheduleTime,
            (Text
"ElasticResizeNumberOfNodeOptions" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
elasticResizeNumberOfNodeOptions,
            (Text
"VpcId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
vpcId,
            (Text
"ClusterSecurityGroups" Text -> [AwsRedshiftClusterClusterSecurityGroup] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([AwsRedshiftClusterClusterSecurityGroup] -> Pair)
-> Maybe [AwsRedshiftClusterClusterSecurityGroup] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [AwsRedshiftClusterClusterSecurityGroup]
clusterSecurityGroups,
            (Text
"AutomatedSnapshotRetentionPeriod" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
automatedSnapshotRetentionPeriod,
            (Text
"SnapshotScheduleState" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
snapshotScheduleState,
            (Text
"Encrypted" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
encrypted,
            (Text
"ClusterSubnetGroupName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clusterSubnetGroupName,
            (Text
"ExpectedNextSnapshotScheduleTimeStatus" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
expectedNextSnapshotScheduleTimeStatus,
            (Text
"ClusterIdentifier" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clusterIdentifier,
            (Text
"DeferredMaintenanceWindows" Text -> [AwsRedshiftClusterDeferredMaintenanceWindow] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([AwsRedshiftClusterDeferredMaintenanceWindow] -> Pair)
-> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [AwsRedshiftClusterDeferredMaintenanceWindow]
deferredMaintenanceWindows,
            (Text
"NumberOfNodes" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
numberOfNodes,
            (Text
"ClusterPublicKey" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clusterPublicKey,
            (Text
"PreferredMaintenanceWindow" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
preferredMaintenanceWindow,
            (Text
"KmsKeyId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
kmsKeyId,
            (Text
"ClusterParameterGroups" Text -> [AwsRedshiftClusterClusterParameterGroup] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([AwsRedshiftClusterClusterParameterGroup] -> Pair)
-> Maybe [AwsRedshiftClusterClusterParameterGroup] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [AwsRedshiftClusterClusterParameterGroup]
clusterParameterGroups,
            (Text
"AvailabilityZone" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
availabilityZone,
            (Text
"VpcSecurityGroups" Text -> [AwsRedshiftClusterVpcSecurityGroup] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([AwsRedshiftClusterVpcSecurityGroup] -> Pair)
-> Maybe [AwsRedshiftClusterVpcSecurityGroup] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [AwsRedshiftClusterVpcSecurityGroup]
vpcSecurityGroups,
            (Text
"HsmStatus" Text -> AwsRedshiftClusterHsmStatus -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (AwsRedshiftClusterHsmStatus -> Pair)
-> Maybe AwsRedshiftClusterHsmStatus -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsRedshiftClusterHsmStatus
hsmStatus,
            (Text
"IamRoles" Text -> [AwsRedshiftClusterIamRole] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) ([AwsRedshiftClusterIamRole] -> Pair)
-> Maybe [AwsRedshiftClusterIamRole] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [AwsRedshiftClusterIamRole]
iamRoles,
            (Text
"PendingActions" Text -> [Text] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([Text] -> Pair) -> Maybe [Text] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
pendingActions,
            (Text
"ElasticIpStatus" Text -> AwsRedshiftClusterElasticIpStatus -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (AwsRedshiftClusterElasticIpStatus -> Pair)
-> Maybe AwsRedshiftClusterElasticIpStatus -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsRedshiftClusterElasticIpStatus
elasticIpStatus,
            (Text
"ClusterVersion" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clusterVersion,
            (Text
"NodeType" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nodeType,
            (Text
"NextMaintenanceWindowStartTime" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextMaintenanceWindowStartTime,
            (Text
"ClusterCreateTime" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clusterCreateTime,
            (Text
"Endpoint" Text -> AwsRedshiftClusterEndpoint -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (AwsRedshiftClusterEndpoint -> Pair)
-> Maybe AwsRedshiftClusterEndpoint -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsRedshiftClusterEndpoint
endpoint,
            (Text
"AllowVersionUpgrade" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
allowVersionUpgrade,
            (Text
"ClusterStatus" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clusterStatus,
            (Text
"PendingModifiedValues" Text -> AwsRedshiftClusterPendingModifiedValues -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (AwsRedshiftClusterPendingModifiedValues -> Pair)
-> Maybe AwsRedshiftClusterPendingModifiedValues -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsRedshiftClusterPendingModifiedValues
pendingModifiedValues,
            (Text
"ClusterNodes" Text -> [AwsRedshiftClusterClusterNode] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) ([AwsRedshiftClusterClusterNode] -> Pair)
-> Maybe [AwsRedshiftClusterClusterNode] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [AwsRedshiftClusterClusterNode]
clusterNodes,
            (Text
"DBName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
dbName
          ]
      )