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

com.pulumi.gcp.compute.kotlin.RegionInstanceTemplateArgs.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.13.1.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.gcp.compute.kotlin

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.compute.RegionInstanceTemplateArgs.builder
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateAdvancedMachineFeaturesArgs
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateAdvancedMachineFeaturesArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateConfidentialInstanceConfigArgs
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateConfidentialInstanceConfigArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateDiskArgs
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateDiskArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateGuestAcceleratorArgs
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateGuestAcceleratorArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateNetworkInterfaceArgs
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateNetworkInterfaceArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateNetworkPerformanceConfigArgs
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateNetworkPerformanceConfigArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateReservationAffinityArgs
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateReservationAffinityArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateSchedulingArgs
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateSchedulingArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateServiceAccountArgs
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateServiceAccountArgsBuilder
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateShieldedInstanceConfigArgs
import com.pulumi.gcp.compute.kotlin.inputs.RegionInstanceTemplateShieldedInstanceConfigArgsBuilder
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

/**
 *
 * ## Import
 * Instance templates can be imported using any of these accepted formats:
 * * `projects/{{project}}/regions/{{region}}/instanceTemplates/{{name}}`
 * * `{{project}}/{{name}}`
 * * `{{name}}`
 * When using the `pulumi import` command, instance templates can be imported using one of the formats above. For example:
 * ```sh
 * $ pulumi import gcp:compute/regionInstanceTemplate:RegionInstanceTemplate default projects/{{project}}/regions/{{region}}/instanceTemplates/{{name}}
 * ```
 * ```sh
 * $ pulumi import gcp:compute/regionInstanceTemplate:RegionInstanceTemplate default {{project}}/{{name}}
 * ```
 * ```sh
 * $ pulumi import gcp:compute/regionInstanceTemplate:RegionInstanceTemplate default {{name}}
 * ```
 * @property advancedMachineFeatures Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
 * @property canIpForward Whether to allow sending and receiving of
 * packets with non-matching source or destination IPs. This defaults to false.
 * @property confidentialInstanceConfig Enable [Confidential Mode](https://cloud.google.com/compute/confidential-vm/docs/about-cvm) on this VM. Structure is documented below
 * @property description A brief description of this resource.
 * @property disks Disks to attach to instances created from this template.
 * This can be specified multiple times for multiple disks. Structure is
 * documented below.
 * @property enableDisplay Enable [Virtual Displays](https://cloud.google.com/compute/docs/instances/enable-instance-virtual-display#verify_display_driver) on this instance.
 * **Note**: `allow_stopping_for_update` must be set to true in order to update this field.
 * @property guestAccelerators List of the type and count of accelerator cards attached to the instance. Structure documented below.
 * @property instanceDescription A brief description to use for instances
 * created from this template.
 * @property keyRevocationActionType Action to be taken when a customer's encryption key is revoked. Supports `STOP` and `NONE`, with `NONE` being the default.
 * @property labels A set of key/value label pairs to assign to instances
 * created from this template.
 * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
 * Please refer to the field 'effective_labels' for all of the labels present on the resource.
 * @property machineType The machine type to create.
 * To create a machine with a [custom type](https://cloud.google.com/dataproc/docs/concepts/compute/custom-machine-types) (such as extended memory), format the value like `custom-VCPUS-MEM_IN_MB` like `custom-6-20480` for 6 vCPU and 20GB of RAM.
 * - - -
 * @property metadata Metadata key/value pairs to make available from
 * within instances created from this template.
 * @property metadataStartupScript An alternative to using the
 * startup-script metadata key, mostly to match the compute_instance resource.
 * This replaces the startup-script metadata key on the created instance and
 * thus the two mechanisms are not allowed to be used simultaneously.
 * @property minCpuPlatform Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as
 * `Intel Haswell` or `Intel Skylake`. See the complete list [here](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform).
 * @property name
 * @property namePrefix Creates a unique name beginning with the specified
 * prefix. Conflicts with `name`. Max length is 54 characters.
 * Prefixes with lengths longer than 37 characters will use a shortened
 * UUID that will be more prone to collisions.
 * Resulting name for a `name_prefix` <= 37 characters:
 * `name_prefix` + YYYYmmddHHSSssss + 8 digit incremental counter
 * Resulting name for a `name_prefix` 38 - 54 characters:
 * `name_prefix` + YYmmdd + 3 digit incremental counter
 * @property networkInterfaces Networks to attach to instances created from
 * this template. This can be specified multiple times for multiple networks.
 * Structure is documented below.
 * @property networkPerformanceConfig Configures network performance settings for the instance created from the
 * template. Structure is documented below. **Note**: `machine_type`
 * must be a [supported type](https://cloud.google.com/compute/docs/networking/configure-vm-with-high-bandwidth-configuration),
 * the `image` used must include the [`GVNIC`](https://cloud.google.com/compute/docs/networking/using-gvnic#create-instance-gvnic-image)
 * in `guest-os-features`, and `network_interface.0.nic-type` must be `GVNIC`
 * in order for this setting to take effect.
 * @property partnerMetadata Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
 * @property project The ID of the project in which the resource belongs. If it
 * is not provided, the provider project is used.
 * @property region The Region in which the resource belongs.
 * If region is not provided, the provider region is used.
 * @property reservationAffinity Specifies the reservations that this instance can consume from.
 * Structure is documented below.
 * @property resourceManagerTags A set of key/value resource manager tag pairs to bind to the instance. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
 * @property resourcePolicies - A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
 * @property scheduling The scheduling strategy to use. More details about
 * this configuration option are detailed below.
 * @property serviceAccount Service account to attach to the instance. Structure is documented below.
 * @property shieldedInstanceConfig Enable [Shielded VM](https://cloud.google.com/security/shielded-cloud/shielded-vm) on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below.
 * **Note**: `shielded_instance_config` can only be used with boot images with shielded vm support. See the complete list [here](https://cloud.google.com/compute/docs/images#shielded-images).
 * @property tags Tags to attach to the instance.
 */
public data class RegionInstanceTemplateArgs(
    public val advancedMachineFeatures: Output? =
        null,
    public val canIpForward: Output? = null,
    public val confidentialInstanceConfig: Output? = null,
    public val description: Output? = null,
    public val disks: Output>? = null,
    public val enableDisplay: Output? = null,
    public val guestAccelerators: Output>? = null,
    public val instanceDescription: Output? = null,
    public val keyRevocationActionType: Output? = null,
    public val labels: Output>? = null,
    public val machineType: Output? = null,
    public val metadata: Output>? = null,
    public val metadataStartupScript: Output? = null,
    public val minCpuPlatform: Output? = null,
    public val name: Output? = null,
    public val namePrefix: Output? = null,
    public val networkInterfaces: Output>? = null,
    public val networkPerformanceConfig: Output? =
        null,
    public val partnerMetadata: Output>? = null,
    public val project: Output? = null,
    public val region: Output? = null,
    public val reservationAffinity: Output? = null,
    public val resourceManagerTags: Output>? = null,
    public val resourcePolicies: Output? = null,
    public val scheduling: Output? = null,
    public val serviceAccount: Output? = null,
    public val shieldedInstanceConfig: Output? =
        null,
    public val tags: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.compute.RegionInstanceTemplateArgs =
        com.pulumi.gcp.compute.RegionInstanceTemplateArgs.builder()
            .advancedMachineFeatures(
                advancedMachineFeatures?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .canIpForward(canIpForward?.applyValue({ args0 -> args0 }))
            .confidentialInstanceConfig(
                confidentialInstanceConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .description(description?.applyValue({ args0 -> args0 }))
            .disks(disks?.applyValue({ args0 -> args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) }) }))
            .enableDisplay(enableDisplay?.applyValue({ args0 -> args0 }))
            .guestAccelerators(
                guestAccelerators?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .instanceDescription(instanceDescription?.applyValue({ args0 -> args0 }))
            .keyRevocationActionType(keyRevocationActionType?.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()
                }),
            )
            .metadataStartupScript(metadataStartupScript?.applyValue({ args0 -> args0 }))
            .minCpuPlatform(minCpuPlatform?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .namePrefix(namePrefix?.applyValue({ args0 -> args0 }))
            .networkInterfaces(
                networkInterfaces?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .networkPerformanceConfig(
                networkPerformanceConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .partnerMetadata(
                partnerMetadata?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            )
            .project(project?.applyValue({ args0 -> args0 }))
            .region(region?.applyValue({ args0 -> args0 }))
            .reservationAffinity(
                reservationAffinity?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .resourceManagerTags(
                resourceManagerTags?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            )
            .resourcePolicies(resourcePolicies?.applyValue({ args0 -> args0 }))
            .scheduling(scheduling?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .serviceAccount(serviceAccount?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .shieldedInstanceConfig(
                shieldedInstanceConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0 }) })).build()
}

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

    private var canIpForward: Output? = null

    private var confidentialInstanceConfig:
        Output? = null

    private var description: Output? = null

    private var disks: Output>? = null

    private var enableDisplay: Output? = null

    private var guestAccelerators: Output>? = null

    private var instanceDescription: Output? = null

    private var keyRevocationActionType: Output? = null

    private var labels: Output>? = null

    private var machineType: Output? = null

    private var metadata: Output>? = null

    private var metadataStartupScript: Output? = null

    private var minCpuPlatform: Output? = null

    private var name: Output? = null

    private var namePrefix: Output? = null

    private var networkInterfaces: Output>? = null

    private var networkPerformanceConfig: Output? =
        null

    private var partnerMetadata: Output>? = null

    private var project: Output? = null

    private var region: Output? = null

    private var reservationAffinity: Output? = null

    private var resourceManagerTags: Output>? = null

    private var resourcePolicies: Output? = null

    private var scheduling: Output? = null

    private var serviceAccount: Output? = null

    private var shieldedInstanceConfig: Output? =
        null

    private var tags: Output>? = null

    /**
     * @param value Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
     */
    @JvmName("irsppgmpuhogqlws")
    public suspend fun advancedMachineFeatures(`value`: Output) {
        this.advancedMachineFeatures = value
    }

    /**
     * @param value Whether to allow sending and receiving of
     * packets with non-matching source or destination IPs. This defaults to false.
     */
    @JvmName("yhmatcyvtlbdroex")
    public suspend fun canIpForward(`value`: Output) {
        this.canIpForward = value
    }

    /**
     * @param value Enable [Confidential Mode](https://cloud.google.com/compute/confidential-vm/docs/about-cvm) on this VM. Structure is documented below
     */
    @JvmName("bsuyiicopeqlwmnp")
    public suspend fun confidentialInstanceConfig(`value`: Output) {
        this.confidentialInstanceConfig = value
    }

    /**
     * @param value A brief description of this resource.
     */
    @JvmName("eekfskuhmslgeawy")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value Disks to attach to instances created from this template.
     * This can be specified multiple times for multiple disks. Structure is
     * documented below.
     */
    @JvmName("nevclyisrplikgfg")
    public suspend fun disks(`value`: Output>) {
        this.disks = value
    }

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

    /**
     * @param values Disks to attach to instances created from this template.
     * This can be specified multiple times for multiple disks. Structure is
     * documented below.
     */
    @JvmName("pefcfvynxaxclqka")
    public suspend fun disks(values: List>) {
        this.disks = Output.all(values)
    }

    /**
     * @param value Enable [Virtual Displays](https://cloud.google.com/compute/docs/instances/enable-instance-virtual-display#verify_display_driver) on this instance.
     * **Note**: `allow_stopping_for_update` must be set to true in order to update this field.
     */
    @JvmName("tvpehlxnyqjgaptj")
    public suspend fun enableDisplay(`value`: Output) {
        this.enableDisplay = value
    }

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

    @JvmName("amssacnramsssugt")
    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. Structure documented below.
     */
    @JvmName("idhtgyudkvsoygmp")
    public suspend fun guestAccelerators(values: List>) {
        this.guestAccelerators = Output.all(values)
    }

    /**
     * @param value A brief description to use for instances
     * created from this template.
     */
    @JvmName("kxlgbfyvuiumucfx")
    public suspend fun instanceDescription(`value`: Output) {
        this.instanceDescription = value
    }

    /**
     * @param value Action to be taken when a customer's encryption key is revoked. Supports `STOP` and `NONE`, with `NONE` being the default.
     */
    @JvmName("kaifetfpwkwxgmet")
    public suspend fun keyRevocationActionType(`value`: Output) {
        this.keyRevocationActionType = value
    }

    /**
     * @param value A set of key/value label pairs to assign to instances
     * created from this template.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field 'effective_labels' for all of the labels present on the resource.
     */
    @JvmName("pfsdoieejdimpsab")
    public suspend fun labels(`value`: Output>) {
        this.labels = value
    }

    /**
     * @param value The machine type to create.
     * To create a machine with a [custom type](https://cloud.google.com/dataproc/docs/concepts/compute/custom-machine-types) (such as extended memory), format the value like `custom-VCPUS-MEM_IN_MB` like `custom-6-20480` for 6 vCPU and 20GB of RAM.
     * - - -
     */
    @JvmName("simgvgmnjofsdasp")
    public suspend fun machineType(`value`: Output) {
        this.machineType = value
    }

    /**
     * @param value Metadata key/value pairs to make available from
     * within instances created from this template.
     */
    @JvmName("rlsubnljqvxgbsfp")
    public suspend fun metadata(`value`: Output>) {
        this.metadata = value
    }

    /**
     * @param value An alternative to using the
     * startup-script metadata key, mostly to match the compute_instance resource.
     * This replaces the startup-script metadata key on the created instance and
     * thus the two mechanisms are not allowed to be used simultaneously.
     */
    @JvmName("hqmtxmpokxmdavkw")
    public suspend fun metadataStartupScript(`value`: Output) {
        this.metadataStartupScript = value
    }

    /**
     * @param value Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as
     * `Intel Haswell` or `Intel Skylake`. See the complete list [here](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform).
     */
    @JvmName("csqyioewkrdmahai")
    public suspend fun minCpuPlatform(`value`: Output) {
        this.minCpuPlatform = value
    }

    /**
     * @param value
     */
    @JvmName("vrmejukdidqkjjyf")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value Creates a unique name beginning with the specified
     * prefix. Conflicts with `name`. Max length is 54 characters.
     * Prefixes with lengths longer than 37 characters will use a shortened
     * UUID that will be more prone to collisions.
     * Resulting name for a `name_prefix` <= 37 characters:
     * `name_prefix` + YYYYmmddHHSSssss + 8 digit incremental counter
     * Resulting name for a `name_prefix` 38 - 54 characters:
     * `name_prefix` + YYmmdd + 3 digit incremental counter
     */
    @JvmName("jbfcqiighkrovtiq")
    public suspend fun namePrefix(`value`: Output) {
        this.namePrefix = value
    }

    /**
     * @param value Networks to attach to instances created from
     * this template. This can be specified multiple times for multiple networks.
     * Structure is documented below.
     */
    @JvmName("sumoqxrfsscnhjgf")
    public suspend fun networkInterfaces(`value`: Output>) {
        this.networkInterfaces = value
    }

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

    /**
     * @param values Networks to attach to instances created from
     * this template. This can be specified multiple times for multiple networks.
     * Structure is documented below.
     */
    @JvmName("abgxpsechgdlpkvp")
    public suspend fun networkInterfaces(values: List>) {
        this.networkInterfaces = Output.all(values)
    }

    /**
     * @param value Configures network performance settings for the instance created from the
     * template. Structure is documented below. **Note**: `machine_type`
     * must be a [supported type](https://cloud.google.com/compute/docs/networking/configure-vm-with-high-bandwidth-configuration),
     * the `image` used must include the [`GVNIC`](https://cloud.google.com/compute/docs/networking/using-gvnic#create-instance-gvnic-image)
     * in `guest-os-features`, and `network_interface.0.nic-type` must be `GVNIC`
     * in order for this setting to take effect.
     */
    @JvmName("rwgltecosccpihjm")
    public suspend fun networkPerformanceConfig(`value`: Output) {
        this.networkPerformanceConfig = value
    }

    /**
     * @param value Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
     */
    @JvmName("opypsxcdqlmbmmim")
    public suspend fun partnerMetadata(`value`: Output>) {
        this.partnerMetadata = value
    }

    /**
     * @param value The ID of the project in which the resource belongs. If it
     * is not provided, the provider project is used.
     */
    @JvmName("crmmawnvejdqvjmp")
    public suspend fun project(`value`: Output) {
        this.project = value
    }

    /**
     * @param value The Region in which the resource belongs.
     * If region is not provided, the provider region is used.
     */
    @JvmName("bnfdgkjjokreorse")
    public suspend fun region(`value`: Output) {
        this.region = value
    }

    /**
     * @param value Specifies the reservations that this instance can consume from.
     * Structure is documented below.
     */
    @JvmName("ffyuaiflwqwnhmrv")
    public suspend fun reservationAffinity(`value`: Output) {
        this.reservationAffinity = value
    }

    /**
     * @param value A set of key/value resource manager tag pairs to bind to the instance. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
     */
    @JvmName("wsvskuatfonjbsip")
    public suspend fun resourceManagerTags(`value`: Output>) {
        this.resourceManagerTags = value
    }

    /**
     * @param value - A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
     */
    @JvmName("wdxdworulodgwdee")
    public suspend fun resourcePolicies(`value`: Output) {
        this.resourcePolicies = value
    }

    /**
     * @param value The scheduling strategy to use. More details about
     * this configuration option are detailed below.
     */
    @JvmName("qoqufgjkclklgmhq")
    public suspend fun scheduling(`value`: Output) {
        this.scheduling = value
    }

    /**
     * @param value Service account to attach to the instance. Structure is documented below.
     */
    @JvmName("nbwhlndhwcbrjbuu")
    public suspend fun serviceAccount(`value`: Output) {
        this.serviceAccount = value
    }

    /**
     * @param value Enable [Shielded VM](https://cloud.google.com/security/shielded-cloud/shielded-vm) on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below.
     * **Note**: `shielded_instance_config` can only be used with boot images with shielded vm support. See the complete list [here](https://cloud.google.com/compute/docs/images#shielded-images).
     */
    @JvmName("hawfwosqdphguctu")
    public suspend fun shieldedInstanceConfig(`value`: Output) {
        this.shieldedInstanceConfig = value
    }

    /**
     * @param value Tags to attach to the instance.
     */
    @JvmName("ltktbsydninpblew")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values Tags to attach to the instance.
     */
    @JvmName("rnbbrsmqgkgpgvor")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
     */
    @JvmName("alrlkoveiusybico")
    public suspend fun advancedMachineFeatures(`value`: RegionInstanceTemplateAdvancedMachineFeaturesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.advancedMachineFeatures = mapped
    }

    /**
     * @param argument Configure Nested Virtualisation and Simultaneous Hyper Threading on this VM. Structure is documented below
     */
    @JvmName("phtpfvkuysgxhnle")
    public suspend fun advancedMachineFeatures(argument: suspend RegionInstanceTemplateAdvancedMachineFeaturesArgsBuilder.() -> Unit) {
        val toBeMapped = RegionInstanceTemplateAdvancedMachineFeaturesArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.advancedMachineFeatures = mapped
    }

    /**
     * @param value Whether to allow sending and receiving of
     * packets with non-matching source or destination IPs. This defaults to false.
     */
    @JvmName("rdlgiknqtjmqbfqv")
    public suspend fun canIpForward(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.canIpForward = mapped
    }

    /**
     * @param value Enable [Confidential Mode](https://cloud.google.com/compute/confidential-vm/docs/about-cvm) on this VM. Structure is documented below
     */
    @JvmName("lhskptmsktivqgna")
    public suspend fun confidentialInstanceConfig(`value`: RegionInstanceTemplateConfidentialInstanceConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.confidentialInstanceConfig = mapped
    }

    /**
     * @param argument Enable [Confidential Mode](https://cloud.google.com/compute/confidential-vm/docs/about-cvm) on this VM. Structure is documented below
     */
    @JvmName("iveefdoktandunof")
    public suspend fun confidentialInstanceConfig(argument: suspend RegionInstanceTemplateConfidentialInstanceConfigArgsBuilder.() -> Unit) {
        val toBeMapped = RegionInstanceTemplateConfidentialInstanceConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.confidentialInstanceConfig = mapped
    }

    /**
     * @param value A brief description of this resource.
     */
    @JvmName("ydwtjjxtrbbiaaik")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value Disks to attach to instances created from this template.
     * This can be specified multiple times for multiple disks. Structure is
     * documented below.
     */
    @JvmName("sddnlouxtskdyyps")
    public suspend fun disks(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.disks = mapped
    }

    /**
     * @param argument Disks to attach to instances created from this template.
     * This can be specified multiple times for multiple disks. Structure is
     * documented below.
     */
    @JvmName("ghpudotwuoorxekw")
    public suspend fun disks(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            RegionInstanceTemplateDiskArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.disks = mapped
    }

    /**
     * @param argument Disks to attach to instances created from this template.
     * This can be specified multiple times for multiple disks. Structure is
     * documented below.
     */
    @JvmName("pyvyphymfqmathmv")
    public suspend fun disks(vararg argument: suspend RegionInstanceTemplateDiskArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            RegionInstanceTemplateDiskArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.disks = mapped
    }

    /**
     * @param argument Disks to attach to instances created from this template.
     * This can be specified multiple times for multiple disks. Structure is
     * documented below.
     */
    @JvmName("eltgwewfutokqmfq")
    public suspend fun disks(argument: suspend RegionInstanceTemplateDiskArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            RegionInstanceTemplateDiskArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.disks = mapped
    }

    /**
     * @param values Disks to attach to instances created from this template.
     * This can be specified multiple times for multiple disks. Structure is
     * documented below.
     */
    @JvmName("xcwxrprnlrqgctdf")
    public suspend fun disks(vararg values: RegionInstanceTemplateDiskArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.disks = mapped
    }

    /**
     * @param value Enable [Virtual Displays](https://cloud.google.com/compute/docs/instances/enable-instance-virtual-display#verify_display_driver) on this instance.
     * **Note**: `allow_stopping_for_update` must be set to true in order to update this field.
     */
    @JvmName("sfauqbkplaotafnv")
    public suspend fun enableDisplay(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableDisplay = mapped
    }

    /**
     * @param value List of the type and count of accelerator cards attached to the instance. Structure documented below.
     */
    @JvmName("jrjsotmavwuyhrlh")
    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. Structure documented below.
     */
    @JvmName("bwlsytwkvaobcufu")
    public suspend fun guestAccelerators(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            RegionInstanceTemplateGuestAcceleratorArgsBuilder().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. Structure documented below.
     */
    @JvmName("uvljjbwronomycps")
    public suspend fun guestAccelerators(vararg argument: suspend RegionInstanceTemplateGuestAcceleratorArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            RegionInstanceTemplateGuestAcceleratorArgsBuilder().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. Structure documented below.
     */
    @JvmName("xupdxhleleqbkuie")
    public suspend fun guestAccelerators(argument: suspend RegionInstanceTemplateGuestAcceleratorArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            RegionInstanceTemplateGuestAcceleratorArgsBuilder().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. Structure documented below.
     */
    @JvmName("ntkeiupvxaarwdfg")
    public suspend fun guestAccelerators(vararg values: RegionInstanceTemplateGuestAcceleratorArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.guestAccelerators = mapped
    }

    /**
     * @param value A brief description to use for instances
     * created from this template.
     */
    @JvmName("iwtaaoigsdamfkax")
    public suspend fun instanceDescription(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.instanceDescription = mapped
    }

    /**
     * @param value Action to be taken when a customer's encryption key is revoked. Supports `STOP` and `NONE`, with `NONE` being the default.
     */
    @JvmName("hxtghkgjbaealvno")
    public suspend fun keyRevocationActionType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.keyRevocationActionType = mapped
    }

    /**
     * @param value A set of key/value label pairs to assign to instances
     * created from this template.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field 'effective_labels' for all of the labels present on the resource.
     */
    @JvmName("koecpqsvjamyaogm")
    public suspend fun labels(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param values A set of key/value label pairs to assign to instances
     * created from this template.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field 'effective_labels' for all of the labels present on the resource.
     */
    @JvmName("onxygodxgnvxqctc")
    public fun labels(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param value The machine type to create.
     * To create a machine with a [custom type](https://cloud.google.com/dataproc/docs/concepts/compute/custom-machine-types) (such as extended memory), format the value like `custom-VCPUS-MEM_IN_MB` like `custom-6-20480` for 6 vCPU and 20GB of RAM.
     * - - -
     */
    @JvmName("rqtmyelcklukkjmr")
    public suspend fun machineType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.machineType = mapped
    }

    /**
     * @param value Metadata key/value pairs to make available from
     * within instances created from this template.
     */
    @JvmName("kebdmjnnkdbdiexm")
    public suspend fun metadata(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.metadata = mapped
    }

    /**
     * @param values Metadata key/value pairs to make available from
     * within instances created from this template.
     */
    @JvmName("fcqyumuiwcdgfoec")
    public fun metadata(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.metadata = mapped
    }

    /**
     * @param value An alternative to using the
     * startup-script metadata key, mostly to match the compute_instance resource.
     * This replaces the startup-script metadata key on the created instance and
     * thus the two mechanisms are not allowed to be used simultaneously.
     */
    @JvmName("fwuxjwfoieegnpvb")
    public suspend fun metadataStartupScript(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.metadataStartupScript = mapped
    }

    /**
     * @param value Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as
     * `Intel Haswell` or `Intel Skylake`. See the complete list [here](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform).
     */
    @JvmName("moctbqtclckcqauo")
    public suspend fun minCpuPlatform(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.minCpuPlatform = mapped
    }

    /**
     * @param value
     */
    @JvmName("gwtjcaeswvvwmuim")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value Creates a unique name beginning with the specified
     * prefix. Conflicts with `name`. Max length is 54 characters.
     * Prefixes with lengths longer than 37 characters will use a shortened
     * UUID that will be more prone to collisions.
     * Resulting name for a `name_prefix` <= 37 characters:
     * `name_prefix` + YYYYmmddHHSSssss + 8 digit incremental counter
     * Resulting name for a `name_prefix` 38 - 54 characters:
     * `name_prefix` + YYmmdd + 3 digit incremental counter
     */
    @JvmName("hvekxvyhsqdygaos")
    public suspend fun namePrefix(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.namePrefix = mapped
    }

    /**
     * @param value Networks to attach to instances created from
     * this template. This can be specified multiple times for multiple networks.
     * Structure is documented below.
     */
    @JvmName("afwjjshkbpybgvaf")
    public suspend fun networkInterfaces(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkInterfaces = mapped
    }

    /**
     * @param argument Networks to attach to instances created from
     * this template. This can be specified multiple times for multiple networks.
     * Structure is documented below.
     */
    @JvmName("xpvsouecoyykvpcv")
    public suspend fun networkInterfaces(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            RegionInstanceTemplateNetworkInterfaceArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.networkInterfaces = mapped
    }

    /**
     * @param argument Networks to attach to instances created from
     * this template. This can be specified multiple times for multiple networks.
     * Structure is documented below.
     */
    @JvmName("khahquttmrknaqxj")
    public suspend fun networkInterfaces(vararg argument: suspend RegionInstanceTemplateNetworkInterfaceArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            RegionInstanceTemplateNetworkInterfaceArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.networkInterfaces = mapped
    }

    /**
     * @param argument Networks to attach to instances created from
     * this template. This can be specified multiple times for multiple networks.
     * Structure is documented below.
     */
    @JvmName("pfmtcjgskabfmbjs")
    public suspend fun networkInterfaces(argument: suspend RegionInstanceTemplateNetworkInterfaceArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            RegionInstanceTemplateNetworkInterfaceArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.networkInterfaces = mapped
    }

    /**
     * @param values Networks to attach to instances created from
     * this template. This can be specified multiple times for multiple networks.
     * Structure is documented below.
     */
    @JvmName("allkcnuqwvhmqapc")
    public suspend fun networkInterfaces(vararg values: RegionInstanceTemplateNetworkInterfaceArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.networkInterfaces = mapped
    }

    /**
     * @param value Configures network performance settings for the instance created from the
     * template. Structure is documented below. **Note**: `machine_type`
     * must be a [supported type](https://cloud.google.com/compute/docs/networking/configure-vm-with-high-bandwidth-configuration),
     * the `image` used must include the [`GVNIC`](https://cloud.google.com/compute/docs/networking/using-gvnic#create-instance-gvnic-image)
     * in `guest-os-features`, and `network_interface.0.nic-type` must be `GVNIC`
     * in order for this setting to take effect.
     */
    @JvmName("vlcckijjmqhtpair")
    public suspend fun networkPerformanceConfig(`value`: RegionInstanceTemplateNetworkPerformanceConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkPerformanceConfig = mapped
    }

    /**
     * @param argument Configures network performance settings for the instance created from the
     * template. Structure is documented below. **Note**: `machine_type`
     * must be a [supported type](https://cloud.google.com/compute/docs/networking/configure-vm-with-high-bandwidth-configuration),
     * the `image` used must include the [`GVNIC`](https://cloud.google.com/compute/docs/networking/using-gvnic#create-instance-gvnic-image)
     * in `guest-os-features`, and `network_interface.0.nic-type` must be `GVNIC`
     * in order for this setting to take effect.
     */
    @JvmName("qyyrnjmxttlvftdw")
    public suspend fun networkPerformanceConfig(argument: suspend RegionInstanceTemplateNetworkPerformanceConfigArgsBuilder.() -> Unit) {
        val toBeMapped = RegionInstanceTemplateNetworkPerformanceConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.networkPerformanceConfig = mapped
    }

    /**
     * @param value Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
     */
    @JvmName("bkaymnqbanthoptj")
    public suspend fun partnerMetadata(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.partnerMetadata = mapped
    }

    /**
     * @param values Beta key/value pair represents partner metadata assigned to instance template where key represent a defined namespace and value is a json string represent the entries associted with the namespace.
     */
    @JvmName("jtaugnfghoxfmcxj")
    public fun partnerMetadata(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.partnerMetadata = mapped
    }

    /**
     * @param value The ID of the project in which the resource belongs. If it
     * is not provided, the provider project is used.
     */
    @JvmName("wmeofkeyxxagmyvv")
    public suspend fun project(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.project = mapped
    }

    /**
     * @param value The Region in which the resource belongs.
     * If region is not provided, the provider region is used.
     */
    @JvmName("exujfbbseasirvev")
    public suspend fun region(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.region = mapped
    }

    /**
     * @param value Specifies the reservations that this instance can consume from.
     * Structure is documented below.
     */
    @JvmName("sqkjficmwwiocrwr")
    public suspend fun reservationAffinity(`value`: RegionInstanceTemplateReservationAffinityArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.reservationAffinity = mapped
    }

    /**
     * @param argument Specifies the reservations that this instance can consume from.
     * Structure is documented below.
     */
    @JvmName("yhhhlmvifsasmksx")
    public suspend fun reservationAffinity(argument: suspend RegionInstanceTemplateReservationAffinityArgsBuilder.() -> Unit) {
        val toBeMapped = RegionInstanceTemplateReservationAffinityArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.reservationAffinity = mapped
    }

    /**
     * @param value A set of key/value resource manager tag pairs to bind to the instance. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
     */
    @JvmName("ydodclvmhjexvdfp")
    public suspend fun resourceManagerTags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceManagerTags = mapped
    }

    /**
     * @param values A set of key/value resource manager tag pairs to bind to the instance. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.
     */
    @JvmName("twnnhjmtkxqujpmn")
    public fun resourceManagerTags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.resourceManagerTags = mapped
    }

    /**
     * @param value - A list of self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
     */
    @JvmName("tcsbfolnhsritqdm")
    public suspend fun resourcePolicies(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourcePolicies = mapped
    }

    /**
     * @param value The scheduling strategy to use. More details about
     * this configuration option are detailed below.
     */
    @JvmName("tkyeuovsxkgjddpp")
    public suspend fun scheduling(`value`: RegionInstanceTemplateSchedulingArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scheduling = mapped
    }

    /**
     * @param argument The scheduling strategy to use. More details about
     * this configuration option are detailed below.
     */
    @JvmName("cuphwgkstylmalnp")
    public suspend fun scheduling(argument: suspend RegionInstanceTemplateSchedulingArgsBuilder.() -> Unit) {
        val toBeMapped = RegionInstanceTemplateSchedulingArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.scheduling = mapped
    }

    /**
     * @param value Service account to attach to the instance. Structure is documented below.
     */
    @JvmName("emmawoyscysqxokj")
    public suspend fun serviceAccount(`value`: RegionInstanceTemplateServiceAccountArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceAccount = mapped
    }

    /**
     * @param argument Service account to attach to the instance. Structure is documented below.
     */
    @JvmName("ujvejjjbkbfdqsfa")
    public suspend fun serviceAccount(argument: suspend RegionInstanceTemplateServiceAccountArgsBuilder.() -> Unit) {
        val toBeMapped = RegionInstanceTemplateServiceAccountArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.serviceAccount = mapped
    }

    /**
     * @param value Enable [Shielded VM](https://cloud.google.com/security/shielded-cloud/shielded-vm) on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below.
     * **Note**: `shielded_instance_config` can only be used with boot images with shielded vm support. See the complete list [here](https://cloud.google.com/compute/docs/images#shielded-images).
     */
    @JvmName("troresbfrdrvsxrr")
    public suspend fun shieldedInstanceConfig(`value`: RegionInstanceTemplateShieldedInstanceConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.shieldedInstanceConfig = mapped
    }

    /**
     * @param argument Enable [Shielded VM](https://cloud.google.com/security/shielded-cloud/shielded-vm) on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Structure is documented below.
     * **Note**: `shielded_instance_config` can only be used with boot images with shielded vm support. See the complete list [here](https://cloud.google.com/compute/docs/images#shielded-images).
     */
    @JvmName("qybguyrueoinvkca")
    public suspend fun shieldedInstanceConfig(argument: suspend RegionInstanceTemplateShieldedInstanceConfigArgsBuilder.() -> Unit) {
        val toBeMapped = RegionInstanceTemplateShieldedInstanceConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.shieldedInstanceConfig = mapped
    }

    /**
     * @param value Tags to attach to the instance.
     */
    @JvmName("rvbwqnorpubnayeq")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values Tags to attach to the instance.
     */
    @JvmName("tksrnaljrtthlhnf")
    public suspend fun tags(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    internal fun build(): RegionInstanceTemplateArgs = RegionInstanceTemplateArgs(
        advancedMachineFeatures = advancedMachineFeatures,
        canIpForward = canIpForward,
        confidentialInstanceConfig = confidentialInstanceConfig,
        description = description,
        disks = disks,
        enableDisplay = enableDisplay,
        guestAccelerators = guestAccelerators,
        instanceDescription = instanceDescription,
        keyRevocationActionType = keyRevocationActionType,
        labels = labels,
        machineType = machineType,
        metadata = metadata,
        metadataStartupScript = metadataStartupScript,
        minCpuPlatform = minCpuPlatform,
        name = name,
        namePrefix = namePrefix,
        networkInterfaces = networkInterfaces,
        networkPerformanceConfig = networkPerformanceConfig,
        partnerMetadata = partnerMetadata,
        project = project,
        region = region,
        reservationAffinity = reservationAffinity,
        resourceManagerTags = resourceManagerTags,
        resourcePolicies = resourcePolicies,
        scheduling = scheduling,
        serviceAccount = serviceAccount,
        shieldedInstanceConfig = shieldedInstanceConfig,
        tags = tags,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy