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

com.pulumi.gcp.container.kotlin.inputs.AzureClusterControlPlaneArgs.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: 8.12.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.gcp.container.kotlin.inputs

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.container.inputs.AzureClusterControlPlaneArgs.builder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 *
 * @property databaseEncryption Optional. Configuration related to application-layer secrets encryption.
 * @property mainVolume Optional. Configuration related to the main volume provisioned for each control plane replica. The main volume is in charge of storing all of the cluster's etcd state. When unspecified, it defaults to a 8-GiB Azure Disk.
 * @property proxyConfig Proxy configuration for outbound HTTP(S) traffic.
 * @property replicaPlacements Configuration for where to place the control plane replicas. Up to three replica placement instances can be specified. If replica_placements is set, the replica placement instances will be applied to the three control plane replicas as evenly as possible.
 * @property rootVolume Optional. Configuration related to the root volume provisioned for each control plane replica. When unspecified, it defaults to 32-GiB Azure Disk.
 * @property sshConfig SSH configuration for how to access the underlying control plane machines.
 * @property subnetId The ARM ID of the subnet where the control plane VMs are deployed. Example: `/subscriptions//resourceGroups//providers/Microsoft.Network/virtualNetworks//subnets/default`.
 * @property tags Optional. A set of tags to apply to all underlying control plane Azure resources.
 * @property version The Kubernetes version to run on control plane replicas (e.g. `1.19.10-gke.1000`). You can list all supported versions on a given Google Cloud region by calling GetAzureServerConfig.
 * @property vmSize Optional. The Azure VM size name. Example: `Standard_DS2_v2`. For available VM sizes, see https://docs.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions. When unspecified, it defaults to `Standard_DS2_v2`.
 */
public data class AzureClusterControlPlaneArgs(
    public val databaseEncryption: Output? = null,
    public val mainVolume: Output? = null,
    public val proxyConfig: Output? = null,
    public val replicaPlacements: Output>? = null,
    public val rootVolume: Output? = null,
    public val sshConfig: Output,
    public val subnetId: Output,
    public val tags: Output>? = null,
    public val version: Output,
    public val vmSize: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.container.inputs.AzureClusterControlPlaneArgs =
        com.pulumi.gcp.container.inputs.AzureClusterControlPlaneArgs.builder()
            .databaseEncryption(
                databaseEncryption?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .mainVolume(mainVolume?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .proxyConfig(proxyConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .replicaPlacements(
                replicaPlacements?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .rootVolume(rootVolume?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .sshConfig(sshConfig.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .subnetId(subnetId.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .version(version.applyValue({ args0 -> args0 }))
            .vmSize(vmSize?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [AzureClusterControlPlaneArgs].
 */
@PulumiTagMarker
public class AzureClusterControlPlaneArgsBuilder internal constructor() {
    private var databaseEncryption: Output? = null

    private var mainVolume: Output? = null

    private var proxyConfig: Output? = null

    private var replicaPlacements: Output>? = null

    private var rootVolume: Output? = null

    private var sshConfig: Output? = null

    private var subnetId: Output? = null

    private var tags: Output>? = null

    private var version: Output? = null

    private var vmSize: Output? = null

    /**
     * @param value Optional. Configuration related to application-layer secrets encryption.
     */
    @JvmName("gcjrskorvfhpvwmw")
    public suspend fun databaseEncryption(`value`: Output) {
        this.databaseEncryption = value
    }

    /**
     * @param value Optional. Configuration related to the main volume provisioned for each control plane replica. The main volume is in charge of storing all of the cluster's etcd state. When unspecified, it defaults to a 8-GiB Azure Disk.
     */
    @JvmName("pikjbuvqaekpfjhj")
    public suspend fun mainVolume(`value`: Output) {
        this.mainVolume = value
    }

    /**
     * @param value Proxy configuration for outbound HTTP(S) traffic.
     */
    @JvmName("nkdcxgdgasnyfwpr")
    public suspend fun proxyConfig(`value`: Output) {
        this.proxyConfig = value
    }

    /**
     * @param value Configuration for where to place the control plane replicas. Up to three replica placement instances can be specified. If replica_placements is set, the replica placement instances will be applied to the three control plane replicas as evenly as possible.
     */
    @JvmName("tkkdeurcnbwcmkct")
    public suspend fun replicaPlacements(`value`: Output>) {
        this.replicaPlacements = value
    }

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

    /**
     * @param values Configuration for where to place the control plane replicas. Up to three replica placement instances can be specified. If replica_placements is set, the replica placement instances will be applied to the three control plane replicas as evenly as possible.
     */
    @JvmName("iljibroaxapmssrh")
    public suspend fun replicaPlacements(values: List>) {
        this.replicaPlacements = Output.all(values)
    }

    /**
     * @param value Optional. Configuration related to the root volume provisioned for each control plane replica. When unspecified, it defaults to 32-GiB Azure Disk.
     */
    @JvmName("rgrluxomughcktpb")
    public suspend fun rootVolume(`value`: Output) {
        this.rootVolume = value
    }

    /**
     * @param value SSH configuration for how to access the underlying control plane machines.
     */
    @JvmName("dwjboobehxpqlcqu")
    public suspend fun sshConfig(`value`: Output) {
        this.sshConfig = value
    }

    /**
     * @param value The ARM ID of the subnet where the control plane VMs are deployed. Example: `/subscriptions//resourceGroups//providers/Microsoft.Network/virtualNetworks//subnets/default`.
     */
    @JvmName("erwjnqvlfhpvuxbt")
    public suspend fun subnetId(`value`: Output) {
        this.subnetId = value
    }

    /**
     * @param value Optional. A set of tags to apply to all underlying control plane Azure resources.
     */
    @JvmName("lsbederbkucjyyru")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value The Kubernetes version to run on control plane replicas (e.g. `1.19.10-gke.1000`). You can list all supported versions on a given Google Cloud region by calling GetAzureServerConfig.
     */
    @JvmName("dcmdyultacnocxhi")
    public suspend fun version(`value`: Output) {
        this.version = value
    }

    /**
     * @param value Optional. The Azure VM size name. Example: `Standard_DS2_v2`. For available VM sizes, see https://docs.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions. When unspecified, it defaults to `Standard_DS2_v2`.
     */
    @JvmName("dvdutpcnkhossjyv")
    public suspend fun vmSize(`value`: Output) {
        this.vmSize = value
    }

    /**
     * @param value Optional. Configuration related to application-layer secrets encryption.
     */
    @JvmName("iblqfwdsefwaxtej")
    public suspend fun databaseEncryption(`value`: AzureClusterControlPlaneDatabaseEncryptionArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.databaseEncryption = mapped
    }

    /**
     * @param argument Optional. Configuration related to application-layer secrets encryption.
     */
    @JvmName("osqsvjnjgcdylwjp")
    public suspend fun databaseEncryption(argument: suspend AzureClusterControlPlaneDatabaseEncryptionArgsBuilder.() -> Unit) {
        val toBeMapped = AzureClusterControlPlaneDatabaseEncryptionArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.databaseEncryption = mapped
    }

    /**
     * @param value Optional. Configuration related to the main volume provisioned for each control plane replica. The main volume is in charge of storing all of the cluster's etcd state. When unspecified, it defaults to a 8-GiB Azure Disk.
     */
    @JvmName("dhvryaglpqtwshvu")
    public suspend fun mainVolume(`value`: AzureClusterControlPlaneMainVolumeArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.mainVolume = mapped
    }

    /**
     * @param argument Optional. Configuration related to the main volume provisioned for each control plane replica. The main volume is in charge of storing all of the cluster's etcd state. When unspecified, it defaults to a 8-GiB Azure Disk.
     */
    @JvmName("ghakphrvrjpqbpve")
    public suspend fun mainVolume(argument: suspend AzureClusterControlPlaneMainVolumeArgsBuilder.() -> Unit) {
        val toBeMapped = AzureClusterControlPlaneMainVolumeArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.mainVolume = mapped
    }

    /**
     * @param value Proxy configuration for outbound HTTP(S) traffic.
     */
    @JvmName("hljsaufxppdvutto")
    public suspend fun proxyConfig(`value`: AzureClusterControlPlaneProxyConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.proxyConfig = mapped
    }

    /**
     * @param argument Proxy configuration for outbound HTTP(S) traffic.
     */
    @JvmName("wgxvxoxjqedxtlas")
    public suspend fun proxyConfig(argument: suspend AzureClusterControlPlaneProxyConfigArgsBuilder.() -> Unit) {
        val toBeMapped = AzureClusterControlPlaneProxyConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.proxyConfig = mapped
    }

    /**
     * @param value Configuration for where to place the control plane replicas. Up to three replica placement instances can be specified. If replica_placements is set, the replica placement instances will be applied to the three control plane replicas as evenly as possible.
     */
    @JvmName("wtavoluusypgcyqr")
    public suspend fun replicaPlacements(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.replicaPlacements = mapped
    }

    /**
     * @param argument Configuration for where to place the control plane replicas. Up to three replica placement instances can be specified. If replica_placements is set, the replica placement instances will be applied to the three control plane replicas as evenly as possible.
     */
    @JvmName("owplfvhywwdiujco")
    public suspend fun replicaPlacements(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            AzureClusterControlPlaneReplicaPlacementArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.replicaPlacements = mapped
    }

    /**
     * @param argument Configuration for where to place the control plane replicas. Up to three replica placement instances can be specified. If replica_placements is set, the replica placement instances will be applied to the three control plane replicas as evenly as possible.
     */
    @JvmName("lsilmvyxnrmgrjyu")
    public suspend fun replicaPlacements(vararg argument: suspend AzureClusterControlPlaneReplicaPlacementArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            AzureClusterControlPlaneReplicaPlacementArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.replicaPlacements = mapped
    }

    /**
     * @param argument Configuration for where to place the control plane replicas. Up to three replica placement instances can be specified. If replica_placements is set, the replica placement instances will be applied to the three control plane replicas as evenly as possible.
     */
    @JvmName("bhqxrxxumthygmdn")
    public suspend fun replicaPlacements(argument: suspend AzureClusterControlPlaneReplicaPlacementArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            AzureClusterControlPlaneReplicaPlacementArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.replicaPlacements = mapped
    }

    /**
     * @param values Configuration for where to place the control plane replicas. Up to three replica placement instances can be specified. If replica_placements is set, the replica placement instances will be applied to the three control plane replicas as evenly as possible.
     */
    @JvmName("dasxurhqequkuutm")
    public suspend fun replicaPlacements(vararg values: AzureClusterControlPlaneReplicaPlacementArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.replicaPlacements = mapped
    }

    /**
     * @param value Optional. Configuration related to the root volume provisioned for each control plane replica. When unspecified, it defaults to 32-GiB Azure Disk.
     */
    @JvmName("ntivokgropqhbboq")
    public suspend fun rootVolume(`value`: AzureClusterControlPlaneRootVolumeArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.rootVolume = mapped
    }

    /**
     * @param argument Optional. Configuration related to the root volume provisioned for each control plane replica. When unspecified, it defaults to 32-GiB Azure Disk.
     */
    @JvmName("bxfksgintclyppxa")
    public suspend fun rootVolume(argument: suspend AzureClusterControlPlaneRootVolumeArgsBuilder.() -> Unit) {
        val toBeMapped = AzureClusterControlPlaneRootVolumeArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.rootVolume = mapped
    }

    /**
     * @param value SSH configuration for how to access the underlying control plane machines.
     */
    @JvmName("bgfbsgjbhsibpucj")
    public suspend fun sshConfig(`value`: AzureClusterControlPlaneSshConfigArgs) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.sshConfig = mapped
    }

    /**
     * @param argument SSH configuration for how to access the underlying control plane machines.
     */
    @JvmName("gijenekodyvadtgg")
    public suspend fun sshConfig(argument: suspend AzureClusterControlPlaneSshConfigArgsBuilder.() -> Unit) {
        val toBeMapped = AzureClusterControlPlaneSshConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.sshConfig = mapped
    }

    /**
     * @param value The ARM ID of the subnet where the control plane VMs are deployed. Example: `/subscriptions//resourceGroups//providers/Microsoft.Network/virtualNetworks//subnets/default`.
     */
    @JvmName("yogwtbhspycdgnbp")
    public suspend fun subnetId(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.subnetId = mapped
    }

    /**
     * @param value Optional. A set of tags to apply to all underlying control plane Azure resources.
     */
    @JvmName("nsvslolslrwfwuwp")
    public suspend fun tags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values Optional. A set of tags to apply to all underlying control plane Azure resources.
     */
    @JvmName("begfhqdeqsyhejyq")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value The Kubernetes version to run on control plane replicas (e.g. `1.19.10-gke.1000`). You can list all supported versions on a given Google Cloud region by calling GetAzureServerConfig.
     */
    @JvmName("qevvaiawajwcjqii")
    public suspend fun version(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.version = mapped
    }

    /**
     * @param value Optional. The Azure VM size name. Example: `Standard_DS2_v2`. For available VM sizes, see https://docs.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions. When unspecified, it defaults to `Standard_DS2_v2`.
     */
    @JvmName("iavvokppumaoukwh")
    public suspend fun vmSize(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.vmSize = mapped
    }

    internal fun build(): AzureClusterControlPlaneArgs = AzureClusterControlPlaneArgs(
        databaseEncryption = databaseEncryption,
        mainVolume = mainVolume,
        proxyConfig = proxyConfig,
        replicaPlacements = replicaPlacements,
        rootVolume = rootVolume,
        sshConfig = sshConfig ?: throw PulumiNullFieldException("sshConfig"),
        subnetId = subnetId ?: throw PulumiNullFieldException("subnetId"),
        tags = tags,
        version = version ?: throw PulumiNullFieldException("version"),
        vmSize = vmSize,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy