All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.awsnative.neptune.kotlin.DbClusterArgs.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 1.11.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.awsnative.neptune.kotlin

import com.pulumi.awsnative.kotlin.inputs.TagArgs
import com.pulumi.awsnative.kotlin.inputs.TagArgsBuilder
import com.pulumi.awsnative.neptune.DbClusterArgs.builder
import com.pulumi.awsnative.neptune.kotlin.inputs.DbClusterDbClusterRoleArgs
import com.pulumi.awsnative.neptune.kotlin.inputs.DbClusterDbClusterRoleArgsBuilder
import com.pulumi.awsnative.neptune.kotlin.inputs.DbClusterServerlessScalingConfigurationArgs
import com.pulumi.awsnative.neptune.kotlin.inputs.DbClusterServerlessScalingConfigurationArgsBuilder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * The AWS::Neptune::DBCluster resource creates an Amazon Neptune DB cluster.
 * @property associatedRoles Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.
 * @property availabilityZones Provides the list of EC2 Availability Zones that instances in the DB cluster can be created in.
 * @property backupRetentionPeriod Specifies the number of days for which automatic DB snapshots are retained.
 * @property copyTagsToSnapshot A value that indicates whether to copy all tags from the DB cluster to snapshots of the DB cluster. The default behaviour is not to copy them.
 * @property dbClusterIdentifier The DB cluster identifier. Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster stored as a lowercase string.
 * @property dbClusterParameterGroupName Provides the name of the DB cluster parameter group.
 * @property dbInstanceParameterGroupName The name of the DB parameter group to apply to all instances of the DB cluster. Used only in case of a major EngineVersion upgrade request.
 * @property dbPort The port number on which the DB instances in the DB cluster accept connections.
 * If not specified, the default port used is `8182`.
 * Note: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities.
 * @property dbSubnetGroupName Specifies information on the subnet group associated with the DB cluster, including the name, description, and subnets in the subnet group.
 * @property deletionProtection Indicates whether or not the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled.
 * @property enableCloudwatchLogsExports Specifies a list of log types that are enabled for export to CloudWatch Logs.
 * @property engineVersion Indicates the database engine version.
 * @property iamAuthEnabled True if mapping of Amazon Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false.
 * @property kmsKeyId If `StorageEncrypted` is true, the Amazon KMS key identifier for the encrypted DB cluster.
 * @property preferredBackupWindow Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.
 * @property preferredMaintenanceWindow Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).
 * @property restoreToTime Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
 * If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.
 * If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.
 * @property restoreType Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
 * If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.
 * If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.
 * @property serverlessScalingConfiguration Contains the scaling configuration used by the Neptune Serverless Instances within this DB cluster.
 * @property snapshotIdentifier Specifies the identifier for a DB cluster snapshot. Must match the identifier of an existing snapshot.
 * After you restore a DB cluster using a SnapshotIdentifier, you must specify the same SnapshotIdentifier for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the snapshot again, and the data in the database is not changed.
 * However, if you don't specify the SnapshotIdentifier, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, the DB cluster is restored from the snapshot specified by the SnapshotIdentifier, and the original DB cluster is deleted.
 * @property sourceDbClusterIdentifier Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
 * If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.
 * If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.
 * @property storageEncrypted Indicates whether the DB cluster is encrypted.
 * If you specify the `DBClusterIdentifier`, `DBSnapshotIdentifier`, or `SourceDBInstanceIdentifier` property, don't specify this property. The value is inherited from the cluster, snapshot, or source DB instance. If you specify the KmsKeyId property, you must enable encryption.
 * If you specify the KmsKeyId, you must enable encryption by setting StorageEncrypted to true.
 * @property tags The tags assigned to this cluster.
 * @property useLatestRestorableTime Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
 * If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.
 * If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.
 * @property vpcSecurityGroupIds Provides a list of VPC security groups that the DB cluster belongs to.
 */
public data class DbClusterArgs(
    public val associatedRoles: Output>? = null,
    public val availabilityZones: Output>? = null,
    public val backupRetentionPeriod: Output? = null,
    public val copyTagsToSnapshot: Output? = null,
    public val dbClusterIdentifier: Output? = null,
    public val dbClusterParameterGroupName: Output? = null,
    public val dbInstanceParameterGroupName: Output? = null,
    public val dbPort: Output? = null,
    public val dbSubnetGroupName: Output? = null,
    public val deletionProtection: Output? = null,
    public val enableCloudwatchLogsExports: Output>? = null,
    public val engineVersion: Output? = null,
    public val iamAuthEnabled: Output? = null,
    public val kmsKeyId: Output? = null,
    public val preferredBackupWindow: Output? = null,
    public val preferredMaintenanceWindow: Output? = null,
    public val restoreToTime: Output? = null,
    public val restoreType: Output? = null,
    public val serverlessScalingConfiguration: Output? =
        null,
    public val snapshotIdentifier: Output? = null,
    public val sourceDbClusterIdentifier: Output? = null,
    public val storageEncrypted: Output? = null,
    public val tags: Output>? = null,
    public val useLatestRestorableTime: Output? = null,
    public val vpcSecurityGroupIds: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.neptune.DbClusterArgs =
        com.pulumi.awsnative.neptune.DbClusterArgs.builder()
            .associatedRoles(
                associatedRoles?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .availabilityZones(availabilityZones?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .backupRetentionPeriod(backupRetentionPeriod?.applyValue({ args0 -> args0 }))
            .copyTagsToSnapshot(copyTagsToSnapshot?.applyValue({ args0 -> args0 }))
            .dbClusterIdentifier(dbClusterIdentifier?.applyValue({ args0 -> args0 }))
            .dbClusterParameterGroupName(dbClusterParameterGroupName?.applyValue({ args0 -> args0 }))
            .dbInstanceParameterGroupName(dbInstanceParameterGroupName?.applyValue({ args0 -> args0 }))
            .dbPort(dbPort?.applyValue({ args0 -> args0 }))
            .dbSubnetGroupName(dbSubnetGroupName?.applyValue({ args0 -> args0 }))
            .deletionProtection(deletionProtection?.applyValue({ args0 -> args0 }))
            .enableCloudwatchLogsExports(
                enableCloudwatchLogsExports?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0
                    })
                }),
            )
            .engineVersion(engineVersion?.applyValue({ args0 -> args0 }))
            .iamAuthEnabled(iamAuthEnabled?.applyValue({ args0 -> args0 }))
            .kmsKeyId(kmsKeyId?.applyValue({ args0 -> args0 }))
            .preferredBackupWindow(preferredBackupWindow?.applyValue({ args0 -> args0 }))
            .preferredMaintenanceWindow(preferredMaintenanceWindow?.applyValue({ args0 -> args0 }))
            .restoreToTime(restoreToTime?.applyValue({ args0 -> args0 }))
            .restoreType(restoreType?.applyValue({ args0 -> args0 }))
            .serverlessScalingConfiguration(
                serverlessScalingConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .snapshotIdentifier(snapshotIdentifier?.applyValue({ args0 -> args0 }))
            .sourceDbClusterIdentifier(sourceDbClusterIdentifier?.applyValue({ args0 -> args0 }))
            .storageEncrypted(storageEncrypted?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) }) }))
            .useLatestRestorableTime(useLatestRestorableTime?.applyValue({ args0 -> args0 }))
            .vpcSecurityGroupIds(
                vpcSecurityGroupIds?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0
                    })
                }),
            ).build()
}

/**
 * Builder for [DbClusterArgs].
 */
@PulumiTagMarker
public class DbClusterArgsBuilder internal constructor() {
    private var associatedRoles: Output>? = null

    private var availabilityZones: Output>? = null

    private var backupRetentionPeriod: Output? = null

    private var copyTagsToSnapshot: Output? = null

    private var dbClusterIdentifier: Output? = null

    private var dbClusterParameterGroupName: Output? = null

    private var dbInstanceParameterGroupName: Output? = null

    private var dbPort: Output? = null

    private var dbSubnetGroupName: Output? = null

    private var deletionProtection: Output? = null

    private var enableCloudwatchLogsExports: Output>? = null

    private var engineVersion: Output? = null

    private var iamAuthEnabled: Output? = null

    private var kmsKeyId: Output? = null

    private var preferredBackupWindow: Output? = null

    private var preferredMaintenanceWindow: Output? = null

    private var restoreToTime: Output? = null

    private var restoreType: Output? = null

    private var serverlessScalingConfiguration: Output? =
        null

    private var snapshotIdentifier: Output? = null

    private var sourceDbClusterIdentifier: Output? = null

    private var storageEncrypted: Output? = null

    private var tags: Output>? = null

    private var useLatestRestorableTime: Output? = null

    private var vpcSecurityGroupIds: Output>? = null

    /**
     * @param value Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.
     */
    @JvmName("beqiltycipgnfrwg")
    public suspend fun associatedRoles(`value`: Output>) {
        this.associatedRoles = value
    }

    @JvmName("prptfuaauhukrunp")
    public suspend fun associatedRoles(vararg values: Output) {
        this.associatedRoles = Output.all(values.asList())
    }

    /**
     * @param values Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.
     */
    @JvmName("brrhquvihdcposjk")
    public suspend fun associatedRoles(values: List>) {
        this.associatedRoles = Output.all(values)
    }

    /**
     * @param value Provides the list of EC2 Availability Zones that instances in the DB cluster can be created in.
     */
    @JvmName("iebxhhdpbbhrqxbp")
    public suspend fun availabilityZones(`value`: Output>) {
        this.availabilityZones = value
    }

    @JvmName("aimswbguthxsbyxo")
    public suspend fun availabilityZones(vararg values: Output) {
        this.availabilityZones = Output.all(values.asList())
    }

    /**
     * @param values Provides the list of EC2 Availability Zones that instances in the DB cluster can be created in.
     */
    @JvmName("bvtjptobdwfyflup")
    public suspend fun availabilityZones(values: List>) {
        this.availabilityZones = Output.all(values)
    }

    /**
     * @param value Specifies the number of days for which automatic DB snapshots are retained.
     */
    @JvmName("nawnpttuyvfinydm")
    public suspend fun backupRetentionPeriod(`value`: Output) {
        this.backupRetentionPeriod = value
    }

    /**
     * @param value A value that indicates whether to copy all tags from the DB cluster to snapshots of the DB cluster. The default behaviour is not to copy them.
     */
    @JvmName("gpyqyuuwmgawsabw")
    public suspend fun copyTagsToSnapshot(`value`: Output) {
        this.copyTagsToSnapshot = value
    }

    /**
     * @param value The DB cluster identifier. Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster stored as a lowercase string.
     */
    @JvmName("dwbixqnoivevichv")
    public suspend fun dbClusterIdentifier(`value`: Output) {
        this.dbClusterIdentifier = value
    }

    /**
     * @param value Provides the name of the DB cluster parameter group.
     */
    @JvmName("sykdnwmrurtfmoyi")
    public suspend fun dbClusterParameterGroupName(`value`: Output) {
        this.dbClusterParameterGroupName = value
    }

    /**
     * @param value The name of the DB parameter group to apply to all instances of the DB cluster. Used only in case of a major EngineVersion upgrade request.
     */
    @JvmName("fugcwambgwxxikce")
    public suspend fun dbInstanceParameterGroupName(`value`: Output) {
        this.dbInstanceParameterGroupName = value
    }

    /**
     * @param value The port number on which the DB instances in the DB cluster accept connections.
     * If not specified, the default port used is `8182`.
     * Note: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities.
     */
    @JvmName("oxarryswlbtvenrh")
    public suspend fun dbPort(`value`: Output) {
        this.dbPort = value
    }

    /**
     * @param value Specifies information on the subnet group associated with the DB cluster, including the name, description, and subnets in the subnet group.
     */
    @JvmName("rkmhiffwrtnnoako")
    public suspend fun dbSubnetGroupName(`value`: Output) {
        this.dbSubnetGroupName = value
    }

    /**
     * @param value Indicates whether or not the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled.
     */
    @JvmName("arufvmbulbhgtevx")
    public suspend fun deletionProtection(`value`: Output) {
        this.deletionProtection = value
    }

    /**
     * @param value Specifies a list of log types that are enabled for export to CloudWatch Logs.
     */
    @JvmName("eqyktujawtvlkdau")
    public suspend fun enableCloudwatchLogsExports(`value`: Output>) {
        this.enableCloudwatchLogsExports = value
    }

    @JvmName("shvjxkvgwgflrudr")
    public suspend fun enableCloudwatchLogsExports(vararg values: Output) {
        this.enableCloudwatchLogsExports = Output.all(values.asList())
    }

    /**
     * @param values Specifies a list of log types that are enabled for export to CloudWatch Logs.
     */
    @JvmName("xjfglfaxlnlmpsdn")
    public suspend fun enableCloudwatchLogsExports(values: List>) {
        this.enableCloudwatchLogsExports = Output.all(values)
    }

    /**
     * @param value Indicates the database engine version.
     */
    @JvmName("awpuuuyqavicxgqq")
    public suspend fun engineVersion(`value`: Output) {
        this.engineVersion = value
    }

    /**
     * @param value True if mapping of Amazon Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false.
     */
    @JvmName("bbxtxldbilkqvgtc")
    public suspend fun iamAuthEnabled(`value`: Output) {
        this.iamAuthEnabled = value
    }

    /**
     * @param value If `StorageEncrypted` is true, the Amazon KMS key identifier for the encrypted DB cluster.
     */
    @JvmName("iuppuiipkvtexdat")
    public suspend fun kmsKeyId(`value`: Output) {
        this.kmsKeyId = value
    }

    /**
     * @param value Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.
     */
    @JvmName("xuxlooxjdufbqqch")
    public suspend fun preferredBackupWindow(`value`: Output) {
        this.preferredBackupWindow = value
    }

    /**
     * @param value Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).
     */
    @JvmName("sdkmxjycateyejik")
    public suspend fun preferredMaintenanceWindow(`value`: Output) {
        this.preferredMaintenanceWindow = value
    }

    /**
     * @param value Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
     * If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.
     * If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.
     */
    @JvmName("yadeqwqnttertdud")
    public suspend fun restoreToTime(`value`: Output) {
        this.restoreToTime = value
    }

    /**
     * @param value Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
     * If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.
     * If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.
     */
    @JvmName("djswnsobrfbchueo")
    public suspend fun restoreType(`value`: Output) {
        this.restoreType = value
    }

    /**
     * @param value Contains the scaling configuration used by the Neptune Serverless Instances within this DB cluster.
     */
    @JvmName("oecdocwojbggerqh")
    public suspend fun serverlessScalingConfiguration(`value`: Output) {
        this.serverlessScalingConfiguration = value
    }

    /**
     * @param value Specifies the identifier for a DB cluster snapshot. Must match the identifier of an existing snapshot.
     * After you restore a DB cluster using a SnapshotIdentifier, you must specify the same SnapshotIdentifier for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the snapshot again, and the data in the database is not changed.
     * However, if you don't specify the SnapshotIdentifier, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, the DB cluster is restored from the snapshot specified by the SnapshotIdentifier, and the original DB cluster is deleted.
     */
    @JvmName("lhbdlaorcflpgnde")
    public suspend fun snapshotIdentifier(`value`: Output) {
        this.snapshotIdentifier = value
    }

    /**
     * @param value Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
     * If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.
     * If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.
     */
    @JvmName("xtsaclvrqqiwsuuj")
    public suspend fun sourceDbClusterIdentifier(`value`: Output) {
        this.sourceDbClusterIdentifier = value
    }

    /**
     * @param value Indicates whether the DB cluster is encrypted.
     * If you specify the `DBClusterIdentifier`, `DBSnapshotIdentifier`, or `SourceDBInstanceIdentifier` property, don't specify this property. The value is inherited from the cluster, snapshot, or source DB instance. If you specify the KmsKeyId property, you must enable encryption.
     * If you specify the KmsKeyId, you must enable encryption by setting StorageEncrypted to true.
     */
    @JvmName("fqxjpcpjnseqcuen")
    public suspend fun storageEncrypted(`value`: Output) {
        this.storageEncrypted = value
    }

    /**
     * @param value The tags assigned to this cluster.
     */
    @JvmName("aumavrpstwwbvgto")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    @JvmName("grnyjiwqpbjunesr")
    public suspend fun tags(vararg values: Output) {
        this.tags = Output.all(values.asList())
    }

    /**
     * @param values The tags assigned to this cluster.
     */
    @JvmName("gbnuppxecqucxpvq")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
     * If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.
     * If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.
     */
    @JvmName("avcdnkqejhcxgmus")
    public suspend fun useLatestRestorableTime(`value`: Output) {
        this.useLatestRestorableTime = value
    }

    /**
     * @param value Provides a list of VPC security groups that the DB cluster belongs to.
     */
    @JvmName("vxlobchvjcanhfyc")
    public suspend fun vpcSecurityGroupIds(`value`: Output>) {
        this.vpcSecurityGroupIds = value
    }

    @JvmName("xeobumclfubtrbbt")
    public suspend fun vpcSecurityGroupIds(vararg values: Output) {
        this.vpcSecurityGroupIds = Output.all(values.asList())
    }

    /**
     * @param values Provides a list of VPC security groups that the DB cluster belongs to.
     */
    @JvmName("uvnkqgkkvosbbvfy")
    public suspend fun vpcSecurityGroupIds(values: List>) {
        this.vpcSecurityGroupIds = Output.all(values)
    }

    /**
     * @param value Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.
     */
    @JvmName("gtgheteylxuamqho")
    public suspend fun associatedRoles(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.associatedRoles = mapped
    }

    /**
     * @param argument Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.
     */
    @JvmName("dpjidpcgavdacudg")
    public suspend fun associatedRoles(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            DbClusterDbClusterRoleArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.associatedRoles = mapped
    }

    /**
     * @param argument Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.
     */
    @JvmName("ylbgwdnsltpdyxmq")
    public suspend fun associatedRoles(vararg argument: suspend DbClusterDbClusterRoleArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            DbClusterDbClusterRoleArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.associatedRoles = mapped
    }

    /**
     * @param argument Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.
     */
    @JvmName("cbidiaqekfwiflrq")
    public suspend fun associatedRoles(argument: suspend DbClusterDbClusterRoleArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(DbClusterDbClusterRoleArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.associatedRoles = mapped
    }

    /**
     * @param values Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.
     */
    @JvmName("gapcftwhuhuotevw")
    public suspend fun associatedRoles(vararg values: DbClusterDbClusterRoleArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.associatedRoles = mapped
    }

    /**
     * @param value Provides the list of EC2 Availability Zones that instances in the DB cluster can be created in.
     */
    @JvmName("sufeokqituhiqrpn")
    public suspend fun availabilityZones(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.availabilityZones = mapped
    }

    /**
     * @param values Provides the list of EC2 Availability Zones that instances in the DB cluster can be created in.
     */
    @JvmName("crvclylqjtjljqcc")
    public suspend fun availabilityZones(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.availabilityZones = mapped
    }

    /**
     * @param value Specifies the number of days for which automatic DB snapshots are retained.
     */
    @JvmName("vekmyeabeblctbkw")
    public suspend fun backupRetentionPeriod(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.backupRetentionPeriod = mapped
    }

    /**
     * @param value A value that indicates whether to copy all tags from the DB cluster to snapshots of the DB cluster. The default behaviour is not to copy them.
     */
    @JvmName("lmvnwdppavxbqnte")
    public suspend fun copyTagsToSnapshot(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.copyTagsToSnapshot = mapped
    }

    /**
     * @param value The DB cluster identifier. Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster stored as a lowercase string.
     */
    @JvmName("tlcmcpdxpkigbtru")
    public suspend fun dbClusterIdentifier(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dbClusterIdentifier = mapped
    }

    /**
     * @param value Provides the name of the DB cluster parameter group.
     */
    @JvmName("jjoexyfmhqfaxtfu")
    public suspend fun dbClusterParameterGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dbClusterParameterGroupName = mapped
    }

    /**
     * @param value The name of the DB parameter group to apply to all instances of the DB cluster. Used only in case of a major EngineVersion upgrade request.
     */
    @JvmName("kkhokwvyfckvalrc")
    public suspend fun dbInstanceParameterGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dbInstanceParameterGroupName = mapped
    }

    /**
     * @param value The port number on which the DB instances in the DB cluster accept connections.
     * If not specified, the default port used is `8182`.
     * Note: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities.
     */
    @JvmName("aeihthnpdhksaopm")
    public suspend fun dbPort(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dbPort = mapped
    }

    /**
     * @param value Specifies information on the subnet group associated with the DB cluster, including the name, description, and subnets in the subnet group.
     */
    @JvmName("dstdbwwuhpyxmvqc")
    public suspend fun dbSubnetGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dbSubnetGroupName = mapped
    }

    /**
     * @param value Indicates whether or not the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled.
     */
    @JvmName("mejqhngtbwxjxcwo")
    public suspend fun deletionProtection(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deletionProtection = mapped
    }

    /**
     * @param value Specifies a list of log types that are enabled for export to CloudWatch Logs.
     */
    @JvmName("dpkrfbsmeymfyvct")
    public suspend fun enableCloudwatchLogsExports(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableCloudwatchLogsExports = mapped
    }

    /**
     * @param values Specifies a list of log types that are enabled for export to CloudWatch Logs.
     */
    @JvmName("bbsqqdgkwkjlgryt")
    public suspend fun enableCloudwatchLogsExports(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.enableCloudwatchLogsExports = mapped
    }

    /**
     * @param value Indicates the database engine version.
     */
    @JvmName("rrwuuhheibrvjbln")
    public suspend fun engineVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.engineVersion = mapped
    }

    /**
     * @param value True if mapping of Amazon Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false.
     */
    @JvmName("pbiwenpilriaseqy")
    public suspend fun iamAuthEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.iamAuthEnabled = mapped
    }

    /**
     * @param value If `StorageEncrypted` is true, the Amazon KMS key identifier for the encrypted DB cluster.
     */
    @JvmName("jvnvoqrlsevpvkin")
    public suspend fun kmsKeyId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.kmsKeyId = mapped
    }

    /**
     * @param value Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.
     */
    @JvmName("pphaivbmndesyyxy")
    public suspend fun preferredBackupWindow(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.preferredBackupWindow = mapped
    }

    /**
     * @param value Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).
     */
    @JvmName("wexevtpjprtaynik")
    public suspend fun preferredMaintenanceWindow(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.preferredMaintenanceWindow = mapped
    }

    /**
     * @param value Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
     * If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.
     * If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.
     */
    @JvmName("twihlyficxuftkos")
    public suspend fun restoreToTime(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.restoreToTime = mapped
    }

    /**
     * @param value Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
     * If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.
     * If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.
     */
    @JvmName("ruovxsgoaixxjmbk")
    public suspend fun restoreType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.restoreType = mapped
    }

    /**
     * @param value Contains the scaling configuration used by the Neptune Serverless Instances within this DB cluster.
     */
    @JvmName("nvyrqwilqiyjucav")
    public suspend fun serverlessScalingConfiguration(`value`: DbClusterServerlessScalingConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serverlessScalingConfiguration = mapped
    }

    /**
     * @param argument Contains the scaling configuration used by the Neptune Serverless Instances within this DB cluster.
     */
    @JvmName("ftcgngowvcqavlho")
    public suspend fun serverlessScalingConfiguration(argument: suspend DbClusterServerlessScalingConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = DbClusterServerlessScalingConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.serverlessScalingConfiguration = mapped
    }

    /**
     * @param value Specifies the identifier for a DB cluster snapshot. Must match the identifier of an existing snapshot.
     * After you restore a DB cluster using a SnapshotIdentifier, you must specify the same SnapshotIdentifier for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the snapshot again, and the data in the database is not changed.
     * However, if you don't specify the SnapshotIdentifier, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, the DB cluster is restored from the snapshot specified by the SnapshotIdentifier, and the original DB cluster is deleted.
     */
    @JvmName("xmrsvrijwuuagauh")
    public suspend fun snapshotIdentifier(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.snapshotIdentifier = mapped
    }

    /**
     * @param value Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
     * If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.
     * If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.
     */
    @JvmName("mwllmovmkirfxtsq")
    public suspend fun sourceDbClusterIdentifier(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sourceDbClusterIdentifier = mapped
    }

    /**
     * @param value Indicates whether the DB cluster is encrypted.
     * If you specify the `DBClusterIdentifier`, `DBSnapshotIdentifier`, or `SourceDBInstanceIdentifier` property, don't specify this property. The value is inherited from the cluster, snapshot, or source DB instance. If you specify the KmsKeyId property, you must enable encryption.
     * If you specify the KmsKeyId, you must enable encryption by setting StorageEncrypted to true.
     */
    @JvmName("mqewpjjrqicmefgd")
    public suspend fun storageEncrypted(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.storageEncrypted = mapped
    }

    /**
     * @param value The tags assigned to this cluster.
     */
    @JvmName("yhdlsonoavirgjkr")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param argument The tags assigned to this cluster.
     */
    @JvmName("agbbusskvdvcwwqb")
    public suspend fun tags(argument: List Unit>) {
        val toBeMapped = argument.toList().map { TagArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param argument The tags assigned to this cluster.
     */
    @JvmName("chhgkxpamryjsudm")
    public suspend fun tags(vararg argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map { TagArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param argument The tags assigned to this cluster.
     */
    @JvmName("gklqhmouawuwyslb")
    public suspend fun tags(argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(TagArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param values The tags assigned to this cluster.
     */
    @JvmName("ueokatnekqktajml")
    public suspend fun tags(vararg values: TagArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
     * If a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.
     * If a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.
     */
    @JvmName("xbuxlbxsjjannpwe")
    public suspend fun useLatestRestorableTime(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.useLatestRestorableTime = mapped
    }

    /**
     * @param value Provides a list of VPC security groups that the DB cluster belongs to.
     */
    @JvmName("jddguubklijyubpt")
    public suspend fun vpcSecurityGroupIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.vpcSecurityGroupIds = mapped
    }

    /**
     * @param values Provides a list of VPC security groups that the DB cluster belongs to.
     */
    @JvmName("jydepeydqfhevlkd")
    public suspend fun vpcSecurityGroupIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.vpcSecurityGroupIds = mapped
    }

    internal fun build(): DbClusterArgs = DbClusterArgs(
        associatedRoles = associatedRoles,
        availabilityZones = availabilityZones,
        backupRetentionPeriod = backupRetentionPeriod,
        copyTagsToSnapshot = copyTagsToSnapshot,
        dbClusterIdentifier = dbClusterIdentifier,
        dbClusterParameterGroupName = dbClusterParameterGroupName,
        dbInstanceParameterGroupName = dbInstanceParameterGroupName,
        dbPort = dbPort,
        dbSubnetGroupName = dbSubnetGroupName,
        deletionProtection = deletionProtection,
        enableCloudwatchLogsExports = enableCloudwatchLogsExports,
        engineVersion = engineVersion,
        iamAuthEnabled = iamAuthEnabled,
        kmsKeyId = kmsKeyId,
        preferredBackupWindow = preferredBackupWindow,
        preferredMaintenanceWindow = preferredMaintenanceWindow,
        restoreToTime = restoreToTime,
        restoreType = restoreType,
        serverlessScalingConfiguration = serverlessScalingConfiguration,
        snapshotIdentifier = snapshotIdentifier,
        sourceDbClusterIdentifier = sourceDbClusterIdentifier,
        storageEncrypted = storageEncrypted,
        tags = tags,
        useLatestRestorableTime = useLatestRestorableTime,
        vpcSecurityGroupIds = vpcSecurityGroupIds,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy