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

com.pulumi.awsnative.memorydb.kotlin.ClusterArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.awsnative.memorydb.kotlin

import com.pulumi.awsnative.kotlin.inputs.TagArgs
import com.pulumi.awsnative.kotlin.inputs.TagArgsBuilder
import com.pulumi.awsnative.memorydb.ClusterArgs.builder
import com.pulumi.awsnative.memorydb.kotlin.enums.ClusterDataTieringStatus
import com.pulumi.awsnative.memorydb.kotlin.inputs.ClusterEndpointArgs
import com.pulumi.awsnative.memorydb.kotlin.inputs.ClusterEndpointArgsBuilder
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::MemoryDB::Cluster resource creates an Amazon MemoryDB Cluster.
 * @property aclName The name of the Access Control List to associate with the cluster.
 * @property autoMinorVersionUpgrade A flag that enables automatic minor version upgrade when set to true.
 * You cannot modify the value of AutoMinorVersionUpgrade after the cluster is created. To enable AutoMinorVersionUpgrade on a cluster you must set AutoMinorVersionUpgrade to true when you create a cluster.
 * @property clusterEndpoint The cluster endpoint.
 * @property clusterName The name of the cluster. This value must be unique as it also serves as the cluster identifier.
 * @property dataTiering Enables data tiering. Data tiering is only supported for clusters using the r6gd node type. This parameter must be set when using r6gd nodes.
 * @property description An optional description of the cluster.
 * @property engineVersion The Redis engine version used by the cluster.
 * @property finalSnapshotName The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. MemoryDB creates the snapshot, and then deletes the cluster immediately afterward.
 * @property kmsKeyId The ID of the KMS key used to encrypt the cluster.
 * @property maintenanceWindow Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.
 * @property nodeType The compute and memory capacity of the nodes in the cluster.
 * @property numReplicasPerShard The number of replicas to apply to each shard. The limit is 5.
 * @property numShards The number of shards the cluster will contain.
 * @property parameterGroupName The name of the parameter group associated with the cluster.
 * @property port The port number on which each member of the cluster accepts connections.
 * @property securityGroupIds One or more Amazon VPC security groups associated with this cluster.
 * @property snapshotArns A list of Amazon Resource Names (ARN) that uniquely identify the RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new cluster. The Amazon S3 object name in the ARN cannot contain any commas.
 * @property snapshotName The name of a snapshot from which to restore data into the new cluster. The snapshot status changes to restoring while the new cluster is being created.
 * @property snapshotRetentionLimit The number of days for which MemoryDB retains automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted.
 * @property snapshotWindow The daily time range (in UTC) during which MemoryDB begins taking a daily snapshot of your cluster.
 * @property snsTopicArn The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.
 * @property snsTopicStatus The status of the Amazon SNS notification topic. Notifications are sent only if the status is enabled.
 * @property subnetGroupName The name of the subnet group to be used for the cluster.
 * @property tags An array of key-value pairs to apply to this cluster.
 * @property tlsEnabled A flag that enables in-transit encryption when set to true.
 * You cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.
 */
public data class ClusterArgs(
    public val aclName: Output? = null,
    public val autoMinorVersionUpgrade: Output? = null,
    public val clusterEndpoint: Output? = null,
    public val clusterName: Output? = null,
    public val dataTiering: Output? = null,
    public val description: Output? = null,
    public val engineVersion: Output? = null,
    public val finalSnapshotName: Output? = null,
    public val kmsKeyId: Output? = null,
    public val maintenanceWindow: Output? = null,
    public val nodeType: Output? = null,
    public val numReplicasPerShard: Output? = null,
    public val numShards: Output? = null,
    public val parameterGroupName: Output? = null,
    public val port: Output? = null,
    public val securityGroupIds: Output>? = null,
    public val snapshotArns: Output>? = null,
    public val snapshotName: Output? = null,
    public val snapshotRetentionLimit: Output? = null,
    public val snapshotWindow: Output? = null,
    public val snsTopicArn: Output? = null,
    public val snsTopicStatus: Output? = null,
    public val subnetGroupName: Output? = null,
    public val tags: Output>? = null,
    public val tlsEnabled: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.memorydb.ClusterArgs =
        com.pulumi.awsnative.memorydb.ClusterArgs.builder()
            .aclName(aclName?.applyValue({ args0 -> args0 }))
            .autoMinorVersionUpgrade(autoMinorVersionUpgrade?.applyValue({ args0 -> args0 }))
            .clusterEndpoint(clusterEndpoint?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .clusterName(clusterName?.applyValue({ args0 -> args0 }))
            .dataTiering(dataTiering?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .description(description?.applyValue({ args0 -> args0 }))
            .engineVersion(engineVersion?.applyValue({ args0 -> args0 }))
            .finalSnapshotName(finalSnapshotName?.applyValue({ args0 -> args0 }))
            .kmsKeyId(kmsKeyId?.applyValue({ args0 -> args0 }))
            .maintenanceWindow(maintenanceWindow?.applyValue({ args0 -> args0 }))
            .nodeType(nodeType?.applyValue({ args0 -> args0 }))
            .numReplicasPerShard(numReplicasPerShard?.applyValue({ args0 -> args0 }))
            .numShards(numShards?.applyValue({ args0 -> args0 }))
            .parameterGroupName(parameterGroupName?.applyValue({ args0 -> args0 }))
            .port(port?.applyValue({ args0 -> args0 }))
            .securityGroupIds(securityGroupIds?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .snapshotArns(snapshotArns?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .snapshotName(snapshotName?.applyValue({ args0 -> args0 }))
            .snapshotRetentionLimit(snapshotRetentionLimit?.applyValue({ args0 -> args0 }))
            .snapshotWindow(snapshotWindow?.applyValue({ args0 -> args0 }))
            .snsTopicArn(snsTopicArn?.applyValue({ args0 -> args0 }))
            .snsTopicStatus(snsTopicStatus?.applyValue({ args0 -> args0 }))
            .subnetGroupName(subnetGroupName?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) }) }))
            .tlsEnabled(tlsEnabled?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [ClusterArgs].
 */
@PulumiTagMarker
public class ClusterArgsBuilder internal constructor() {
    private var aclName: Output? = null

    private var autoMinorVersionUpgrade: Output? = null

    private var clusterEndpoint: Output? = null

    private var clusterName: Output? = null

    private var dataTiering: Output? = null

    private var description: Output? = null

    private var engineVersion: Output? = null

    private var finalSnapshotName: Output? = null

    private var kmsKeyId: Output? = null

    private var maintenanceWindow: Output? = null

    private var nodeType: Output? = null

    private var numReplicasPerShard: Output? = null

    private var numShards: Output? = null

    private var parameterGroupName: Output? = null

    private var port: Output? = null

    private var securityGroupIds: Output>? = null

    private var snapshotArns: Output>? = null

    private var snapshotName: Output? = null

    private var snapshotRetentionLimit: Output? = null

    private var snapshotWindow: Output? = null

    private var snsTopicArn: Output? = null

    private var snsTopicStatus: Output? = null

    private var subnetGroupName: Output? = null

    private var tags: Output>? = null

    private var tlsEnabled: Output? = null

    /**
     * @param value The name of the Access Control List to associate with the cluster.
     */
    @JvmName("xwxqupywdhaypisg")
    public suspend fun aclName(`value`: Output) {
        this.aclName = value
    }

    /**
     * @param value A flag that enables automatic minor version upgrade when set to true.
     * You cannot modify the value of AutoMinorVersionUpgrade after the cluster is created. To enable AutoMinorVersionUpgrade on a cluster you must set AutoMinorVersionUpgrade to true when you create a cluster.
     */
    @JvmName("gbbrceairrianuco")
    public suspend fun autoMinorVersionUpgrade(`value`: Output) {
        this.autoMinorVersionUpgrade = value
    }

    /**
     * @param value The cluster endpoint.
     */
    @JvmName("cixfyqiiyjfryqev")
    public suspend fun clusterEndpoint(`value`: Output) {
        this.clusterEndpoint = value
    }

    /**
     * @param value The name of the cluster. This value must be unique as it also serves as the cluster identifier.
     */
    @JvmName("hblmwwcgrbpwjarx")
    public suspend fun clusterName(`value`: Output) {
        this.clusterName = value
    }

    /**
     * @param value Enables data tiering. Data tiering is only supported for clusters using the r6gd node type. This parameter must be set when using r6gd nodes.
     */
    @JvmName("wmwrxmsbcatpixpo")
    public suspend fun dataTiering(`value`: Output) {
        this.dataTiering = value
    }

    /**
     * @param value An optional description of the cluster.
     */
    @JvmName("owqekugxcmdebdym")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value The Redis engine version used by the cluster.
     */
    @JvmName("wuqbbbocomhlrvnt")
    public suspend fun engineVersion(`value`: Output) {
        this.engineVersion = value
    }

    /**
     * @param value The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. MemoryDB creates the snapshot, and then deletes the cluster immediately afterward.
     */
    @JvmName("nmhdpylteukxwkue")
    public suspend fun finalSnapshotName(`value`: Output) {
        this.finalSnapshotName = value
    }

    /**
     * @param value The ID of the KMS key used to encrypt the cluster.
     */
    @JvmName("puorlkfadhbdnuau")
    public suspend fun kmsKeyId(`value`: Output) {
        this.kmsKeyId = value
    }

    /**
     * @param value Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.
     */
    @JvmName("ofvtfhkvuwqcihkn")
    public suspend fun maintenanceWindow(`value`: Output) {
        this.maintenanceWindow = value
    }

    /**
     * @param value The compute and memory capacity of the nodes in the cluster.
     */
    @JvmName("fiagnqtweoicqkcu")
    public suspend fun nodeType(`value`: Output) {
        this.nodeType = value
    }

    /**
     * @param value The number of replicas to apply to each shard. The limit is 5.
     */
    @JvmName("tlgeleecyujcdskg")
    public suspend fun numReplicasPerShard(`value`: Output) {
        this.numReplicasPerShard = value
    }

    /**
     * @param value The number of shards the cluster will contain.
     */
    @JvmName("nisqruppgqkhqqbr")
    public suspend fun numShards(`value`: Output) {
        this.numShards = value
    }

    /**
     * @param value The name of the parameter group associated with the cluster.
     */
    @JvmName("dpoikcfdnbcheiri")
    public suspend fun parameterGroupName(`value`: Output) {
        this.parameterGroupName = value
    }

    /**
     * @param value The port number on which each member of the cluster accepts connections.
     */
    @JvmName("mjhqxqmwfqwyvvub")
    public suspend fun port(`value`: Output) {
        this.port = value
    }

    /**
     * @param value One or more Amazon VPC security groups associated with this cluster.
     */
    @JvmName("xrecwgyyebmasghp")
    public suspend fun securityGroupIds(`value`: Output>) {
        this.securityGroupIds = value
    }

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

    /**
     * @param values One or more Amazon VPC security groups associated with this cluster.
     */
    @JvmName("yyltjwrjokggbuxl")
    public suspend fun securityGroupIds(values: List>) {
        this.securityGroupIds = Output.all(values)
    }

    /**
     * @param value A list of Amazon Resource Names (ARN) that uniquely identify the RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new cluster. The Amazon S3 object name in the ARN cannot contain any commas.
     */
    @JvmName("qobrnqxpvnmwmyus")
    public suspend fun snapshotArns(`value`: Output>) {
        this.snapshotArns = value
    }

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

    /**
     * @param values A list of Amazon Resource Names (ARN) that uniquely identify the RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new cluster. The Amazon S3 object name in the ARN cannot contain any commas.
     */
    @JvmName("etntbpqqwamjpsvf")
    public suspend fun snapshotArns(values: List>) {
        this.snapshotArns = Output.all(values)
    }

    /**
     * @param value The name of a snapshot from which to restore data into the new cluster. The snapshot status changes to restoring while the new cluster is being created.
     */
    @JvmName("ygqkncutllhbqjju")
    public suspend fun snapshotName(`value`: Output) {
        this.snapshotName = value
    }

    /**
     * @param value The number of days for which MemoryDB retains automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted.
     */
    @JvmName("vviyshyfbitcwnae")
    public suspend fun snapshotRetentionLimit(`value`: Output) {
        this.snapshotRetentionLimit = value
    }

    /**
     * @param value The daily time range (in UTC) during which MemoryDB begins taking a daily snapshot of your cluster.
     */
    @JvmName("lirflqecebghqxxm")
    public suspend fun snapshotWindow(`value`: Output) {
        this.snapshotWindow = value
    }

    /**
     * @param value The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.
     */
    @JvmName("qivpkrsfqtacxiuh")
    public suspend fun snsTopicArn(`value`: Output) {
        this.snsTopicArn = value
    }

    /**
     * @param value The status of the Amazon SNS notification topic. Notifications are sent only if the status is enabled.
     */
    @JvmName("yqijpjbyurwmnquq")
    public suspend fun snsTopicStatus(`value`: Output) {
        this.snsTopicStatus = value
    }

    /**
     * @param value The name of the subnet group to be used for the cluster.
     */
    @JvmName("sdaljnrtfwpvymnq")
    public suspend fun subnetGroupName(`value`: Output) {
        this.subnetGroupName = value
    }

    /**
     * @param value An array of key-value pairs to apply to this cluster.
     */
    @JvmName("bjletjvrfuqlofki")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values An array of key-value pairs to apply to this cluster.
     */
    @JvmName("uovewxaovsppwtjk")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value A flag that enables in-transit encryption when set to true.
     * You cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.
     */
    @JvmName("ggiikrbyyliagmbq")
    public suspend fun tlsEnabled(`value`: Output) {
        this.tlsEnabled = value
    }

    /**
     * @param value The name of the Access Control List to associate with the cluster.
     */
    @JvmName("xvfxqsmoahdyhnsv")
    public suspend fun aclName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.aclName = mapped
    }

    /**
     * @param value A flag that enables automatic minor version upgrade when set to true.
     * You cannot modify the value of AutoMinorVersionUpgrade after the cluster is created. To enable AutoMinorVersionUpgrade on a cluster you must set AutoMinorVersionUpgrade to true when you create a cluster.
     */
    @JvmName("uwlbjyweeialyehn")
    public suspend fun autoMinorVersionUpgrade(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.autoMinorVersionUpgrade = mapped
    }

    /**
     * @param value The cluster endpoint.
     */
    @JvmName("oxhahmsyxeabtnnd")
    public suspend fun clusterEndpoint(`value`: ClusterEndpointArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.clusterEndpoint = mapped
    }

    /**
     * @param argument The cluster endpoint.
     */
    @JvmName("mhytneqmxgeobegr")
    public suspend fun clusterEndpoint(argument: suspend ClusterEndpointArgsBuilder.() -> Unit) {
        val toBeMapped = ClusterEndpointArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.clusterEndpoint = mapped
    }

    /**
     * @param value The name of the cluster. This value must be unique as it also serves as the cluster identifier.
     */
    @JvmName("kqngmcorptnwfuex")
    public suspend fun clusterName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.clusterName = mapped
    }

    /**
     * @param value Enables data tiering. Data tiering is only supported for clusters using the r6gd node type. This parameter must be set when using r6gd nodes.
     */
    @JvmName("sombvenjkcrgwubx")
    public suspend fun dataTiering(`value`: ClusterDataTieringStatus?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dataTiering = mapped
    }

    /**
     * @param value An optional description of the cluster.
     */
    @JvmName("tkeyhkixpbiqyavr")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value The Redis engine version used by the cluster.
     */
    @JvmName("xlnvwxskfjpybfdu")
    public suspend fun engineVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.engineVersion = mapped
    }

    /**
     * @param value The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. MemoryDB creates the snapshot, and then deletes the cluster immediately afterward.
     */
    @JvmName("wbsbunmrrteljhpt")
    public suspend fun finalSnapshotName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.finalSnapshotName = mapped
    }

    /**
     * @param value The ID of the KMS key used to encrypt the cluster.
     */
    @JvmName("wjhhmsvdlfnuxjnh")
    public suspend fun kmsKeyId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.kmsKeyId = mapped
    }

    /**
     * @param value Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.
     */
    @JvmName("drwcqurpjxnykikg")
    public suspend fun maintenanceWindow(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maintenanceWindow = mapped
    }

    /**
     * @param value The compute and memory capacity of the nodes in the cluster.
     */
    @JvmName("qgfmxgwemferavac")
    public suspend fun nodeType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.nodeType = mapped
    }

    /**
     * @param value The number of replicas to apply to each shard. The limit is 5.
     */
    @JvmName("lhdyurqmxshmafbx")
    public suspend fun numReplicasPerShard(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.numReplicasPerShard = mapped
    }

    /**
     * @param value The number of shards the cluster will contain.
     */
    @JvmName("ebedinlxsyjuynqt")
    public suspend fun numShards(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.numShards = mapped
    }

    /**
     * @param value The name of the parameter group associated with the cluster.
     */
    @JvmName("radwigqkrafgtvkh")
    public suspend fun parameterGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.parameterGroupName = mapped
    }

    /**
     * @param value The port number on which each member of the cluster accepts connections.
     */
    @JvmName("bwhxcnmauyiqswqy")
    public suspend fun port(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.port = mapped
    }

    /**
     * @param value One or more Amazon VPC security groups associated with this cluster.
     */
    @JvmName("dulkjkamgunppmtp")
    public suspend fun securityGroupIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.securityGroupIds = mapped
    }

    /**
     * @param values One or more Amazon VPC security groups associated with this cluster.
     */
    @JvmName("vtlgpjygshpoofhe")
    public suspend fun securityGroupIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.securityGroupIds = mapped
    }

    /**
     * @param value A list of Amazon Resource Names (ARN) that uniquely identify the RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new cluster. The Amazon S3 object name in the ARN cannot contain any commas.
     */
    @JvmName("ybjoaidljmmwmbma")
    public suspend fun snapshotArns(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.snapshotArns = mapped
    }

    /**
     * @param values A list of Amazon Resource Names (ARN) that uniquely identify the RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new cluster. The Amazon S3 object name in the ARN cannot contain any commas.
     */
    @JvmName("pwrhkgqjifsqytob")
    public suspend fun snapshotArns(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.snapshotArns = mapped
    }

    /**
     * @param value The name of a snapshot from which to restore data into the new cluster. The snapshot status changes to restoring while the new cluster is being created.
     */
    @JvmName("hiqhfokvwshvcvve")
    public suspend fun snapshotName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.snapshotName = mapped
    }

    /**
     * @param value The number of days for which MemoryDB retains automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted.
     */
    @JvmName("fcrqijgycachxijo")
    public suspend fun snapshotRetentionLimit(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.snapshotRetentionLimit = mapped
    }

    /**
     * @param value The daily time range (in UTC) during which MemoryDB begins taking a daily snapshot of your cluster.
     */
    @JvmName("ywjqrpxdrthhcxas")
    public suspend fun snapshotWindow(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.snapshotWindow = mapped
    }

    /**
     * @param value The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.
     */
    @JvmName("hvfsyrcwjmgysska")
    public suspend fun snsTopicArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.snsTopicArn = mapped
    }

    /**
     * @param value The status of the Amazon SNS notification topic. Notifications are sent only if the status is enabled.
     */
    @JvmName("eyosrsvhcuijhemm")
    public suspend fun snsTopicStatus(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.snsTopicStatus = mapped
    }

    /**
     * @param value The name of the subnet group to be used for the cluster.
     */
    @JvmName("xwwbvysbvbjxdelx")
    public suspend fun subnetGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subnetGroupName = mapped
    }

    /**
     * @param value An array of key-value pairs to apply to this cluster.
     */
    @JvmName("nsgqvnkhojopicnw")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param argument An array of key-value pairs to apply to this cluster.
     */
    @JvmName("twtdhlssfqabwjvn")
    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 An array of key-value pairs to apply to this cluster.
     */
    @JvmName("qqpmpfpfcukgball")
    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 An array of key-value pairs to apply to this cluster.
     */
    @JvmName("cgluxsuxklulrwyo")
    public suspend fun tags(argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(TagArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param values An array of key-value pairs to apply to this cluster.
     */
    @JvmName("hfasubgbuswfmiui")
    public suspend fun tags(vararg values: TagArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value A flag that enables in-transit encryption when set to true.
     * You cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.
     */
    @JvmName("kbxnquqdmfhwrmde")
    public suspend fun tlsEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tlsEnabled = mapped
    }

    internal fun build(): ClusterArgs = ClusterArgs(
        aclName = aclName,
        autoMinorVersionUpgrade = autoMinorVersionUpgrade,
        clusterEndpoint = clusterEndpoint,
        clusterName = clusterName,
        dataTiering = dataTiering,
        description = description,
        engineVersion = engineVersion,
        finalSnapshotName = finalSnapshotName,
        kmsKeyId = kmsKeyId,
        maintenanceWindow = maintenanceWindow,
        nodeType = nodeType,
        numReplicasPerShard = numReplicasPerShard,
        numShards = numShards,
        parameterGroupName = parameterGroupName,
        port = port,
        securityGroupIds = securityGroupIds,
        snapshotArns = snapshotArns,
        snapshotName = snapshotName,
        snapshotRetentionLimit = snapshotRetentionLimit,
        snapshotWindow = snapshotWindow,
        snsTopicArn = snsTopicArn,
        snsTopicStatus = snsTopicStatus,
        subnetGroupName = subnetGroupName,
        tags = tags,
        tlsEnabled = tlsEnabled,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy