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

com.pulumi.gcp.notebooks.kotlin.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs.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.notebooks.kotlin.inputs

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs.builder
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.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 *
 * @property acceleratorConfig The Compute Engine accelerator configuration for this runtime.
 * Structure is documented below.
 * @property containerImages Use a list of container images to start the notebook instance.
 * Structure is documented below.
 * @property dataDisk Data disk option configuration settings.
 * Structure is documented below.
 * @property encryptionConfig Encryption settings for virtual machine data disk.
 * Structure is documented below.
 * @property guestAttributes (Output)
 * The Compute Engine guest attributes. (see [Project and instance
 * guest attributes](https://cloud.google.com/compute/docs/
 * storing-retrieving-metadata#guest_attributes)).
 * @property internalIpOnly If true, runtime will only have internal IP addresses. By default,
 * runtimes are not restricted to internal IP addresses, and will
 * have ephemeral external IP addresses assigned to each vm. This
 * `internal_ip_only` restriction can only be enabled for subnetwork
 * enabled networks, and all dependencies must be configured to be
 * accessible without external IP addresses.
 * @property labels The labels to associate with this runtime. Label **keys** must
 * contain 1 to 63 characters, and must conform to [RFC 1035]
 * (https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be
 * empty, but, if present, must contain 1 to 63 characters, and must
 * conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No
 * more than 32 labels can be associated with a cluster.
 * @property machineType The Compute Engine machine type used for runtimes.
 * @property metadata The Compute Engine metadata entries to add to virtual machine.
 * (see [Project and instance metadata](https://cloud.google.com
 * /compute/docs/storing-retrieving-metadata#project_and_instance
 * _metadata)).
 * @property network The Compute Engine network to be used for machine communications.
 * Cannot be specified with subnetwork. If neither `network` nor
 * `subnet` is specified, the "default" network of the project is
 * used, if it exists. A full URL or partial URI. Examples:
 * * `https://www.googleapis.com/compute/v1/projects/[project_id]/
 * regions/global/default`
 * * `projects/[project_id]/regions/global/default`
 * Runtimes are managed resources inside Google Infrastructure.
 * Runtimes support the following network configurations:
 * * Google Managed Network (Network & subnet are empty)
 * * Consumer Project VPC (network & subnet are required). Requires
 * configuring Private Service Access.
 * * Shared VPC (network & subnet are required). Requires
 * configuring Private Service Access.
 * @property nicType The type of vNIC to be used on this interface. This may be gVNIC
 * or VirtioNet.
 * Possible values are: `UNSPECIFIED_NIC_TYPE`, `VIRTIO_NET`, `GVNIC`.
 * @property reservedIpRange Reserved IP Range name is used for VPC Peering. The
 * subnetwork allocation will use the range *name* if it's assigned.
 * @property shieldedInstanceConfig Shielded VM Instance configuration settings.
 * Structure is documented below.
 * @property subnet The Compute Engine subnetwork to be used for machine
 * communications. Cannot be specified with network. A full URL or
 * partial URI are valid. Examples:
 * * `https://www.googleapis.com/compute/v1/projects/[project_id]/
 * regions/us-east1/subnetworks/sub0`
 * * `projects/[project_id]/regions/us-east1/subnetworks/sub0`
 * @property tags The Compute Engine tags to add to runtime (see [Tagging instances]
 * (https://cloud.google.com/compute/docs/
 * label-or-tag-resources#tags)).
 * @property zone (Output)
 * The zone where the virtual machine is located.
 */
public data class RuntimeVirtualMachineVirtualMachineConfigArgs(
    public val acceleratorConfig: Output? = null,
    public val containerImages: Output>? = null,
    public val dataDisk: Output,
    public val encryptionConfig: Output? = null,
    public val guestAttributes: Output>? = null,
    public val internalIpOnly: Output? = null,
    public val labels: Output>? = null,
    public val machineType: Output,
    public val metadata: Output>? = null,
    public val network: Output? = null,
    public val nicType: Output? = null,
    public val reservedIpRange: Output? = null,
    public val shieldedInstanceConfig: Output? = null,
    public val subnet: Output? = null,
    public val tags: Output>? = null,
    public val zone: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs =
        com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs.builder()
            .acceleratorConfig(acceleratorConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .containerImages(
                containerImages?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .dataDisk(dataDisk.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .encryptionConfig(encryptionConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .guestAttributes(
                guestAttributes?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            )
            .internalIpOnly(internalIpOnly?.applyValue({ args0 -> args0 }))
            .labels(labels?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .machineType(machineType.applyValue({ args0 -> args0 }))
            .metadata(
                metadata?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            )
            .network(network?.applyValue({ args0 -> args0 }))
            .nicType(nicType?.applyValue({ args0 -> args0 }))
            .reservedIpRange(reservedIpRange?.applyValue({ args0 -> args0 }))
            .shieldedInstanceConfig(
                shieldedInstanceConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .subnet(subnet?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .zone(zone?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [RuntimeVirtualMachineVirtualMachineConfigArgs].
 */
@PulumiTagMarker
public class RuntimeVirtualMachineVirtualMachineConfigArgsBuilder internal constructor() {
    private var acceleratorConfig:
        Output? = null

    private var containerImages:
        Output>? = null

    private var dataDisk: Output? = null

    private var encryptionConfig:
        Output? = null

    private var guestAttributes: Output>? = null

    private var internalIpOnly: Output? = null

    private var labels: Output>? = null

    private var machineType: Output? = null

    private var metadata: Output>? = null

    private var network: Output? = null

    private var nicType: Output? = null

    private var reservedIpRange: Output? = null

    private var shieldedInstanceConfig:
        Output? = null

    private var subnet: Output? = null

    private var tags: Output>? = null

    private var zone: Output? = null

    /**
     * @param value The Compute Engine accelerator configuration for this runtime.
     * Structure is documented below.
     */
    @JvmName("wwavwodrihrrljuv")
    public suspend fun acceleratorConfig(`value`: Output) {
        this.acceleratorConfig = value
    }

    /**
     * @param value Use a list of container images to start the notebook instance.
     * Structure is documented below.
     */
    @JvmName("viunonrenaxfovst")
    public suspend fun containerImages(`value`: Output>) {
        this.containerImages = value
    }

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

    /**
     * @param values Use a list of container images to start the notebook instance.
     * Structure is documented below.
     */
    @JvmName("cgoluvhccmyqmtbi")
    public suspend fun containerImages(values: List>) {
        this.containerImages = Output.all(values)
    }

    /**
     * @param value Data disk option configuration settings.
     * Structure is documented below.
     */
    @JvmName("fbwhowwimrcorrno")
    public suspend fun dataDisk(`value`: Output) {
        this.dataDisk = value
    }

    /**
     * @param value Encryption settings for virtual machine data disk.
     * Structure is documented below.
     */
    @JvmName("aguwrigickwsyidg")
    public suspend fun encryptionConfig(`value`: Output) {
        this.encryptionConfig = value
    }

    /**
     * @param value (Output)
     * The Compute Engine guest attributes. (see [Project and instance
   * guest attributes](https://cloud.google.com/compute/docs/
   * storing-retrieving-metadata#guest_attributes)).
     */
    @JvmName("rjjdjkqhrevyqylb")
    public suspend fun guestAttributes(`value`: Output>) {
        this.guestAttributes = value
    }

    /**
     * @param value If true, runtime will only have internal IP addresses. By default,
     * runtimes are not restricted to internal IP addresses, and will
     * have ephemeral external IP addresses assigned to each vm. This
     * `internal_ip_only` restriction can only be enabled for subnetwork
     * enabled networks, and all dependencies must be configured to be
     * accessible without external IP addresses.
     */
    @JvmName("jipxrijrdicispom")
    public suspend fun internalIpOnly(`value`: Output) {
        this.internalIpOnly = value
    }

    /**
     * @param value The labels to associate with this runtime. Label **keys** must
     * contain 1 to 63 characters, and must conform to [RFC 1035]
     * (https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be
     * empty, but, if present, must contain 1 to 63 characters, and must
     * conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No
     * more than 32 labels can be associated with a cluster.
     */
    @JvmName("kqymfwawlvddlhgs")
    public suspend fun labels(`value`: Output>) {
        this.labels = value
    }

    /**
     * @param value The Compute Engine machine type used for runtimes.
     */
    @JvmName("wpuaihyvqhjyanuo")
    public suspend fun machineType(`value`: Output) {
        this.machineType = value
    }

    /**
     * @param value The Compute Engine metadata entries to add to virtual machine.
     * (see [Project and instance metadata](https://cloud.google.com
   * /compute/docs/storing-retrieving-metadata#project_and_instance
   * _metadata)).
     */
    @JvmName("nmdkgeqsbhpvkqgm")
    public suspend fun metadata(`value`: Output>) {
        this.metadata = value
    }

    /**
     * @param value The Compute Engine network to be used for machine communications.
     * Cannot be specified with subnetwork. If neither `network` nor
     * `subnet` is specified, the "default" network of the project is
     * used, if it exists. A full URL or partial URI. Examples:
     * * `https://www.googleapis.com/compute/v1/projects/[project_id]/
     * regions/global/default`
     * * `projects/[project_id]/regions/global/default`
     * Runtimes are managed resources inside Google Infrastructure.
     * Runtimes support the following network configurations:
     * * Google Managed Network (Network & subnet are empty)
     * * Consumer Project VPC (network & subnet are required). Requires
     * configuring Private Service Access.
     * * Shared VPC (network & subnet are required). Requires
     * configuring Private Service Access.
     */
    @JvmName("qkifgxnylrahlncj")
    public suspend fun network(`value`: Output) {
        this.network = value
    }

    /**
     * @param value The type of vNIC to be used on this interface. This may be gVNIC
     * or VirtioNet.
     * Possible values are: `UNSPECIFIED_NIC_TYPE`, `VIRTIO_NET`, `GVNIC`.
     */
    @JvmName("kjniawdcarwpvqeg")
    public suspend fun nicType(`value`: Output) {
        this.nicType = value
    }

    /**
     * @param value Reserved IP Range name is used for VPC Peering. The
     * subnetwork allocation will use the range *name* if it's assigned.
     */
    @JvmName("tdfeptcfrlemeqjp")
    public suspend fun reservedIpRange(`value`: Output) {
        this.reservedIpRange = value
    }

    /**
     * @param value Shielded VM Instance configuration settings.
     * Structure is documented below.
     */
    @JvmName("idosaynveyodctne")
    public suspend fun shieldedInstanceConfig(`value`: Output) {
        this.shieldedInstanceConfig = value
    }

    /**
     * @param value The Compute Engine subnetwork to be used for machine
     * communications. Cannot be specified with network. A full URL or
     * partial URI are valid. Examples:
     * * `https://www.googleapis.com/compute/v1/projects/[project_id]/
     * regions/us-east1/subnetworks/sub0`
     * * `projects/[project_id]/regions/us-east1/subnetworks/sub0`
     */
    @JvmName("htygardhiivalhqb")
    public suspend fun subnet(`value`: Output) {
        this.subnet = value
    }

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

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

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

    /**
     * @param value (Output)
     * The zone where the virtual machine is located.
     */
    @JvmName("bdurmggwptrsprkc")
    public suspend fun zone(`value`: Output) {
        this.zone = value
    }

    /**
     * @param value The Compute Engine accelerator configuration for this runtime.
     * Structure is documented below.
     */
    @JvmName("lqqjxejyiwnpisue")
    public suspend fun acceleratorConfig(`value`: RuntimeVirtualMachineVirtualMachineConfigAcceleratorConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.acceleratorConfig = mapped
    }

    /**
     * @param argument The Compute Engine accelerator configuration for this runtime.
     * Structure is documented below.
     */
    @JvmName("vybaayyqytnxfriy")
    public suspend fun acceleratorConfig(argument: suspend RuntimeVirtualMachineVirtualMachineConfigAcceleratorConfigArgsBuilder.() -> Unit) {
        val toBeMapped =
            RuntimeVirtualMachineVirtualMachineConfigAcceleratorConfigArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.acceleratorConfig = mapped
    }

    /**
     * @param value Use a list of container images to start the notebook instance.
     * Structure is documented below.
     */
    @JvmName("lnocdagjaojmrrsm")
    public suspend fun containerImages(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.containerImages = mapped
    }

    /**
     * @param argument Use a list of container images to start the notebook instance.
     * Structure is documented below.
     */
    @JvmName("ysmcoqcxnrssajhk")
    public suspend fun containerImages(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            RuntimeVirtualMachineVirtualMachineConfigContainerImageArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.containerImages = mapped
    }

    /**
     * @param argument Use a list of container images to start the notebook instance.
     * Structure is documented below.
     */
    @JvmName("klbdsixixuwaclff")
    public suspend fun containerImages(vararg argument: suspend RuntimeVirtualMachineVirtualMachineConfigContainerImageArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            RuntimeVirtualMachineVirtualMachineConfigContainerImageArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.containerImages = mapped
    }

    /**
     * @param argument Use a list of container images to start the notebook instance.
     * Structure is documented below.
     */
    @JvmName("nqcfwysulrdrinir")
    public suspend fun containerImages(argument: suspend RuntimeVirtualMachineVirtualMachineConfigContainerImageArgsBuilder.() -> Unit) {
        val toBeMapped =
            listOf(
                RuntimeVirtualMachineVirtualMachineConfigContainerImageArgsBuilder().applySuspend {
                    argument()
                }.build(),
            )
        val mapped = of(toBeMapped)
        this.containerImages = mapped
    }

    /**
     * @param values Use a list of container images to start the notebook instance.
     * Structure is documented below.
     */
    @JvmName("gvnsxfpusyeabsbc")
    public suspend fun containerImages(vararg values: RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.containerImages = mapped
    }

    /**
     * @param value Data disk option configuration settings.
     * Structure is documented below.
     */
    @JvmName("apsqrrbcgidkrhhi")
    public suspend fun dataDisk(`value`: RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.dataDisk = mapped
    }

    /**
     * @param argument Data disk option configuration settings.
     * Structure is documented below.
     */
    @JvmName("bmyjfhnkfjwessue")
    public suspend fun dataDisk(argument: suspend RuntimeVirtualMachineVirtualMachineConfigDataDiskArgsBuilder.() -> Unit) {
        val toBeMapped = RuntimeVirtualMachineVirtualMachineConfigDataDiskArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.dataDisk = mapped
    }

    /**
     * @param value Encryption settings for virtual machine data disk.
     * Structure is documented below.
     */
    @JvmName("ipbobnvaeutkptaf")
    public suspend fun encryptionConfig(`value`: RuntimeVirtualMachineVirtualMachineConfigEncryptionConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.encryptionConfig = mapped
    }

    /**
     * @param argument Encryption settings for virtual machine data disk.
     * Structure is documented below.
     */
    @JvmName("qovibeunycdymhvp")
    public suspend fun encryptionConfig(argument: suspend RuntimeVirtualMachineVirtualMachineConfigEncryptionConfigArgsBuilder.() -> Unit) {
        val toBeMapped =
            RuntimeVirtualMachineVirtualMachineConfigEncryptionConfigArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.encryptionConfig = mapped
    }

    /**
     * @param value (Output)
     * The Compute Engine guest attributes. (see [Project and instance
   * guest attributes](https://cloud.google.com/compute/docs/
   * storing-retrieving-metadata#guest_attributes)).
     */
    @JvmName("bmyurdlknnoqdoxb")
    public suspend fun guestAttributes(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.guestAttributes = mapped
    }

    /**
     * @param values (Output)
     * The Compute Engine guest attributes. (see [Project and instance
   * guest attributes](https://cloud.google.com/compute/docs/
   * storing-retrieving-metadata#guest_attributes)).
     */
    @JvmName("eeokqycmhpyggppe")
    public fun guestAttributes(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.guestAttributes = mapped
    }

    /**
     * @param value If true, runtime will only have internal IP addresses. By default,
     * runtimes are not restricted to internal IP addresses, and will
     * have ephemeral external IP addresses assigned to each vm. This
     * `internal_ip_only` restriction can only be enabled for subnetwork
     * enabled networks, and all dependencies must be configured to be
     * accessible without external IP addresses.
     */
    @JvmName("fgnapsooxmavmpmt")
    public suspend fun internalIpOnly(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.internalIpOnly = mapped
    }

    /**
     * @param value The labels to associate with this runtime. Label **keys** must
     * contain 1 to 63 characters, and must conform to [RFC 1035]
     * (https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be
     * empty, but, if present, must contain 1 to 63 characters, and must
     * conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No
     * more than 32 labels can be associated with a cluster.
     */
    @JvmName("dagkvyjfgvmuikfg")
    public suspend fun labels(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param values The labels to associate with this runtime. Label **keys** must
     * contain 1 to 63 characters, and must conform to [RFC 1035]
     * (https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be
     * empty, but, if present, must contain 1 to 63 characters, and must
     * conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No
     * more than 32 labels can be associated with a cluster.
     */
    @JvmName("vjxpkwmxergiqxmr")
    public fun labels(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param value The Compute Engine machine type used for runtimes.
     */
    @JvmName("gvalsedfrkifjenb")
    public suspend fun machineType(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.machineType = mapped
    }

    /**
     * @param value The Compute Engine metadata entries to add to virtual machine.
     * (see [Project and instance metadata](https://cloud.google.com
   * /compute/docs/storing-retrieving-metadata#project_and_instance
   * _metadata)).
     */
    @JvmName("xiprkjmymatunfvc")
    public suspend fun metadata(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.metadata = mapped
    }

    /**
     * @param values The Compute Engine metadata entries to add to virtual machine.
     * (see [Project and instance metadata](https://cloud.google.com
   * /compute/docs/storing-retrieving-metadata#project_and_instance
   * _metadata)).
     */
    @JvmName("niirpfdbujnpucgy")
    public fun metadata(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.metadata = mapped
    }

    /**
     * @param value The Compute Engine network to be used for machine communications.
     * Cannot be specified with subnetwork. If neither `network` nor
     * `subnet` is specified, the "default" network of the project is
     * used, if it exists. A full URL or partial URI. Examples:
     * * `https://www.googleapis.com/compute/v1/projects/[project_id]/
     * regions/global/default`
     * * `projects/[project_id]/regions/global/default`
     * Runtimes are managed resources inside Google Infrastructure.
     * Runtimes support the following network configurations:
     * * Google Managed Network (Network & subnet are empty)
     * * Consumer Project VPC (network & subnet are required). Requires
     * configuring Private Service Access.
     * * Shared VPC (network & subnet are required). Requires
     * configuring Private Service Access.
     */
    @JvmName("xffgqlaqrvfneydq")
    public suspend fun network(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.network = mapped
    }

    /**
     * @param value The type of vNIC to be used on this interface. This may be gVNIC
     * or VirtioNet.
     * Possible values are: `UNSPECIFIED_NIC_TYPE`, `VIRTIO_NET`, `GVNIC`.
     */
    @JvmName("ljonwcoyyeboocds")
    public suspend fun nicType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.nicType = mapped
    }

    /**
     * @param value Reserved IP Range name is used for VPC Peering. The
     * subnetwork allocation will use the range *name* if it's assigned.
     */
    @JvmName("dgpvgvcjvkoygwyl")
    public suspend fun reservedIpRange(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.reservedIpRange = mapped
    }

    /**
     * @param value Shielded VM Instance configuration settings.
     * Structure is documented below.
     */
    @JvmName("hheykqyalxmmsndb")
    public suspend fun shieldedInstanceConfig(`value`: RuntimeVirtualMachineVirtualMachineConfigShieldedInstanceConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.shieldedInstanceConfig = mapped
    }

    /**
     * @param argument Shielded VM Instance configuration settings.
     * Structure is documented below.
     */
    @JvmName("lywrruggjwxddoln")
    public suspend fun shieldedInstanceConfig(argument: suspend RuntimeVirtualMachineVirtualMachineConfigShieldedInstanceConfigArgsBuilder.() -> Unit) {
        val toBeMapped =
            RuntimeVirtualMachineVirtualMachineConfigShieldedInstanceConfigArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.shieldedInstanceConfig = mapped
    }

    /**
     * @param value The Compute Engine subnetwork to be used for machine
     * communications. Cannot be specified with network. A full URL or
     * partial URI are valid. Examples:
     * * `https://www.googleapis.com/compute/v1/projects/[project_id]/
     * regions/us-east1/subnetworks/sub0`
     * * `projects/[project_id]/regions/us-east1/subnetworks/sub0`
     */
    @JvmName("bmeleyvsfryrxibs")
    public suspend fun subnet(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subnet = mapped
    }

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

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

    /**
     * @param value (Output)
     * The zone where the virtual machine is located.
     */
    @JvmName("bphfyijuxcbmqxtb")
    public suspend fun zone(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.zone = mapped
    }

    internal fun build(): RuntimeVirtualMachineVirtualMachineConfigArgs =
        RuntimeVirtualMachineVirtualMachineConfigArgs(
            acceleratorConfig = acceleratorConfig,
            containerImages = containerImages,
            dataDisk = dataDisk ?: throw PulumiNullFieldException("dataDisk"),
            encryptionConfig = encryptionConfig,
            guestAttributes = guestAttributes,
            internalIpOnly = internalIpOnly,
            labels = labels,
            machineType = machineType ?: throw PulumiNullFieldException("machineType"),
            metadata = metadata,
            network = network,
            nicType = nicType,
            reservedIpRange = reservedIpRange,
            shieldedInstanceConfig = shieldedInstanceConfig,
            subnet = subnet,
            tags = tags,
            zone = zone,
        )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy