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

com.pulumi.gcp.container.kotlin.inputs.NodePoolNodeConfigArgs.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.10.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.NodePoolNodeConfigArgs.builder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Any
import kotlin.Boolean
import kotlin.Int
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 advancedMachineFeatures Specifies options for controlling advanced machine features.
 * @property bootDiskKmsKey The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool.
 * @property confidentialNodes Configuration for Confidential Nodes feature. Structure is documented below.
 * @property diskSizeGb Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB.
 * @property diskType Type of the disk attached to each node. Such as pd-standard, pd-balanced or pd-ssd
 * @property effectiveTaints List of kubernetes taints applied to each node.
 * @property enableConfidentialStorage If enabled boot disks are configured with confidential mode.
 * @property ephemeralStorageConfig Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk.
 * @property ephemeralStorageLocalSsdConfig Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk.
 * @property fastSocket Enable or disable NCCL Fast Socket in the node pool.
 * @property gcfsConfig GCFS configuration for this node.
 * @property guestAccelerators List of the type and count of accelerator cards attached to the instance.
 * @property gvnic Enable or disable gvnic in the node pool.
 * @property hostMaintenancePolicy The maintenance policy for the hosts on which the GKE VMs run on.
 * @property imageType The image type to use for this node. Note that for a given image type, the latest version of it will be used.
 * @property kubeletConfig Node kubelet configs.
 * @property labels The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node.
 * @property linuxNodeConfig Parameters that can be configured on Linux nodes.
 * @property localNvmeSsdBlockConfig Parameters for raw-block local NVMe SSDs.
 * @property localSsdCount The number of local SSD disks to be attached to the node.
 * @property loggingVariant Type of logging agent that is used as the default value for node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT.
 * @property machineType The name of a Google Compute Engine machine type.
 * @property metadata The metadata key/value pairs assigned to instances in the cluster.
 * @property minCpuPlatform Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform.
 * @property nodeGroup Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on sole tenant nodes.
 * @property oauthScopes The set of Google API scopes to be made available on all of the node VMs.
 * @property preemptible Whether the nodes are created as preemptible VM instances.
 * @property reservationAffinity The reservation affinity configuration for the node pool.
 * @property resourceLabels The GCE resource labels (a map of key/value pairs) to be applied to the node pool.
 * @property resourceManagerTags A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT & PATCH) when empty.
 * @property sandboxConfig Sandbox configuration for this node.
 * @property secondaryBootDisks Secondary boot disks for preloading data or container images.
 * @property serviceAccount The Google Cloud Platform Service Account to be used by the node VMs.
 * @property shieldedInstanceConfig Shielded Instance options.
 * @property soleTenantConfig Node affinity options for sole tenant node pools.
 * @property spot Whether the nodes are created as spot VM instances.
 * @property tags The list of instance tags applied to all nodes.
 * @property taints List of Kubernetes taints to be applied to each node.
 * @property workloadMetadataConfig The workload metadata configuration for this node.
 */
public data class NodePoolNodeConfigArgs(
    public val advancedMachineFeatures: Output? = null,
    public val bootDiskKmsKey: Output? = null,
    public val confidentialNodes: Output? = null,
    public val diskSizeGb: Output? = null,
    public val diskType: Output? = null,
    public val effectiveTaints: Output>? = null,
    public val enableConfidentialStorage: Output? = null,
    public val ephemeralStorageConfig: Output? = null,
    public val ephemeralStorageLocalSsdConfig: Output? = null,
    public val fastSocket: Output? = null,
    public val gcfsConfig: Output? = null,
    public val guestAccelerators: Output>? = null,
    public val gvnic: Output? = null,
    public val hostMaintenancePolicy: Output? = null,
    public val imageType: Output? = null,
    public val kubeletConfig: Output? = null,
    public val labels: Output>? = null,
    public val linuxNodeConfig: Output? = null,
    public val localNvmeSsdBlockConfig: Output? = null,
    public val localSsdCount: Output? = null,
    public val loggingVariant: Output? = null,
    public val machineType: Output? = null,
    public val metadata: Output>? = null,
    public val minCpuPlatform: Output? = null,
    public val nodeGroup: Output? = null,
    public val oauthScopes: Output>? = null,
    public val preemptible: Output? = null,
    public val reservationAffinity: Output? = null,
    public val resourceLabels: Output>? = null,
    public val resourceManagerTags: Output>? = null,
    public val sandboxConfig: Output? = null,
    public val secondaryBootDisks: Output>? = null,
    public val serviceAccount: Output? = null,
    public val shieldedInstanceConfig: Output? = null,
    public val soleTenantConfig: Output? = null,
    public val spot: Output? = null,
    public val tags: Output>? = null,
    public val taints: Output>? = null,
    public val workloadMetadataConfig: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs =
        com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs.builder()
            .advancedMachineFeatures(
                advancedMachineFeatures?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .bootDiskKmsKey(bootDiskKmsKey?.applyValue({ args0 -> args0 }))
            .confidentialNodes(confidentialNodes?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .diskSizeGb(diskSizeGb?.applyValue({ args0 -> args0 }))
            .diskType(diskType?.applyValue({ args0 -> args0 }))
            .effectiveTaints(
                effectiveTaints?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .enableConfidentialStorage(enableConfidentialStorage?.applyValue({ args0 -> args0 }))
            .ephemeralStorageConfig(
                ephemeralStorageConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .ephemeralStorageLocalSsdConfig(
                ephemeralStorageLocalSsdConfig?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .fastSocket(fastSocket?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .gcfsConfig(gcfsConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .guestAccelerators(
                guestAccelerators?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .gvnic(gvnic?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .hostMaintenancePolicy(
                hostMaintenancePolicy?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .imageType(imageType?.applyValue({ args0 -> args0 }))
            .kubeletConfig(kubeletConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .labels(labels?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .linuxNodeConfig(linuxNodeConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .localNvmeSsdBlockConfig(
                localNvmeSsdBlockConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .localSsdCount(localSsdCount?.applyValue({ args0 -> args0 }))
            .loggingVariant(loggingVariant?.applyValue({ args0 -> args0 }))
            .machineType(machineType?.applyValue({ args0 -> args0 }))
            .metadata(
                metadata?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            )
            .minCpuPlatform(minCpuPlatform?.applyValue({ args0 -> args0 }))
            .nodeGroup(nodeGroup?.applyValue({ args0 -> args0 }))
            .oauthScopes(oauthScopes?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .preemptible(preemptible?.applyValue({ args0 -> args0 }))
            .reservationAffinity(
                reservationAffinity?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .resourceLabels(
                resourceLabels?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            )
            .resourceManagerTags(
                resourceManagerTags?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            )
            .sandboxConfig(sandboxConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .secondaryBootDisks(
                secondaryBootDisks?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .serviceAccount(serviceAccount?.applyValue({ args0 -> args0 }))
            .shieldedInstanceConfig(
                shieldedInstanceConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .soleTenantConfig(soleTenantConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .spot(spot?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .taints(taints?.applyValue({ args0 -> args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) }) }))
            .workloadMetadataConfig(
                workloadMetadataConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            ).build()
}

/**
 * Builder for [NodePoolNodeConfigArgs].
 */
@PulumiTagMarker
public class NodePoolNodeConfigArgsBuilder internal constructor() {
    private var advancedMachineFeatures: Output? = null

    private var bootDiskKmsKey: Output? = null

    private var confidentialNodes: Output? = null

    private var diskSizeGb: Output? = null

    private var diskType: Output? = null

    private var effectiveTaints: Output>? = null

    private var enableConfidentialStorage: Output? = null

    private var ephemeralStorageConfig: Output? = null

    private var ephemeralStorageLocalSsdConfig:
        Output? = null

    private var fastSocket: Output? = null

    private var gcfsConfig: Output? = null

    private var guestAccelerators: Output>? = null

    private var gvnic: Output? = null

    private var hostMaintenancePolicy: Output? = null

    private var imageType: Output? = null

    private var kubeletConfig: Output? = null

    private var labels: Output>? = null

    private var linuxNodeConfig: Output? = null

    private var localNvmeSsdBlockConfig: Output? = null

    private var localSsdCount: Output? = null

    private var loggingVariant: Output? = null

    private var machineType: Output? = null

    private var metadata: Output>? = null

    private var minCpuPlatform: Output? = null

    private var nodeGroup: Output? = null

    private var oauthScopes: Output>? = null

    private var preemptible: Output? = null

    private var reservationAffinity: Output? = null

    private var resourceLabels: Output>? = null

    private var resourceManagerTags: Output>? = null

    private var sandboxConfig: Output? = null

    private var secondaryBootDisks: Output>? = null

    private var serviceAccount: Output? = null

    private var shieldedInstanceConfig: Output? = null

    private var soleTenantConfig: Output? = null

    private var spot: Output? = null

    private var tags: Output>? = null

    private var taints: Output>? = null

    private var workloadMetadataConfig: Output? = null

    /**
     * @param value Specifies options for controlling advanced machine features.
     */
    @JvmName("aeudqtiscefgwcwt")
    public suspend fun advancedMachineFeatures(`value`: Output) {
        this.advancedMachineFeatures = value
    }

    /**
     * @param value The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool.
     */
    @JvmName("tcxuqfplkbweluit")
    public suspend fun bootDiskKmsKey(`value`: Output) {
        this.bootDiskKmsKey = value
    }

    /**
     * @param value Configuration for Confidential Nodes feature. Structure is documented below.
     */
    @JvmName("rwimouocpngagxdg")
    public suspend fun confidentialNodes(`value`: Output) {
        this.confidentialNodes = value
    }

    /**
     * @param value Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB.
     */
    @JvmName("lgqtrqxkdkfxdypr")
    public suspend fun diskSizeGb(`value`: Output) {
        this.diskSizeGb = value
    }

    /**
     * @param value Type of the disk attached to each node. Such as pd-standard, pd-balanced or pd-ssd
     */
    @JvmName("jcivosvcmfiaemds")
    public suspend fun diskType(`value`: Output) {
        this.diskType = value
    }

    /**
     * @param value List of kubernetes taints applied to each node.
     */
    @JvmName("wlbdtgvnbccfaqkj")
    public suspend fun effectiveTaints(`value`: Output>) {
        this.effectiveTaints = value
    }

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

    /**
     * @param values List of kubernetes taints applied to each node.
     */
    @JvmName("hoqgjafjknfwhxqp")
    public suspend fun effectiveTaints(values: List>) {
        this.effectiveTaints = Output.all(values)
    }

    /**
     * @param value If enabled boot disks are configured with confidential mode.
     */
    @JvmName("qjjfshlyhaiiynxi")
    public suspend fun enableConfidentialStorage(`value`: Output) {
        this.enableConfidentialStorage = value
    }

    /**
     * @param value Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk.
     */
    @JvmName("yfnhxaionlmkntlp")
    public suspend fun ephemeralStorageConfig(`value`: Output) {
        this.ephemeralStorageConfig = value
    }

    /**
     * @param value Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk.
     */
    @JvmName("dgolidtopsyxqfas")
    public suspend fun ephemeralStorageLocalSsdConfig(`value`: Output) {
        this.ephemeralStorageLocalSsdConfig = value
    }

    /**
     * @param value Enable or disable NCCL Fast Socket in the node pool.
     */
    @JvmName("gkpybxacanfgxljr")
    public suspend fun fastSocket(`value`: Output) {
        this.fastSocket = value
    }

    /**
     * @param value GCFS configuration for this node.
     */
    @JvmName("qimctctdhttrchqj")
    public suspend fun gcfsConfig(`value`: Output) {
        this.gcfsConfig = value
    }

    /**
     * @param value List of the type and count of accelerator cards attached to the instance.
     */
    @JvmName("udjfqodslwlmeajw")
    public suspend fun guestAccelerators(`value`: Output>) {
        this.guestAccelerators = value
    }

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

    /**
     * @param values List of the type and count of accelerator cards attached to the instance.
     */
    @JvmName("kuprycqnhghwclob")
    public suspend fun guestAccelerators(values: List>) {
        this.guestAccelerators = Output.all(values)
    }

    /**
     * @param value Enable or disable gvnic in the node pool.
     */
    @JvmName("kltgdwrgscvwspui")
    public suspend fun gvnic(`value`: Output) {
        this.gvnic = value
    }

    /**
     * @param value The maintenance policy for the hosts on which the GKE VMs run on.
     */
    @JvmName("lnfmisvfjwekqqts")
    public suspend fun hostMaintenancePolicy(`value`: Output) {
        this.hostMaintenancePolicy = value
    }

    /**
     * @param value The image type to use for this node. Note that for a given image type, the latest version of it will be used.
     */
    @JvmName("bssjbbjadhngdlig")
    public suspend fun imageType(`value`: Output) {
        this.imageType = value
    }

    /**
     * @param value Node kubelet configs.
     */
    @JvmName("bslralobuoecvopy")
    public suspend fun kubeletConfig(`value`: Output) {
        this.kubeletConfig = value
    }

    /**
     * @param value The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node.
     */
    @JvmName("ujhekwnnsrgnhppf")
    public suspend fun labels(`value`: Output>) {
        this.labels = value
    }

    /**
     * @param value Parameters that can be configured on Linux nodes.
     */
    @JvmName("lmpuynsbkmfbeqep")
    public suspend fun linuxNodeConfig(`value`: Output) {
        this.linuxNodeConfig = value
    }

    /**
     * @param value Parameters for raw-block local NVMe SSDs.
     */
    @JvmName("aynujplenshvrgti")
    public suspend fun localNvmeSsdBlockConfig(`value`: Output) {
        this.localNvmeSsdBlockConfig = value
    }

    /**
     * @param value The number of local SSD disks to be attached to the node.
     */
    @JvmName("kltxmskyybgihepc")
    public suspend fun localSsdCount(`value`: Output) {
        this.localSsdCount = value
    }

    /**
     * @param value Type of logging agent that is used as the default value for node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT.
     */
    @JvmName("ynrionqaiodpvaqo")
    public suspend fun loggingVariant(`value`: Output) {
        this.loggingVariant = value
    }

    /**
     * @param value The name of a Google Compute Engine machine type.
     */
    @JvmName("gobudfmkdexiynwv")
    public suspend fun machineType(`value`: Output) {
        this.machineType = value
    }

    /**
     * @param value The metadata key/value pairs assigned to instances in the cluster.
     */
    @JvmName("ndnlhxbdgiqbycvo")
    public suspend fun metadata(`value`: Output>) {
        this.metadata = value
    }

    /**
     * @param value Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform.
     */
    @JvmName("ivvlxaifiuinpdhu")
    public suspend fun minCpuPlatform(`value`: Output) {
        this.minCpuPlatform = value
    }

    /**
     * @param value Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on sole tenant nodes.
     */
    @JvmName("ysufgsynqegjvxac")
    public suspend fun nodeGroup(`value`: Output) {
        this.nodeGroup = value
    }

    /**
     * @param value The set of Google API scopes to be made available on all of the node VMs.
     */
    @JvmName("kwlplikanbshxdoe")
    public suspend fun oauthScopes(`value`: Output>) {
        this.oauthScopes = value
    }

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

    /**
     * @param values The set of Google API scopes to be made available on all of the node VMs.
     */
    @JvmName("ujlfqldpjiaxwcdn")
    public suspend fun oauthScopes(values: List>) {
        this.oauthScopes = Output.all(values)
    }

    /**
     * @param value Whether the nodes are created as preemptible VM instances.
     */
    @JvmName("diupknswaijgiwsx")
    public suspend fun preemptible(`value`: Output) {
        this.preemptible = value
    }

    /**
     * @param value The reservation affinity configuration for the node pool.
     */
    @JvmName("mnryrcxirrbexyoq")
    public suspend fun reservationAffinity(`value`: Output) {
        this.reservationAffinity = value
    }

    /**
     * @param value The GCE resource labels (a map of key/value pairs) to be applied to the node pool.
     */
    @JvmName("pyvxdljxvnmjiooh")
    public suspend fun resourceLabels(`value`: Output>) {
        this.resourceLabels = value
    }

    /**
     * @param value A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT & PATCH) when empty.
     */
    @JvmName("htceruuasusfljna")
    public suspend fun resourceManagerTags(`value`: Output>) {
        this.resourceManagerTags = value
    }

    /**
     * @param value Sandbox configuration for this node.
     */
    @JvmName("bidjdmxnibpqvyen")
    public suspend fun sandboxConfig(`value`: Output) {
        this.sandboxConfig = value
    }

    /**
     * @param value Secondary boot disks for preloading data or container images.
     */
    @JvmName("cgfitfrcsiqqfeub")
    public suspend fun secondaryBootDisks(`value`: Output>) {
        this.secondaryBootDisks = value
    }

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

    /**
     * @param values Secondary boot disks for preloading data or container images.
     */
    @JvmName("pnjqdcxaysbwyatd")
    public suspend fun secondaryBootDisks(values: List>) {
        this.secondaryBootDisks = Output.all(values)
    }

    /**
     * @param value The Google Cloud Platform Service Account to be used by the node VMs.
     */
    @JvmName("lppyvgbtxgabmsbe")
    public suspend fun serviceAccount(`value`: Output) {
        this.serviceAccount = value
    }

    /**
     * @param value Shielded Instance options.
     */
    @JvmName("uwysbicpaxloptny")
    public suspend fun shieldedInstanceConfig(`value`: Output) {
        this.shieldedInstanceConfig = value
    }

    /**
     * @param value Node affinity options for sole tenant node pools.
     */
    @JvmName("vvmddmxweitjkntw")
    public suspend fun soleTenantConfig(`value`: Output) {
        this.soleTenantConfig = value
    }

    /**
     * @param value Whether the nodes are created as spot VM instances.
     */
    @JvmName("oqbfmidvoouhshdi")
    public suspend fun spot(`value`: Output) {
        this.spot = value
    }

    /**
     * @param value The list of instance tags applied to all nodes.
     */
    @JvmName("whhndwauxmsyityo")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values The list of instance tags applied to all nodes.
     */
    @JvmName("umksnkigxcingchf")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value List of Kubernetes taints to be applied to each node.
     */
    @JvmName("qlnlvofxctgyaehf")
    public suspend fun taints(`value`: Output>) {
        this.taints = value
    }

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

    /**
     * @param values List of Kubernetes taints to be applied to each node.
     */
    @JvmName("qtgjeucpiapbnosp")
    public suspend fun taints(values: List>) {
        this.taints = Output.all(values)
    }

    /**
     * @param value The workload metadata configuration for this node.
     */
    @JvmName("pfqnasmeqyxwifmo")
    public suspend fun workloadMetadataConfig(`value`: Output) {
        this.workloadMetadataConfig = value
    }

    /**
     * @param value Specifies options for controlling advanced machine features.
     */
    @JvmName("pvatfgvagyeqvdgk")
    public suspend fun advancedMachineFeatures(`value`: NodePoolNodeConfigAdvancedMachineFeaturesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.advancedMachineFeatures = mapped
    }

    /**
     * @param argument Specifies options for controlling advanced machine features.
     */
    @JvmName("imqgomgqirjnypfy")
    public suspend fun advancedMachineFeatures(argument: suspend NodePoolNodeConfigAdvancedMachineFeaturesArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigAdvancedMachineFeaturesArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.advancedMachineFeatures = mapped
    }

    /**
     * @param value The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool.
     */
    @JvmName("qspvcxlqdaxsxhus")
    public suspend fun bootDiskKmsKey(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.bootDiskKmsKey = mapped
    }

    /**
     * @param value Configuration for Confidential Nodes feature. Structure is documented below.
     */
    @JvmName("eivpqggoywmscrpw")
    public suspend fun confidentialNodes(`value`: NodePoolNodeConfigConfidentialNodesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.confidentialNodes = mapped
    }

    /**
     * @param argument Configuration for Confidential Nodes feature. Structure is documented below.
     */
    @JvmName("ajpdsvsrxgukuvfb")
    public suspend fun confidentialNodes(argument: suspend NodePoolNodeConfigConfidentialNodesArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigConfidentialNodesArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.confidentialNodes = mapped
    }

    /**
     * @param value Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB.
     */
    @JvmName("vvntenhgjqbxykvm")
    public suspend fun diskSizeGb(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.diskSizeGb = mapped
    }

    /**
     * @param value Type of the disk attached to each node. Such as pd-standard, pd-balanced or pd-ssd
     */
    @JvmName("rvvevuivtelolbsv")
    public suspend fun diskType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.diskType = mapped
    }

    /**
     * @param value List of kubernetes taints applied to each node.
     */
    @JvmName("qoyaqrflabgnkybt")
    public suspend fun effectiveTaints(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.effectiveTaints = mapped
    }

    /**
     * @param argument List of kubernetes taints applied to each node.
     */
    @JvmName("jjipcbfhvkufxqqi")
    public suspend fun effectiveTaints(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            NodePoolNodeConfigEffectiveTaintArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.effectiveTaints = mapped
    }

    /**
     * @param argument List of kubernetes taints applied to each node.
     */
    @JvmName("lhofnpigmselsgmx")
    public suspend fun effectiveTaints(vararg argument: suspend NodePoolNodeConfigEffectiveTaintArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            NodePoolNodeConfigEffectiveTaintArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.effectiveTaints = mapped
    }

    /**
     * @param argument List of kubernetes taints applied to each node.
     */
    @JvmName("onvlfffvapsiawaa")
    public suspend fun effectiveTaints(argument: suspend NodePoolNodeConfigEffectiveTaintArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            NodePoolNodeConfigEffectiveTaintArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.effectiveTaints = mapped
    }

    /**
     * @param values List of kubernetes taints applied to each node.
     */
    @JvmName("esrbygasnsgkyxej")
    public suspend fun effectiveTaints(vararg values: NodePoolNodeConfigEffectiveTaintArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.effectiveTaints = mapped
    }

    /**
     * @param value If enabled boot disks are configured with confidential mode.
     */
    @JvmName("cqvmiejkkiivnohn")
    public suspend fun enableConfidentialStorage(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableConfidentialStorage = mapped
    }

    /**
     * @param value Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk.
     */
    @JvmName("mpylddbxbysrxnvr")
    public suspend fun ephemeralStorageConfig(`value`: NodePoolNodeConfigEphemeralStorageConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ephemeralStorageConfig = mapped
    }

    /**
     * @param argument Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk.
     */
    @JvmName("qdndkpeixdovigue")
    public suspend fun ephemeralStorageConfig(argument: suspend NodePoolNodeConfigEphemeralStorageConfigArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigEphemeralStorageConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.ephemeralStorageConfig = mapped
    }

    /**
     * @param value Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk.
     */
    @JvmName("gnlqfxxgoddrxjad")
    public suspend fun ephemeralStorageLocalSsdConfig(`value`: NodePoolNodeConfigEphemeralStorageLocalSsdConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ephemeralStorageLocalSsdConfig = mapped
    }

    /**
     * @param argument Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk.
     */
    @JvmName("vpxpeavrrxluldga")
    public suspend fun ephemeralStorageLocalSsdConfig(argument: suspend NodePoolNodeConfigEphemeralStorageLocalSsdConfigArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigEphemeralStorageLocalSsdConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.ephemeralStorageLocalSsdConfig = mapped
    }

    /**
     * @param value Enable or disable NCCL Fast Socket in the node pool.
     */
    @JvmName("jffvuitxunkwimkg")
    public suspend fun fastSocket(`value`: NodePoolNodeConfigFastSocketArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.fastSocket = mapped
    }

    /**
     * @param argument Enable or disable NCCL Fast Socket in the node pool.
     */
    @JvmName("ofqcvpwwopaxbjjx")
    public suspend fun fastSocket(argument: suspend NodePoolNodeConfigFastSocketArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigFastSocketArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.fastSocket = mapped
    }

    /**
     * @param value GCFS configuration for this node.
     */
    @JvmName("nkdrxgvinfplpkmu")
    public suspend fun gcfsConfig(`value`: NodePoolNodeConfigGcfsConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.gcfsConfig = mapped
    }

    /**
     * @param argument GCFS configuration for this node.
     */
    @JvmName("wgykebhpsxwerwdc")
    public suspend fun gcfsConfig(argument: suspend NodePoolNodeConfigGcfsConfigArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigGcfsConfigArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.gcfsConfig = mapped
    }

    /**
     * @param value List of the type and count of accelerator cards attached to the instance.
     */
    @JvmName("ppiwelbtmhlwowrc")
    public suspend fun guestAccelerators(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.guestAccelerators = mapped
    }

    /**
     * @param argument List of the type and count of accelerator cards attached to the instance.
     */
    @JvmName("taeqsodamvrcpakg")
    public suspend fun guestAccelerators(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            NodePoolNodeConfigGuestAcceleratorArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.guestAccelerators = mapped
    }

    /**
     * @param argument List of the type and count of accelerator cards attached to the instance.
     */
    @JvmName("mgjclrsxyvflficd")
    public suspend fun guestAccelerators(vararg argument: suspend NodePoolNodeConfigGuestAcceleratorArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            NodePoolNodeConfigGuestAcceleratorArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.guestAccelerators = mapped
    }

    /**
     * @param argument List of the type and count of accelerator cards attached to the instance.
     */
    @JvmName("hhiulumdtmjtkuxd")
    public suspend fun guestAccelerators(argument: suspend NodePoolNodeConfigGuestAcceleratorArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            NodePoolNodeConfigGuestAcceleratorArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.guestAccelerators = mapped
    }

    /**
     * @param values List of the type and count of accelerator cards attached to the instance.
     */
    @JvmName("efocyfqkasbfnsxy")
    public suspend fun guestAccelerators(vararg values: NodePoolNodeConfigGuestAcceleratorArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.guestAccelerators = mapped
    }

    /**
     * @param value Enable or disable gvnic in the node pool.
     */
    @JvmName("wbsqthwhpxofffhr")
    public suspend fun gvnic(`value`: NodePoolNodeConfigGvnicArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.gvnic = mapped
    }

    /**
     * @param argument Enable or disable gvnic in the node pool.
     */
    @JvmName("spmolxoqeavckvlo")
    public suspend fun gvnic(argument: suspend NodePoolNodeConfigGvnicArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigGvnicArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.gvnic = mapped
    }

    /**
     * @param value The maintenance policy for the hosts on which the GKE VMs run on.
     */
    @JvmName("jqjxmtytctdnodof")
    public suspend fun hostMaintenancePolicy(`value`: NodePoolNodeConfigHostMaintenancePolicyArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.hostMaintenancePolicy = mapped
    }

    /**
     * @param argument The maintenance policy for the hosts on which the GKE VMs run on.
     */
    @JvmName("wytaihmvwyerqkpg")
    public suspend fun hostMaintenancePolicy(argument: suspend NodePoolNodeConfigHostMaintenancePolicyArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigHostMaintenancePolicyArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.hostMaintenancePolicy = mapped
    }

    /**
     * @param value The image type to use for this node. Note that for a given image type, the latest version of it will be used.
     */
    @JvmName("tbrknqqgtxktcacb")
    public suspend fun imageType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.imageType = mapped
    }

    /**
     * @param value Node kubelet configs.
     */
    @JvmName("ksqylcrtbywevkoc")
    public suspend fun kubeletConfig(`value`: NodePoolNodeConfigKubeletConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.kubeletConfig = mapped
    }

    /**
     * @param argument Node kubelet configs.
     */
    @JvmName("umpaotqdoomxtguy")
    public suspend fun kubeletConfig(argument: suspend NodePoolNodeConfigKubeletConfigArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigKubeletConfigArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.kubeletConfig = mapped
    }

    /**
     * @param value The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node.
     */
    @JvmName("wsgbtxhsvdrxijes")
    public suspend fun labels(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param values The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node.
     */
    @JvmName("cwespylcchwjmjwo")
    public fun labels(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param value Parameters that can be configured on Linux nodes.
     */
    @JvmName("vbgvywubrmhgxmss")
    public suspend fun linuxNodeConfig(`value`: NodePoolNodeConfigLinuxNodeConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.linuxNodeConfig = mapped
    }

    /**
     * @param argument Parameters that can be configured on Linux nodes.
     */
    @JvmName("evesbrdvxaiuykij")
    public suspend fun linuxNodeConfig(argument: suspend NodePoolNodeConfigLinuxNodeConfigArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigLinuxNodeConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.linuxNodeConfig = mapped
    }

    /**
     * @param value Parameters for raw-block local NVMe SSDs.
     */
    @JvmName("vigbxonhaygbcyma")
    public suspend fun localNvmeSsdBlockConfig(`value`: NodePoolNodeConfigLocalNvmeSsdBlockConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.localNvmeSsdBlockConfig = mapped
    }

    /**
     * @param argument Parameters for raw-block local NVMe SSDs.
     */
    @JvmName("tkgaqqkmmpapxnlu")
    public suspend fun localNvmeSsdBlockConfig(argument: suspend NodePoolNodeConfigLocalNvmeSsdBlockConfigArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigLocalNvmeSsdBlockConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.localNvmeSsdBlockConfig = mapped
    }

    /**
     * @param value The number of local SSD disks to be attached to the node.
     */
    @JvmName("hivhjlmkdaiesffr")
    public suspend fun localSsdCount(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.localSsdCount = mapped
    }

    /**
     * @param value Type of logging agent that is used as the default value for node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT.
     */
    @JvmName("bsxhhigcmvptemfi")
    public suspend fun loggingVariant(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.loggingVariant = mapped
    }

    /**
     * @param value The name of a Google Compute Engine machine type.
     */
    @JvmName("ovsxarcsfjjefkyi")
    public suspend fun machineType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.machineType = mapped
    }

    /**
     * @param value The metadata key/value pairs assigned to instances in the cluster.
     */
    @JvmName("oypnawhivjtbdupe")
    public suspend fun metadata(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.metadata = mapped
    }

    /**
     * @param values The metadata key/value pairs assigned to instances in the cluster.
     */
    @JvmName("eirqawixxglkxexl")
    public fun metadata(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.metadata = mapped
    }

    /**
     * @param value Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform.
     */
    @JvmName("efsplxwipusdsdmq")
    public suspend fun minCpuPlatform(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.minCpuPlatform = mapped
    }

    /**
     * @param value Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on sole tenant nodes.
     */
    @JvmName("mqvceuunhaenvruh")
    public suspend fun nodeGroup(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.nodeGroup = mapped
    }

    /**
     * @param value The set of Google API scopes to be made available on all of the node VMs.
     */
    @JvmName("odlfhdejkgphntqs")
    public suspend fun oauthScopes(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.oauthScopes = mapped
    }

    /**
     * @param values The set of Google API scopes to be made available on all of the node VMs.
     */
    @JvmName("nmlxgsjgpdrvpuga")
    public suspend fun oauthScopes(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.oauthScopes = mapped
    }

    /**
     * @param value Whether the nodes are created as preemptible VM instances.
     */
    @JvmName("jguedpmcngnguhmo")
    public suspend fun preemptible(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.preemptible = mapped
    }

    /**
     * @param value The reservation affinity configuration for the node pool.
     */
    @JvmName("lvkwnyhtalsgdcyh")
    public suspend fun reservationAffinity(`value`: NodePoolNodeConfigReservationAffinityArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.reservationAffinity = mapped
    }

    /**
     * @param argument The reservation affinity configuration for the node pool.
     */
    @JvmName("gtcomssxhcvylsly")
    public suspend fun reservationAffinity(argument: suspend NodePoolNodeConfigReservationAffinityArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigReservationAffinityArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.reservationAffinity = mapped
    }

    /**
     * @param value The GCE resource labels (a map of key/value pairs) to be applied to the node pool.
     */
    @JvmName("yvwgbbdmyhwoxlln")
    public suspend fun resourceLabels(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceLabels = mapped
    }

    /**
     * @param values The GCE resource labels (a map of key/value pairs) to be applied to the node pool.
     */
    @JvmName("hpepaiauwmeinyhw")
    public fun resourceLabels(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.resourceLabels = mapped
    }

    /**
     * @param value A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT & PATCH) when empty.
     */
    @JvmName("joksirnmrpmyqloo")
    public suspend fun resourceManagerTags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceManagerTags = mapped
    }

    /**
     * @param values A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT & PATCH) when empty.
     */
    @JvmName("bvmjxolegykvwxas")
    public fun resourceManagerTags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.resourceManagerTags = mapped
    }

    /**
     * @param value Sandbox configuration for this node.
     */
    @JvmName("meyxxxhjpxemerdv")
    public suspend fun sandboxConfig(`value`: NodePoolNodeConfigSandboxConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sandboxConfig = mapped
    }

    /**
     * @param argument Sandbox configuration for this node.
     */
    @JvmName("obcmnnkhwumcbayn")
    public suspend fun sandboxConfig(argument: suspend NodePoolNodeConfigSandboxConfigArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigSandboxConfigArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.sandboxConfig = mapped
    }

    /**
     * @param value Secondary boot disks for preloading data or container images.
     */
    @JvmName("ejopmiabdlriwqbb")
    public suspend fun secondaryBootDisks(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.secondaryBootDisks = mapped
    }

    /**
     * @param argument Secondary boot disks for preloading data or container images.
     */
    @JvmName("ucapixxefjgfbhhs")
    public suspend fun secondaryBootDisks(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            NodePoolNodeConfigSecondaryBootDiskArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.secondaryBootDisks = mapped
    }

    /**
     * @param argument Secondary boot disks for preloading data or container images.
     */
    @JvmName("njlmgijfwtkqfejn")
    public suspend fun secondaryBootDisks(vararg argument: suspend NodePoolNodeConfigSecondaryBootDiskArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            NodePoolNodeConfigSecondaryBootDiskArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.secondaryBootDisks = mapped
    }

    /**
     * @param argument Secondary boot disks for preloading data or container images.
     */
    @JvmName("bpkgxngrdhmqlugq")
    public suspend fun secondaryBootDisks(argument: suspend NodePoolNodeConfigSecondaryBootDiskArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            NodePoolNodeConfigSecondaryBootDiskArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.secondaryBootDisks = mapped
    }

    /**
     * @param values Secondary boot disks for preloading data or container images.
     */
    @JvmName("olqmaoiqavbsetfh")
    public suspend fun secondaryBootDisks(vararg values: NodePoolNodeConfigSecondaryBootDiskArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.secondaryBootDisks = mapped
    }

    /**
     * @param value The Google Cloud Platform Service Account to be used by the node VMs.
     */
    @JvmName("inhyihcuwmnxkkey")
    public suspend fun serviceAccount(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceAccount = mapped
    }

    /**
     * @param value Shielded Instance options.
     */
    @JvmName("tdumwlbyavwhpeqk")
    public suspend fun shieldedInstanceConfig(`value`: NodePoolNodeConfigShieldedInstanceConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.shieldedInstanceConfig = mapped
    }

    /**
     * @param argument Shielded Instance options.
     */
    @JvmName("rhjawgbqrrspqygf")
    public suspend fun shieldedInstanceConfig(argument: suspend NodePoolNodeConfigShieldedInstanceConfigArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigShieldedInstanceConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.shieldedInstanceConfig = mapped
    }

    /**
     * @param value Node affinity options for sole tenant node pools.
     */
    @JvmName("egaririplxvaerwq")
    public suspend fun soleTenantConfig(`value`: NodePoolNodeConfigSoleTenantConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.soleTenantConfig = mapped
    }

    /**
     * @param argument Node affinity options for sole tenant node pools.
     */
    @JvmName("svqxadoeuvllfdlr")
    public suspend fun soleTenantConfig(argument: suspend NodePoolNodeConfigSoleTenantConfigArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigSoleTenantConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.soleTenantConfig = mapped
    }

    /**
     * @param value Whether the nodes are created as spot VM instances.
     */
    @JvmName("jcirlierallvepja")
    public suspend fun spot(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.spot = mapped
    }

    /**
     * @param value The list of instance tags applied to all nodes.
     */
    @JvmName("mvkurdfbbtlnkdrj")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values The list of instance tags applied to all nodes.
     */
    @JvmName("phxjgpykuscwjnca")
    public suspend fun tags(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value List of Kubernetes taints to be applied to each node.
     */
    @JvmName("eaubjectifvqwwjv")
    public suspend fun taints(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.taints = mapped
    }

    /**
     * @param argument List of Kubernetes taints to be applied to each node.
     */
    @JvmName("dtshlvvpyxnweygf")
    public suspend fun taints(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            NodePoolNodeConfigTaintArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.taints = mapped
    }

    /**
     * @param argument List of Kubernetes taints to be applied to each node.
     */
    @JvmName("telxfoxcbkyxrlwr")
    public suspend fun taints(vararg argument: suspend NodePoolNodeConfigTaintArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            NodePoolNodeConfigTaintArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.taints = mapped
    }

    /**
     * @param argument List of Kubernetes taints to be applied to each node.
     */
    @JvmName("inwmrtlohcstwgds")
    public suspend fun taints(argument: suspend NodePoolNodeConfigTaintArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            NodePoolNodeConfigTaintArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.taints = mapped
    }

    /**
     * @param values List of Kubernetes taints to be applied to each node.
     */
    @JvmName("qcnxhchjnsndhalx")
    public suspend fun taints(vararg values: NodePoolNodeConfigTaintArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.taints = mapped
    }

    /**
     * @param value The workload metadata configuration for this node.
     */
    @JvmName("rjvbyylwcguhslgr")
    public suspend fun workloadMetadataConfig(`value`: NodePoolNodeConfigWorkloadMetadataConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.workloadMetadataConfig = mapped
    }

    /**
     * @param argument The workload metadata configuration for this node.
     */
    @JvmName("aojemaeaulovpebh")
    public suspend fun workloadMetadataConfig(argument: suspend NodePoolNodeConfigWorkloadMetadataConfigArgsBuilder.() -> Unit) {
        val toBeMapped = NodePoolNodeConfigWorkloadMetadataConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.workloadMetadataConfig = mapped
    }

    internal fun build(): NodePoolNodeConfigArgs = NodePoolNodeConfigArgs(
        advancedMachineFeatures = advancedMachineFeatures,
        bootDiskKmsKey = bootDiskKmsKey,
        confidentialNodes = confidentialNodes,
        diskSizeGb = diskSizeGb,
        diskType = diskType,
        effectiveTaints = effectiveTaints,
        enableConfidentialStorage = enableConfidentialStorage,
        ephemeralStorageConfig = ephemeralStorageConfig,
        ephemeralStorageLocalSsdConfig = ephemeralStorageLocalSsdConfig,
        fastSocket = fastSocket,
        gcfsConfig = gcfsConfig,
        guestAccelerators = guestAccelerators,
        gvnic = gvnic,
        hostMaintenancePolicy = hostMaintenancePolicy,
        imageType = imageType,
        kubeletConfig = kubeletConfig,
        labels = labels,
        linuxNodeConfig = linuxNodeConfig,
        localNvmeSsdBlockConfig = localNvmeSsdBlockConfig,
        localSsdCount = localSsdCount,
        loggingVariant = loggingVariant,
        machineType = machineType,
        metadata = metadata,
        minCpuPlatform = minCpuPlatform,
        nodeGroup = nodeGroup,
        oauthScopes = oauthScopes,
        preemptible = preemptible,
        reservationAffinity = reservationAffinity,
        resourceLabels = resourceLabels,
        resourceManagerTags = resourceManagerTags,
        sandboxConfig = sandboxConfig,
        secondaryBootDisks = secondaryBootDisks,
        serviceAccount = serviceAccount,
        shieldedInstanceConfig = shieldedInstanceConfig,
        soleTenantConfig = soleTenantConfig,
        spot = spot,
        tags = tags,
        taints = taints,
        workloadMetadataConfig = workloadMetadataConfig,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy