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

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.Redshift.Internal
import Amazonka.Redshift.Types.AquaConfiguration
import Amazonka.Redshift.Types.ClusterIamRole
import Amazonka.Redshift.Types.ClusterNode
import Amazonka.Redshift.Types.ClusterParameterGroupStatus
import Amazonka.Redshift.Types.ClusterSecurityGroupMembership
import Amazonka.Redshift.Types.ClusterSnapshotCopyStatus
import Amazonka.Redshift.Types.DataTransferProgress
import Amazonka.Redshift.Types.DeferredMaintenanceWindow
import Amazonka.Redshift.Types.ElasticIpStatus
import Amazonka.Redshift.Types.Endpoint
import Amazonka.Redshift.Types.HsmStatus
import Amazonka.Redshift.Types.PendingModifiedValues
import Amazonka.Redshift.Types.ReservedNodeExchangeStatus
import Amazonka.Redshift.Types.ResizeInfo
import Amazonka.Redshift.Types.RestoreStatus
import Amazonka.Redshift.Types.ScheduleState
import Amazonka.Redshift.Types.Tag
import Amazonka.Redshift.Types.VpcSecurityGroupMembership

-- | Describes a cluster.
--
-- /See:/ 'newCluster' smart constructor.
data Cluster = Cluster'
  { -- | A boolean value that, if @true@, indicates that major version upgrades
    -- will be applied automatically to the cluster during the maintenance
    -- window.
    Cluster -> Maybe Bool
allowVersionUpgrade :: Prelude.Maybe Prelude.Bool,
    -- | This field is retired. Amazon Redshift automatically determines whether
    -- to use AQUA (Advanced Query Accelerator).
    Cluster -> Maybe AquaConfiguration
aquaConfiguration :: Prelude.Maybe AquaConfiguration,
    -- | The number of days that automatic cluster snapshots are retained.
    Cluster -> Maybe Int
automatedSnapshotRetentionPeriod :: Prelude.Maybe Prelude.Int,
    -- | The name of the Availability Zone in which the cluster is located.
    Cluster -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | Describes the status of the Availability Zone relocation operation.
    Cluster -> Maybe Text
availabilityZoneRelocationStatus :: Prelude.Maybe Prelude.Text,
    -- | 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.
    Cluster -> Maybe Text
clusterAvailabilityStatus :: Prelude.Maybe Prelude.Text,
    -- | The date and time that the cluster was created.
    Cluster -> Maybe ISO8601
clusterCreateTime :: Prelude.Maybe Data.ISO8601,
    -- | The unique identifier of the cluster.
    Cluster -> Maybe Text
clusterIdentifier :: Prelude.Maybe Prelude.Text,
    -- | The namespace Amazon Resource Name (ARN) of the cluster.
    Cluster -> Maybe Text
clusterNamespaceArn :: Prelude.Maybe Prelude.Text,
    -- | The nodes in the cluster.
    Cluster -> Maybe [ClusterNode]
clusterNodes :: Prelude.Maybe [ClusterNode],
    -- | The list of cluster parameter groups that are associated with this
    -- cluster. Each parameter group in the list is returned with its status.
    Cluster -> Maybe [ClusterParameterGroupStatus]
clusterParameterGroups :: Prelude.Maybe [ClusterParameterGroupStatus],
    -- | The public key for the cluster.
    Cluster -> Maybe Text
clusterPublicKey :: Prelude.Maybe Prelude.Text,
    -- | The specific revision number of the database in the cluster.
    Cluster -> Maybe Text
clusterRevisionNumber :: Prelude.Maybe Prelude.Text,
    -- | A list of cluster security group that are associated with the cluster.
    -- Each security group is represented by an element that contains
    -- @ClusterSecurityGroup.Name@ and @ClusterSecurityGroup.Status@
    -- subelements.
    --
    -- Cluster security groups are used when the cluster is not created in an
    -- Amazon Virtual Private Cloud (VPC). Clusters that are created in a VPC
    -- use VPC security groups, which are listed by the __VpcSecurityGroups__
    -- parameter.
    Cluster -> Maybe [ClusterSecurityGroupMembership]
clusterSecurityGroups :: Prelude.Maybe [ClusterSecurityGroupMembership],
    -- | A value that returns the destination region and retention period that
    -- are configured for cross-region snapshot copy.
    Cluster -> Maybe ClusterSnapshotCopyStatus
clusterSnapshotCopyStatus :: Prelude.Maybe ClusterSnapshotCopyStatus,
    -- | The current state of the cluster. Possible values are the following:
    --
    -- -   @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@
    Cluster -> Maybe Text
clusterStatus :: Prelude.Maybe Prelude.Text,
    -- | The name of the subnet group that is associated with the cluster. This
    -- parameter is valid only when the cluster is in a VPC.
    Cluster -> Maybe Text
clusterSubnetGroupName :: Prelude.Maybe Prelude.Text,
    -- | The version ID of the Amazon Redshift engine that is running on the
    -- cluster.
    Cluster -> Maybe Text
clusterVersion :: Prelude.Maybe Prelude.Text,
    -- | The name of the initial database that was created when the cluster was
    -- created. This same name is returned for the life of the cluster. If an
    -- initial database was not specified, a database named @dev@dev was
    -- created by default.
    Cluster -> Maybe Text
dbName :: Prelude.Maybe Prelude.Text,
    Cluster -> Maybe DataTransferProgress
dataTransferProgress :: Prelude.Maybe DataTransferProgress,
    -- | The Amazon Resource Name (ARN) for the IAM role set as default for the
    -- cluster.
    Cluster -> Maybe Text
defaultIamRoleArn :: Prelude.Maybe Prelude.Text,
    -- | Describes a group of @DeferredMaintenanceWindow@ objects.
    Cluster -> Maybe [DeferredMaintenanceWindow]
deferredMaintenanceWindows :: Prelude.Maybe [DeferredMaintenanceWindow],
    -- | The status of the elastic IP (EIP) address.
    Cluster -> Maybe ElasticIpStatus
elasticIpStatus :: Prelude.Maybe ElasticIpStatus,
    -- | The number of nodes that you can resize the cluster to with the elastic
    -- resize method.
    Cluster -> Maybe Text
elasticResizeNumberOfNodeOptions :: Prelude.Maybe Prelude.Text,
    -- | A boolean value that, if @true@, indicates that data in the cluster is
    -- encrypted at rest.
    Cluster -> Maybe Bool
encrypted :: Prelude.Maybe Prelude.Bool,
    -- | The connection endpoint.
    Cluster -> Maybe Endpoint
endpoint :: Prelude.Maybe Endpoint,
    -- | An option that specifies whether to create the cluster with enhanced VPC
    -- routing enabled. To create a cluster that uses enhanced VPC routing, the
    -- cluster must be in a VPC. For more information, see
    -- <https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html Enhanced VPC Routing>
    -- in the Amazon Redshift Cluster Management Guide.
    --
    -- If this option is @true@, enhanced VPC routing is enabled.
    --
    -- Default: false
    Cluster -> Maybe Bool
enhancedVpcRouting :: Prelude.Maybe Prelude.Bool,
    -- | The date and time when the next snapshot is expected to be taken for
    -- clusters with a valid snapshot schedule and backups enabled.
    Cluster -> Maybe ISO8601
expectedNextSnapshotScheduleTime :: Prelude.Maybe Data.ISO8601,
    -- | The status of next expected snapshot for clusters having a valid
    -- snapshot schedule and backups enabled. Possible values are the
    -- following:
    --
    -- -   OnTrack - The next snapshot is expected to be taken on time.
    --
    -- -   Pending - The next snapshot is pending to be taken.
    Cluster -> Maybe Text
expectedNextSnapshotScheduleTimeStatus :: Prelude.Maybe Prelude.Text,
    -- | A value that reports whether the Amazon Redshift cluster has finished
    -- applying any hardware security module (HSM) settings changes specified
    -- in a modify cluster command.
    --
    -- Values: active, applying
    Cluster -> Maybe HsmStatus
hsmStatus :: Prelude.Maybe HsmStatus,
    -- | A list of Identity and Access Management (IAM) roles that can be used by
    -- the cluster to access other Amazon Web Services services.
    Cluster -> Maybe [ClusterIamRole]
iamRoles :: Prelude.Maybe [ClusterIamRole],
    -- | The Key Management Service (KMS) key ID of the encryption key used to
    -- encrypt data in the cluster.
    Cluster -> Maybe Text
kmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | The name of the maintenance track for the cluster.
    Cluster -> Maybe Text
maintenanceTrackName :: Prelude.Maybe Prelude.Text,
    -- | 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.
    --
    -- The value must be either -1 or an integer between 1 and 3,653.
    Cluster -> Maybe Int
manualSnapshotRetentionPeriod :: Prelude.Maybe Prelude.Int,
    -- | The admin user name for the cluster. This name is used to connect to the
    -- database that is specified in the __DBName__ parameter.
    Cluster -> Maybe Text
masterUsername :: Prelude.Maybe Prelude.Text,
    -- | The status of a modify operation, if any, initiated for the cluster.
    Cluster -> Maybe Text
modifyStatus :: Prelude.Maybe Prelude.Text,
    -- | The date and time in UTC when system maintenance can begin.
    Cluster -> Maybe ISO8601
nextMaintenanceWindowStartTime :: Prelude.Maybe Data.ISO8601,
    -- | The node type for the nodes in the cluster.
    Cluster -> Maybe Text
nodeType :: Prelude.Maybe Prelude.Text,
    -- | The number of compute nodes in the cluster.
    Cluster -> Maybe Int
numberOfNodes :: Prelude.Maybe Prelude.Int,
    -- | Cluster operations that are waiting to be started.
    Cluster -> Maybe [Text]
pendingActions :: Prelude.Maybe [Prelude.Text],
    -- | A value that, if present, indicates that changes to the cluster are
    -- pending. Specific pending changes are identified by subelements.
    Cluster -> Maybe PendingModifiedValues
pendingModifiedValues :: Prelude.Maybe PendingModifiedValues,
    -- | The weekly time range, in Universal Coordinated Time (UTC), during which
    -- system maintenance can occur.
    Cluster -> Maybe Text
preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
    -- | A boolean value that, if @true@, indicates that the cluster can be
    -- accessed from a public network.
    Cluster -> Maybe Bool
publiclyAccessible :: Prelude.Maybe Prelude.Bool,
    -- | The status of the reserved-node exchange request. Statuses include
    -- in-progress and requested.
    Cluster -> Maybe ReservedNodeExchangeStatus
reservedNodeExchangeStatus :: Prelude.Maybe ReservedNodeExchangeStatus,
    -- | Returns the following:
    --
    -- -   AllowCancelResize: a boolean value indicating if the resize
    --     operation can be cancelled.
    --
    -- -   ResizeType: Returns ClassicResize
    Cluster -> Maybe ResizeInfo
resizeInfo :: Prelude.Maybe ResizeInfo,
    -- | A value that describes the status of a cluster restore action. This
    -- parameter returns null if the cluster was not created by restoring a
    -- snapshot.
    Cluster -> Maybe RestoreStatus
restoreStatus :: Prelude.Maybe RestoreStatus,
    -- | A unique identifier for the cluster snapshot schedule.
    Cluster -> Maybe Text
snapshotScheduleIdentifier :: Prelude.Maybe Prelude.Text,
    -- | The current state of the cluster snapshot schedule.
    Cluster -> Maybe ScheduleState
snapshotScheduleState :: Prelude.Maybe ScheduleState,
    -- | The list of tags for the cluster.
    Cluster -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The total storage capacity of the cluster in megabytes.
    Cluster -> Maybe Integer
totalStorageCapacityInMegaBytes :: Prelude.Maybe Prelude.Integer,
    -- | The identifier of the VPC the cluster is in, if the cluster is in a VPC.
    Cluster -> Maybe Text
vpcId :: Prelude.Maybe Prelude.Text,
    -- | A list of Amazon Virtual Private Cloud (Amazon VPC) security groups that
    -- are associated with the cluster. This parameter is returned only if the
    -- cluster is in a VPC.
    Cluster -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups :: Prelude.Maybe [VpcSecurityGroupMembership]
  }
  deriving (Cluster -> Cluster -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Cluster -> Cluster -> Bool
$c/= :: Cluster -> Cluster -> Bool
== :: Cluster -> Cluster -> Bool
$c== :: Cluster -> Cluster -> Bool
Prelude.Eq, ReadPrec [Cluster]
ReadPrec Cluster
Int -> ReadS Cluster
ReadS [Cluster]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Cluster]
$creadListPrec :: ReadPrec [Cluster]
readPrec :: ReadPrec Cluster
$creadPrec :: ReadPrec Cluster
readList :: ReadS [Cluster]
$creadList :: ReadS [Cluster]
readsPrec :: Int -> ReadS Cluster
$creadsPrec :: Int -> ReadS Cluster
Prelude.Read, Int -> Cluster -> ShowS
[Cluster] -> ShowS
Cluster -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Cluster] -> ShowS
$cshowList :: [Cluster] -> ShowS
show :: Cluster -> String
$cshow :: Cluster -> String
showsPrec :: Int -> Cluster -> ShowS
$cshowsPrec :: Int -> Cluster -> ShowS
Prelude.Show, forall x. Rep Cluster x -> Cluster
forall x. Cluster -> Rep Cluster x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Cluster x -> Cluster
$cfrom :: forall x. Cluster -> Rep Cluster x
Prelude.Generic)

-- |
-- Create a value of 'Cluster' 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:
--
-- 'allowVersionUpgrade', 'cluster_allowVersionUpgrade' - A boolean value that, if @true@, indicates that major version upgrades
-- will be applied automatically to the cluster during the maintenance
-- window.
--
-- 'aquaConfiguration', 'cluster_aquaConfiguration' - This field is retired. Amazon Redshift automatically determines whether
-- to use AQUA (Advanced Query Accelerator).
--
-- 'automatedSnapshotRetentionPeriod', 'cluster_automatedSnapshotRetentionPeriod' - The number of days that automatic cluster snapshots are retained.
--
-- 'availabilityZone', 'cluster_availabilityZone' - The name of the Availability Zone in which the cluster is located.
--
-- 'availabilityZoneRelocationStatus', 'cluster_availabilityZoneRelocationStatus' - Describes the status of the Availability Zone relocation operation.
--
-- 'clusterAvailabilityStatus', 'cluster_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.
--
-- 'clusterCreateTime', 'cluster_clusterCreateTime' - The date and time that the cluster was created.
--
-- 'clusterIdentifier', 'cluster_clusterIdentifier' - The unique identifier of the cluster.
--
-- 'clusterNamespaceArn', 'cluster_clusterNamespaceArn' - The namespace Amazon Resource Name (ARN) of the cluster.
--
-- 'clusterNodes', 'cluster_clusterNodes' - The nodes in the cluster.
--
-- 'clusterParameterGroups', 'cluster_clusterParameterGroups' - The list of cluster parameter groups that are associated with this
-- cluster. Each parameter group in the list is returned with its status.
--
-- 'clusterPublicKey', 'cluster_clusterPublicKey' - The public key for the cluster.
--
-- 'clusterRevisionNumber', 'cluster_clusterRevisionNumber' - The specific revision number of the database in the cluster.
--
-- 'clusterSecurityGroups', 'cluster_clusterSecurityGroups' - A list of cluster security group that are associated with the cluster.
-- Each security group is represented by an element that contains
-- @ClusterSecurityGroup.Name@ and @ClusterSecurityGroup.Status@
-- subelements.
--
-- Cluster security groups are used when the cluster is not created in an
-- Amazon Virtual Private Cloud (VPC). Clusters that are created in a VPC
-- use VPC security groups, which are listed by the __VpcSecurityGroups__
-- parameter.
--
-- 'clusterSnapshotCopyStatus', 'cluster_clusterSnapshotCopyStatus' - A value that returns the destination region and retention period that
-- are configured for cross-region snapshot copy.
--
-- 'clusterStatus', 'cluster_clusterStatus' - The current state of the cluster. Possible values are the following:
--
-- -   @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@
--
-- 'clusterSubnetGroupName', 'cluster_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.
--
-- 'clusterVersion', 'cluster_clusterVersion' - The version ID of the Amazon Redshift engine that is running on the
-- cluster.
--
-- 'dbName', 'cluster_dbName' - The name of the initial database that was created when the cluster was
-- created. This same name is returned for the life of the cluster. If an
-- initial database was not specified, a database named @dev@dev was
-- created by default.
--
-- 'dataTransferProgress', 'cluster_dataTransferProgress' -
--
-- 'defaultIamRoleArn', 'cluster_defaultIamRoleArn' - The Amazon Resource Name (ARN) for the IAM role set as default for the
-- cluster.
--
-- 'deferredMaintenanceWindows', 'cluster_deferredMaintenanceWindows' - Describes a group of @DeferredMaintenanceWindow@ objects.
--
-- 'elasticIpStatus', 'cluster_elasticIpStatus' - The status of the elastic IP (EIP) address.
--
-- 'elasticResizeNumberOfNodeOptions', 'cluster_elasticResizeNumberOfNodeOptions' - The number of nodes that you can resize the cluster to with the elastic
-- resize method.
--
-- 'encrypted', 'cluster_encrypted' - A boolean value that, if @true@, indicates that data in the cluster is
-- encrypted at rest.
--
-- 'endpoint', 'cluster_endpoint' - The connection endpoint.
--
-- 'enhancedVpcRouting', 'cluster_enhancedVpcRouting' - An option that specifies whether to create the cluster with enhanced VPC
-- routing enabled. To create a cluster that uses enhanced VPC routing, the
-- cluster must be in a VPC. For more information, see
-- <https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html Enhanced VPC Routing>
-- in the Amazon Redshift Cluster Management Guide.
--
-- If this option is @true@, enhanced VPC routing is enabled.
--
-- Default: false
--
-- 'expectedNextSnapshotScheduleTime', 'cluster_expectedNextSnapshotScheduleTime' - The date and time when the next snapshot is expected to be taken for
-- clusters with a valid snapshot schedule and backups enabled.
--
-- 'expectedNextSnapshotScheduleTimeStatus', 'cluster_expectedNextSnapshotScheduleTimeStatus' - The status of next expected snapshot for clusters having a valid
-- snapshot schedule and backups enabled. Possible values are the
-- following:
--
-- -   OnTrack - The next snapshot is expected to be taken on time.
--
-- -   Pending - The next snapshot is pending to be taken.
--
-- 'hsmStatus', 'cluster_hsmStatus' - A value that reports whether the Amazon Redshift cluster has finished
-- applying any hardware security module (HSM) settings changes specified
-- in a modify cluster command.
--
-- Values: active, applying
--
-- 'iamRoles', 'cluster_iamRoles' - A list of Identity and Access Management (IAM) roles that can be used by
-- the cluster to access other Amazon Web Services services.
--
-- 'kmsKeyId', 'cluster_kmsKeyId' - The Key Management Service (KMS) key ID of the encryption key used to
-- encrypt data in the cluster.
--
-- 'maintenanceTrackName', 'cluster_maintenanceTrackName' - The name of the maintenance track for the cluster.
--
-- 'manualSnapshotRetentionPeriod', 'cluster_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.
--
-- The value must be either -1 or an integer between 1 and 3,653.
--
-- 'masterUsername', 'cluster_masterUsername' - The admin user name for the cluster. This name is used to connect to the
-- database that is specified in the __DBName__ parameter.
--
-- 'modifyStatus', 'cluster_modifyStatus' - The status of a modify operation, if any, initiated for the cluster.
--
-- 'nextMaintenanceWindowStartTime', 'cluster_nextMaintenanceWindowStartTime' - The date and time in UTC when system maintenance can begin.
--
-- 'nodeType', 'cluster_nodeType' - The node type for the nodes in the cluster.
--
-- 'numberOfNodes', 'cluster_numberOfNodes' - The number of compute nodes in the cluster.
--
-- 'pendingActions', 'cluster_pendingActions' - Cluster operations that are waiting to be started.
--
-- 'pendingModifiedValues', 'cluster_pendingModifiedValues' - A value that, if present, indicates that changes to the cluster are
-- pending. Specific pending changes are identified by subelements.
--
-- 'preferredMaintenanceWindow', 'cluster_preferredMaintenanceWindow' - The weekly time range, in Universal Coordinated Time (UTC), during which
-- system maintenance can occur.
--
-- 'publiclyAccessible', 'cluster_publiclyAccessible' - A boolean value that, if @true@, indicates that the cluster can be
-- accessed from a public network.
--
-- 'reservedNodeExchangeStatus', 'cluster_reservedNodeExchangeStatus' - The status of the reserved-node exchange request. Statuses include
-- in-progress and requested.
--
-- 'resizeInfo', 'cluster_resizeInfo' - Returns the following:
--
-- -   AllowCancelResize: a boolean value indicating if the resize
--     operation can be cancelled.
--
-- -   ResizeType: Returns ClassicResize
--
-- 'restoreStatus', 'cluster_restoreStatus' - A value that describes the status of a cluster restore action. This
-- parameter returns null if the cluster was not created by restoring a
-- snapshot.
--
-- 'snapshotScheduleIdentifier', 'cluster_snapshotScheduleIdentifier' - A unique identifier for the cluster snapshot schedule.
--
-- 'snapshotScheduleState', 'cluster_snapshotScheduleState' - The current state of the cluster snapshot schedule.
--
-- 'tags', 'cluster_tags' - The list of tags for the cluster.
--
-- 'totalStorageCapacityInMegaBytes', 'cluster_totalStorageCapacityInMegaBytes' - The total storage capacity of the cluster in megabytes.
--
-- 'vpcId', 'cluster_vpcId' - The identifier of the VPC the cluster is in, if the cluster is in a VPC.
--
-- 'vpcSecurityGroups', 'cluster_vpcSecurityGroups' - A list of Amazon Virtual Private Cloud (Amazon VPC) security groups that
-- are associated with the cluster. This parameter is returned only if the
-- cluster is in a VPC.
newCluster ::
  Cluster
newCluster :: Cluster
newCluster =
  Cluster'
    { $sel:allowVersionUpgrade:Cluster' :: Maybe Bool
allowVersionUpgrade = forall a. Maybe a
Prelude.Nothing,
      $sel:aquaConfiguration:Cluster' :: Maybe AquaConfiguration
aquaConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:automatedSnapshotRetentionPeriod:Cluster' :: Maybe Int
automatedSnapshotRetentionPeriod = forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZone:Cluster' :: Maybe Text
availabilityZone = forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZoneRelocationStatus:Cluster' :: Maybe Text
availabilityZoneRelocationStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterAvailabilityStatus:Cluster' :: Maybe Text
clusterAvailabilityStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterCreateTime:Cluster' :: Maybe ISO8601
clusterCreateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterIdentifier:Cluster' :: Maybe Text
clusterIdentifier = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterNamespaceArn:Cluster' :: Maybe Text
clusterNamespaceArn = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterNodes:Cluster' :: Maybe [ClusterNode]
clusterNodes = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterParameterGroups:Cluster' :: Maybe [ClusterParameterGroupStatus]
clusterParameterGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterPublicKey:Cluster' :: Maybe Text
clusterPublicKey = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterRevisionNumber:Cluster' :: Maybe Text
clusterRevisionNumber = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterSecurityGroups:Cluster' :: Maybe [ClusterSecurityGroupMembership]
clusterSecurityGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterSnapshotCopyStatus:Cluster' :: Maybe ClusterSnapshotCopyStatus
clusterSnapshotCopyStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterStatus:Cluster' :: Maybe Text
clusterStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterSubnetGroupName:Cluster' :: Maybe Text
clusterSubnetGroupName = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterVersion:Cluster' :: Maybe Text
clusterVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:dbName:Cluster' :: Maybe Text
dbName = forall a. Maybe a
Prelude.Nothing,
      $sel:dataTransferProgress:Cluster' :: Maybe DataTransferProgress
dataTransferProgress = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultIamRoleArn:Cluster' :: Maybe Text
defaultIamRoleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:deferredMaintenanceWindows:Cluster' :: Maybe [DeferredMaintenanceWindow]
deferredMaintenanceWindows = forall a. Maybe a
Prelude.Nothing,
      $sel:elasticIpStatus:Cluster' :: Maybe ElasticIpStatus
elasticIpStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:elasticResizeNumberOfNodeOptions:Cluster' :: Maybe Text
elasticResizeNumberOfNodeOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:encrypted:Cluster' :: Maybe Bool
encrypted = forall a. Maybe a
Prelude.Nothing,
      $sel:endpoint:Cluster' :: Maybe Endpoint
endpoint = forall a. Maybe a
Prelude.Nothing,
      $sel:enhancedVpcRouting:Cluster' :: Maybe Bool
enhancedVpcRouting = forall a. Maybe a
Prelude.Nothing,
      $sel:expectedNextSnapshotScheduleTime:Cluster' :: Maybe ISO8601
expectedNextSnapshotScheduleTime = forall a. Maybe a
Prelude.Nothing,
      $sel:expectedNextSnapshotScheduleTimeStatus:Cluster' :: Maybe Text
expectedNextSnapshotScheduleTimeStatus =
        forall a. Maybe a
Prelude.Nothing,
      $sel:hsmStatus:Cluster' :: Maybe HsmStatus
hsmStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:iamRoles:Cluster' :: Maybe [ClusterIamRole]
iamRoles = forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyId:Cluster' :: Maybe Text
kmsKeyId = forall a. Maybe a
Prelude.Nothing,
      $sel:maintenanceTrackName:Cluster' :: Maybe Text
maintenanceTrackName = forall a. Maybe a
Prelude.Nothing,
      $sel:manualSnapshotRetentionPeriod:Cluster' :: Maybe Int
manualSnapshotRetentionPeriod = forall a. Maybe a
Prelude.Nothing,
      $sel:masterUsername:Cluster' :: Maybe Text
masterUsername = forall a. Maybe a
Prelude.Nothing,
      $sel:modifyStatus:Cluster' :: Maybe Text
modifyStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:nextMaintenanceWindowStartTime:Cluster' :: Maybe ISO8601
nextMaintenanceWindowStartTime = forall a. Maybe a
Prelude.Nothing,
      $sel:nodeType:Cluster' :: Maybe Text
nodeType = forall a. Maybe a
Prelude.Nothing,
      $sel:numberOfNodes:Cluster' :: Maybe Int
numberOfNodes = forall a. Maybe a
Prelude.Nothing,
      $sel:pendingActions:Cluster' :: Maybe [Text]
pendingActions = forall a. Maybe a
Prelude.Nothing,
      $sel:pendingModifiedValues:Cluster' :: Maybe PendingModifiedValues
pendingModifiedValues = forall a. Maybe a
Prelude.Nothing,
      $sel:preferredMaintenanceWindow:Cluster' :: Maybe Text
preferredMaintenanceWindow = forall a. Maybe a
Prelude.Nothing,
      $sel:publiclyAccessible:Cluster' :: Maybe Bool
publiclyAccessible = forall a. Maybe a
Prelude.Nothing,
      $sel:reservedNodeExchangeStatus:Cluster' :: Maybe ReservedNodeExchangeStatus
reservedNodeExchangeStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:resizeInfo:Cluster' :: Maybe ResizeInfo
resizeInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:restoreStatus:Cluster' :: Maybe RestoreStatus
restoreStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:snapshotScheduleIdentifier:Cluster' :: Maybe Text
snapshotScheduleIdentifier = forall a. Maybe a
Prelude.Nothing,
      $sel:snapshotScheduleState:Cluster' :: Maybe ScheduleState
snapshotScheduleState = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:Cluster' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:totalStorageCapacityInMegaBytes:Cluster' :: Maybe Integer
totalStorageCapacityInMegaBytes = forall a. Maybe a
Prelude.Nothing,
      $sel:vpcId:Cluster' :: Maybe Text
vpcId = forall a. Maybe a
Prelude.Nothing,
      $sel:vpcSecurityGroups:Cluster' :: Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups = forall a. Maybe a
Prelude.Nothing
    }

-- | A boolean value that, if @true@, indicates that major version upgrades
-- will be applied automatically to the cluster during the maintenance
-- window.
cluster_allowVersionUpgrade :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Bool)
cluster_allowVersionUpgrade :: Lens' Cluster (Maybe Bool)
cluster_allowVersionUpgrade = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Bool
allowVersionUpgrade :: Maybe Bool
$sel:allowVersionUpgrade:Cluster' :: Cluster -> Maybe Bool
allowVersionUpgrade} -> Maybe Bool
allowVersionUpgrade) (\s :: Cluster
s@Cluster' {} Maybe Bool
a -> Cluster
s {$sel:allowVersionUpgrade:Cluster' :: Maybe Bool
allowVersionUpgrade = Maybe Bool
a} :: Cluster)

-- | This field is retired. Amazon Redshift automatically determines whether
-- to use AQUA (Advanced Query Accelerator).
cluster_aquaConfiguration :: Lens.Lens' Cluster (Prelude.Maybe AquaConfiguration)
cluster_aquaConfiguration :: Lens' Cluster (Maybe AquaConfiguration)
cluster_aquaConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe AquaConfiguration
aquaConfiguration :: Maybe AquaConfiguration
$sel:aquaConfiguration:Cluster' :: Cluster -> Maybe AquaConfiguration
aquaConfiguration} -> Maybe AquaConfiguration
aquaConfiguration) (\s :: Cluster
s@Cluster' {} Maybe AquaConfiguration
a -> Cluster
s {$sel:aquaConfiguration:Cluster' :: Maybe AquaConfiguration
aquaConfiguration = Maybe AquaConfiguration
a} :: Cluster)

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

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

-- | Describes the status of the Availability Zone relocation operation.
cluster_availabilityZoneRelocationStatus :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_availabilityZoneRelocationStatus :: Lens' Cluster (Maybe Text)
cluster_availabilityZoneRelocationStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
availabilityZoneRelocationStatus :: Maybe Text
$sel:availabilityZoneRelocationStatus:Cluster' :: Cluster -> Maybe Text
availabilityZoneRelocationStatus} -> Maybe Text
availabilityZoneRelocationStatus) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:availabilityZoneRelocationStatus:Cluster' :: Maybe Text
availabilityZoneRelocationStatus = Maybe Text
a} :: Cluster)

-- | 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.
cluster_clusterAvailabilityStatus :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_clusterAvailabilityStatus :: Lens' Cluster (Maybe Text)
cluster_clusterAvailabilityStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
clusterAvailabilityStatus :: Maybe Text
$sel:clusterAvailabilityStatus:Cluster' :: Cluster -> Maybe Text
clusterAvailabilityStatus} -> Maybe Text
clusterAvailabilityStatus) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:clusterAvailabilityStatus:Cluster' :: Maybe Text
clusterAvailabilityStatus = Maybe Text
a} :: Cluster)

-- | The date and time that the cluster was created.
cluster_clusterCreateTime :: Lens.Lens' Cluster (Prelude.Maybe Prelude.UTCTime)
cluster_clusterCreateTime :: Lens' Cluster (Maybe UTCTime)
cluster_clusterCreateTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe ISO8601
clusterCreateTime :: Maybe ISO8601
$sel:clusterCreateTime:Cluster' :: Cluster -> Maybe ISO8601
clusterCreateTime} -> Maybe ISO8601
clusterCreateTime) (\s :: Cluster
s@Cluster' {} Maybe ISO8601
a -> Cluster
s {$sel:clusterCreateTime:Cluster' :: Maybe ISO8601
clusterCreateTime = Maybe ISO8601
a} :: Cluster) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

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

-- | The namespace Amazon Resource Name (ARN) of the cluster.
cluster_clusterNamespaceArn :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_clusterNamespaceArn :: Lens' Cluster (Maybe Text)
cluster_clusterNamespaceArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
clusterNamespaceArn :: Maybe Text
$sel:clusterNamespaceArn:Cluster' :: Cluster -> Maybe Text
clusterNamespaceArn} -> Maybe Text
clusterNamespaceArn) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:clusterNamespaceArn:Cluster' :: Maybe Text
clusterNamespaceArn = Maybe Text
a} :: Cluster)

-- | The nodes in the cluster.
cluster_clusterNodes :: Lens.Lens' Cluster (Prelude.Maybe [ClusterNode])
cluster_clusterNodes :: Lens' Cluster (Maybe [ClusterNode])
cluster_clusterNodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [ClusterNode]
clusterNodes :: Maybe [ClusterNode]
$sel:clusterNodes:Cluster' :: Cluster -> Maybe [ClusterNode]
clusterNodes} -> Maybe [ClusterNode]
clusterNodes) (\s :: Cluster
s@Cluster' {} Maybe [ClusterNode]
a -> Cluster
s {$sel:clusterNodes:Cluster' :: Maybe [ClusterNode]
clusterNodes = Maybe [ClusterNode]
a} :: Cluster) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The list of cluster parameter groups that are associated with this
-- cluster. Each parameter group in the list is returned with its status.
cluster_clusterParameterGroups :: Lens.Lens' Cluster (Prelude.Maybe [ClusterParameterGroupStatus])
cluster_clusterParameterGroups :: Lens' Cluster (Maybe [ClusterParameterGroupStatus])
cluster_clusterParameterGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [ClusterParameterGroupStatus]
clusterParameterGroups :: Maybe [ClusterParameterGroupStatus]
$sel:clusterParameterGroups:Cluster' :: Cluster -> Maybe [ClusterParameterGroupStatus]
clusterParameterGroups} -> Maybe [ClusterParameterGroupStatus]
clusterParameterGroups) (\s :: Cluster
s@Cluster' {} Maybe [ClusterParameterGroupStatus]
a -> Cluster
s {$sel:clusterParameterGroups:Cluster' :: Maybe [ClusterParameterGroupStatus]
clusterParameterGroups = Maybe [ClusterParameterGroupStatus]
a} :: Cluster) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

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

-- | A list of cluster security group that are associated with the cluster.
-- Each security group is represented by an element that contains
-- @ClusterSecurityGroup.Name@ and @ClusterSecurityGroup.Status@
-- subelements.
--
-- Cluster security groups are used when the cluster is not created in an
-- Amazon Virtual Private Cloud (VPC). Clusters that are created in a VPC
-- use VPC security groups, which are listed by the __VpcSecurityGroups__
-- parameter.
cluster_clusterSecurityGroups :: Lens.Lens' Cluster (Prelude.Maybe [ClusterSecurityGroupMembership])
cluster_clusterSecurityGroups :: Lens' Cluster (Maybe [ClusterSecurityGroupMembership])
cluster_clusterSecurityGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [ClusterSecurityGroupMembership]
clusterSecurityGroups :: Maybe [ClusterSecurityGroupMembership]
$sel:clusterSecurityGroups:Cluster' :: Cluster -> Maybe [ClusterSecurityGroupMembership]
clusterSecurityGroups} -> Maybe [ClusterSecurityGroupMembership]
clusterSecurityGroups) (\s :: Cluster
s@Cluster' {} Maybe [ClusterSecurityGroupMembership]
a -> Cluster
s {$sel:clusterSecurityGroups:Cluster' :: Maybe [ClusterSecurityGroupMembership]
clusterSecurityGroups = Maybe [ClusterSecurityGroupMembership]
a} :: Cluster) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A value that returns the destination region and retention period that
-- are configured for cross-region snapshot copy.
cluster_clusterSnapshotCopyStatus :: Lens.Lens' Cluster (Prelude.Maybe ClusterSnapshotCopyStatus)
cluster_clusterSnapshotCopyStatus :: Lens' Cluster (Maybe ClusterSnapshotCopyStatus)
cluster_clusterSnapshotCopyStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe ClusterSnapshotCopyStatus
clusterSnapshotCopyStatus :: Maybe ClusterSnapshotCopyStatus
$sel:clusterSnapshotCopyStatus:Cluster' :: Cluster -> Maybe ClusterSnapshotCopyStatus
clusterSnapshotCopyStatus} -> Maybe ClusterSnapshotCopyStatus
clusterSnapshotCopyStatus) (\s :: Cluster
s@Cluster' {} Maybe ClusterSnapshotCopyStatus
a -> Cluster
s {$sel:clusterSnapshotCopyStatus:Cluster' :: Maybe ClusterSnapshotCopyStatus
clusterSnapshotCopyStatus = Maybe ClusterSnapshotCopyStatus
a} :: Cluster)

-- | The current state of the cluster. Possible values are the following:
--
-- -   @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@
cluster_clusterStatus :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_clusterStatus :: Lens' Cluster (Maybe Text)
cluster_clusterStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
clusterStatus :: Maybe Text
$sel:clusterStatus:Cluster' :: Cluster -> Maybe Text
clusterStatus} -> Maybe Text
clusterStatus) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:clusterStatus:Cluster' :: Maybe Text
clusterStatus = Maybe Text
a} :: Cluster)

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

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

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

cluster_dataTransferProgress :: Lens.Lens' Cluster (Prelude.Maybe DataTransferProgress)
cluster_dataTransferProgress :: Lens' Cluster (Maybe DataTransferProgress)
cluster_dataTransferProgress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe DataTransferProgress
dataTransferProgress :: Maybe DataTransferProgress
$sel:dataTransferProgress:Cluster' :: Cluster -> Maybe DataTransferProgress
dataTransferProgress} -> Maybe DataTransferProgress
dataTransferProgress) (\s :: Cluster
s@Cluster' {} Maybe DataTransferProgress
a -> Cluster
s {$sel:dataTransferProgress:Cluster' :: Maybe DataTransferProgress
dataTransferProgress = Maybe DataTransferProgress
a} :: Cluster)

-- | The Amazon Resource Name (ARN) for the IAM role set as default for the
-- cluster.
cluster_defaultIamRoleArn :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_defaultIamRoleArn :: Lens' Cluster (Maybe Text)
cluster_defaultIamRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
defaultIamRoleArn :: Maybe Text
$sel:defaultIamRoleArn:Cluster' :: Cluster -> Maybe Text
defaultIamRoleArn} -> Maybe Text
defaultIamRoleArn) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:defaultIamRoleArn:Cluster' :: Maybe Text
defaultIamRoleArn = Maybe Text
a} :: Cluster)

-- | Describes a group of @DeferredMaintenanceWindow@ objects.
cluster_deferredMaintenanceWindows :: Lens.Lens' Cluster (Prelude.Maybe [DeferredMaintenanceWindow])
cluster_deferredMaintenanceWindows :: Lens' Cluster (Maybe [DeferredMaintenanceWindow])
cluster_deferredMaintenanceWindows = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [DeferredMaintenanceWindow]
deferredMaintenanceWindows :: Maybe [DeferredMaintenanceWindow]
$sel:deferredMaintenanceWindows:Cluster' :: Cluster -> Maybe [DeferredMaintenanceWindow]
deferredMaintenanceWindows} -> Maybe [DeferredMaintenanceWindow]
deferredMaintenanceWindows) (\s :: Cluster
s@Cluster' {} Maybe [DeferredMaintenanceWindow]
a -> Cluster
s {$sel:deferredMaintenanceWindows:Cluster' :: Maybe [DeferredMaintenanceWindow]
deferredMaintenanceWindows = Maybe [DeferredMaintenanceWindow]
a} :: Cluster) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The status of the elastic IP (EIP) address.
cluster_elasticIpStatus :: Lens.Lens' Cluster (Prelude.Maybe ElasticIpStatus)
cluster_elasticIpStatus :: Lens' Cluster (Maybe ElasticIpStatus)
cluster_elasticIpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe ElasticIpStatus
elasticIpStatus :: Maybe ElasticIpStatus
$sel:elasticIpStatus:Cluster' :: Cluster -> Maybe ElasticIpStatus
elasticIpStatus} -> Maybe ElasticIpStatus
elasticIpStatus) (\s :: Cluster
s@Cluster' {} Maybe ElasticIpStatus
a -> Cluster
s {$sel:elasticIpStatus:Cluster' :: Maybe ElasticIpStatus
elasticIpStatus = Maybe ElasticIpStatus
a} :: Cluster)

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

-- | A boolean value that, if @true@, indicates that data in the cluster is
-- encrypted at rest.
cluster_encrypted :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Bool)
cluster_encrypted :: Lens' Cluster (Maybe Bool)
cluster_encrypted = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Bool
encrypted :: Maybe Bool
$sel:encrypted:Cluster' :: Cluster -> Maybe Bool
encrypted} -> Maybe Bool
encrypted) (\s :: Cluster
s@Cluster' {} Maybe Bool
a -> Cluster
s {$sel:encrypted:Cluster' :: Maybe Bool
encrypted = Maybe Bool
a} :: Cluster)

-- | The connection endpoint.
cluster_endpoint :: Lens.Lens' Cluster (Prelude.Maybe Endpoint)
cluster_endpoint :: Lens' Cluster (Maybe Endpoint)
cluster_endpoint = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Endpoint
endpoint :: Maybe Endpoint
$sel:endpoint:Cluster' :: Cluster -> Maybe Endpoint
endpoint} -> Maybe Endpoint
endpoint) (\s :: Cluster
s@Cluster' {} Maybe Endpoint
a -> Cluster
s {$sel:endpoint:Cluster' :: Maybe Endpoint
endpoint = Maybe Endpoint
a} :: Cluster)

-- | An option that specifies whether to create the cluster with enhanced VPC
-- routing enabled. To create a cluster that uses enhanced VPC routing, the
-- cluster must be in a VPC. For more information, see
-- <https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html Enhanced VPC Routing>
-- in the Amazon Redshift Cluster Management Guide.
--
-- If this option is @true@, enhanced VPC routing is enabled.
--
-- Default: false
cluster_enhancedVpcRouting :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Bool)
cluster_enhancedVpcRouting :: Lens' Cluster (Maybe Bool)
cluster_enhancedVpcRouting = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Bool
enhancedVpcRouting :: Maybe Bool
$sel:enhancedVpcRouting:Cluster' :: Cluster -> Maybe Bool
enhancedVpcRouting} -> Maybe Bool
enhancedVpcRouting) (\s :: Cluster
s@Cluster' {} Maybe Bool
a -> Cluster
s {$sel:enhancedVpcRouting:Cluster' :: Maybe Bool
enhancedVpcRouting = Maybe Bool
a} :: Cluster)

-- | The date and time when the next snapshot is expected to be taken for
-- clusters with a valid snapshot schedule and backups enabled.
cluster_expectedNextSnapshotScheduleTime :: Lens.Lens' Cluster (Prelude.Maybe Prelude.UTCTime)
cluster_expectedNextSnapshotScheduleTime :: Lens' Cluster (Maybe UTCTime)
cluster_expectedNextSnapshotScheduleTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe ISO8601
expectedNextSnapshotScheduleTime :: Maybe ISO8601
$sel:expectedNextSnapshotScheduleTime:Cluster' :: Cluster -> Maybe ISO8601
expectedNextSnapshotScheduleTime} -> Maybe ISO8601
expectedNextSnapshotScheduleTime) (\s :: Cluster
s@Cluster' {} Maybe ISO8601
a -> Cluster
s {$sel:expectedNextSnapshotScheduleTime:Cluster' :: Maybe ISO8601
expectedNextSnapshotScheduleTime = Maybe ISO8601
a} :: Cluster) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The status of next expected snapshot for clusters having a valid
-- snapshot schedule and backups enabled. Possible values are the
-- following:
--
-- -   OnTrack - The next snapshot is expected to be taken on time.
--
-- -   Pending - The next snapshot is pending to be taken.
cluster_expectedNextSnapshotScheduleTimeStatus :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_expectedNextSnapshotScheduleTimeStatus :: Lens' Cluster (Maybe Text)
cluster_expectedNextSnapshotScheduleTimeStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
expectedNextSnapshotScheduleTimeStatus :: Maybe Text
$sel:expectedNextSnapshotScheduleTimeStatus:Cluster' :: Cluster -> Maybe Text
expectedNextSnapshotScheduleTimeStatus} -> Maybe Text
expectedNextSnapshotScheduleTimeStatus) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:expectedNextSnapshotScheduleTimeStatus:Cluster' :: Maybe Text
expectedNextSnapshotScheduleTimeStatus = Maybe Text
a} :: Cluster)

-- | A value that reports whether the Amazon Redshift cluster has finished
-- applying any hardware security module (HSM) settings changes specified
-- in a modify cluster command.
--
-- Values: active, applying
cluster_hsmStatus :: Lens.Lens' Cluster (Prelude.Maybe HsmStatus)
cluster_hsmStatus :: Lens' Cluster (Maybe HsmStatus)
cluster_hsmStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe HsmStatus
hsmStatus :: Maybe HsmStatus
$sel:hsmStatus:Cluster' :: Cluster -> Maybe HsmStatus
hsmStatus} -> Maybe HsmStatus
hsmStatus) (\s :: Cluster
s@Cluster' {} Maybe HsmStatus
a -> Cluster
s {$sel:hsmStatus:Cluster' :: Maybe HsmStatus
hsmStatus = Maybe HsmStatus
a} :: Cluster)

-- | A list of Identity and Access Management (IAM) roles that can be used by
-- the cluster to access other Amazon Web Services services.
cluster_iamRoles :: Lens.Lens' Cluster (Prelude.Maybe [ClusterIamRole])
cluster_iamRoles :: Lens' Cluster (Maybe [ClusterIamRole])
cluster_iamRoles = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [ClusterIamRole]
iamRoles :: Maybe [ClusterIamRole]
$sel:iamRoles:Cluster' :: Cluster -> Maybe [ClusterIamRole]
iamRoles} -> Maybe [ClusterIamRole]
iamRoles) (\s :: Cluster
s@Cluster' {} Maybe [ClusterIamRole]
a -> Cluster
s {$sel:iamRoles:Cluster' :: Maybe [ClusterIamRole]
iamRoles = Maybe [ClusterIamRole]
a} :: Cluster) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Key Management Service (KMS) key ID of the encryption key used to
-- encrypt data in the cluster.
cluster_kmsKeyId :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_kmsKeyId :: Lens' Cluster (Maybe Text)
cluster_kmsKeyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
kmsKeyId :: Maybe Text
$sel:kmsKeyId:Cluster' :: Cluster -> Maybe Text
kmsKeyId} -> Maybe Text
kmsKeyId) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:kmsKeyId:Cluster' :: Maybe Text
kmsKeyId = Maybe Text
a} :: Cluster)

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

-- | 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.
--
-- The value must be either -1 or an integer between 1 and 3,653.
cluster_manualSnapshotRetentionPeriod :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Int)
cluster_manualSnapshotRetentionPeriod :: Lens' Cluster (Maybe Int)
cluster_manualSnapshotRetentionPeriod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Int
manualSnapshotRetentionPeriod :: Maybe Int
$sel:manualSnapshotRetentionPeriod:Cluster' :: Cluster -> Maybe Int
manualSnapshotRetentionPeriod} -> Maybe Int
manualSnapshotRetentionPeriod) (\s :: Cluster
s@Cluster' {} Maybe Int
a -> Cluster
s {$sel:manualSnapshotRetentionPeriod:Cluster' :: Maybe Int
manualSnapshotRetentionPeriod = Maybe Int
a} :: Cluster)

-- | The admin user name for the cluster. This name is used to connect to the
-- database that is specified in the __DBName__ parameter.
cluster_masterUsername :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_masterUsername :: Lens' Cluster (Maybe Text)
cluster_masterUsername = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
masterUsername :: Maybe Text
$sel:masterUsername:Cluster' :: Cluster -> Maybe Text
masterUsername} -> Maybe Text
masterUsername) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:masterUsername:Cluster' :: Maybe Text
masterUsername = Maybe Text
a} :: Cluster)

-- | The status of a modify operation, if any, initiated for the cluster.
cluster_modifyStatus :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_modifyStatus :: Lens' Cluster (Maybe Text)
cluster_modifyStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
modifyStatus :: Maybe Text
$sel:modifyStatus:Cluster' :: Cluster -> Maybe Text
modifyStatus} -> Maybe Text
modifyStatus) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:modifyStatus:Cluster' :: Maybe Text
modifyStatus = Maybe Text
a} :: Cluster)

-- | The date and time in UTC when system maintenance can begin.
cluster_nextMaintenanceWindowStartTime :: Lens.Lens' Cluster (Prelude.Maybe Prelude.UTCTime)
cluster_nextMaintenanceWindowStartTime :: Lens' Cluster (Maybe UTCTime)
cluster_nextMaintenanceWindowStartTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe ISO8601
nextMaintenanceWindowStartTime :: Maybe ISO8601
$sel:nextMaintenanceWindowStartTime:Cluster' :: Cluster -> Maybe ISO8601
nextMaintenanceWindowStartTime} -> Maybe ISO8601
nextMaintenanceWindowStartTime) (\s :: Cluster
s@Cluster' {} Maybe ISO8601
a -> Cluster
s {$sel:nextMaintenanceWindowStartTime:Cluster' :: Maybe ISO8601
nextMaintenanceWindowStartTime = Maybe ISO8601
a} :: Cluster) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

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

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

-- | Cluster operations that are waiting to be started.
cluster_pendingActions :: Lens.Lens' Cluster (Prelude.Maybe [Prelude.Text])
cluster_pendingActions :: Lens' Cluster (Maybe [Text])
cluster_pendingActions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [Text]
pendingActions :: Maybe [Text]
$sel:pendingActions:Cluster' :: Cluster -> Maybe [Text]
pendingActions} -> Maybe [Text]
pendingActions) (\s :: Cluster
s@Cluster' {} Maybe [Text]
a -> Cluster
s {$sel:pendingActions:Cluster' :: Maybe [Text]
pendingActions = Maybe [Text]
a} :: Cluster) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A value that, if present, indicates that changes to the cluster are
-- pending. Specific pending changes are identified by subelements.
cluster_pendingModifiedValues :: Lens.Lens' Cluster (Prelude.Maybe PendingModifiedValues)
cluster_pendingModifiedValues :: Lens' Cluster (Maybe PendingModifiedValues)
cluster_pendingModifiedValues = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe PendingModifiedValues
pendingModifiedValues :: Maybe PendingModifiedValues
$sel:pendingModifiedValues:Cluster' :: Cluster -> Maybe PendingModifiedValues
pendingModifiedValues} -> Maybe PendingModifiedValues
pendingModifiedValues) (\s :: Cluster
s@Cluster' {} Maybe PendingModifiedValues
a -> Cluster
s {$sel:pendingModifiedValues:Cluster' :: Maybe PendingModifiedValues
pendingModifiedValues = Maybe PendingModifiedValues
a} :: Cluster)

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

-- | A boolean value that, if @true@, indicates that the cluster can be
-- accessed from a public network.
cluster_publiclyAccessible :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Bool)
cluster_publiclyAccessible :: Lens' Cluster (Maybe Bool)
cluster_publiclyAccessible = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Bool
publiclyAccessible :: Maybe Bool
$sel:publiclyAccessible:Cluster' :: Cluster -> Maybe Bool
publiclyAccessible} -> Maybe Bool
publiclyAccessible) (\s :: Cluster
s@Cluster' {} Maybe Bool
a -> Cluster
s {$sel:publiclyAccessible:Cluster' :: Maybe Bool
publiclyAccessible = Maybe Bool
a} :: Cluster)

-- | The status of the reserved-node exchange request. Statuses include
-- in-progress and requested.
cluster_reservedNodeExchangeStatus :: Lens.Lens' Cluster (Prelude.Maybe ReservedNodeExchangeStatus)
cluster_reservedNodeExchangeStatus :: Lens' Cluster (Maybe ReservedNodeExchangeStatus)
cluster_reservedNodeExchangeStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe ReservedNodeExchangeStatus
reservedNodeExchangeStatus :: Maybe ReservedNodeExchangeStatus
$sel:reservedNodeExchangeStatus:Cluster' :: Cluster -> Maybe ReservedNodeExchangeStatus
reservedNodeExchangeStatus} -> Maybe ReservedNodeExchangeStatus
reservedNodeExchangeStatus) (\s :: Cluster
s@Cluster' {} Maybe ReservedNodeExchangeStatus
a -> Cluster
s {$sel:reservedNodeExchangeStatus:Cluster' :: Maybe ReservedNodeExchangeStatus
reservedNodeExchangeStatus = Maybe ReservedNodeExchangeStatus
a} :: Cluster)

-- | Returns the following:
--
-- -   AllowCancelResize: a boolean value indicating if the resize
--     operation can be cancelled.
--
-- -   ResizeType: Returns ClassicResize
cluster_resizeInfo :: Lens.Lens' Cluster (Prelude.Maybe ResizeInfo)
cluster_resizeInfo :: Lens' Cluster (Maybe ResizeInfo)
cluster_resizeInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe ResizeInfo
resizeInfo :: Maybe ResizeInfo
$sel:resizeInfo:Cluster' :: Cluster -> Maybe ResizeInfo
resizeInfo} -> Maybe ResizeInfo
resizeInfo) (\s :: Cluster
s@Cluster' {} Maybe ResizeInfo
a -> Cluster
s {$sel:resizeInfo:Cluster' :: Maybe ResizeInfo
resizeInfo = Maybe ResizeInfo
a} :: Cluster)

-- | A value that describes the status of a cluster restore action. This
-- parameter returns null if the cluster was not created by restoring a
-- snapshot.
cluster_restoreStatus :: Lens.Lens' Cluster (Prelude.Maybe RestoreStatus)
cluster_restoreStatus :: Lens' Cluster (Maybe RestoreStatus)
cluster_restoreStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe RestoreStatus
restoreStatus :: Maybe RestoreStatus
$sel:restoreStatus:Cluster' :: Cluster -> Maybe RestoreStatus
restoreStatus} -> Maybe RestoreStatus
restoreStatus) (\s :: Cluster
s@Cluster' {} Maybe RestoreStatus
a -> Cluster
s {$sel:restoreStatus:Cluster' :: Maybe RestoreStatus
restoreStatus = Maybe RestoreStatus
a} :: Cluster)

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

-- | The current state of the cluster snapshot schedule.
cluster_snapshotScheduleState :: Lens.Lens' Cluster (Prelude.Maybe ScheduleState)
cluster_snapshotScheduleState :: Lens' Cluster (Maybe ScheduleState)
cluster_snapshotScheduleState = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe ScheduleState
snapshotScheduleState :: Maybe ScheduleState
$sel:snapshotScheduleState:Cluster' :: Cluster -> Maybe ScheduleState
snapshotScheduleState} -> Maybe ScheduleState
snapshotScheduleState) (\s :: Cluster
s@Cluster' {} Maybe ScheduleState
a -> Cluster
s {$sel:snapshotScheduleState:Cluster' :: Maybe ScheduleState
snapshotScheduleState = Maybe ScheduleState
a} :: Cluster)

-- | The list of tags for the cluster.
cluster_tags :: Lens.Lens' Cluster (Prelude.Maybe [Tag])
cluster_tags :: Lens' Cluster (Maybe [Tag])
cluster_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:Cluster' :: Cluster -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: Cluster
s@Cluster' {} Maybe [Tag]
a -> Cluster
s {$sel:tags:Cluster' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: Cluster) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The total storage capacity of the cluster in megabytes.
cluster_totalStorageCapacityInMegaBytes :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Integer)
cluster_totalStorageCapacityInMegaBytes :: Lens' Cluster (Maybe Integer)
cluster_totalStorageCapacityInMegaBytes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Integer
totalStorageCapacityInMegaBytes :: Maybe Integer
$sel:totalStorageCapacityInMegaBytes:Cluster' :: Cluster -> Maybe Integer
totalStorageCapacityInMegaBytes} -> Maybe Integer
totalStorageCapacityInMegaBytes) (\s :: Cluster
s@Cluster' {} Maybe Integer
a -> Cluster
s {$sel:totalStorageCapacityInMegaBytes:Cluster' :: Maybe Integer
totalStorageCapacityInMegaBytes = Maybe Integer
a} :: Cluster)

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

-- | A list of Amazon Virtual Private Cloud (Amazon VPC) security groups that
-- are associated with the cluster. This parameter is returned only if the
-- cluster is in a VPC.
cluster_vpcSecurityGroups :: Lens.Lens' Cluster (Prelude.Maybe [VpcSecurityGroupMembership])
cluster_vpcSecurityGroups :: Lens' Cluster (Maybe [VpcSecurityGroupMembership])
cluster_vpcSecurityGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups :: Maybe [VpcSecurityGroupMembership]
$sel:vpcSecurityGroups:Cluster' :: Cluster -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups} -> Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups) (\s :: Cluster
s@Cluster' {} Maybe [VpcSecurityGroupMembership]
a -> Cluster
s {$sel:vpcSecurityGroups:Cluster' :: Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups = Maybe [VpcSecurityGroupMembership]
a} :: Cluster) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Data.FromXML Cluster where
  parseXML :: [Node] -> Either String Cluster
parseXML [Node]
x =
    Maybe Bool
-> Maybe AquaConfiguration
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe Text
-> Maybe [ClusterNode]
-> Maybe [ClusterParameterGroupStatus]
-> Maybe Text
-> Maybe Text
-> Maybe [ClusterSecurityGroupMembership]
-> Maybe ClusterSnapshotCopyStatus
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe DataTransferProgress
-> Maybe Text
-> Maybe [DeferredMaintenanceWindow]
-> Maybe ElasticIpStatus
-> Maybe Text
-> Maybe Bool
-> Maybe Endpoint
-> Maybe Bool
-> Maybe ISO8601
-> Maybe Text
-> Maybe HsmStatus
-> Maybe [ClusterIamRole]
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe Int
-> Maybe [Text]
-> Maybe PendingModifiedValues
-> Maybe Text
-> Maybe Bool
-> Maybe ReservedNodeExchangeStatus
-> Maybe ResizeInfo
-> Maybe RestoreStatus
-> Maybe Text
-> Maybe ScheduleState
-> Maybe [Tag]
-> Maybe Integer
-> Maybe Text
-> Maybe [VpcSecurityGroupMembership]
-> Cluster
Cluster'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AllowVersionUpgrade")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AquaConfiguration")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AutomatedSnapshotRetentionPeriod")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AvailabilityZone")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AvailabilityZoneRelocationStatus")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterAvailabilityStatus")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterCreateTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterIdentifier")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterNamespaceArn")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterNodes"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterParameterGroups"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"ClusterParameterGroup")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterPublicKey")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterRevisionNumber")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterSecurityGroups"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"ClusterSecurityGroup")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterSnapshotCopyStatus")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterStatus")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterSubnetGroupName")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterVersion")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DBName")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DataTransferProgress")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DefaultIamRoleArn")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DeferredMaintenanceWindows"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may
                        (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"DeferredMaintenanceWindow")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ElasticIpStatus")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ElasticResizeNumberOfNodeOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Encrypted")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Endpoint")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"EnhancedVpcRouting")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ExpectedNextSnapshotScheduleTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ExpectedNextSnapshotScheduleTimeStatus")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"HsmStatus")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"IamRoles"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"ClusterIamRole")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"KmsKeyId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"MaintenanceTrackName")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ManualSnapshotRetentionPeriod")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"MasterUsername")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ModifyStatus")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"NextMaintenanceWindowStartTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"NodeType")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"NumberOfNodes")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"PendingActions"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"PendingModifiedValues")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"PreferredMaintenanceWindow")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"PubliclyAccessible")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ReservedNodeExchangeStatus")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ResizeInfo")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"RestoreStatus")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"SnapshotScheduleIdentifier")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"SnapshotScheduleState")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Tags"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"Tag")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"TotalStorageCapacityInMegaBytes")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"VpcId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"VpcSecurityGroups"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"VpcSecurityGroup")
                  )

instance Prelude.Hashable Cluster where
  hashWithSalt :: Int -> Cluster -> Int
hashWithSalt Int
_salt Cluster' {Maybe Bool
Maybe Int
Maybe Integer
Maybe [Text]
Maybe [ClusterIamRole]
Maybe [ClusterNode]
Maybe [ClusterParameterGroupStatus]
Maybe [ClusterSecurityGroupMembership]
Maybe [DeferredMaintenanceWindow]
Maybe [Tag]
Maybe [VpcSecurityGroupMembership]
Maybe Text
Maybe ISO8601
Maybe AquaConfiguration
Maybe ClusterSnapshotCopyStatus
Maybe DataTransferProgress
Maybe ElasticIpStatus
Maybe HsmStatus
Maybe PendingModifiedValues
Maybe ReservedNodeExchangeStatus
Maybe ResizeInfo
Maybe RestoreStatus
Maybe ScheduleState
Maybe Endpoint
vpcSecurityGroups :: Maybe [VpcSecurityGroupMembership]
vpcId :: Maybe Text
totalStorageCapacityInMegaBytes :: Maybe Integer
tags :: Maybe [Tag]
snapshotScheduleState :: Maybe ScheduleState
snapshotScheduleIdentifier :: Maybe Text
restoreStatus :: Maybe RestoreStatus
resizeInfo :: Maybe ResizeInfo
reservedNodeExchangeStatus :: Maybe ReservedNodeExchangeStatus
publiclyAccessible :: Maybe Bool
preferredMaintenanceWindow :: Maybe Text
pendingModifiedValues :: Maybe PendingModifiedValues
pendingActions :: Maybe [Text]
numberOfNodes :: Maybe Int
nodeType :: Maybe Text
nextMaintenanceWindowStartTime :: Maybe ISO8601
modifyStatus :: Maybe Text
masterUsername :: Maybe Text
manualSnapshotRetentionPeriod :: Maybe Int
maintenanceTrackName :: Maybe Text
kmsKeyId :: Maybe Text
iamRoles :: Maybe [ClusterIamRole]
hsmStatus :: Maybe HsmStatus
expectedNextSnapshotScheduleTimeStatus :: Maybe Text
expectedNextSnapshotScheduleTime :: Maybe ISO8601
enhancedVpcRouting :: Maybe Bool
endpoint :: Maybe Endpoint
encrypted :: Maybe Bool
elasticResizeNumberOfNodeOptions :: Maybe Text
elasticIpStatus :: Maybe ElasticIpStatus
deferredMaintenanceWindows :: Maybe [DeferredMaintenanceWindow]
defaultIamRoleArn :: Maybe Text
dataTransferProgress :: Maybe DataTransferProgress
dbName :: Maybe Text
clusterVersion :: Maybe Text
clusterSubnetGroupName :: Maybe Text
clusterStatus :: Maybe Text
clusterSnapshotCopyStatus :: Maybe ClusterSnapshotCopyStatus
clusterSecurityGroups :: Maybe [ClusterSecurityGroupMembership]
clusterRevisionNumber :: Maybe Text
clusterPublicKey :: Maybe Text
clusterParameterGroups :: Maybe [ClusterParameterGroupStatus]
clusterNodes :: Maybe [ClusterNode]
clusterNamespaceArn :: Maybe Text
clusterIdentifier :: Maybe Text
clusterCreateTime :: Maybe ISO8601
clusterAvailabilityStatus :: Maybe Text
availabilityZoneRelocationStatus :: Maybe Text
availabilityZone :: Maybe Text
automatedSnapshotRetentionPeriod :: Maybe Int
aquaConfiguration :: Maybe AquaConfiguration
allowVersionUpgrade :: Maybe Bool
$sel:vpcSecurityGroups:Cluster' :: Cluster -> Maybe [VpcSecurityGroupMembership]
$sel:vpcId:Cluster' :: Cluster -> Maybe Text
$sel:totalStorageCapacityInMegaBytes:Cluster' :: Cluster -> Maybe Integer
$sel:tags:Cluster' :: Cluster -> Maybe [Tag]
$sel:snapshotScheduleState:Cluster' :: Cluster -> Maybe ScheduleState
$sel:snapshotScheduleIdentifier:Cluster' :: Cluster -> Maybe Text
$sel:restoreStatus:Cluster' :: Cluster -> Maybe RestoreStatus
$sel:resizeInfo:Cluster' :: Cluster -> Maybe ResizeInfo
$sel:reservedNodeExchangeStatus:Cluster' :: Cluster -> Maybe ReservedNodeExchangeStatus
$sel:publiclyAccessible:Cluster' :: Cluster -> Maybe Bool
$sel:preferredMaintenanceWindow:Cluster' :: Cluster -> Maybe Text
$sel:pendingModifiedValues:Cluster' :: Cluster -> Maybe PendingModifiedValues
$sel:pendingActions:Cluster' :: Cluster -> Maybe [Text]
$sel:numberOfNodes:Cluster' :: Cluster -> Maybe Int
$sel:nodeType:Cluster' :: Cluster -> Maybe Text
$sel:nextMaintenanceWindowStartTime:Cluster' :: Cluster -> Maybe ISO8601
$sel:modifyStatus:Cluster' :: Cluster -> Maybe Text
$sel:masterUsername:Cluster' :: Cluster -> Maybe Text
$sel:manualSnapshotRetentionPeriod:Cluster' :: Cluster -> Maybe Int
$sel:maintenanceTrackName:Cluster' :: Cluster -> Maybe Text
$sel:kmsKeyId:Cluster' :: Cluster -> Maybe Text
$sel:iamRoles:Cluster' :: Cluster -> Maybe [ClusterIamRole]
$sel:hsmStatus:Cluster' :: Cluster -> Maybe HsmStatus
$sel:expectedNextSnapshotScheduleTimeStatus:Cluster' :: Cluster -> Maybe Text
$sel:expectedNextSnapshotScheduleTime:Cluster' :: Cluster -> Maybe ISO8601
$sel:enhancedVpcRouting:Cluster' :: Cluster -> Maybe Bool
$sel:endpoint:Cluster' :: Cluster -> Maybe Endpoint
$sel:encrypted:Cluster' :: Cluster -> Maybe Bool
$sel:elasticResizeNumberOfNodeOptions:Cluster' :: Cluster -> Maybe Text
$sel:elasticIpStatus:Cluster' :: Cluster -> Maybe ElasticIpStatus
$sel:deferredMaintenanceWindows:Cluster' :: Cluster -> Maybe [DeferredMaintenanceWindow]
$sel:defaultIamRoleArn:Cluster' :: Cluster -> Maybe Text
$sel:dataTransferProgress:Cluster' :: Cluster -> Maybe DataTransferProgress
$sel:dbName:Cluster' :: Cluster -> Maybe Text
$sel:clusterVersion:Cluster' :: Cluster -> Maybe Text
$sel:clusterSubnetGroupName:Cluster' :: Cluster -> Maybe Text
$sel:clusterStatus:Cluster' :: Cluster -> Maybe Text
$sel:clusterSnapshotCopyStatus:Cluster' :: Cluster -> Maybe ClusterSnapshotCopyStatus
$sel:clusterSecurityGroups:Cluster' :: Cluster -> Maybe [ClusterSecurityGroupMembership]
$sel:clusterRevisionNumber:Cluster' :: Cluster -> Maybe Text
$sel:clusterPublicKey:Cluster' :: Cluster -> Maybe Text
$sel:clusterParameterGroups:Cluster' :: Cluster -> Maybe [ClusterParameterGroupStatus]
$sel:clusterNodes:Cluster' :: Cluster -> Maybe [ClusterNode]
$sel:clusterNamespaceArn:Cluster' :: Cluster -> Maybe Text
$sel:clusterIdentifier:Cluster' :: Cluster -> Maybe Text
$sel:clusterCreateTime:Cluster' :: Cluster -> Maybe ISO8601
$sel:clusterAvailabilityStatus:Cluster' :: Cluster -> Maybe Text
$sel:availabilityZoneRelocationStatus:Cluster' :: Cluster -> Maybe Text
$sel:availabilityZone:Cluster' :: Cluster -> Maybe Text
$sel:automatedSnapshotRetentionPeriod:Cluster' :: Cluster -> Maybe Int
$sel:aquaConfiguration:Cluster' :: Cluster -> Maybe AquaConfiguration
$sel:allowVersionUpgrade:Cluster' :: Cluster -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
allowVersionUpgrade
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AquaConfiguration
aquaConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
automatedSnapshotRetentionPeriod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
availabilityZone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
availabilityZoneRelocationStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clusterAvailabilityStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
clusterCreateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clusterIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clusterNamespaceArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ClusterNode]
clusterNodes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ClusterParameterGroupStatus]
clusterParameterGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clusterPublicKey
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clusterRevisionNumber
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ClusterSecurityGroupMembership]
clusterSecurityGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ClusterSnapshotCopyStatus
clusterSnapshotCopyStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clusterStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clusterSubnetGroupName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clusterVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dbName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataTransferProgress
dataTransferProgress
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
defaultIamRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [DeferredMaintenanceWindow]
deferredMaintenanceWindows
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ElasticIpStatus
elasticIpStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
elasticResizeNumberOfNodeOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
encrypted
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Endpoint
endpoint
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enhancedVpcRouting
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
expectedNextSnapshotScheduleTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
expectedNextSnapshotScheduleTimeStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HsmStatus
hsmStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ClusterIamRole]
iamRoles
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
kmsKeyId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
maintenanceTrackName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
manualSnapshotRetentionPeriod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
masterUsername
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
modifyStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
nextMaintenanceWindowStartTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nodeType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
numberOfNodes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
pendingActions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PendingModifiedValues
pendingModifiedValues
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredMaintenanceWindow
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
publiclyAccessible
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReservedNodeExchangeStatus
reservedNodeExchangeStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResizeInfo
resizeInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RestoreStatus
restoreStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
snapshotScheduleIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ScheduleState
snapshotScheduleState
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
totalStorageCapacityInMegaBytes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
vpcId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups

instance Prelude.NFData Cluster where
  rnf :: Cluster -> ()
rnf Cluster' {Maybe Bool
Maybe Int
Maybe Integer
Maybe [Text]
Maybe [ClusterIamRole]
Maybe [ClusterNode]
Maybe [ClusterParameterGroupStatus]
Maybe [ClusterSecurityGroupMembership]
Maybe [DeferredMaintenanceWindow]
Maybe [Tag]
Maybe [VpcSecurityGroupMembership]
Maybe Text
Maybe ISO8601
Maybe AquaConfiguration
Maybe ClusterSnapshotCopyStatus
Maybe DataTransferProgress
Maybe ElasticIpStatus
Maybe HsmStatus
Maybe PendingModifiedValues
Maybe ReservedNodeExchangeStatus
Maybe ResizeInfo
Maybe RestoreStatus
Maybe ScheduleState
Maybe Endpoint
vpcSecurityGroups :: Maybe [VpcSecurityGroupMembership]
vpcId :: Maybe Text
totalStorageCapacityInMegaBytes :: Maybe Integer
tags :: Maybe [Tag]
snapshotScheduleState :: Maybe ScheduleState
snapshotScheduleIdentifier :: Maybe Text
restoreStatus :: Maybe RestoreStatus
resizeInfo :: Maybe ResizeInfo
reservedNodeExchangeStatus :: Maybe ReservedNodeExchangeStatus
publiclyAccessible :: Maybe Bool
preferredMaintenanceWindow :: Maybe Text
pendingModifiedValues :: Maybe PendingModifiedValues
pendingActions :: Maybe [Text]
numberOfNodes :: Maybe Int
nodeType :: Maybe Text
nextMaintenanceWindowStartTime :: Maybe ISO8601
modifyStatus :: Maybe Text
masterUsername :: Maybe Text
manualSnapshotRetentionPeriod :: Maybe Int
maintenanceTrackName :: Maybe Text
kmsKeyId :: Maybe Text
iamRoles :: Maybe [ClusterIamRole]
hsmStatus :: Maybe HsmStatus
expectedNextSnapshotScheduleTimeStatus :: Maybe Text
expectedNextSnapshotScheduleTime :: Maybe ISO8601
enhancedVpcRouting :: Maybe Bool
endpoint :: Maybe Endpoint
encrypted :: Maybe Bool
elasticResizeNumberOfNodeOptions :: Maybe Text
elasticIpStatus :: Maybe ElasticIpStatus
deferredMaintenanceWindows :: Maybe [DeferredMaintenanceWindow]
defaultIamRoleArn :: Maybe Text
dataTransferProgress :: Maybe DataTransferProgress
dbName :: Maybe Text
clusterVersion :: Maybe Text
clusterSubnetGroupName :: Maybe Text
clusterStatus :: Maybe Text
clusterSnapshotCopyStatus :: Maybe ClusterSnapshotCopyStatus
clusterSecurityGroups :: Maybe [ClusterSecurityGroupMembership]
clusterRevisionNumber :: Maybe Text
clusterPublicKey :: Maybe Text
clusterParameterGroups :: Maybe [ClusterParameterGroupStatus]
clusterNodes :: Maybe [ClusterNode]
clusterNamespaceArn :: Maybe Text
clusterIdentifier :: Maybe Text
clusterCreateTime :: Maybe ISO8601
clusterAvailabilityStatus :: Maybe Text
availabilityZoneRelocationStatus :: Maybe Text
availabilityZone :: Maybe Text
automatedSnapshotRetentionPeriod :: Maybe Int
aquaConfiguration :: Maybe AquaConfiguration
allowVersionUpgrade :: Maybe Bool
$sel:vpcSecurityGroups:Cluster' :: Cluster -> Maybe [VpcSecurityGroupMembership]
$sel:vpcId:Cluster' :: Cluster -> Maybe Text
$sel:totalStorageCapacityInMegaBytes:Cluster' :: Cluster -> Maybe Integer
$sel:tags:Cluster' :: Cluster -> Maybe [Tag]
$sel:snapshotScheduleState:Cluster' :: Cluster -> Maybe ScheduleState
$sel:snapshotScheduleIdentifier:Cluster' :: Cluster -> Maybe Text
$sel:restoreStatus:Cluster' :: Cluster -> Maybe RestoreStatus
$sel:resizeInfo:Cluster' :: Cluster -> Maybe ResizeInfo
$sel:reservedNodeExchangeStatus:Cluster' :: Cluster -> Maybe ReservedNodeExchangeStatus
$sel:publiclyAccessible:Cluster' :: Cluster -> Maybe Bool
$sel:preferredMaintenanceWindow:Cluster' :: Cluster -> Maybe Text
$sel:pendingModifiedValues:Cluster' :: Cluster -> Maybe PendingModifiedValues
$sel:pendingActions:Cluster' :: Cluster -> Maybe [Text]
$sel:numberOfNodes:Cluster' :: Cluster -> Maybe Int
$sel:nodeType:Cluster' :: Cluster -> Maybe Text
$sel:nextMaintenanceWindowStartTime:Cluster' :: Cluster -> Maybe ISO8601
$sel:modifyStatus:Cluster' :: Cluster -> Maybe Text
$sel:masterUsername:Cluster' :: Cluster -> Maybe Text
$sel:manualSnapshotRetentionPeriod:Cluster' :: Cluster -> Maybe Int
$sel:maintenanceTrackName:Cluster' :: Cluster -> Maybe Text
$sel:kmsKeyId:Cluster' :: Cluster -> Maybe Text
$sel:iamRoles:Cluster' :: Cluster -> Maybe [ClusterIamRole]
$sel:hsmStatus:Cluster' :: Cluster -> Maybe HsmStatus
$sel:expectedNextSnapshotScheduleTimeStatus:Cluster' :: Cluster -> Maybe Text
$sel:expectedNextSnapshotScheduleTime:Cluster' :: Cluster -> Maybe ISO8601
$sel:enhancedVpcRouting:Cluster' :: Cluster -> Maybe Bool
$sel:endpoint:Cluster' :: Cluster -> Maybe Endpoint
$sel:encrypted:Cluster' :: Cluster -> Maybe Bool
$sel:elasticResizeNumberOfNodeOptions:Cluster' :: Cluster -> Maybe Text
$sel:elasticIpStatus:Cluster' :: Cluster -> Maybe ElasticIpStatus
$sel:deferredMaintenanceWindows:Cluster' :: Cluster -> Maybe [DeferredMaintenanceWindow]
$sel:defaultIamRoleArn:Cluster' :: Cluster -> Maybe Text
$sel:dataTransferProgress:Cluster' :: Cluster -> Maybe DataTransferProgress
$sel:dbName:Cluster' :: Cluster -> Maybe Text
$sel:clusterVersion:Cluster' :: Cluster -> Maybe Text
$sel:clusterSubnetGroupName:Cluster' :: Cluster -> Maybe Text
$sel:clusterStatus:Cluster' :: Cluster -> Maybe Text
$sel:clusterSnapshotCopyStatus:Cluster' :: Cluster -> Maybe ClusterSnapshotCopyStatus
$sel:clusterSecurityGroups:Cluster' :: Cluster -> Maybe [ClusterSecurityGroupMembership]
$sel:clusterRevisionNumber:Cluster' :: Cluster -> Maybe Text
$sel:clusterPublicKey:Cluster' :: Cluster -> Maybe Text
$sel:clusterParameterGroups:Cluster' :: Cluster -> Maybe [ClusterParameterGroupStatus]
$sel:clusterNodes:Cluster' :: Cluster -> Maybe [ClusterNode]
$sel:clusterNamespaceArn:Cluster' :: Cluster -> Maybe Text
$sel:clusterIdentifier:Cluster' :: Cluster -> Maybe Text
$sel:clusterCreateTime:Cluster' :: Cluster -> Maybe ISO8601
$sel:clusterAvailabilityStatus:Cluster' :: Cluster -> Maybe Text
$sel:availabilityZoneRelocationStatus:Cluster' :: Cluster -> Maybe Text
$sel:availabilityZone:Cluster' :: Cluster -> Maybe Text
$sel:automatedSnapshotRetentionPeriod:Cluster' :: Cluster -> Maybe Int
$sel:aquaConfiguration:Cluster' :: Cluster -> Maybe AquaConfiguration
$sel:allowVersionUpgrade:Cluster' :: Cluster -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
allowVersionUpgrade
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AquaConfiguration
aquaConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
automatedSnapshotRetentionPeriod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
availabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
availabilityZoneRelocationStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clusterAvailabilityStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
clusterCreateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clusterIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clusterNamespaceArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ClusterNode]
clusterNodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ClusterParameterGroupStatus]
clusterParameterGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clusterPublicKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clusterRevisionNumber
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ClusterSecurityGroupMembership]
clusterSecurityGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ClusterSnapshotCopyStatus
clusterSnapshotCopyStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clusterStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clusterSubnetGroupName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clusterVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dbName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe DataTransferProgress
dataTransferProgress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
defaultIamRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [DeferredMaintenanceWindow]
deferredMaintenanceWindows
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ElasticIpStatus
elasticIpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
elasticResizeNumberOfNodeOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
encrypted
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Endpoint
endpoint
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
enhancedVpcRouting
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ISO8601
expectedNextSnapshotScheduleTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
expectedNextSnapshotScheduleTimeStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe HsmStatus
hsmStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [ClusterIamRole]
iamRoles
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
kmsKeyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
maintenanceTrackName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Int
manualSnapshotRetentionPeriod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
masterUsername
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
modifyStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ISO8601
nextMaintenanceWindowStartTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
nodeType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Int
numberOfNodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [Text]
pendingActions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe PendingModifiedValues
pendingModifiedValues
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
preferredMaintenanceWindow
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
publiclyAccessible
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ReservedNodeExchangeStatus
reservedNodeExchangeStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ResizeInfo
resizeInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe RestoreStatus
restoreStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
snapshotScheduleIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ScheduleState
snapshotScheduleState
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Integer
totalStorageCapacityInMegaBytes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
vpcId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [VpcSecurityGroupMembership]
vpcSecurityGroups