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

com.pulumi.gcp.workbench.kotlin.inputs.InstanceGceSetupArgs.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.workbench.kotlin.inputs

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs.builder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
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 acceleratorConfigs The hardware accelerators used on this instance. If you use accelerators, make sure that your configuration has
 * [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list).
 * Currently supports only one accelerator configuration.
 * Structure is documented below.
 * @property bootDisk The definition of a boot disk.
 * Structure is documented below.
 * @property containerImage Use a container image to start the workbench instance.
 * Structure is documented below.
 * @property dataDisks Data disks attached to the VM instance. Currently supports only one data disk.
 * Structure is documented below.
 * @property disablePublicIp Optional. If true, no external IP will be assigned to this VM instance.
 * @property enableIpForwarding Optional. Flag to enable ip forwarding or not, default false/off.
 * https://cloud.google.com/vpc/docs/using-routes#canipforward
 * @property machineType Optional. The machine type of the VM instance. https://cloud.google.com/compute/docs/machine-resource
 * @property metadata Optional. Custom metadata to apply to this instance.
 * @property networkInterfaces The network interfaces for the VM. Supports only one interface.
 * Structure is documented below.
 * @property serviceAccounts The service account that serves as an identity for the VM instance. Currently supports only one service account.
 * Structure is documented below.
 * @property shieldedInstanceConfig A set of Shielded Instance options. See [Images using supported Shielded
 * VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm).
 * Not all combinations are valid.
 * Structure is documented below.
 * @property tags Optional. The Compute Engine tags to add to instance (see [Tagging
 * instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
 * @property vmImage Definition of a custom Compute Engine virtual machine image for starting
 * a workbench instance with the environment installed directly on the VM.
 * Structure is documented below.
 */
public data class InstanceGceSetupArgs(
    public val acceleratorConfigs: Output>? = null,
    public val bootDisk: Output? = null,
    public val containerImage: Output? = null,
    public val dataDisks: Output? = null,
    public val disablePublicIp: Output? = null,
    public val enableIpForwarding: Output? = null,
    public val machineType: Output? = null,
    public val metadata: Output>? = null,
    public val networkInterfaces: Output>? = null,
    public val serviceAccounts: Output>? = null,
    public val shieldedInstanceConfig: Output? = null,
    public val tags: Output>? = null,
    public val vmImage: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs =
        com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs.builder()
            .acceleratorConfigs(
                acceleratorConfigs?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .bootDisk(bootDisk?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .containerImage(containerImage?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .dataDisks(dataDisks?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .disablePublicIp(disablePublicIp?.applyValue({ args0 -> args0 }))
            .enableIpForwarding(enableIpForwarding?.applyValue({ args0 -> args0 }))
            .machineType(machineType?.applyValue({ args0 -> args0 }))
            .metadata(
                metadata?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            )
            .networkInterfaces(
                networkInterfaces?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .serviceAccounts(
                serviceAccounts?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .shieldedInstanceConfig(
                shieldedInstanceConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .vmImage(vmImage?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) })).build()
}

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

    private var bootDisk: Output? = null

    private var containerImage: Output? = null

    private var dataDisks: Output? = null

    private var disablePublicIp: Output? = null

    private var enableIpForwarding: Output? = null

    private var machineType: Output? = null

    private var metadata: Output>? = null

    private var networkInterfaces: Output>? = null

    private var serviceAccounts: Output>? = null

    private var shieldedInstanceConfig: Output? = null

    private var tags: Output>? = null

    private var vmImage: Output? = null

    /**
     * @param value The hardware accelerators used on this instance. If you use accelerators, make sure that your configuration has
     * [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list).
     * Currently supports only one accelerator configuration.
     * Structure is documented below.
     */
    @JvmName("cfggabskvntwtege")
    public suspend fun acceleratorConfigs(`value`: Output>) {
        this.acceleratorConfigs = value
    }

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

    /**
     * @param values The hardware accelerators used on this instance. If you use accelerators, make sure that your configuration has
     * [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list).
     * Currently supports only one accelerator configuration.
     * Structure is documented below.
     */
    @JvmName("iuiqwxbbyavrfssg")
    public suspend fun acceleratorConfigs(values: List>) {
        this.acceleratorConfigs = Output.all(values)
    }

    /**
     * @param value The definition of a boot disk.
     * Structure is documented below.
     */
    @JvmName("gwkcunwavlikabsq")
    public suspend fun bootDisk(`value`: Output) {
        this.bootDisk = value
    }

    /**
     * @param value Use a container image to start the workbench instance.
     * Structure is documented below.
     */
    @JvmName("rsqnalqylvgkueek")
    public suspend fun containerImage(`value`: Output) {
        this.containerImage = value
    }

    /**
     * @param value Data disks attached to the VM instance. Currently supports only one data disk.
     * Structure is documented below.
     */
    @JvmName("omowlbhobpdwvswe")
    public suspend fun dataDisks(`value`: Output) {
        this.dataDisks = value
    }

    /**
     * @param value Optional. If true, no external IP will be assigned to this VM instance.
     */
    @JvmName("vlpmmcgrmedgxhpn")
    public suspend fun disablePublicIp(`value`: Output) {
        this.disablePublicIp = value
    }

    /**
     * @param value Optional. Flag to enable ip forwarding or not, default false/off.
     * https://cloud.google.com/vpc/docs/using-routes#canipforward
     */
    @JvmName("xxkqgrdwyjhtugmt")
    public suspend fun enableIpForwarding(`value`: Output) {
        this.enableIpForwarding = value
    }

    /**
     * @param value Optional. The machine type of the VM instance. https://cloud.google.com/compute/docs/machine-resource
     */
    @JvmName("anaujixmmgwxsgal")
    public suspend fun machineType(`value`: Output) {
        this.machineType = value
    }

    /**
     * @param value Optional. Custom metadata to apply to this instance.
     */
    @JvmName("quylcmcusuqlfxpt")
    public suspend fun metadata(`value`: Output>) {
        this.metadata = value
    }

    /**
     * @param value The network interfaces for the VM. Supports only one interface.
     * Structure is documented below.
     */
    @JvmName("fuyoucjvqpbyrffh")
    public suspend fun networkInterfaces(`value`: Output>) {
        this.networkInterfaces = value
    }

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

    /**
     * @param values The network interfaces for the VM. Supports only one interface.
     * Structure is documented below.
     */
    @JvmName("ruqadjakegnkluvr")
    public suspend fun networkInterfaces(values: List>) {
        this.networkInterfaces = Output.all(values)
    }

    /**
     * @param value The service account that serves as an identity for the VM instance. Currently supports only one service account.
     * Structure is documented below.
     */
    @JvmName("iqiishpohmqvnhlf")
    public suspend fun serviceAccounts(`value`: Output>) {
        this.serviceAccounts = value
    }

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

    /**
     * @param values The service account that serves as an identity for the VM instance. Currently supports only one service account.
     * Structure is documented below.
     */
    @JvmName("jrwkwduycayhpwxe")
    public suspend fun serviceAccounts(values: List>) {
        this.serviceAccounts = Output.all(values)
    }

    /**
     * @param value A set of Shielded Instance options. See [Images using supported Shielded
   * VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm).
     * Not all combinations are valid.
     * Structure is documented below.
     */
    @JvmName("ohhvifjqmkabrdjc")
    public suspend fun shieldedInstanceConfig(`value`: Output) {
        this.shieldedInstanceConfig = value
    }

    /**
     * @param value Optional. The Compute Engine tags to add to instance (see [Tagging
   * instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
     */
    @JvmName("npuccsuvjmogmyik")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values Optional. The Compute Engine tags to add to instance (see [Tagging
   * instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
     */
    @JvmName("ygbdplwprwhecuha")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value Definition of a custom Compute Engine virtual machine image for starting
     * a workbench instance with the environment installed directly on the VM.
     * Structure is documented below.
     */
    @JvmName("fxwtummpddrvoucp")
    public suspend fun vmImage(`value`: Output) {
        this.vmImage = value
    }

    /**
     * @param value The hardware accelerators used on this instance. If you use accelerators, make sure that your configuration has
     * [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list).
     * Currently supports only one accelerator configuration.
     * Structure is documented below.
     */
    @JvmName("blxmmvdalmvlcvdm")
    public suspend fun acceleratorConfigs(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.acceleratorConfigs = mapped
    }

    /**
     * @param argument The hardware accelerators used on this instance. If you use accelerators, make sure that your configuration has
     * [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list).
     * Currently supports only one accelerator configuration.
     * Structure is documented below.
     */
    @JvmName("dhmwrygmqivuiwat")
    public suspend fun acceleratorConfigs(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            InstanceGceSetupAcceleratorConfigArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.acceleratorConfigs = mapped
    }

    /**
     * @param argument The hardware accelerators used on this instance. If you use accelerators, make sure that your configuration has
     * [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list).
     * Currently supports only one accelerator configuration.
     * Structure is documented below.
     */
    @JvmName("soqnvpfyuxqvjwfo")
    public suspend fun acceleratorConfigs(vararg argument: suspend InstanceGceSetupAcceleratorConfigArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            InstanceGceSetupAcceleratorConfigArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.acceleratorConfigs = mapped
    }

    /**
     * @param argument The hardware accelerators used on this instance. If you use accelerators, make sure that your configuration has
     * [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list).
     * Currently supports only one accelerator configuration.
     * Structure is documented below.
     */
    @JvmName("vydxprfpgxkdfopu")
    public suspend fun acceleratorConfigs(argument: suspend InstanceGceSetupAcceleratorConfigArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            InstanceGceSetupAcceleratorConfigArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.acceleratorConfigs = mapped
    }

    /**
     * @param values The hardware accelerators used on this instance. If you use accelerators, make sure that your configuration has
     * [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list).
     * Currently supports only one accelerator configuration.
     * Structure is documented below.
     */
    @JvmName("uwtxfgqjriomnjca")
    public suspend fun acceleratorConfigs(vararg values: InstanceGceSetupAcceleratorConfigArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.acceleratorConfigs = mapped
    }

    /**
     * @param value The definition of a boot disk.
     * Structure is documented below.
     */
    @JvmName("nvvgcxiuyxntdiue")
    public suspend fun bootDisk(`value`: InstanceGceSetupBootDiskArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.bootDisk = mapped
    }

    /**
     * @param argument The definition of a boot disk.
     * Structure is documented below.
     */
    @JvmName("tlraagpbiwtkntgi")
    public suspend fun bootDisk(argument: suspend InstanceGceSetupBootDiskArgsBuilder.() -> Unit) {
        val toBeMapped = InstanceGceSetupBootDiskArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.bootDisk = mapped
    }

    /**
     * @param value Use a container image to start the workbench instance.
     * Structure is documented below.
     */
    @JvmName("pxymjkajeuqfuckh")
    public suspend fun containerImage(`value`: InstanceGceSetupContainerImageArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.containerImage = mapped
    }

    /**
     * @param argument Use a container image to start the workbench instance.
     * Structure is documented below.
     */
    @JvmName("mckhafqmlfkprcqh")
    public suspend fun containerImage(argument: suspend InstanceGceSetupContainerImageArgsBuilder.() -> Unit) {
        val toBeMapped = InstanceGceSetupContainerImageArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.containerImage = mapped
    }

    /**
     * @param value Data disks attached to the VM instance. Currently supports only one data disk.
     * Structure is documented below.
     */
    @JvmName("qeujpndpxnkkswpu")
    public suspend fun dataDisks(`value`: InstanceGceSetupDataDisksArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dataDisks = mapped
    }

    /**
     * @param argument Data disks attached to the VM instance. Currently supports only one data disk.
     * Structure is documented below.
     */
    @JvmName("yprafkhkflqjyeig")
    public suspend fun dataDisks(argument: suspend InstanceGceSetupDataDisksArgsBuilder.() -> Unit) {
        val toBeMapped = InstanceGceSetupDataDisksArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.dataDisks = mapped
    }

    /**
     * @param value Optional. If true, no external IP will be assigned to this VM instance.
     */
    @JvmName("qliejljjynfjlqun")
    public suspend fun disablePublicIp(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.disablePublicIp = mapped
    }

    /**
     * @param value Optional. Flag to enable ip forwarding or not, default false/off.
     * https://cloud.google.com/vpc/docs/using-routes#canipforward
     */
    @JvmName("kdwxbgwtkhlnbylp")
    public suspend fun enableIpForwarding(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableIpForwarding = mapped
    }

    /**
     * @param value Optional. The machine type of the VM instance. https://cloud.google.com/compute/docs/machine-resource
     */
    @JvmName("ijabtbuoadaihkkh")
    public suspend fun machineType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.machineType = mapped
    }

    /**
     * @param value Optional. Custom metadata to apply to this instance.
     */
    @JvmName("evkckcsdnmykvoio")
    public suspend fun metadata(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.metadata = mapped
    }

    /**
     * @param values Optional. Custom metadata to apply to this instance.
     */
    @JvmName("fwwucrlcldgatmex")
    public fun metadata(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.metadata = mapped
    }

    /**
     * @param value The network interfaces for the VM. Supports only one interface.
     * Structure is documented below.
     */
    @JvmName("kejhfspiemkbyvcf")
    public suspend fun networkInterfaces(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkInterfaces = mapped
    }

    /**
     * @param argument The network interfaces for the VM. Supports only one interface.
     * Structure is documented below.
     */
    @JvmName("rrwvecufppqmedkq")
    public suspend fun networkInterfaces(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            InstanceGceSetupNetworkInterfaceArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.networkInterfaces = mapped
    }

    /**
     * @param argument The network interfaces for the VM. Supports only one interface.
     * Structure is documented below.
     */
    @JvmName("qcrkuwlwiiwpadff")
    public suspend fun networkInterfaces(vararg argument: suspend InstanceGceSetupNetworkInterfaceArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            InstanceGceSetupNetworkInterfaceArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.networkInterfaces = mapped
    }

    /**
     * @param argument The network interfaces for the VM. Supports only one interface.
     * Structure is documented below.
     */
    @JvmName("yxaagqixgisqcqcb")
    public suspend fun networkInterfaces(argument: suspend InstanceGceSetupNetworkInterfaceArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            InstanceGceSetupNetworkInterfaceArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.networkInterfaces = mapped
    }

    /**
     * @param values The network interfaces for the VM. Supports only one interface.
     * Structure is documented below.
     */
    @JvmName("ybxjbxqjkbpgqdcs")
    public suspend fun networkInterfaces(vararg values: InstanceGceSetupNetworkInterfaceArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.networkInterfaces = mapped
    }

    /**
     * @param value The service account that serves as an identity for the VM instance. Currently supports only one service account.
     * Structure is documented below.
     */
    @JvmName("imfceacdgnnwjqvs")
    public suspend fun serviceAccounts(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceAccounts = mapped
    }

    /**
     * @param argument The service account that serves as an identity for the VM instance. Currently supports only one service account.
     * Structure is documented below.
     */
    @JvmName("mcsmetactjwhbufb")
    public suspend fun serviceAccounts(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            InstanceGceSetupServiceAccountArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.serviceAccounts = mapped
    }

    /**
     * @param argument The service account that serves as an identity for the VM instance. Currently supports only one service account.
     * Structure is documented below.
     */
    @JvmName("vuxchiwdqgaffamk")
    public suspend fun serviceAccounts(vararg argument: suspend InstanceGceSetupServiceAccountArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            InstanceGceSetupServiceAccountArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.serviceAccounts = mapped
    }

    /**
     * @param argument The service account that serves as an identity for the VM instance. Currently supports only one service account.
     * Structure is documented below.
     */
    @JvmName("mjfybvrutddsyros")
    public suspend fun serviceAccounts(argument: suspend InstanceGceSetupServiceAccountArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            InstanceGceSetupServiceAccountArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.serviceAccounts = mapped
    }

    /**
     * @param values The service account that serves as an identity for the VM instance. Currently supports only one service account.
     * Structure is documented below.
     */
    @JvmName("erltlxarupkiwcec")
    public suspend fun serviceAccounts(vararg values: InstanceGceSetupServiceAccountArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.serviceAccounts = mapped
    }

    /**
     * @param value A set of Shielded Instance options. See [Images using supported Shielded
   * VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm).
     * Not all combinations are valid.
     * Structure is documented below.
     */
    @JvmName("qnvncwctfsfrlshv")
    public suspend fun shieldedInstanceConfig(`value`: InstanceGceSetupShieldedInstanceConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.shieldedInstanceConfig = mapped
    }

    /**
     * @param argument A set of Shielded Instance options. See [Images using supported Shielded
   * VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm).
     * Not all combinations are valid.
     * Structure is documented below.
     */
    @JvmName("euxowkmealbxmxdy")
    public suspend fun shieldedInstanceConfig(argument: suspend InstanceGceSetupShieldedInstanceConfigArgsBuilder.() -> Unit) {
        val toBeMapped = InstanceGceSetupShieldedInstanceConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.shieldedInstanceConfig = mapped
    }

    /**
     * @param value Optional. The Compute Engine tags to add to instance (see [Tagging
   * instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
     */
    @JvmName("mriwrxeugpvqeswy")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values Optional. The Compute Engine tags to add to instance (see [Tagging
   * instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
     */
    @JvmName("gricoufdrbofrgtm")
    public suspend fun tags(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value Definition of a custom Compute Engine virtual machine image for starting
     * a workbench instance with the environment installed directly on the VM.
     * Structure is documented below.
     */
    @JvmName("ifqyrhmrqauxtlpw")
    public suspend fun vmImage(`value`: InstanceGceSetupVmImageArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.vmImage = mapped
    }

    /**
     * @param argument Definition of a custom Compute Engine virtual machine image for starting
     * a workbench instance with the environment installed directly on the VM.
     * Structure is documented below.
     */
    @JvmName("adxccwqdsxiighqx")
    public suspend fun vmImage(argument: suspend InstanceGceSetupVmImageArgsBuilder.() -> Unit) {
        val toBeMapped = InstanceGceSetupVmImageArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.vmImage = mapped
    }

    internal fun build(): InstanceGceSetupArgs = InstanceGceSetupArgs(
        acceleratorConfigs = acceleratorConfigs,
        bootDisk = bootDisk,
        containerImage = containerImage,
        dataDisks = dataDisks,
        disablePublicIp = disablePublicIp,
        enableIpForwarding = enableIpForwarding,
        machineType = machineType,
        metadata = metadata,
        networkInterfaces = networkInterfaces,
        serviceAccounts = serviceAccounts,
        shieldedInstanceConfig = shieldedInstanceConfig,
        tags = tags,
        vmImage = vmImage,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy