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

com.pulumi.alicloud.emrv2.kotlin.inputs.ClusterNodeGroupArgs.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: 3.62.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.alicloud.emrv2.kotlin.inputs

import com.pulumi.alicloud.emrv2.inputs.ClusterNodeGroupArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
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

/**
 *
 * @property additionalSecurityGroupIds Additional security Group IDS for Cluster, you can also specify this key for each node group.
 * @property autoScalingPolicy The node group auto scaling policy for emr cluster. See `auto_scaling_policy` below.
 * @property costOptimizedConfig The detail cost optimized configuration of emr cluster. See `cost_optimized_config` below.
 * @property dataDisks Host Ecs data disks information in this node group. See `data_disks` below.
 * @property deploymentSetStrategy Deployment set strategy for this cluster node group. Supported value: NONE, CLUSTER or NODE_GROUP.
 * @property gracefulShutdown Enable emr cluster of task node graceful decommission, ’true’ or ‘false’ .
 * @property instanceTypes Host Ecs instance types.
 * @property nodeCount Host Ecs number in this node group.
 * @property nodeGroupName The node group name of emr cluster.
 * @property nodeGroupType The node group type of emr cluster, supported value: MASTER, CORE or TASK. Node group type of GATEWAY is available since v1.219.0.
 * @property nodeResizeStrategy Node resize strategy for this cluster node group. Supported value: PRIORITY, COST_OPTIMIZED.
 * @property paymentType Payment Type for this cluster. Supported value: PayAsYouGo or Subscription.
 * @property spotBidPrices The spot bid prices of a PayAsYouGo instance. See `spot_bid_prices` below.
 * @property spotInstanceRemedy Whether to replace spot instances with newly created spot/onDemand instance when receive a spot recycling message.
 * @property subscriptionConfig The detail configuration of subscription payment type. See `subscription_config` below.
 * @property systemDisk Host Ecs system disk information in this node group. See `system_disk` below.
 * @property vswitchIds Global vSwitch ids, you can also specify it in node group.
 * @property withPublicIp Whether the node has a public IP address enabled.
 */
public data class ClusterNodeGroupArgs(
    public val additionalSecurityGroupIds: Output>? = null,
    public val autoScalingPolicy: Output? = null,
    public val costOptimizedConfig: Output? = null,
    public val dataDisks: Output>,
    public val deploymentSetStrategy: Output? = null,
    public val gracefulShutdown: Output? = null,
    public val instanceTypes: Output>,
    public val nodeCount: Output,
    public val nodeGroupName: Output,
    public val nodeGroupType: Output,
    public val nodeResizeStrategy: Output? = null,
    public val paymentType: Output? = null,
    public val spotBidPrices: Output>? = null,
    public val spotInstanceRemedy: Output? = null,
    public val subscriptionConfig: Output? = null,
    public val systemDisk: Output,
    public val vswitchIds: Output>? = null,
    public val withPublicIp: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.alicloud.emrv2.inputs.ClusterNodeGroupArgs =
        com.pulumi.alicloud.emrv2.inputs.ClusterNodeGroupArgs.builder()
            .additionalSecurityGroupIds(
                additionalSecurityGroupIds?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0
                    })
                }),
            )
            .autoScalingPolicy(autoScalingPolicy?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .costOptimizedConfig(
                costOptimizedConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .dataDisks(
                dataDisks.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .deploymentSetStrategy(deploymentSetStrategy?.applyValue({ args0 -> args0 }))
            .gracefulShutdown(gracefulShutdown?.applyValue({ args0 -> args0 }))
            .instanceTypes(instanceTypes.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .nodeCount(nodeCount.applyValue({ args0 -> args0 }))
            .nodeGroupName(nodeGroupName.applyValue({ args0 -> args0 }))
            .nodeGroupType(nodeGroupType.applyValue({ args0 -> args0 }))
            .nodeResizeStrategy(nodeResizeStrategy?.applyValue({ args0 -> args0 }))
            .paymentType(paymentType?.applyValue({ args0 -> args0 }))
            .spotBidPrices(
                spotBidPrices?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .spotInstanceRemedy(spotInstanceRemedy?.applyValue({ args0 -> args0 }))
            .subscriptionConfig(
                subscriptionConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .systemDisk(systemDisk.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .vswitchIds(vswitchIds?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .withPublicIp(withPublicIp?.applyValue({ args0 -> args0 })).build()
}

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

    private var autoScalingPolicy: Output? = null

    private var costOptimizedConfig: Output? = null

    private var dataDisks: Output>? = null

    private var deploymentSetStrategy: Output? = null

    private var gracefulShutdown: Output? = null

    private var instanceTypes: Output>? = null

    private var nodeCount: Output? = null

    private var nodeGroupName: Output? = null

    private var nodeGroupType: Output? = null

    private var nodeResizeStrategy: Output? = null

    private var paymentType: Output? = null

    private var spotBidPrices: Output>? = null

    private var spotInstanceRemedy: Output? = null

    private var subscriptionConfig: Output? = null

    private var systemDisk: Output? = null

    private var vswitchIds: Output>? = null

    private var withPublicIp: Output? = null

    /**
     * @param value Additional security Group IDS for Cluster, you can also specify this key for each node group.
     */
    @JvmName("vpyfhiviwlmalovb")
    public suspend fun additionalSecurityGroupIds(`value`: Output>) {
        this.additionalSecurityGroupIds = value
    }

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

    /**
     * @param values Additional security Group IDS for Cluster, you can also specify this key for each node group.
     */
    @JvmName("gebnlfrfaowdjyho")
    public suspend fun additionalSecurityGroupIds(values: List>) {
        this.additionalSecurityGroupIds = Output.all(values)
    }

    /**
     * @param value The node group auto scaling policy for emr cluster. See `auto_scaling_policy` below.
     */
    @JvmName("bcrkbklltwjrunms")
    public suspend fun autoScalingPolicy(`value`: Output) {
        this.autoScalingPolicy = value
    }

    /**
     * @param value The detail cost optimized configuration of emr cluster. See `cost_optimized_config` below.
     */
    @JvmName("icedaqkhqnpindpk")
    public suspend fun costOptimizedConfig(`value`: Output) {
        this.costOptimizedConfig = value
    }

    /**
     * @param value Host Ecs data disks information in this node group. See `data_disks` below.
     */
    @JvmName("fubpvimdccwptwpf")
    public suspend fun dataDisks(`value`: Output>) {
        this.dataDisks = value
    }

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

    /**
     * @param values Host Ecs data disks information in this node group. See `data_disks` below.
     */
    @JvmName("xqgkrxabpyggxumv")
    public suspend fun dataDisks(values: List>) {
        this.dataDisks = Output.all(values)
    }

    /**
     * @param value Deployment set strategy for this cluster node group. Supported value: NONE, CLUSTER or NODE_GROUP.
     */
    @JvmName("ndcfxybdtrqkrram")
    public suspend fun deploymentSetStrategy(`value`: Output) {
        this.deploymentSetStrategy = value
    }

    /**
     * @param value Enable emr cluster of task node graceful decommission, ’true’ or ‘false’ .
     */
    @JvmName("jsaqnarsaxcjxfmh")
    public suspend fun gracefulShutdown(`value`: Output) {
        this.gracefulShutdown = value
    }

    /**
     * @param value Host Ecs instance types.
     */
    @JvmName("ovkukqxlpjulmopb")
    public suspend fun instanceTypes(`value`: Output>) {
        this.instanceTypes = value
    }

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

    /**
     * @param values Host Ecs instance types.
     */
    @JvmName("vhlwivdmntoupwqp")
    public suspend fun instanceTypes(values: List>) {
        this.instanceTypes = Output.all(values)
    }

    /**
     * @param value Host Ecs number in this node group.
     */
    @JvmName("dtgrsaxghsaqejjt")
    public suspend fun nodeCount(`value`: Output) {
        this.nodeCount = value
    }

    /**
     * @param value The node group name of emr cluster.
     */
    @JvmName("bvncteneeetbyvny")
    public suspend fun nodeGroupName(`value`: Output) {
        this.nodeGroupName = value
    }

    /**
     * @param value The node group type of emr cluster, supported value: MASTER, CORE or TASK. Node group type of GATEWAY is available since v1.219.0.
     */
    @JvmName("ymcaglklnfwalibu")
    public suspend fun nodeGroupType(`value`: Output) {
        this.nodeGroupType = value
    }

    /**
     * @param value Node resize strategy for this cluster node group. Supported value: PRIORITY, COST_OPTIMIZED.
     */
    @JvmName("cktytpxdttxkiffc")
    public suspend fun nodeResizeStrategy(`value`: Output) {
        this.nodeResizeStrategy = value
    }

    /**
     * @param value Payment Type for this cluster. Supported value: PayAsYouGo or Subscription.
     */
    @JvmName("mqqblmyiiigovhng")
    public suspend fun paymentType(`value`: Output) {
        this.paymentType = value
    }

    /**
     * @param value The spot bid prices of a PayAsYouGo instance. See `spot_bid_prices` below.
     */
    @JvmName("pyjsaumoiqebmogp")
    public suspend fun spotBidPrices(`value`: Output>) {
        this.spotBidPrices = value
    }

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

    /**
     * @param values The spot bid prices of a PayAsYouGo instance. See `spot_bid_prices` below.
     */
    @JvmName("duvnsisfpiohhsxe")
    public suspend fun spotBidPrices(values: List>) {
        this.spotBidPrices = Output.all(values)
    }

    /**
     * @param value Whether to replace spot instances with newly created spot/onDemand instance when receive a spot recycling message.
     */
    @JvmName("jttwtufoqrdyqyxa")
    public suspend fun spotInstanceRemedy(`value`: Output) {
        this.spotInstanceRemedy = value
    }

    /**
     * @param value The detail configuration of subscription payment type. See `subscription_config` below.
     */
    @JvmName("rpccupaimxigrmoa")
    public suspend fun subscriptionConfig(`value`: Output) {
        this.subscriptionConfig = value
    }

    /**
     * @param value Host Ecs system disk information in this node group. See `system_disk` below.
     */
    @JvmName("rtucnajsnpogrbrd")
    public suspend fun systemDisk(`value`: Output) {
        this.systemDisk = value
    }

    /**
     * @param value Global vSwitch ids, you can also specify it in node group.
     */
    @JvmName("ipcgwyfwqebkgfwn")
    public suspend fun vswitchIds(`value`: Output>) {
        this.vswitchIds = value
    }

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

    /**
     * @param values Global vSwitch ids, you can also specify it in node group.
     */
    @JvmName("tibomoldgdmbleqj")
    public suspend fun vswitchIds(values: List>) {
        this.vswitchIds = Output.all(values)
    }

    /**
     * @param value Whether the node has a public IP address enabled.
     */
    @JvmName("uqjapdxjoixtmvhb")
    public suspend fun withPublicIp(`value`: Output) {
        this.withPublicIp = value
    }

    /**
     * @param value Additional security Group IDS for Cluster, you can also specify this key for each node group.
     */
    @JvmName("ttdbodaeqhuvfoak")
    public suspend fun additionalSecurityGroupIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.additionalSecurityGroupIds = mapped
    }

    /**
     * @param values Additional security Group IDS for Cluster, you can also specify this key for each node group.
     */
    @JvmName("nyhigrhroicplnal")
    public suspend fun additionalSecurityGroupIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.additionalSecurityGroupIds = mapped
    }

    /**
     * @param value The node group auto scaling policy for emr cluster. See `auto_scaling_policy` below.
     */
    @JvmName("asfvkruygwbqsggr")
    public suspend fun autoScalingPolicy(`value`: ClusterNodeGroupAutoScalingPolicyArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.autoScalingPolicy = mapped
    }

    /**
     * @param argument The node group auto scaling policy for emr cluster. See `auto_scaling_policy` below.
     */
    @JvmName("tbqotrpfporddpxp")
    public suspend fun autoScalingPolicy(argument: suspend ClusterNodeGroupAutoScalingPolicyArgsBuilder.() -> Unit) {
        val toBeMapped = ClusterNodeGroupAutoScalingPolicyArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.autoScalingPolicy = mapped
    }

    /**
     * @param value The detail cost optimized configuration of emr cluster. See `cost_optimized_config` below.
     */
    @JvmName("bcpwlyklhqqficjf")
    public suspend fun costOptimizedConfig(`value`: ClusterNodeGroupCostOptimizedConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.costOptimizedConfig = mapped
    }

    /**
     * @param argument The detail cost optimized configuration of emr cluster. See `cost_optimized_config` below.
     */
    @JvmName("rktdnsjlynoqkyvb")
    public suspend fun costOptimizedConfig(argument: suspend ClusterNodeGroupCostOptimizedConfigArgsBuilder.() -> Unit) {
        val toBeMapped = ClusterNodeGroupCostOptimizedConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.costOptimizedConfig = mapped
    }

    /**
     * @param value Host Ecs data disks information in this node group. See `data_disks` below.
     */
    @JvmName("cqofeyqxfovvoeij")
    public suspend fun dataDisks(`value`: List) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.dataDisks = mapped
    }

    /**
     * @param argument Host Ecs data disks information in this node group. See `data_disks` below.
     */
    @JvmName("ncdjmvxjlumvvjlg")
    public suspend fun dataDisks(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            ClusterNodeGroupDataDiskArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.dataDisks = mapped
    }

    /**
     * @param argument Host Ecs data disks information in this node group. See `data_disks` below.
     */
    @JvmName("wusndxmswdymbpas")
    public suspend fun dataDisks(vararg argument: suspend ClusterNodeGroupDataDiskArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            ClusterNodeGroupDataDiskArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.dataDisks = mapped
    }

    /**
     * @param argument Host Ecs data disks information in this node group. See `data_disks` below.
     */
    @JvmName("pamrnjjqekvhlnju")
    public suspend fun dataDisks(argument: suspend ClusterNodeGroupDataDiskArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            ClusterNodeGroupDataDiskArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.dataDisks = mapped
    }

    /**
     * @param values Host Ecs data disks information in this node group. See `data_disks` below.
     */
    @JvmName("fbtixdnwyyponjpu")
    public suspend fun dataDisks(vararg values: ClusterNodeGroupDataDiskArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.dataDisks = mapped
    }

    /**
     * @param value Deployment set strategy for this cluster node group. Supported value: NONE, CLUSTER or NODE_GROUP.
     */
    @JvmName("tselrywetevjuadq")
    public suspend fun deploymentSetStrategy(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deploymentSetStrategy = mapped
    }

    /**
     * @param value Enable emr cluster of task node graceful decommission, ’true’ or ‘false’ .
     */
    @JvmName("embkkvsfmdtajqfi")
    public suspend fun gracefulShutdown(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.gracefulShutdown = mapped
    }

    /**
     * @param value Host Ecs instance types.
     */
    @JvmName("mrkgqeinfdtjukoo")
    public suspend fun instanceTypes(`value`: List) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.instanceTypes = mapped
    }

    /**
     * @param values Host Ecs instance types.
     */
    @JvmName("ltmhilvkmakfuymh")
    public suspend fun instanceTypes(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.instanceTypes = mapped
    }

    /**
     * @param value Host Ecs number in this node group.
     */
    @JvmName("tiklydftvqealova")
    public suspend fun nodeCount(`value`: Int) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.nodeCount = mapped
    }

    /**
     * @param value The node group name of emr cluster.
     */
    @JvmName("unepxtpcnvnftlkv")
    public suspend fun nodeGroupName(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.nodeGroupName = mapped
    }

    /**
     * @param value The node group type of emr cluster, supported value: MASTER, CORE or TASK. Node group type of GATEWAY is available since v1.219.0.
     */
    @JvmName("ejqbfmcnropwxbmc")
    public suspend fun nodeGroupType(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.nodeGroupType = mapped
    }

    /**
     * @param value Node resize strategy for this cluster node group. Supported value: PRIORITY, COST_OPTIMIZED.
     */
    @JvmName("fjxbyfhjgqveyrdb")
    public suspend fun nodeResizeStrategy(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.nodeResizeStrategy = mapped
    }

    /**
     * @param value Payment Type for this cluster. Supported value: PayAsYouGo or Subscription.
     */
    @JvmName("dggyitdgccosngqy")
    public suspend fun paymentType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.paymentType = mapped
    }

    /**
     * @param value The spot bid prices of a PayAsYouGo instance. See `spot_bid_prices` below.
     */
    @JvmName("ivgcvvvfwfdibkos")
    public suspend fun spotBidPrices(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.spotBidPrices = mapped
    }

    /**
     * @param argument The spot bid prices of a PayAsYouGo instance. See `spot_bid_prices` below.
     */
    @JvmName("mqqkhjenbydfacpi")
    public suspend fun spotBidPrices(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            ClusterNodeGroupSpotBidPriceArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.spotBidPrices = mapped
    }

    /**
     * @param argument The spot bid prices of a PayAsYouGo instance. See `spot_bid_prices` below.
     */
    @JvmName("ughldhwswxdrnobu")
    public suspend fun spotBidPrices(vararg argument: suspend ClusterNodeGroupSpotBidPriceArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            ClusterNodeGroupSpotBidPriceArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.spotBidPrices = mapped
    }

    /**
     * @param argument The spot bid prices of a PayAsYouGo instance. See `spot_bid_prices` below.
     */
    @JvmName("sjbdufmpirimuwvj")
    public suspend fun spotBidPrices(argument: suspend ClusterNodeGroupSpotBidPriceArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            ClusterNodeGroupSpotBidPriceArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.spotBidPrices = mapped
    }

    /**
     * @param values The spot bid prices of a PayAsYouGo instance. See `spot_bid_prices` below.
     */
    @JvmName("fsdabnjuqpeoxqbn")
    public suspend fun spotBidPrices(vararg values: ClusterNodeGroupSpotBidPriceArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.spotBidPrices = mapped
    }

    /**
     * @param value Whether to replace spot instances with newly created spot/onDemand instance when receive a spot recycling message.
     */
    @JvmName("mxyhaakriqnobqui")
    public suspend fun spotInstanceRemedy(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.spotInstanceRemedy = mapped
    }

    /**
     * @param value The detail configuration of subscription payment type. See `subscription_config` below.
     */
    @JvmName("aedyuudktwxbdqsf")
    public suspend fun subscriptionConfig(`value`: ClusterNodeGroupSubscriptionConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subscriptionConfig = mapped
    }

    /**
     * @param argument The detail configuration of subscription payment type. See `subscription_config` below.
     */
    @JvmName("ecvkyoaywiootudu")
    public suspend fun subscriptionConfig(argument: suspend ClusterNodeGroupSubscriptionConfigArgsBuilder.() -> Unit) {
        val toBeMapped = ClusterNodeGroupSubscriptionConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.subscriptionConfig = mapped
    }

    /**
     * @param value Host Ecs system disk information in this node group. See `system_disk` below.
     */
    @JvmName("yvsjruaeefhstfjh")
    public suspend fun systemDisk(`value`: ClusterNodeGroupSystemDiskArgs) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.systemDisk = mapped
    }

    /**
     * @param argument Host Ecs system disk information in this node group. See `system_disk` below.
     */
    @JvmName("hdkpcsnlpmunbmpk")
    public suspend fun systemDisk(argument: suspend ClusterNodeGroupSystemDiskArgsBuilder.() -> Unit) {
        val toBeMapped = ClusterNodeGroupSystemDiskArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.systemDisk = mapped
    }

    /**
     * @param value Global vSwitch ids, you can also specify it in node group.
     */
    @JvmName("gcpxtsrvwpoguhfs")
    public suspend fun vswitchIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.vswitchIds = mapped
    }

    /**
     * @param values Global vSwitch ids, you can also specify it in node group.
     */
    @JvmName("cgjnpyunaojxllan")
    public suspend fun vswitchIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.vswitchIds = mapped
    }

    /**
     * @param value Whether the node has a public IP address enabled.
     */
    @JvmName("dqfaurwwecbdhvaj")
    public suspend fun withPublicIp(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.withPublicIp = mapped
    }

    internal fun build(): ClusterNodeGroupArgs = ClusterNodeGroupArgs(
        additionalSecurityGroupIds = additionalSecurityGroupIds,
        autoScalingPolicy = autoScalingPolicy,
        costOptimizedConfig = costOptimizedConfig,
        dataDisks = dataDisks ?: throw PulumiNullFieldException("dataDisks"),
        deploymentSetStrategy = deploymentSetStrategy,
        gracefulShutdown = gracefulShutdown,
        instanceTypes = instanceTypes ?: throw PulumiNullFieldException("instanceTypes"),
        nodeCount = nodeCount ?: throw PulumiNullFieldException("nodeCount"),
        nodeGroupName = nodeGroupName ?: throw PulumiNullFieldException("nodeGroupName"),
        nodeGroupType = nodeGroupType ?: throw PulumiNullFieldException("nodeGroupType"),
        nodeResizeStrategy = nodeResizeStrategy,
        paymentType = paymentType,
        spotBidPrices = spotBidPrices,
        spotInstanceRemedy = spotInstanceRemedy,
        subscriptionConfig = subscriptionConfig,
        systemDisk = systemDisk ?: throw PulumiNullFieldException("systemDisk"),
        vswitchIds = vswitchIds,
        withPublicIp = withPublicIp,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy