{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Neptune.CreateDBCluster
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a new Amazon Neptune DB cluster.
--
-- You can use the @ReplicationSourceIdentifier@ parameter to create the DB
-- cluster as a Read Replica of another DB cluster or Amazon Neptune DB
-- instance.
--
-- Note that when you create a new cluster using @CreateDBCluster@
-- directly, deletion protection is disabled by default (when you create a
-- new production cluster in the console, deletion protection is enabled by
-- default). You can only delete a DB cluster if its @DeletionProtection@
-- field is set to @false@.
module Amazonka.Neptune.CreateDBCluster
  ( -- * Creating a Request
    CreateDBCluster (..),
    newCreateDBCluster,

    -- * Request Lenses
    createDBCluster_availabilityZones,
    createDBCluster_backupRetentionPeriod,
    createDBCluster_characterSetName,
    createDBCluster_copyTagsToSnapshot,
    createDBCluster_dbClusterParameterGroupName,
    createDBCluster_dbSubnetGroupName,
    createDBCluster_databaseName,
    createDBCluster_deletionProtection,
    createDBCluster_enableCloudwatchLogsExports,
    createDBCluster_enableIAMDatabaseAuthentication,
    createDBCluster_engineVersion,
    createDBCluster_globalClusterIdentifier,
    createDBCluster_kmsKeyId,
    createDBCluster_masterUserPassword,
    createDBCluster_masterUsername,
    createDBCluster_optionGroupName,
    createDBCluster_port,
    createDBCluster_preSignedUrl,
    createDBCluster_preferredBackupWindow,
    createDBCluster_preferredMaintenanceWindow,
    createDBCluster_replicationSourceIdentifier,
    createDBCluster_serverlessV2ScalingConfiguration,
    createDBCluster_storageEncrypted,
    createDBCluster_tags,
    createDBCluster_vpcSecurityGroupIds,
    createDBCluster_dbClusterIdentifier,
    createDBCluster_engine,

    -- * Destructuring the Response
    CreateDBClusterResponse (..),
    newCreateDBClusterResponse,

    -- * Response Lenses
    createDBClusterResponse_dbCluster,
    createDBClusterResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Neptune.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newCreateDBCluster' smart constructor.
data CreateDBCluster = CreateDBCluster'
  { -- | A list of EC2 Availability Zones that instances in the DB cluster can be
    -- created in.
    CreateDBCluster -> Maybe [Text]
availabilityZones :: Prelude.Maybe [Prelude.Text],
    -- | The number of days for which automated backups are retained. You must
    -- specify a minimum value of 1.
    --
    -- Default: 1
    --
    -- Constraints:
    --
    -- -   Must be a value from 1 to 35
    CreateDBCluster -> Maybe Int
backupRetentionPeriod :: Prelude.Maybe Prelude.Int,
    -- | /(Not supported by Neptune)/
    CreateDBCluster -> Maybe Text
characterSetName :: Prelude.Maybe Prelude.Text,
    -- | /If set to @true@, tags are copied to any snapshot of the DB cluster
    -- that is created./
    CreateDBCluster -> Maybe Bool
copyTagsToSnapshot :: Prelude.Maybe Prelude.Bool,
    -- | The name of the DB cluster parameter group to associate with this DB
    -- cluster. If this argument is omitted, the default is used.
    --
    -- Constraints:
    --
    -- -   If supplied, must match the name of an existing
    --     DBClusterParameterGroup.
    CreateDBCluster -> Maybe Text
dbClusterParameterGroupName :: Prelude.Maybe Prelude.Text,
    -- | A DB subnet group to associate with this DB cluster.
    --
    -- Constraints: Must match the name of an existing DBSubnetGroup. Must not
    -- be default.
    --
    -- Example: @mySubnetgroup@
    CreateDBCluster -> Maybe Text
dbSubnetGroupName :: Prelude.Maybe Prelude.Text,
    -- | The name for your database of up to 64 alpha-numeric characters. If you
    -- do not provide a name, Amazon Neptune will not create a database in the
    -- DB cluster you are creating.
    CreateDBCluster -> Maybe Text
databaseName :: Prelude.Maybe Prelude.Text,
    -- | A value that indicates whether the DB cluster has deletion protection
    -- enabled. The database can\'t be deleted when deletion protection is
    -- enabled. By default, deletion protection is enabled.
    CreateDBCluster -> Maybe Bool
deletionProtection :: Prelude.Maybe Prelude.Bool,
    -- | The list of log types that need to be enabled for exporting to
    -- CloudWatch Logs.
    CreateDBCluster -> Maybe [Text]
enableCloudwatchLogsExports :: Prelude.Maybe [Prelude.Text],
    -- | If set to @true@, enables Amazon Identity and Access Management (IAM)
    -- authentication for the entire DB cluster (this cannot be set at an
    -- instance level).
    --
    -- Default: @false@.
    CreateDBCluster -> Maybe Bool
enableIAMDatabaseAuthentication :: Prelude.Maybe Prelude.Bool,
    -- | The version number of the database engine to use for the new DB cluster.
    --
    -- Example: @1.0.2.1@
    CreateDBCluster -> Maybe Text
engineVersion :: Prelude.Maybe Prelude.Text,
    -- | The ID of the Neptune global database to which this new DB cluster
    -- should be added.
    CreateDBCluster -> Maybe Text
globalClusterIdentifier :: Prelude.Maybe Prelude.Text,
    -- | The Amazon KMS key identifier for an encrypted DB cluster.
    --
    -- The KMS key identifier is the Amazon Resource Name (ARN) for the KMS
    -- encryption key. If you are creating a DB cluster with the same Amazon
    -- account that owns the KMS encryption key used to encrypt the new DB
    -- cluster, then you can use the KMS key alias instead of the ARN for the
    -- KMS encryption key.
    --
    -- If an encryption key is not specified in @KmsKeyId@:
    --
    -- -   If @ReplicationSourceIdentifier@ identifies an encrypted source,
    --     then Amazon Neptune will use the encryption key used to encrypt the
    --     source. Otherwise, Amazon Neptune will use your default encryption
    --     key.
    --
    -- -   If the @StorageEncrypted@ parameter is true and
    --     @ReplicationSourceIdentifier@ is not specified, then Amazon Neptune
    --     will use your default encryption key.
    --
    -- Amazon KMS creates the default encryption key for your Amazon account.
    -- Your Amazon account has a different default encryption key for each
    -- Amazon Region.
    --
    -- If you create a Read Replica of an encrypted DB cluster in another
    -- Amazon Region, you must set @KmsKeyId@ to a KMS key ID that is valid in
    -- the destination Amazon Region. This key is used to encrypt the Read
    -- Replica in that Amazon Region.
    CreateDBCluster -> Maybe Text
kmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | Not supported by Neptune.
    CreateDBCluster -> Maybe Text
masterUserPassword :: Prelude.Maybe Prelude.Text,
    -- | Not supported by Neptune.
    CreateDBCluster -> Maybe Text
masterUsername :: Prelude.Maybe Prelude.Text,
    -- | /(Not supported by Neptune)/
    CreateDBCluster -> Maybe Text
optionGroupName :: Prelude.Maybe Prelude.Text,
    -- | The port number on which the instances in the DB cluster accept
    -- connections.
    --
    -- Default: @8182@
    CreateDBCluster -> Maybe Int
port :: Prelude.Maybe Prelude.Int,
    -- | This parameter is not currently supported.
    CreateDBCluster -> Maybe Text
preSignedUrl :: Prelude.Maybe Prelude.Text,
    -- | The daily time range during which automated backups are created if
    -- automated backups are enabled using the @BackupRetentionPeriod@
    -- parameter.
    --
    -- The default is a 30-minute window selected at random from an 8-hour
    -- block of time for each Amazon Region. To see the time blocks available,
    -- see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
    -- in the /Amazon Neptune User Guide./
    --
    -- Constraints:
    --
    -- -   Must be in the format @hh24:mi-hh24:mi@.
    --
    -- -   Must be in Universal Coordinated Time (UTC).
    --
    -- -   Must not conflict with the preferred maintenance window.
    --
    -- -   Must be at least 30 minutes.
    CreateDBCluster -> Maybe Text
preferredBackupWindow :: Prelude.Maybe Prelude.Text,
    -- | The weekly time range during which system maintenance can occur, in
    -- Universal Coordinated Time (UTC).
    --
    -- Format: @ddd:hh24:mi-ddd:hh24:mi@
    --
    -- The default is a 30-minute window selected at random from an 8-hour
    -- block of time for each Amazon Region, occurring on a random day of the
    -- week. To see the time blocks available, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
    -- in the /Amazon Neptune User Guide./
    --
    -- Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
    --
    -- Constraints: Minimum 30-minute window.
    CreateDBCluster -> Maybe Text
preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the source DB instance or DB cluster
    -- if this DB cluster is created as a Read Replica.
    CreateDBCluster -> Maybe Text
replicationSourceIdentifier :: Prelude.Maybe Prelude.Text,
    CreateDBCluster -> Maybe ServerlessV2ScalingConfiguration
serverlessV2ScalingConfiguration :: Prelude.Maybe ServerlessV2ScalingConfiguration,
    -- | Specifies whether the DB cluster is encrypted.
    CreateDBCluster -> Maybe Bool
storageEncrypted :: Prelude.Maybe Prelude.Bool,
    -- | The tags to assign to the new DB cluster.
    CreateDBCluster -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | A list of EC2 VPC security groups to associate with this DB cluster.
    CreateDBCluster -> Maybe [Text]
vpcSecurityGroupIds :: Prelude.Maybe [Prelude.Text],
    -- | The DB cluster identifier. This parameter is stored as a lowercase
    -- string.
    --
    -- Constraints:
    --
    -- -   Must contain from 1 to 63 letters, numbers, or hyphens.
    --
    -- -   First character must be a letter.
    --
    -- -   Cannot end with a hyphen or contain two consecutive hyphens.
    --
    -- Example: @my-cluster1@
    CreateDBCluster -> Text
dbClusterIdentifier :: Prelude.Text,
    -- | The name of the database engine to be used for this DB cluster.
    --
    -- Valid Values: @neptune@
    CreateDBCluster -> Text
engine :: Prelude.Text
  }
  deriving (CreateDBCluster -> CreateDBCluster -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateDBCluster -> CreateDBCluster -> Bool
$c/= :: CreateDBCluster -> CreateDBCluster -> Bool
== :: CreateDBCluster -> CreateDBCluster -> Bool
$c== :: CreateDBCluster -> CreateDBCluster -> Bool
Prelude.Eq, ReadPrec [CreateDBCluster]
ReadPrec CreateDBCluster
Int -> ReadS CreateDBCluster
ReadS [CreateDBCluster]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateDBCluster]
$creadListPrec :: ReadPrec [CreateDBCluster]
readPrec :: ReadPrec CreateDBCluster
$creadPrec :: ReadPrec CreateDBCluster
readList :: ReadS [CreateDBCluster]
$creadList :: ReadS [CreateDBCluster]
readsPrec :: Int -> ReadS CreateDBCluster
$creadsPrec :: Int -> ReadS CreateDBCluster
Prelude.Read, Int -> CreateDBCluster -> ShowS
[CreateDBCluster] -> ShowS
CreateDBCluster -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateDBCluster] -> ShowS
$cshowList :: [CreateDBCluster] -> ShowS
show :: CreateDBCluster -> String
$cshow :: CreateDBCluster -> String
showsPrec :: Int -> CreateDBCluster -> ShowS
$cshowsPrec :: Int -> CreateDBCluster -> ShowS
Prelude.Show, forall x. Rep CreateDBCluster x -> CreateDBCluster
forall x. CreateDBCluster -> Rep CreateDBCluster x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateDBCluster x -> CreateDBCluster
$cfrom :: forall x. CreateDBCluster -> Rep CreateDBCluster x
Prelude.Generic)

-- |
-- Create a value of 'CreateDBCluster' 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:
--
-- 'availabilityZones', 'createDBCluster_availabilityZones' - A list of EC2 Availability Zones that instances in the DB cluster can be
-- created in.
--
-- 'backupRetentionPeriod', 'createDBCluster_backupRetentionPeriod' - The number of days for which automated backups are retained. You must
-- specify a minimum value of 1.
--
-- Default: 1
--
-- Constraints:
--
-- -   Must be a value from 1 to 35
--
-- 'characterSetName', 'createDBCluster_characterSetName' - /(Not supported by Neptune)/
--
-- 'copyTagsToSnapshot', 'createDBCluster_copyTagsToSnapshot' - /If set to @true@, tags are copied to any snapshot of the DB cluster
-- that is created./
--
-- 'dbClusterParameterGroupName', 'createDBCluster_dbClusterParameterGroupName' - The name of the DB cluster parameter group to associate with this DB
-- cluster. If this argument is omitted, the default is used.
--
-- Constraints:
--
-- -   If supplied, must match the name of an existing
--     DBClusterParameterGroup.
--
-- 'dbSubnetGroupName', 'createDBCluster_dbSubnetGroupName' - A DB subnet group to associate with this DB cluster.
--
-- Constraints: Must match the name of an existing DBSubnetGroup. Must not
-- be default.
--
-- Example: @mySubnetgroup@
--
-- 'databaseName', 'createDBCluster_databaseName' - The name for your database of up to 64 alpha-numeric characters. If you
-- do not provide a name, Amazon Neptune will not create a database in the
-- DB cluster you are creating.
--
-- 'deletionProtection', 'createDBCluster_deletionProtection' - A value that indicates whether the DB cluster has deletion protection
-- enabled. The database can\'t be deleted when deletion protection is
-- enabled. By default, deletion protection is enabled.
--
-- 'enableCloudwatchLogsExports', 'createDBCluster_enableCloudwatchLogsExports' - The list of log types that need to be enabled for exporting to
-- CloudWatch Logs.
--
-- 'enableIAMDatabaseAuthentication', 'createDBCluster_enableIAMDatabaseAuthentication' - If set to @true@, enables Amazon Identity and Access Management (IAM)
-- authentication for the entire DB cluster (this cannot be set at an
-- instance level).
--
-- Default: @false@.
--
-- 'engineVersion', 'createDBCluster_engineVersion' - The version number of the database engine to use for the new DB cluster.
--
-- Example: @1.0.2.1@
--
-- 'globalClusterIdentifier', 'createDBCluster_globalClusterIdentifier' - The ID of the Neptune global database to which this new DB cluster
-- should be added.
--
-- 'kmsKeyId', 'createDBCluster_kmsKeyId' - The Amazon KMS key identifier for an encrypted DB cluster.
--
-- The KMS key identifier is the Amazon Resource Name (ARN) for the KMS
-- encryption key. If you are creating a DB cluster with the same Amazon
-- account that owns the KMS encryption key used to encrypt the new DB
-- cluster, then you can use the KMS key alias instead of the ARN for the
-- KMS encryption key.
--
-- If an encryption key is not specified in @KmsKeyId@:
--
-- -   If @ReplicationSourceIdentifier@ identifies an encrypted source,
--     then Amazon Neptune will use the encryption key used to encrypt the
--     source. Otherwise, Amazon Neptune will use your default encryption
--     key.
--
-- -   If the @StorageEncrypted@ parameter is true and
--     @ReplicationSourceIdentifier@ is not specified, then Amazon Neptune
--     will use your default encryption key.
--
-- Amazon KMS creates the default encryption key for your Amazon account.
-- Your Amazon account has a different default encryption key for each
-- Amazon Region.
--
-- If you create a Read Replica of an encrypted DB cluster in another
-- Amazon Region, you must set @KmsKeyId@ to a KMS key ID that is valid in
-- the destination Amazon Region. This key is used to encrypt the Read
-- Replica in that Amazon Region.
--
-- 'masterUserPassword', 'createDBCluster_masterUserPassword' - Not supported by Neptune.
--
-- 'masterUsername', 'createDBCluster_masterUsername' - Not supported by Neptune.
--
-- 'optionGroupName', 'createDBCluster_optionGroupName' - /(Not supported by Neptune)/
--
-- 'port', 'createDBCluster_port' - The port number on which the instances in the DB cluster accept
-- connections.
--
-- Default: @8182@
--
-- 'preSignedUrl', 'createDBCluster_preSignedUrl' - This parameter is not currently supported.
--
-- 'preferredBackupWindow', 'createDBCluster_preferredBackupWindow' - The daily time range during which automated backups are created if
-- automated backups are enabled using the @BackupRetentionPeriod@
-- parameter.
--
-- The default is a 30-minute window selected at random from an 8-hour
-- block of time for each Amazon Region. To see the time blocks available,
-- see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
-- in the /Amazon Neptune User Guide./
--
-- Constraints:
--
-- -   Must be in the format @hh24:mi-hh24:mi@.
--
-- -   Must be in Universal Coordinated Time (UTC).
--
-- -   Must not conflict with the preferred maintenance window.
--
-- -   Must be at least 30 minutes.
--
-- 'preferredMaintenanceWindow', 'createDBCluster_preferredMaintenanceWindow' - The weekly time range during which system maintenance can occur, in
-- Universal Coordinated Time (UTC).
--
-- Format: @ddd:hh24:mi-ddd:hh24:mi@
--
-- The default is a 30-minute window selected at random from an 8-hour
-- block of time for each Amazon Region, occurring on a random day of the
-- week. To see the time blocks available, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
-- in the /Amazon Neptune User Guide./
--
-- Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
--
-- Constraints: Minimum 30-minute window.
--
-- 'replicationSourceIdentifier', 'createDBCluster_replicationSourceIdentifier' - The Amazon Resource Name (ARN) of the source DB instance or DB cluster
-- if this DB cluster is created as a Read Replica.
--
-- 'serverlessV2ScalingConfiguration', 'createDBCluster_serverlessV2ScalingConfiguration' - Undocumented member.
--
-- 'storageEncrypted', 'createDBCluster_storageEncrypted' - Specifies whether the DB cluster is encrypted.
--
-- 'tags', 'createDBCluster_tags' - The tags to assign to the new DB cluster.
--
-- 'vpcSecurityGroupIds', 'createDBCluster_vpcSecurityGroupIds' - A list of EC2 VPC security groups to associate with this DB cluster.
--
-- 'dbClusterIdentifier', 'createDBCluster_dbClusterIdentifier' - The DB cluster identifier. This parameter is stored as a lowercase
-- string.
--
-- Constraints:
--
-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
--
-- -   First character must be a letter.
--
-- -   Cannot end with a hyphen or contain two consecutive hyphens.
--
-- Example: @my-cluster1@
--
-- 'engine', 'createDBCluster_engine' - The name of the database engine to be used for this DB cluster.
--
-- Valid Values: @neptune@
newCreateDBCluster ::
  -- | 'dbClusterIdentifier'
  Prelude.Text ->
  -- | 'engine'
  Prelude.Text ->
  CreateDBCluster
newCreateDBCluster :: Text -> Text -> CreateDBCluster
newCreateDBCluster Text
pDBClusterIdentifier_ Text
pEngine_ =
  CreateDBCluster'
    { $sel:availabilityZones:CreateDBCluster' :: Maybe [Text]
availabilityZones =
        forall a. Maybe a
Prelude.Nothing,
      $sel:backupRetentionPeriod:CreateDBCluster' :: Maybe Int
backupRetentionPeriod = forall a. Maybe a
Prelude.Nothing,
      $sel:characterSetName:CreateDBCluster' :: Maybe Text
characterSetName = forall a. Maybe a
Prelude.Nothing,
      $sel:copyTagsToSnapshot:CreateDBCluster' :: Maybe Bool
copyTagsToSnapshot = forall a. Maybe a
Prelude.Nothing,
      $sel:dbClusterParameterGroupName:CreateDBCluster' :: Maybe Text
dbClusterParameterGroupName = forall a. Maybe a
Prelude.Nothing,
      $sel:dbSubnetGroupName:CreateDBCluster' :: Maybe Text
dbSubnetGroupName = forall a. Maybe a
Prelude.Nothing,
      $sel:databaseName:CreateDBCluster' :: Maybe Text
databaseName = forall a. Maybe a
Prelude.Nothing,
      $sel:deletionProtection:CreateDBCluster' :: Maybe Bool
deletionProtection = forall a. Maybe a
Prelude.Nothing,
      $sel:enableCloudwatchLogsExports:CreateDBCluster' :: Maybe [Text]
enableCloudwatchLogsExports = forall a. Maybe a
Prelude.Nothing,
      $sel:enableIAMDatabaseAuthentication:CreateDBCluster' :: Maybe Bool
enableIAMDatabaseAuthentication = forall a. Maybe a
Prelude.Nothing,
      $sel:engineVersion:CreateDBCluster' :: Maybe Text
engineVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:globalClusterIdentifier:CreateDBCluster' :: Maybe Text
globalClusterIdentifier = forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyId:CreateDBCluster' :: Maybe Text
kmsKeyId = forall a. Maybe a
Prelude.Nothing,
      $sel:masterUserPassword:CreateDBCluster' :: Maybe Text
masterUserPassword = forall a. Maybe a
Prelude.Nothing,
      $sel:masterUsername:CreateDBCluster' :: Maybe Text
masterUsername = forall a. Maybe a
Prelude.Nothing,
      $sel:optionGroupName:CreateDBCluster' :: Maybe Text
optionGroupName = forall a. Maybe a
Prelude.Nothing,
      $sel:port:CreateDBCluster' :: Maybe Int
port = forall a. Maybe a
Prelude.Nothing,
      $sel:preSignedUrl:CreateDBCluster' :: Maybe Text
preSignedUrl = forall a. Maybe a
Prelude.Nothing,
      $sel:preferredBackupWindow:CreateDBCluster' :: Maybe Text
preferredBackupWindow = forall a. Maybe a
Prelude.Nothing,
      $sel:preferredMaintenanceWindow:CreateDBCluster' :: Maybe Text
preferredMaintenanceWindow = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationSourceIdentifier:CreateDBCluster' :: Maybe Text
replicationSourceIdentifier = forall a. Maybe a
Prelude.Nothing,
      $sel:serverlessV2ScalingConfiguration:CreateDBCluster' :: Maybe ServerlessV2ScalingConfiguration
serverlessV2ScalingConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:storageEncrypted:CreateDBCluster' :: Maybe Bool
storageEncrypted = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateDBCluster' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:vpcSecurityGroupIds:CreateDBCluster' :: Maybe [Text]
vpcSecurityGroupIds = forall a. Maybe a
Prelude.Nothing,
      $sel:dbClusterIdentifier:CreateDBCluster' :: Text
dbClusterIdentifier = Text
pDBClusterIdentifier_,
      $sel:engine:CreateDBCluster' :: Text
engine = Text
pEngine_
    }

-- | A list of EC2 Availability Zones that instances in the DB cluster can be
-- created in.
createDBCluster_availabilityZones :: Lens.Lens' CreateDBCluster (Prelude.Maybe [Prelude.Text])
createDBCluster_availabilityZones :: Lens' CreateDBCluster (Maybe [Text])
createDBCluster_availabilityZones = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe [Text]
availabilityZones :: Maybe [Text]
$sel:availabilityZones:CreateDBCluster' :: CreateDBCluster -> Maybe [Text]
availabilityZones} -> Maybe [Text]
availabilityZones) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe [Text]
a -> CreateDBCluster
s {$sel:availabilityZones:CreateDBCluster' :: Maybe [Text]
availabilityZones = Maybe [Text]
a} :: CreateDBCluster) 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 number of days for which automated backups are retained. You must
-- specify a minimum value of 1.
--
-- Default: 1
--
-- Constraints:
--
-- -   Must be a value from 1 to 35
createDBCluster_backupRetentionPeriod :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Int)
createDBCluster_backupRetentionPeriod :: Lens' CreateDBCluster (Maybe Int)
createDBCluster_backupRetentionPeriod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Int
backupRetentionPeriod :: Maybe Int
$sel:backupRetentionPeriod:CreateDBCluster' :: CreateDBCluster -> Maybe Int
backupRetentionPeriod} -> Maybe Int
backupRetentionPeriod) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Int
a -> CreateDBCluster
s {$sel:backupRetentionPeriod:CreateDBCluster' :: Maybe Int
backupRetentionPeriod = Maybe Int
a} :: CreateDBCluster)

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

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

-- | The name of the DB cluster parameter group to associate with this DB
-- cluster. If this argument is omitted, the default is used.
--
-- Constraints:
--
-- -   If supplied, must match the name of an existing
--     DBClusterParameterGroup.
createDBCluster_dbClusterParameterGroupName :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
createDBCluster_dbClusterParameterGroupName :: Lens' CreateDBCluster (Maybe Text)
createDBCluster_dbClusterParameterGroupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Text
dbClusterParameterGroupName :: Maybe Text
$sel:dbClusterParameterGroupName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
dbClusterParameterGroupName} -> Maybe Text
dbClusterParameterGroupName) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Text
a -> CreateDBCluster
s {$sel:dbClusterParameterGroupName:CreateDBCluster' :: Maybe Text
dbClusterParameterGroupName = Maybe Text
a} :: CreateDBCluster)

-- | A DB subnet group to associate with this DB cluster.
--
-- Constraints: Must match the name of an existing DBSubnetGroup. Must not
-- be default.
--
-- Example: @mySubnetgroup@
createDBCluster_dbSubnetGroupName :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
createDBCluster_dbSubnetGroupName :: Lens' CreateDBCluster (Maybe Text)
createDBCluster_dbSubnetGroupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Text
dbSubnetGroupName :: Maybe Text
$sel:dbSubnetGroupName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
dbSubnetGroupName} -> Maybe Text
dbSubnetGroupName) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Text
a -> CreateDBCluster
s {$sel:dbSubnetGroupName:CreateDBCluster' :: Maybe Text
dbSubnetGroupName = Maybe Text
a} :: CreateDBCluster)

-- | The name for your database of up to 64 alpha-numeric characters. If you
-- do not provide a name, Amazon Neptune will not create a database in the
-- DB cluster you are creating.
createDBCluster_databaseName :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
createDBCluster_databaseName :: Lens' CreateDBCluster (Maybe Text)
createDBCluster_databaseName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Text
databaseName :: Maybe Text
$sel:databaseName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
databaseName} -> Maybe Text
databaseName) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Text
a -> CreateDBCluster
s {$sel:databaseName:CreateDBCluster' :: Maybe Text
databaseName = Maybe Text
a} :: CreateDBCluster)

-- | A value that indicates whether the DB cluster has deletion protection
-- enabled. The database can\'t be deleted when deletion protection is
-- enabled. By default, deletion protection is enabled.
createDBCluster_deletionProtection :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Bool)
createDBCluster_deletionProtection :: Lens' CreateDBCluster (Maybe Bool)
createDBCluster_deletionProtection = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Bool
deletionProtection :: Maybe Bool
$sel:deletionProtection:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
deletionProtection} -> Maybe Bool
deletionProtection) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Bool
a -> CreateDBCluster
s {$sel:deletionProtection:CreateDBCluster' :: Maybe Bool
deletionProtection = Maybe Bool
a} :: CreateDBCluster)

-- | The list of log types that need to be enabled for exporting to
-- CloudWatch Logs.
createDBCluster_enableCloudwatchLogsExports :: Lens.Lens' CreateDBCluster (Prelude.Maybe [Prelude.Text])
createDBCluster_enableCloudwatchLogsExports :: Lens' CreateDBCluster (Maybe [Text])
createDBCluster_enableCloudwatchLogsExports = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe [Text]
enableCloudwatchLogsExports :: Maybe [Text]
$sel:enableCloudwatchLogsExports:CreateDBCluster' :: CreateDBCluster -> Maybe [Text]
enableCloudwatchLogsExports} -> Maybe [Text]
enableCloudwatchLogsExports) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe [Text]
a -> CreateDBCluster
s {$sel:enableCloudwatchLogsExports:CreateDBCluster' :: Maybe [Text]
enableCloudwatchLogsExports = Maybe [Text]
a} :: CreateDBCluster) 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

-- | If set to @true@, enables Amazon Identity and Access Management (IAM)
-- authentication for the entire DB cluster (this cannot be set at an
-- instance level).
--
-- Default: @false@.
createDBCluster_enableIAMDatabaseAuthentication :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Bool)
createDBCluster_enableIAMDatabaseAuthentication :: Lens' CreateDBCluster (Maybe Bool)
createDBCluster_enableIAMDatabaseAuthentication = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Bool
enableIAMDatabaseAuthentication :: Maybe Bool
$sel:enableIAMDatabaseAuthentication:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
enableIAMDatabaseAuthentication} -> Maybe Bool
enableIAMDatabaseAuthentication) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Bool
a -> CreateDBCluster
s {$sel:enableIAMDatabaseAuthentication:CreateDBCluster' :: Maybe Bool
enableIAMDatabaseAuthentication = Maybe Bool
a} :: CreateDBCluster)

-- | The version number of the database engine to use for the new DB cluster.
--
-- Example: @1.0.2.1@
createDBCluster_engineVersion :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
createDBCluster_engineVersion :: Lens' CreateDBCluster (Maybe Text)
createDBCluster_engineVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Text
engineVersion :: Maybe Text
$sel:engineVersion:CreateDBCluster' :: CreateDBCluster -> Maybe Text
engineVersion} -> Maybe Text
engineVersion) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Text
a -> CreateDBCluster
s {$sel:engineVersion:CreateDBCluster' :: Maybe Text
engineVersion = Maybe Text
a} :: CreateDBCluster)

-- | The ID of the Neptune global database to which this new DB cluster
-- should be added.
createDBCluster_globalClusterIdentifier :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
createDBCluster_globalClusterIdentifier :: Lens' CreateDBCluster (Maybe Text)
createDBCluster_globalClusterIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Text
globalClusterIdentifier :: Maybe Text
$sel:globalClusterIdentifier:CreateDBCluster' :: CreateDBCluster -> Maybe Text
globalClusterIdentifier} -> Maybe Text
globalClusterIdentifier) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Text
a -> CreateDBCluster
s {$sel:globalClusterIdentifier:CreateDBCluster' :: Maybe Text
globalClusterIdentifier = Maybe Text
a} :: CreateDBCluster)

-- | The Amazon KMS key identifier for an encrypted DB cluster.
--
-- The KMS key identifier is the Amazon Resource Name (ARN) for the KMS
-- encryption key. If you are creating a DB cluster with the same Amazon
-- account that owns the KMS encryption key used to encrypt the new DB
-- cluster, then you can use the KMS key alias instead of the ARN for the
-- KMS encryption key.
--
-- If an encryption key is not specified in @KmsKeyId@:
--
-- -   If @ReplicationSourceIdentifier@ identifies an encrypted source,
--     then Amazon Neptune will use the encryption key used to encrypt the
--     source. Otherwise, Amazon Neptune will use your default encryption
--     key.
--
-- -   If the @StorageEncrypted@ parameter is true and
--     @ReplicationSourceIdentifier@ is not specified, then Amazon Neptune
--     will use your default encryption key.
--
-- Amazon KMS creates the default encryption key for your Amazon account.
-- Your Amazon account has a different default encryption key for each
-- Amazon Region.
--
-- If you create a Read Replica of an encrypted DB cluster in another
-- Amazon Region, you must set @KmsKeyId@ to a KMS key ID that is valid in
-- the destination Amazon Region. This key is used to encrypt the Read
-- Replica in that Amazon Region.
createDBCluster_kmsKeyId :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
createDBCluster_kmsKeyId :: Lens' CreateDBCluster (Maybe Text)
createDBCluster_kmsKeyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Text
kmsKeyId :: Maybe Text
$sel:kmsKeyId:CreateDBCluster' :: CreateDBCluster -> Maybe Text
kmsKeyId} -> Maybe Text
kmsKeyId) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Text
a -> CreateDBCluster
s {$sel:kmsKeyId:CreateDBCluster' :: Maybe Text
kmsKeyId = Maybe Text
a} :: CreateDBCluster)

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

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

-- | /(Not supported by Neptune)/
createDBCluster_optionGroupName :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
createDBCluster_optionGroupName :: Lens' CreateDBCluster (Maybe Text)
createDBCluster_optionGroupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Text
optionGroupName :: Maybe Text
$sel:optionGroupName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
optionGroupName} -> Maybe Text
optionGroupName) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Text
a -> CreateDBCluster
s {$sel:optionGroupName:CreateDBCluster' :: Maybe Text
optionGroupName = Maybe Text
a} :: CreateDBCluster)

-- | The port number on which the instances in the DB cluster accept
-- connections.
--
-- Default: @8182@
createDBCluster_port :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Int)
createDBCluster_port :: Lens' CreateDBCluster (Maybe Int)
createDBCluster_port = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Int
port :: Maybe Int
$sel:port:CreateDBCluster' :: CreateDBCluster -> Maybe Int
port} -> Maybe Int
port) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Int
a -> CreateDBCluster
s {$sel:port:CreateDBCluster' :: Maybe Int
port = Maybe Int
a} :: CreateDBCluster)

-- | This parameter is not currently supported.
createDBCluster_preSignedUrl :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
createDBCluster_preSignedUrl :: Lens' CreateDBCluster (Maybe Text)
createDBCluster_preSignedUrl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Text
preSignedUrl :: Maybe Text
$sel:preSignedUrl:CreateDBCluster' :: CreateDBCluster -> Maybe Text
preSignedUrl} -> Maybe Text
preSignedUrl) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Text
a -> CreateDBCluster
s {$sel:preSignedUrl:CreateDBCluster' :: Maybe Text
preSignedUrl = Maybe Text
a} :: CreateDBCluster)

-- | The daily time range during which automated backups are created if
-- automated backups are enabled using the @BackupRetentionPeriod@
-- parameter.
--
-- The default is a 30-minute window selected at random from an 8-hour
-- block of time for each Amazon Region. To see the time blocks available,
-- see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
-- in the /Amazon Neptune User Guide./
--
-- Constraints:
--
-- -   Must be in the format @hh24:mi-hh24:mi@.
--
-- -   Must be in Universal Coordinated Time (UTC).
--
-- -   Must not conflict with the preferred maintenance window.
--
-- -   Must be at least 30 minutes.
createDBCluster_preferredBackupWindow :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
createDBCluster_preferredBackupWindow :: Lens' CreateDBCluster (Maybe Text)
createDBCluster_preferredBackupWindow = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Text
preferredBackupWindow :: Maybe Text
$sel:preferredBackupWindow:CreateDBCluster' :: CreateDBCluster -> Maybe Text
preferredBackupWindow} -> Maybe Text
preferredBackupWindow) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Text
a -> CreateDBCluster
s {$sel:preferredBackupWindow:CreateDBCluster' :: Maybe Text
preferredBackupWindow = Maybe Text
a} :: CreateDBCluster)

-- | The weekly time range during which system maintenance can occur, in
-- Universal Coordinated Time (UTC).
--
-- Format: @ddd:hh24:mi-ddd:hh24:mi@
--
-- The default is a 30-minute window selected at random from an 8-hour
-- block of time for each Amazon Region, occurring on a random day of the
-- week. To see the time blocks available, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html Adjusting the Preferred Maintenance Window>
-- in the /Amazon Neptune User Guide./
--
-- Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
--
-- Constraints: Minimum 30-minute window.
createDBCluster_preferredMaintenanceWindow :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
createDBCluster_preferredMaintenanceWindow :: Lens' CreateDBCluster (Maybe Text)
createDBCluster_preferredMaintenanceWindow = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Text
preferredMaintenanceWindow :: Maybe Text
$sel:preferredMaintenanceWindow:CreateDBCluster' :: CreateDBCluster -> Maybe Text
preferredMaintenanceWindow} -> Maybe Text
preferredMaintenanceWindow) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Text
a -> CreateDBCluster
s {$sel:preferredMaintenanceWindow:CreateDBCluster' :: Maybe Text
preferredMaintenanceWindow = Maybe Text
a} :: CreateDBCluster)

-- | The Amazon Resource Name (ARN) of the source DB instance or DB cluster
-- if this DB cluster is created as a Read Replica.
createDBCluster_replicationSourceIdentifier :: Lens.Lens' CreateDBCluster (Prelude.Maybe Prelude.Text)
createDBCluster_replicationSourceIdentifier :: Lens' CreateDBCluster (Maybe Text)
createDBCluster_replicationSourceIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe Text
replicationSourceIdentifier :: Maybe Text
$sel:replicationSourceIdentifier:CreateDBCluster' :: CreateDBCluster -> Maybe Text
replicationSourceIdentifier} -> Maybe Text
replicationSourceIdentifier) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe Text
a -> CreateDBCluster
s {$sel:replicationSourceIdentifier:CreateDBCluster' :: Maybe Text
replicationSourceIdentifier = Maybe Text
a} :: CreateDBCluster)

-- | Undocumented member.
createDBCluster_serverlessV2ScalingConfiguration :: Lens.Lens' CreateDBCluster (Prelude.Maybe ServerlessV2ScalingConfiguration)
createDBCluster_serverlessV2ScalingConfiguration :: Lens' CreateDBCluster (Maybe ServerlessV2ScalingConfiguration)
createDBCluster_serverlessV2ScalingConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe ServerlessV2ScalingConfiguration
serverlessV2ScalingConfiguration :: Maybe ServerlessV2ScalingConfiguration
$sel:serverlessV2ScalingConfiguration:CreateDBCluster' :: CreateDBCluster -> Maybe ServerlessV2ScalingConfiguration
serverlessV2ScalingConfiguration} -> Maybe ServerlessV2ScalingConfiguration
serverlessV2ScalingConfiguration) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe ServerlessV2ScalingConfiguration
a -> CreateDBCluster
s {$sel:serverlessV2ScalingConfiguration:CreateDBCluster' :: Maybe ServerlessV2ScalingConfiguration
serverlessV2ScalingConfiguration = Maybe ServerlessV2ScalingConfiguration
a} :: CreateDBCluster)

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

-- | The tags to assign to the new DB cluster.
createDBCluster_tags :: Lens.Lens' CreateDBCluster (Prelude.Maybe [Tag])
createDBCluster_tags :: Lens' CreateDBCluster (Maybe [Tag])
createDBCluster_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateDBCluster' :: CreateDBCluster -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe [Tag]
a -> CreateDBCluster
s {$sel:tags:CreateDBCluster' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateDBCluster) 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 list of EC2 VPC security groups to associate with this DB cluster.
createDBCluster_vpcSecurityGroupIds :: Lens.Lens' CreateDBCluster (Prelude.Maybe [Prelude.Text])
createDBCluster_vpcSecurityGroupIds :: Lens' CreateDBCluster (Maybe [Text])
createDBCluster_vpcSecurityGroupIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Maybe [Text]
vpcSecurityGroupIds :: Maybe [Text]
$sel:vpcSecurityGroupIds:CreateDBCluster' :: CreateDBCluster -> Maybe [Text]
vpcSecurityGroupIds} -> Maybe [Text]
vpcSecurityGroupIds) (\s :: CreateDBCluster
s@CreateDBCluster' {} Maybe [Text]
a -> CreateDBCluster
s {$sel:vpcSecurityGroupIds:CreateDBCluster' :: Maybe [Text]
vpcSecurityGroupIds = Maybe [Text]
a} :: CreateDBCluster) 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 DB cluster identifier. This parameter is stored as a lowercase
-- string.
--
-- Constraints:
--
-- -   Must contain from 1 to 63 letters, numbers, or hyphens.
--
-- -   First character must be a letter.
--
-- -   Cannot end with a hyphen or contain two consecutive hyphens.
--
-- Example: @my-cluster1@
createDBCluster_dbClusterIdentifier :: Lens.Lens' CreateDBCluster Prelude.Text
createDBCluster_dbClusterIdentifier :: Lens' CreateDBCluster Text
createDBCluster_dbClusterIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Text
dbClusterIdentifier :: Text
$sel:dbClusterIdentifier:CreateDBCluster' :: CreateDBCluster -> Text
dbClusterIdentifier} -> Text
dbClusterIdentifier) (\s :: CreateDBCluster
s@CreateDBCluster' {} Text
a -> CreateDBCluster
s {$sel:dbClusterIdentifier:CreateDBCluster' :: Text
dbClusterIdentifier = Text
a} :: CreateDBCluster)

-- | The name of the database engine to be used for this DB cluster.
--
-- Valid Values: @neptune@
createDBCluster_engine :: Lens.Lens' CreateDBCluster Prelude.Text
createDBCluster_engine :: Lens' CreateDBCluster Text
createDBCluster_engine = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBCluster' {Text
engine :: Text
$sel:engine:CreateDBCluster' :: CreateDBCluster -> Text
engine} -> Text
engine) (\s :: CreateDBCluster
s@CreateDBCluster' {} Text
a -> CreateDBCluster
s {$sel:engine:CreateDBCluster' :: Text
engine = Text
a} :: CreateDBCluster)

instance Core.AWSRequest CreateDBCluster where
  type
    AWSResponse CreateDBCluster =
      CreateDBClusterResponse
  request :: (Service -> Service) -> CreateDBCluster -> Request CreateDBCluster
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateDBCluster
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateDBCluster)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"CreateDBClusterResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe DBCluster -> Int -> CreateDBClusterResponse
CreateDBClusterResponse'
            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
"DBCluster")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable CreateDBCluster where
  hashWithSalt :: Int -> CreateDBCluster -> Int
hashWithSalt Int
_salt CreateDBCluster' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [Tag]
Maybe Text
Maybe ServerlessV2ScalingConfiguration
Text
engine :: Text
dbClusterIdentifier :: Text
vpcSecurityGroupIds :: Maybe [Text]
tags :: Maybe [Tag]
storageEncrypted :: Maybe Bool
serverlessV2ScalingConfiguration :: Maybe ServerlessV2ScalingConfiguration
replicationSourceIdentifier :: Maybe Text
preferredMaintenanceWindow :: Maybe Text
preferredBackupWindow :: Maybe Text
preSignedUrl :: Maybe Text
port :: Maybe Int
optionGroupName :: Maybe Text
masterUsername :: Maybe Text
masterUserPassword :: Maybe Text
kmsKeyId :: Maybe Text
globalClusterIdentifier :: Maybe Text
engineVersion :: Maybe Text
enableIAMDatabaseAuthentication :: Maybe Bool
enableCloudwatchLogsExports :: Maybe [Text]
deletionProtection :: Maybe Bool
databaseName :: Maybe Text
dbSubnetGroupName :: Maybe Text
dbClusterParameterGroupName :: Maybe Text
copyTagsToSnapshot :: Maybe Bool
characterSetName :: Maybe Text
backupRetentionPeriod :: Maybe Int
availabilityZones :: Maybe [Text]
$sel:engine:CreateDBCluster' :: CreateDBCluster -> Text
$sel:dbClusterIdentifier:CreateDBCluster' :: CreateDBCluster -> Text
$sel:vpcSecurityGroupIds:CreateDBCluster' :: CreateDBCluster -> Maybe [Text]
$sel:tags:CreateDBCluster' :: CreateDBCluster -> Maybe [Tag]
$sel:storageEncrypted:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
$sel:serverlessV2ScalingConfiguration:CreateDBCluster' :: CreateDBCluster -> Maybe ServerlessV2ScalingConfiguration
$sel:replicationSourceIdentifier:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:preferredMaintenanceWindow:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:preferredBackupWindow:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:preSignedUrl:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:port:CreateDBCluster' :: CreateDBCluster -> Maybe Int
$sel:optionGroupName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:masterUsername:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:masterUserPassword:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:kmsKeyId:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:globalClusterIdentifier:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:engineVersion:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:enableIAMDatabaseAuthentication:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
$sel:enableCloudwatchLogsExports:CreateDBCluster' :: CreateDBCluster -> Maybe [Text]
$sel:deletionProtection:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
$sel:databaseName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:dbSubnetGroupName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:dbClusterParameterGroupName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:copyTagsToSnapshot:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
$sel:characterSetName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:backupRetentionPeriod:CreateDBCluster' :: CreateDBCluster -> Maybe Int
$sel:availabilityZones:CreateDBCluster' :: CreateDBCluster -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
availabilityZones
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
backupRetentionPeriod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
characterSetName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
copyTagsToSnapshot
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dbClusterParameterGroupName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dbSubnetGroupName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
databaseName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
deletionProtection
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
enableCloudwatchLogsExports
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enableIAMDatabaseAuthentication
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
engineVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
globalClusterIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
kmsKeyId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
masterUserPassword
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
masterUsername
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
optionGroupName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
port
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preSignedUrl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredBackupWindow
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredMaintenanceWindow
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
replicationSourceIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ServerlessV2ScalingConfiguration
serverlessV2ScalingConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
storageEncrypted
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
vpcSecurityGroupIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
dbClusterIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
engine

instance Prelude.NFData CreateDBCluster where
  rnf :: CreateDBCluster -> ()
rnf CreateDBCluster' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [Tag]
Maybe Text
Maybe ServerlessV2ScalingConfiguration
Text
engine :: Text
dbClusterIdentifier :: Text
vpcSecurityGroupIds :: Maybe [Text]
tags :: Maybe [Tag]
storageEncrypted :: Maybe Bool
serverlessV2ScalingConfiguration :: Maybe ServerlessV2ScalingConfiguration
replicationSourceIdentifier :: Maybe Text
preferredMaintenanceWindow :: Maybe Text
preferredBackupWindow :: Maybe Text
preSignedUrl :: Maybe Text
port :: Maybe Int
optionGroupName :: Maybe Text
masterUsername :: Maybe Text
masterUserPassword :: Maybe Text
kmsKeyId :: Maybe Text
globalClusterIdentifier :: Maybe Text
engineVersion :: Maybe Text
enableIAMDatabaseAuthentication :: Maybe Bool
enableCloudwatchLogsExports :: Maybe [Text]
deletionProtection :: Maybe Bool
databaseName :: Maybe Text
dbSubnetGroupName :: Maybe Text
dbClusterParameterGroupName :: Maybe Text
copyTagsToSnapshot :: Maybe Bool
characterSetName :: Maybe Text
backupRetentionPeriod :: Maybe Int
availabilityZones :: Maybe [Text]
$sel:engine:CreateDBCluster' :: CreateDBCluster -> Text
$sel:dbClusterIdentifier:CreateDBCluster' :: CreateDBCluster -> Text
$sel:vpcSecurityGroupIds:CreateDBCluster' :: CreateDBCluster -> Maybe [Text]
$sel:tags:CreateDBCluster' :: CreateDBCluster -> Maybe [Tag]
$sel:storageEncrypted:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
$sel:serverlessV2ScalingConfiguration:CreateDBCluster' :: CreateDBCluster -> Maybe ServerlessV2ScalingConfiguration
$sel:replicationSourceIdentifier:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:preferredMaintenanceWindow:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:preferredBackupWindow:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:preSignedUrl:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:port:CreateDBCluster' :: CreateDBCluster -> Maybe Int
$sel:optionGroupName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:masterUsername:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:masterUserPassword:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:kmsKeyId:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:globalClusterIdentifier:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:engineVersion:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:enableIAMDatabaseAuthentication:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
$sel:enableCloudwatchLogsExports:CreateDBCluster' :: CreateDBCluster -> Maybe [Text]
$sel:deletionProtection:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
$sel:databaseName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:dbSubnetGroupName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:dbClusterParameterGroupName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:copyTagsToSnapshot:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
$sel:characterSetName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:backupRetentionPeriod:CreateDBCluster' :: CreateDBCluster -> Maybe Int
$sel:availabilityZones:CreateDBCluster' :: CreateDBCluster -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
availabilityZones
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
backupRetentionPeriod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
characterSetName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
copyTagsToSnapshot
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dbClusterParameterGroupName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dbSubnetGroupName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
databaseName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
deletionProtection
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
enableCloudwatchLogsExports
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
enableIAMDatabaseAuthentication
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
engineVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
globalClusterIdentifier
      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
masterUserPassword
      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
optionGroupName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
port
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
preSignedUrl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
preferredBackupWindow
      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 Text
replicationSourceIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ServerlessV2ScalingConfiguration
serverlessV2ScalingConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
storageEncrypted
      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 [Text]
vpcSecurityGroupIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Text
dbClusterIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Text
engine

instance Data.ToHeaders CreateDBCluster where
  toHeaders :: CreateDBCluster -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath CreateDBCluster where
  toPath :: CreateDBCluster -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery CreateDBCluster where
  toQuery :: CreateDBCluster -> QueryString
toQuery CreateDBCluster' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [Tag]
Maybe Text
Maybe ServerlessV2ScalingConfiguration
Text
engine :: Text
dbClusterIdentifier :: Text
vpcSecurityGroupIds :: Maybe [Text]
tags :: Maybe [Tag]
storageEncrypted :: Maybe Bool
serverlessV2ScalingConfiguration :: Maybe ServerlessV2ScalingConfiguration
replicationSourceIdentifier :: Maybe Text
preferredMaintenanceWindow :: Maybe Text
preferredBackupWindow :: Maybe Text
preSignedUrl :: Maybe Text
port :: Maybe Int
optionGroupName :: Maybe Text
masterUsername :: Maybe Text
masterUserPassword :: Maybe Text
kmsKeyId :: Maybe Text
globalClusterIdentifier :: Maybe Text
engineVersion :: Maybe Text
enableIAMDatabaseAuthentication :: Maybe Bool
enableCloudwatchLogsExports :: Maybe [Text]
deletionProtection :: Maybe Bool
databaseName :: Maybe Text
dbSubnetGroupName :: Maybe Text
dbClusterParameterGroupName :: Maybe Text
copyTagsToSnapshot :: Maybe Bool
characterSetName :: Maybe Text
backupRetentionPeriod :: Maybe Int
availabilityZones :: Maybe [Text]
$sel:engine:CreateDBCluster' :: CreateDBCluster -> Text
$sel:dbClusterIdentifier:CreateDBCluster' :: CreateDBCluster -> Text
$sel:vpcSecurityGroupIds:CreateDBCluster' :: CreateDBCluster -> Maybe [Text]
$sel:tags:CreateDBCluster' :: CreateDBCluster -> Maybe [Tag]
$sel:storageEncrypted:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
$sel:serverlessV2ScalingConfiguration:CreateDBCluster' :: CreateDBCluster -> Maybe ServerlessV2ScalingConfiguration
$sel:replicationSourceIdentifier:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:preferredMaintenanceWindow:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:preferredBackupWindow:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:preSignedUrl:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:port:CreateDBCluster' :: CreateDBCluster -> Maybe Int
$sel:optionGroupName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:masterUsername:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:masterUserPassword:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:kmsKeyId:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:globalClusterIdentifier:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:engineVersion:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:enableIAMDatabaseAuthentication:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
$sel:enableCloudwatchLogsExports:CreateDBCluster' :: CreateDBCluster -> Maybe [Text]
$sel:deletionProtection:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
$sel:databaseName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:dbSubnetGroupName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:dbClusterParameterGroupName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:copyTagsToSnapshot:CreateDBCluster' :: CreateDBCluster -> Maybe Bool
$sel:characterSetName:CreateDBCluster' :: CreateDBCluster -> Maybe Text
$sel:backupRetentionPeriod:CreateDBCluster' :: CreateDBCluster -> Maybe Int
$sel:availabilityZones:CreateDBCluster' :: CreateDBCluster -> Maybe [Text]
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"CreateDBCluster" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2014-10-31" :: Prelude.ByteString),
        ByteString
"AvailabilityZones"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"AvailabilityZone"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
availabilityZones
            ),
        ByteString
"BackupRetentionPeriod"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
backupRetentionPeriod,
        ByteString
"CharacterSetName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
characterSetName,
        ByteString
"CopyTagsToSnapshot" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
copyTagsToSnapshot,
        ByteString
"DBClusterParameterGroupName"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
dbClusterParameterGroupName,
        ByteString
"DBSubnetGroupName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
dbSubnetGroupName,
        ByteString
"DatabaseName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
databaseName,
        ByteString
"DeletionProtection" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
deletionProtection,
        ByteString
"EnableCloudwatchLogsExports"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
enableCloudwatchLogsExports
            ),
        ByteString
"EnableIAMDatabaseAuthentication"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
enableIAMDatabaseAuthentication,
        ByteString
"EngineVersion" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
engineVersion,
        ByteString
"GlobalClusterIdentifier"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
globalClusterIdentifier,
        ByteString
"KmsKeyId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
kmsKeyId,
        ByteString
"MasterUserPassword" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
masterUserPassword,
        ByteString
"MasterUsername" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
masterUsername,
        ByteString
"OptionGroupName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
optionGroupName,
        ByteString
"Port" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
port,
        ByteString
"PreSignedUrl" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
preSignedUrl,
        ByteString
"PreferredBackupWindow"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
preferredBackupWindow,
        ByteString
"PreferredMaintenanceWindow"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
preferredMaintenanceWindow,
        ByteString
"ReplicationSourceIdentifier"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
replicationSourceIdentifier,
        ByteString
"ServerlessV2ScalingConfiguration"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ServerlessV2ScalingConfiguration
serverlessV2ScalingConfiguration,
        ByteString
"StorageEncrypted" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
storageEncrypted,
        ByteString
"Tags"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"Tag" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Tag]
tags),
        ByteString
"VpcSecurityGroupIds"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"VpcSecurityGroupId"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
vpcSecurityGroupIds
            ),
        ByteString
"DBClusterIdentifier" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
dbClusterIdentifier,
        ByteString
"Engine" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
engine
      ]

-- | /See:/ 'newCreateDBClusterResponse' smart constructor.
data CreateDBClusterResponse = CreateDBClusterResponse'
  { CreateDBClusterResponse -> Maybe DBCluster
dbCluster :: Prelude.Maybe DBCluster,
    -- | The response's http status code.
    CreateDBClusterResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateDBClusterResponse -> CreateDBClusterResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateDBClusterResponse -> CreateDBClusterResponse -> Bool
$c/= :: CreateDBClusterResponse -> CreateDBClusterResponse -> Bool
== :: CreateDBClusterResponse -> CreateDBClusterResponse -> Bool
$c== :: CreateDBClusterResponse -> CreateDBClusterResponse -> Bool
Prelude.Eq, ReadPrec [CreateDBClusterResponse]
ReadPrec CreateDBClusterResponse
Int -> ReadS CreateDBClusterResponse
ReadS [CreateDBClusterResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateDBClusterResponse]
$creadListPrec :: ReadPrec [CreateDBClusterResponse]
readPrec :: ReadPrec CreateDBClusterResponse
$creadPrec :: ReadPrec CreateDBClusterResponse
readList :: ReadS [CreateDBClusterResponse]
$creadList :: ReadS [CreateDBClusterResponse]
readsPrec :: Int -> ReadS CreateDBClusterResponse
$creadsPrec :: Int -> ReadS CreateDBClusterResponse
Prelude.Read, Int -> CreateDBClusterResponse -> ShowS
[CreateDBClusterResponse] -> ShowS
CreateDBClusterResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateDBClusterResponse] -> ShowS
$cshowList :: [CreateDBClusterResponse] -> ShowS
show :: CreateDBClusterResponse -> String
$cshow :: CreateDBClusterResponse -> String
showsPrec :: Int -> CreateDBClusterResponse -> ShowS
$cshowsPrec :: Int -> CreateDBClusterResponse -> ShowS
Prelude.Show, forall x. Rep CreateDBClusterResponse x -> CreateDBClusterResponse
forall x. CreateDBClusterResponse -> Rep CreateDBClusterResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateDBClusterResponse x -> CreateDBClusterResponse
$cfrom :: forall x. CreateDBClusterResponse -> Rep CreateDBClusterResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateDBClusterResponse' 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:
--
-- 'dbCluster', 'createDBClusterResponse_dbCluster' - Undocumented member.
--
-- 'httpStatus', 'createDBClusterResponse_httpStatus' - The response's http status code.
newCreateDBClusterResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateDBClusterResponse
newCreateDBClusterResponse :: Int -> CreateDBClusterResponse
newCreateDBClusterResponse Int
pHttpStatus_ =
  CreateDBClusterResponse'
    { $sel:dbCluster:CreateDBClusterResponse' :: Maybe DBCluster
dbCluster =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateDBClusterResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Undocumented member.
createDBClusterResponse_dbCluster :: Lens.Lens' CreateDBClusterResponse (Prelude.Maybe DBCluster)
createDBClusterResponse_dbCluster :: Lens' CreateDBClusterResponse (Maybe DBCluster)
createDBClusterResponse_dbCluster = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBClusterResponse' {Maybe DBCluster
dbCluster :: Maybe DBCluster
$sel:dbCluster:CreateDBClusterResponse' :: CreateDBClusterResponse -> Maybe DBCluster
dbCluster} -> Maybe DBCluster
dbCluster) (\s :: CreateDBClusterResponse
s@CreateDBClusterResponse' {} Maybe DBCluster
a -> CreateDBClusterResponse
s {$sel:dbCluster:CreateDBClusterResponse' :: Maybe DBCluster
dbCluster = Maybe DBCluster
a} :: CreateDBClusterResponse)

-- | The response's http status code.
createDBClusterResponse_httpStatus :: Lens.Lens' CreateDBClusterResponse Prelude.Int
createDBClusterResponse_httpStatus :: Lens' CreateDBClusterResponse Int
createDBClusterResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBClusterResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateDBClusterResponse' :: CreateDBClusterResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateDBClusterResponse
s@CreateDBClusterResponse' {} Int
a -> CreateDBClusterResponse
s {$sel:httpStatus:CreateDBClusterResponse' :: Int
httpStatus = Int
a} :: CreateDBClusterResponse)

instance Prelude.NFData CreateDBClusterResponse where
  rnf :: CreateDBClusterResponse -> ()
rnf CreateDBClusterResponse' {Int
Maybe DBCluster
httpStatus :: Int
dbCluster :: Maybe DBCluster
$sel:httpStatus:CreateDBClusterResponse' :: CreateDBClusterResponse -> Int
$sel:dbCluster:CreateDBClusterResponse' :: CreateDBClusterResponse -> Maybe DBCluster
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DBCluster
dbCluster
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus