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

com.pulumi.azurenative.documentdb.kotlin.inputs.ClusterResourcePropertiesArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azurenative.documentdb.kotlin.inputs

import com.pulumi.azurenative.documentdb.inputs.ClusterResourcePropertiesArgs.builder
import com.pulumi.azurenative.documentdb.kotlin.enums.AuthenticationMethod
import com.pulumi.azurenative.documentdb.kotlin.enums.ManagedCassandraProvisioningState
import com.pulumi.core.Either
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

/**
 * Properties of a managed Cassandra cluster.
 * @property authenticationMethod Which authentication method Cassandra should use to authenticate clients. 'None' turns off authentication, so should not be used except in emergencies. 'Cassandra' is the default password based authentication. The default is 'Cassandra'.
 * @property cassandraAuditLoggingEnabled Whether Cassandra audit logging is enabled
 * @property cassandraVersion Which version of Cassandra should this cluster converge to running (e.g., 3.11). When updated, the cluster may take some time to migrate to the new version.
 * @property clientCertificates List of TLS certificates used to authorize clients connecting to the cluster. All connections are TLS encrypted whether clientCertificates is set or not, but if clientCertificates is set, the managed Cassandra cluster will reject all connections not bearing a TLS client certificate that can be validated from one or more of the public certificates in this property.
 * @property clusterNameOverride If you need to set the clusterName property in cassandra.yaml to something besides the resource name of the cluster, set the value to use on this property.
 * @property deallocated Whether the cluster and associated data centers has been deallocated.
 * @property delegatedManagementSubnetId Resource id of a subnet that this cluster's management service should have its network interface attached to. The subnet must be routable to all subnets that will be delegated to data centers. The resource id must be of the form '/subscriptions//resourceGroups//providers/Microsoft.Network/virtualNetworks//subnets/'
 * @property externalGossipCertificates List of TLS certificates used to authorize gossip from unmanaged data centers. The TLS certificates of all nodes in unmanaged data centers must be verifiable using one of the certificates provided in this property.
 * @property externalSeedNodes List of IP addresses of seed nodes in unmanaged data centers. These will be added to the seed node lists of all managed nodes.
 * @property hoursBetweenBackups (Deprecated) Number of hours to wait between taking a backup of the cluster.
 * @property initialCassandraAdminPassword Initial password for clients connecting as admin to the cluster. Should be changed after cluster creation. Returns null on GET. This field only applies when the authenticationMethod field is 'Cassandra'.
 * @property prometheusEndpoint Hostname or IP address where the Prometheus endpoint containing data about the managed Cassandra nodes can be reached.
 * @property provisionError Error related to resource provisioning.
 * @property provisioningState The status of the resource at the time the operation was called.
 * @property repairEnabled Should automatic repairs run on this cluster? If omitted, this is true, and should stay true unless you are running a hybrid cluster where you are already doing your own repairs.
 * @property restoreFromBackupId To create an empty cluster, omit this field or set it to null. To restore a backup into a new cluster, set this field to the resource id of the backup.
 */
public data class ClusterResourcePropertiesArgs(
    public val authenticationMethod: Output>? = null,
    public val cassandraAuditLoggingEnabled: Output? = null,
    public val cassandraVersion: Output? = null,
    public val clientCertificates: Output>? = null,
    public val clusterNameOverride: Output? = null,
    public val deallocated: Output? = null,
    public val delegatedManagementSubnetId: Output? = null,
    public val externalGossipCertificates: Output>? = null,
    public val externalSeedNodes: Output>? = null,
    public val hoursBetweenBackups: Output? = null,
    public val initialCassandraAdminPassword: Output? = null,
    public val prometheusEndpoint: Output? = null,
    public val provisionError: Output? = null,
    public val provisioningState: Output>? = null,
    public val repairEnabled: Output? = null,
    public val restoreFromBackupId: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.documentdb.inputs.ClusterResourcePropertiesArgs =
        com.pulumi.azurenative.documentdb.inputs.ClusterResourcePropertiesArgs.builder()
            .authenticationMethod(
                authenticationMethod?.applyValue({ args0 ->
                    args0.transform(
                        { args0 -> args0 },
                        { args0 -> args0.let({ args0 -> args0.toJava() }) },
                    )
                }),
            )
            .cassandraAuditLoggingEnabled(cassandraAuditLoggingEnabled?.applyValue({ args0 -> args0 }))
            .cassandraVersion(cassandraVersion?.applyValue({ args0 -> args0 }))
            .clientCertificates(
                clientCertificates?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .clusterNameOverride(clusterNameOverride?.applyValue({ args0 -> args0 }))
            .deallocated(deallocated?.applyValue({ args0 -> args0 }))
            .delegatedManagementSubnetId(delegatedManagementSubnetId?.applyValue({ args0 -> args0 }))
            .externalGossipCertificates(
                externalGossipCertificates?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .externalSeedNodes(
                externalSeedNodes?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .hoursBetweenBackups(hoursBetweenBackups?.applyValue({ args0 -> args0 }))
            .initialCassandraAdminPassword(initialCassandraAdminPassword?.applyValue({ args0 -> args0 }))
            .prometheusEndpoint(
                prometheusEndpoint?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .provisionError(provisionError?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .provisioningState(
                provisioningState?.applyValue({ args0 ->
                    args0.transform(
                        { args0 -> args0 },
                        { args0 -> args0.let({ args0 -> args0.toJava() }) },
                    )
                }),
            )
            .repairEnabled(repairEnabled?.applyValue({ args0 -> args0 }))
            .restoreFromBackupId(restoreFromBackupId?.applyValue({ args0 -> args0 })).build()
}

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

    private var cassandraAuditLoggingEnabled: Output? = null

    private var cassandraVersion: Output? = null

    private var clientCertificates: Output>? = null

    private var clusterNameOverride: Output? = null

    private var deallocated: Output? = null

    private var delegatedManagementSubnetId: Output? = null

    private var externalGossipCertificates: Output>? = null

    private var externalSeedNodes: Output>? = null

    private var hoursBetweenBackups: Output? = null

    private var initialCassandraAdminPassword: Output? = null

    private var prometheusEndpoint: Output? = null

    private var provisionError: Output? = null

    private var provisioningState: Output>? = null

    private var repairEnabled: Output? = null

    private var restoreFromBackupId: Output? = null

    /**
     * @param value Which authentication method Cassandra should use to authenticate clients. 'None' turns off authentication, so should not be used except in emergencies. 'Cassandra' is the default password based authentication. The default is 'Cassandra'.
     */
    @JvmName("gtnfjrwruangaxle")
    public suspend fun authenticationMethod(`value`: Output>) {
        this.authenticationMethod = value
    }

    /**
     * @param value Whether Cassandra audit logging is enabled
     */
    @JvmName("cyyfdypapikdmojl")
    public suspend fun cassandraAuditLoggingEnabled(`value`: Output) {
        this.cassandraAuditLoggingEnabled = value
    }

    /**
     * @param value Which version of Cassandra should this cluster converge to running (e.g., 3.11). When updated, the cluster may take some time to migrate to the new version.
     */
    @JvmName("ohbergrdeodimwgk")
    public suspend fun cassandraVersion(`value`: Output) {
        this.cassandraVersion = value
    }

    /**
     * @param value List of TLS certificates used to authorize clients connecting to the cluster. All connections are TLS encrypted whether clientCertificates is set or not, but if clientCertificates is set, the managed Cassandra cluster will reject all connections not bearing a TLS client certificate that can be validated from one or more of the public certificates in this property.
     */
    @JvmName("pjrqwgtaebentbnc")
    public suspend fun clientCertificates(`value`: Output>) {
        this.clientCertificates = value
    }

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

    /**
     * @param values List of TLS certificates used to authorize clients connecting to the cluster. All connections are TLS encrypted whether clientCertificates is set or not, but if clientCertificates is set, the managed Cassandra cluster will reject all connections not bearing a TLS client certificate that can be validated from one or more of the public certificates in this property.
     */
    @JvmName("qhlvtmbompaddmrn")
    public suspend fun clientCertificates(values: List>) {
        this.clientCertificates = Output.all(values)
    }

    /**
     * @param value If you need to set the clusterName property in cassandra.yaml to something besides the resource name of the cluster, set the value to use on this property.
     */
    @JvmName("uyokqhcpegrvhlei")
    public suspend fun clusterNameOverride(`value`: Output) {
        this.clusterNameOverride = value
    }

    /**
     * @param value Whether the cluster and associated data centers has been deallocated.
     */
    @JvmName("gbxhqscetklamlea")
    public suspend fun deallocated(`value`: Output) {
        this.deallocated = value
    }

    /**
     * @param value Resource id of a subnet that this cluster's management service should have its network interface attached to. The subnet must be routable to all subnets that will be delegated to data centers. The resource id must be of the form '/subscriptions//resourceGroups//providers/Microsoft.Network/virtualNetworks//subnets/'
     */
    @JvmName("mqqmeiujeuknqsue")
    public suspend fun delegatedManagementSubnetId(`value`: Output) {
        this.delegatedManagementSubnetId = value
    }

    /**
     * @param value List of TLS certificates used to authorize gossip from unmanaged data centers. The TLS certificates of all nodes in unmanaged data centers must be verifiable using one of the certificates provided in this property.
     */
    @JvmName("tsvikcjwncdklntw")
    public suspend fun externalGossipCertificates(`value`: Output>) {
        this.externalGossipCertificates = value
    }

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

    /**
     * @param values List of TLS certificates used to authorize gossip from unmanaged data centers. The TLS certificates of all nodes in unmanaged data centers must be verifiable using one of the certificates provided in this property.
     */
    @JvmName("yoamwiqrfirewvvj")
    public suspend fun externalGossipCertificates(values: List>) {
        this.externalGossipCertificates = Output.all(values)
    }

    /**
     * @param value List of IP addresses of seed nodes in unmanaged data centers. These will be added to the seed node lists of all managed nodes.
     */
    @JvmName("mgrxkacwssqackgq")
    public suspend fun externalSeedNodes(`value`: Output>) {
        this.externalSeedNodes = value
    }

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

    /**
     * @param values List of IP addresses of seed nodes in unmanaged data centers. These will be added to the seed node lists of all managed nodes.
     */
    @JvmName("qhushpipicqsuvfx")
    public suspend fun externalSeedNodes(values: List>) {
        this.externalSeedNodes = Output.all(values)
    }

    /**
     * @param value (Deprecated) Number of hours to wait between taking a backup of the cluster.
     */
    @JvmName("baxvcmpwkkekubgu")
    public suspend fun hoursBetweenBackups(`value`: Output) {
        this.hoursBetweenBackups = value
    }

    /**
     * @param value Initial password for clients connecting as admin to the cluster. Should be changed after cluster creation. Returns null on GET. This field only applies when the authenticationMethod field is 'Cassandra'.
     */
    @JvmName("bmbcncxrytrleram")
    public suspend fun initialCassandraAdminPassword(`value`: Output) {
        this.initialCassandraAdminPassword = value
    }

    /**
     * @param value Hostname or IP address where the Prometheus endpoint containing data about the managed Cassandra nodes can be reached.
     */
    @JvmName("gdasivwvdshheocq")
    public suspend fun prometheusEndpoint(`value`: Output) {
        this.prometheusEndpoint = value
    }

    /**
     * @param value Error related to resource provisioning.
     */
    @JvmName("mdrbnfqcgkcwioqr")
    public suspend fun provisionError(`value`: Output) {
        this.provisionError = value
    }

    /**
     * @param value The status of the resource at the time the operation was called.
     */
    @JvmName("hiearpyqvsttjbde")
    public suspend fun provisioningState(`value`: Output>) {
        this.provisioningState = value
    }

    /**
     * @param value Should automatic repairs run on this cluster? If omitted, this is true, and should stay true unless you are running a hybrid cluster where you are already doing your own repairs.
     */
    @JvmName("reyiaredigugdvtb")
    public suspend fun repairEnabled(`value`: Output) {
        this.repairEnabled = value
    }

    /**
     * @param value To create an empty cluster, omit this field or set it to null. To restore a backup into a new cluster, set this field to the resource id of the backup.
     */
    @JvmName("afxlcndpdxqnytey")
    public suspend fun restoreFromBackupId(`value`: Output) {
        this.restoreFromBackupId = value
    }

    /**
     * @param value Which authentication method Cassandra should use to authenticate clients. 'None' turns off authentication, so should not be used except in emergencies. 'Cassandra' is the default password based authentication. The default is 'Cassandra'.
     */
    @JvmName("iflyeovlthrufdqi")
    public suspend fun authenticationMethod(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.authenticationMethod = mapped
    }

    /**
     * @param value Which authentication method Cassandra should use to authenticate clients. 'None' turns off authentication, so should not be used except in emergencies. 'Cassandra' is the default password based authentication. The default is 'Cassandra'.
     */
    @JvmName("dcswnjaqkgrjecgn")
    public fun authenticationMethod(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.authenticationMethod = mapped
    }

    /**
     * @param value Which authentication method Cassandra should use to authenticate clients. 'None' turns off authentication, so should not be used except in emergencies. 'Cassandra' is the default password based authentication. The default is 'Cassandra'.
     */
    @JvmName("nwctpygwgouaqrro")
    public fun authenticationMethod(`value`: AuthenticationMethod) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.authenticationMethod = mapped
    }

    /**
     * @param value Whether Cassandra audit logging is enabled
     */
    @JvmName("bnuajqbwyjvmsohp")
    public suspend fun cassandraAuditLoggingEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.cassandraAuditLoggingEnabled = mapped
    }

    /**
     * @param value Which version of Cassandra should this cluster converge to running (e.g., 3.11). When updated, the cluster may take some time to migrate to the new version.
     */
    @JvmName("ggraproerjrvbqfp")
    public suspend fun cassandraVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.cassandraVersion = mapped
    }

    /**
     * @param value List of TLS certificates used to authorize clients connecting to the cluster. All connections are TLS encrypted whether clientCertificates is set or not, but if clientCertificates is set, the managed Cassandra cluster will reject all connections not bearing a TLS client certificate that can be validated from one or more of the public certificates in this property.
     */
    @JvmName("jcmvudopdnaqogsb")
    public suspend fun clientCertificates(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.clientCertificates = mapped
    }

    /**
     * @param argument List of TLS certificates used to authorize clients connecting to the cluster. All connections are TLS encrypted whether clientCertificates is set or not, but if clientCertificates is set, the managed Cassandra cluster will reject all connections not bearing a TLS client certificate that can be validated from one or more of the public certificates in this property.
     */
    @JvmName("jcgivnourygppckg")
    public suspend fun clientCertificates(argument: List Unit>) {
        val toBeMapped = argument.toList().map { CertificateArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.clientCertificates = mapped
    }

    /**
     * @param argument List of TLS certificates used to authorize clients connecting to the cluster. All connections are TLS encrypted whether clientCertificates is set or not, but if clientCertificates is set, the managed Cassandra cluster will reject all connections not bearing a TLS client certificate that can be validated from one or more of the public certificates in this property.
     */
    @JvmName("gcaonjldmmojklga")
    public suspend fun clientCertificates(vararg argument: suspend CertificateArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map { CertificateArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.clientCertificates = mapped
    }

    /**
     * @param argument List of TLS certificates used to authorize clients connecting to the cluster. All connections are TLS encrypted whether clientCertificates is set or not, but if clientCertificates is set, the managed Cassandra cluster will reject all connections not bearing a TLS client certificate that can be validated from one or more of the public certificates in this property.
     */
    @JvmName("pkmowwymxvbrisxc")
    public suspend fun clientCertificates(argument: suspend CertificateArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(CertificateArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.clientCertificates = mapped
    }

    /**
     * @param values List of TLS certificates used to authorize clients connecting to the cluster. All connections are TLS encrypted whether clientCertificates is set or not, but if clientCertificates is set, the managed Cassandra cluster will reject all connections not bearing a TLS client certificate that can be validated from one or more of the public certificates in this property.
     */
    @JvmName("isiittvksfipfurq")
    public suspend fun clientCertificates(vararg values: CertificateArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.clientCertificates = mapped
    }

    /**
     * @param value If you need to set the clusterName property in cassandra.yaml to something besides the resource name of the cluster, set the value to use on this property.
     */
    @JvmName("jvklggyjuspfbidl")
    public suspend fun clusterNameOverride(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.clusterNameOverride = mapped
    }

    /**
     * @param value Whether the cluster and associated data centers has been deallocated.
     */
    @JvmName("mqtfejstsivvijou")
    public suspend fun deallocated(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deallocated = mapped
    }

    /**
     * @param value Resource id of a subnet that this cluster's management service should have its network interface attached to. The subnet must be routable to all subnets that will be delegated to data centers. The resource id must be of the form '/subscriptions//resourceGroups//providers/Microsoft.Network/virtualNetworks//subnets/'
     */
    @JvmName("yogpqahtomaxkdif")
    public suspend fun delegatedManagementSubnetId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.delegatedManagementSubnetId = mapped
    }

    /**
     * @param value List of TLS certificates used to authorize gossip from unmanaged data centers. The TLS certificates of all nodes in unmanaged data centers must be verifiable using one of the certificates provided in this property.
     */
    @JvmName("prmxfcbirdfljluy")
    public suspend fun externalGossipCertificates(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.externalGossipCertificates = mapped
    }

    /**
     * @param argument List of TLS certificates used to authorize gossip from unmanaged data centers. The TLS certificates of all nodes in unmanaged data centers must be verifiable using one of the certificates provided in this property.
     */
    @JvmName("krvdfdwnehoeisor")
    public suspend fun externalGossipCertificates(argument: List Unit>) {
        val toBeMapped = argument.toList().map { CertificateArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.externalGossipCertificates = mapped
    }

    /**
     * @param argument List of TLS certificates used to authorize gossip from unmanaged data centers. The TLS certificates of all nodes in unmanaged data centers must be verifiable using one of the certificates provided in this property.
     */
    @JvmName("tmakefpgbymaqcpy")
    public suspend fun externalGossipCertificates(vararg argument: suspend CertificateArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map { CertificateArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.externalGossipCertificates = mapped
    }

    /**
     * @param argument List of TLS certificates used to authorize gossip from unmanaged data centers. The TLS certificates of all nodes in unmanaged data centers must be verifiable using one of the certificates provided in this property.
     */
    @JvmName("ylgqeyceqxfylbnh")
    public suspend fun externalGossipCertificates(argument: suspend CertificateArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(CertificateArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.externalGossipCertificates = mapped
    }

    /**
     * @param values List of TLS certificates used to authorize gossip from unmanaged data centers. The TLS certificates of all nodes in unmanaged data centers must be verifiable using one of the certificates provided in this property.
     */
    @JvmName("lytsybwdtrgpiqxs")
    public suspend fun externalGossipCertificates(vararg values: CertificateArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.externalGossipCertificates = mapped
    }

    /**
     * @param value List of IP addresses of seed nodes in unmanaged data centers. These will be added to the seed node lists of all managed nodes.
     */
    @JvmName("nindocoiywrvnjmf")
    public suspend fun externalSeedNodes(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.externalSeedNodes = mapped
    }

    /**
     * @param argument List of IP addresses of seed nodes in unmanaged data centers. These will be added to the seed node lists of all managed nodes.
     */
    @JvmName("glcmqdsicvutocas")
    public suspend fun externalSeedNodes(argument: List Unit>) {
        val toBeMapped = argument.toList().map { SeedNodeArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.externalSeedNodes = mapped
    }

    /**
     * @param argument List of IP addresses of seed nodes in unmanaged data centers. These will be added to the seed node lists of all managed nodes.
     */
    @JvmName("mfcrwtnfyvkrpclt")
    public suspend fun externalSeedNodes(vararg argument: suspend SeedNodeArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map { SeedNodeArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.externalSeedNodes = mapped
    }

    /**
     * @param argument List of IP addresses of seed nodes in unmanaged data centers. These will be added to the seed node lists of all managed nodes.
     */
    @JvmName("ynmigsgitrdfkcua")
    public suspend fun externalSeedNodes(argument: suspend SeedNodeArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(SeedNodeArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.externalSeedNodes = mapped
    }

    /**
     * @param values List of IP addresses of seed nodes in unmanaged data centers. These will be added to the seed node lists of all managed nodes.
     */
    @JvmName("xbmcpmfqybidneit")
    public suspend fun externalSeedNodes(vararg values: SeedNodeArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.externalSeedNodes = mapped
    }

    /**
     * @param value (Deprecated) Number of hours to wait between taking a backup of the cluster.
     */
    @JvmName("rkfhiglueiujvphj")
    public suspend fun hoursBetweenBackups(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.hoursBetweenBackups = mapped
    }

    /**
     * @param value Initial password for clients connecting as admin to the cluster. Should be changed after cluster creation. Returns null on GET. This field only applies when the authenticationMethod field is 'Cassandra'.
     */
    @JvmName("vodjawqbmahgmvlk")
    public suspend fun initialCassandraAdminPassword(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.initialCassandraAdminPassword = mapped
    }

    /**
     * @param value Hostname or IP address where the Prometheus endpoint containing data about the managed Cassandra nodes can be reached.
     */
    @JvmName("dxfnenjeqivwxlej")
    public suspend fun prometheusEndpoint(`value`: SeedNodeArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.prometheusEndpoint = mapped
    }

    /**
     * @param argument Hostname or IP address where the Prometheus endpoint containing data about the managed Cassandra nodes can be reached.
     */
    @JvmName("vprfcdrtcufkxeqb")
    public suspend fun prometheusEndpoint(argument: suspend SeedNodeArgsBuilder.() -> Unit) {
        val toBeMapped = SeedNodeArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.prometheusEndpoint = mapped
    }

    /**
     * @param value Error related to resource provisioning.
     */
    @JvmName("rdmuxireduywlrqp")
    public suspend fun provisionError(`value`: CassandraErrorArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.provisionError = mapped
    }

    /**
     * @param argument Error related to resource provisioning.
     */
    @JvmName("usjxlitfcktdnbiv")
    public suspend fun provisionError(argument: suspend CassandraErrorArgsBuilder.() -> Unit) {
        val toBeMapped = CassandraErrorArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.provisionError = mapped
    }

    /**
     * @param value The status of the resource at the time the operation was called.
     */
    @JvmName("vvuisxlclfbqekxh")
    public suspend fun provisioningState(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.provisioningState = mapped
    }

    /**
     * @param value The status of the resource at the time the operation was called.
     */
    @JvmName("jmyhxsdgitdxcntu")
    public fun provisioningState(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.provisioningState = mapped
    }

    /**
     * @param value The status of the resource at the time the operation was called.
     */
    @JvmName("gcyhhffrpsjifldu")
    public fun provisioningState(`value`: ManagedCassandraProvisioningState) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.provisioningState = mapped
    }

    /**
     * @param value Should automatic repairs run on this cluster? If omitted, this is true, and should stay true unless you are running a hybrid cluster where you are already doing your own repairs.
     */
    @JvmName("ggcjgnuicsglaaov")
    public suspend fun repairEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.repairEnabled = mapped
    }

    /**
     * @param value To create an empty cluster, omit this field or set it to null. To restore a backup into a new cluster, set this field to the resource id of the backup.
     */
    @JvmName("jcwhfviixqtmcgce")
    public suspend fun restoreFromBackupId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.restoreFromBackupId = mapped
    }

    internal fun build(): ClusterResourcePropertiesArgs = ClusterResourcePropertiesArgs(
        authenticationMethod = authenticationMethod,
        cassandraAuditLoggingEnabled = cassandraAuditLoggingEnabled,
        cassandraVersion = cassandraVersion,
        clientCertificates = clientCertificates,
        clusterNameOverride = clusterNameOverride,
        deallocated = deallocated,
        delegatedManagementSubnetId = delegatedManagementSubnetId,
        externalGossipCertificates = externalGossipCertificates,
        externalSeedNodes = externalSeedNodes,
        hoursBetweenBackups = hoursBetweenBackups,
        initialCassandraAdminPassword = initialCassandraAdminPassword,
        prometheusEndpoint = prometheusEndpoint,
        provisionError = provisionError,
        provisioningState = provisioningState,
        repairEnabled = repairEnabled,
        restoreFromBackupId = restoreFromBackupId,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy