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

com.pulumi.gcp.compute.kotlin.inputs.InstanceTemplateNetworkInterfaceArgs.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.inputs

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs.builder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 *
 * @property accessConfigs Access configurations, i.e. IPs via which this
 * instance can be accessed via the Internet. Omit to ensure that the instance
 * is not accessible from the Internet (this means that ssh provisioners will
 * not work unless you can send traffic to the instance's
 * network (e.g. via tunnel or because it is running on another cloud instance
 * on that network). This block can be specified once per `network_interface`. Structure documented below.
 * @property aliasIpRanges An
 * array of alias IP ranges for this network interface. Can only be specified for network
 * interfaces on subnet-mode networks. Structure documented below.
 * @property internalIpv6PrefixLength The prefix length of the primary internal IPv6 range.
 * @property ipv6AccessConfigs An array of IPv6 access configurations for this interface.
 * Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig
 * specified, then this instance will have no external IPv6 Internet access. Structure documented below.
 * @property ipv6AccessType One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.
 * @property ipv6Address An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.
 * @property name The name of the instance template. If you leave
 * this blank, the provider will auto-generate a unique name.
 * @property network The name or self_link of the network to attach this interface to.
 * Use `network` attribute for Legacy or Auto subnetted networks and
 * `subnetwork` for custom subnetted networks.
 * @property networkAttachment The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.
 * @property networkIp The private IP address to assign to the instance. If
 * empty, the address will be automatically assigned.
 * @property nicType The type of vNIC to be used on this interface. Possible values: GVNIC, VIRTIO_NET. In the beta provider the additional values of MRDMA and IRDMA are supported.
 * @property queueCount The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.
 * @property stackType The stack type for this network interface to identify whether the IPv6 feature is enabled or not. Values are IPV4_IPV6 or IPV4_ONLY. If not specified, IPV4_ONLY will be used.
 * @property subnetwork the name of the subnetwork to attach this interface
 * to. The subnetwork must exist in the same `region` this instance will be
 * created in. Either `network` or `subnetwork` must be provided.
 * @property subnetworkProject The ID of the project in which the subnetwork belongs.
 * If it is not provided, the provider project is used.
 */
public data class InstanceTemplateNetworkInterfaceArgs(
    public val accessConfigs: Output>? = null,
    public val aliasIpRanges: Output>? = null,
    public val internalIpv6PrefixLength: Output? = null,
    public val ipv6AccessConfigs: Output>? =
        null,
    public val ipv6AccessType: Output? = null,
    public val ipv6Address: Output? = null,
    public val name: Output? = null,
    public val network: Output? = null,
    public val networkAttachment: Output? = null,
    public val networkIp: Output? = null,
    public val nicType: Output? = null,
    public val queueCount: Output? = null,
    public val stackType: Output? = null,
    public val subnetwork: Output? = null,
    public val subnetworkProject: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs =
        com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs.builder()
            .accessConfigs(
                accessConfigs?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .aliasIpRanges(
                aliasIpRanges?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .internalIpv6PrefixLength(internalIpv6PrefixLength?.applyValue({ args0 -> args0 }))
            .ipv6AccessConfigs(
                ipv6AccessConfigs?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .ipv6AccessType(ipv6AccessType?.applyValue({ args0 -> args0 }))
            .ipv6Address(ipv6Address?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .network(network?.applyValue({ args0 -> args0 }))
            .networkAttachment(networkAttachment?.applyValue({ args0 -> args0 }))
            .networkIp(networkIp?.applyValue({ args0 -> args0 }))
            .nicType(nicType?.applyValue({ args0 -> args0 }))
            .queueCount(queueCount?.applyValue({ args0 -> args0 }))
            .stackType(stackType?.applyValue({ args0 -> args0 }))
            .subnetwork(subnetwork?.applyValue({ args0 -> args0 }))
            .subnetworkProject(subnetworkProject?.applyValue({ args0 -> args0 })).build()
}

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

    private var aliasIpRanges: Output>? = null

    private var internalIpv6PrefixLength: Output? = null

    private var ipv6AccessConfigs: Output>? =
        null

    private var ipv6AccessType: Output? = null

    private var ipv6Address: Output? = null

    private var name: Output? = null

    private var network: Output? = null

    private var networkAttachment: Output? = null

    private var networkIp: Output? = null

    private var nicType: Output? = null

    private var queueCount: Output? = null

    private var stackType: Output? = null

    private var subnetwork: Output? = null

    private var subnetworkProject: Output? = null

    /**
     * @param value Access configurations, i.e. IPs via which this
     * instance can be accessed via the Internet. Omit to ensure that the instance
     * is not accessible from the Internet (this means that ssh provisioners will
     * not work unless you can send traffic to the instance's
     * network (e.g. via tunnel or because it is running on another cloud instance
     * on that network). This block can be specified once per `network_interface`. Structure documented below.
     */
    @JvmName("jjicldxfcysryfbs")
    public suspend fun accessConfigs(`value`: Output>) {
        this.accessConfigs = value
    }

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

    /**
     * @param values Access configurations, i.e. IPs via which this
     * instance can be accessed via the Internet. Omit to ensure that the instance
     * is not accessible from the Internet (this means that ssh provisioners will
     * not work unless you can send traffic to the instance's
     * network (e.g. via tunnel or because it is running on another cloud instance
     * on that network). This block can be specified once per `network_interface`. Structure documented below.
     */
    @JvmName("eowpqckbrmgqjhvi")
    public suspend fun accessConfigs(values: List>) {
        this.accessConfigs = Output.all(values)
    }

    /**
     * @param value An
     * array of alias IP ranges for this network interface. Can only be specified for network
     * interfaces on subnet-mode networks. Structure documented below.
     */
    @JvmName("axeuuisfngscnhum")
    public suspend fun aliasIpRanges(`value`: Output>) {
        this.aliasIpRanges = value
    }

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

    /**
     * @param values An
     * array of alias IP ranges for this network interface. Can only be specified for network
     * interfaces on subnet-mode networks. Structure documented below.
     */
    @JvmName("khnutfdwqiiluerj")
    public suspend fun aliasIpRanges(values: List>) {
        this.aliasIpRanges = Output.all(values)
    }

    /**
     * @param value The prefix length of the primary internal IPv6 range.
     */
    @JvmName("pjcbgfwpeywncotc")
    public suspend fun internalIpv6PrefixLength(`value`: Output) {
        this.internalIpv6PrefixLength = value
    }

    /**
     * @param value An array of IPv6 access configurations for this interface.
     * Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig
     * specified, then this instance will have no external IPv6 Internet access. Structure documented below.
     */
    @JvmName("oaqkuumgosceqfaq")
    public suspend fun ipv6AccessConfigs(`value`: Output>) {
        this.ipv6AccessConfigs = value
    }

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

    /**
     * @param values An array of IPv6 access configurations for this interface.
     * Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig
     * specified, then this instance will have no external IPv6 Internet access. Structure documented below.
     */
    @JvmName("pvwpefnpcfmtdptc")
    public suspend fun ipv6AccessConfigs(values: List>) {
        this.ipv6AccessConfigs = Output.all(values)
    }

    /**
     * @param value One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.
     */
    @JvmName("ljmfptlmidytfghg")
    public suspend fun ipv6AccessType(`value`: Output) {
        this.ipv6AccessType = value
    }

    /**
     * @param value An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.
     */
    @JvmName("qjnauhhgmlcpfyny")
    public suspend fun ipv6Address(`value`: Output) {
        this.ipv6Address = value
    }

    /**
     * @param value The name of the instance template. If you leave
     * this blank, the provider will auto-generate a unique name.
     */
    @JvmName("qfpsntqneqvdmxie")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value The name or self_link of the network to attach this interface to.
     * Use `network` attribute for Legacy or Auto subnetted networks and
     * `subnetwork` for custom subnetted networks.
     */
    @JvmName("ycvimdcejrqvfsin")
    public suspend fun network(`value`: Output) {
        this.network = value
    }

    /**
     * @param value The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.
     */
    @JvmName("bhdrgbahfixrncco")
    public suspend fun networkAttachment(`value`: Output) {
        this.networkAttachment = value
    }

    /**
     * @param value The private IP address to assign to the instance. If
     * empty, the address will be automatically assigned.
     */
    @JvmName("oicejbqfopvkydfo")
    public suspend fun networkIp(`value`: Output) {
        this.networkIp = value
    }

    /**
     * @param value The type of vNIC to be used on this interface. Possible values: GVNIC, VIRTIO_NET. In the beta provider the additional values of MRDMA and IRDMA are supported.
     */
    @JvmName("hutxebxlwhyptwuy")
    public suspend fun nicType(`value`: Output) {
        this.nicType = value
    }

    /**
     * @param value The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.
     */
    @JvmName("juvlkxhjygkwjrfr")
    public suspend fun queueCount(`value`: Output) {
        this.queueCount = value
    }

    /**
     * @param value The stack type for this network interface to identify whether the IPv6 feature is enabled or not. Values are IPV4_IPV6 or IPV4_ONLY. If not specified, IPV4_ONLY will be used.
     */
    @JvmName("xherhburkiapusqg")
    public suspend fun stackType(`value`: Output) {
        this.stackType = value
    }

    /**
     * @param value the name of the subnetwork to attach this interface
     * to. The subnetwork must exist in the same `region` this instance will be
     * created in. Either `network` or `subnetwork` must be provided.
     */
    @JvmName("faqeoikiuucqtryu")
    public suspend fun subnetwork(`value`: Output) {
        this.subnetwork = value
    }

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

    /**
     * @param value Access configurations, i.e. IPs via which this
     * instance can be accessed via the Internet. Omit to ensure that the instance
     * is not accessible from the Internet (this means that ssh provisioners will
     * not work unless you can send traffic to the instance's
     * network (e.g. via tunnel or because it is running on another cloud instance
     * on that network). This block can be specified once per `network_interface`. Structure documented below.
     */
    @JvmName("cklaygmxkfbjoxbf")
    public suspend fun accessConfigs(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.accessConfigs = mapped
    }

    /**
     * @param argument Access configurations, i.e. IPs via which this
     * instance can be accessed via the Internet. Omit to ensure that the instance
     * is not accessible from the Internet (this means that ssh provisioners will
     * not work unless you can send traffic to the instance's
     * network (e.g. via tunnel or because it is running on another cloud instance
     * on that network). This block can be specified once per `network_interface`. Structure documented below.
     */
    @JvmName("iyqvmtjcywdgrmyd")
    public suspend fun accessConfigs(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            InstanceTemplateNetworkInterfaceAccessConfigArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.accessConfigs = mapped
    }

    /**
     * @param argument Access configurations, i.e. IPs via which this
     * instance can be accessed via the Internet. Omit to ensure that the instance
     * is not accessible from the Internet (this means that ssh provisioners will
     * not work unless you can send traffic to the instance's
     * network (e.g. via tunnel or because it is running on another cloud instance
     * on that network). This block can be specified once per `network_interface`. Structure documented below.
     */
    @JvmName("hapgqoqwytehfcnb")
    public suspend fun accessConfigs(vararg argument: suspend InstanceTemplateNetworkInterfaceAccessConfigArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            InstanceTemplateNetworkInterfaceAccessConfigArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.accessConfigs = mapped
    }

    /**
     * @param argument Access configurations, i.e. IPs via which this
     * instance can be accessed via the Internet. Omit to ensure that the instance
     * is not accessible from the Internet (this means that ssh provisioners will
     * not work unless you can send traffic to the instance's
     * network (e.g. via tunnel or because it is running on another cloud instance
     * on that network). This block can be specified once per `network_interface`. Structure documented below.
     */
    @JvmName("hhxqogonxhpiypqx")
    public suspend fun accessConfigs(argument: suspend InstanceTemplateNetworkInterfaceAccessConfigArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            InstanceTemplateNetworkInterfaceAccessConfigArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.accessConfigs = mapped
    }

    /**
     * @param values Access configurations, i.e. IPs via which this
     * instance can be accessed via the Internet. Omit to ensure that the instance
     * is not accessible from the Internet (this means that ssh provisioners will
     * not work unless you can send traffic to the instance's
     * network (e.g. via tunnel or because it is running on another cloud instance
     * on that network). This block can be specified once per `network_interface`. Structure documented below.
     */
    @JvmName("sipaidatuyiqhpqw")
    public suspend fun accessConfigs(vararg values: InstanceTemplateNetworkInterfaceAccessConfigArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.accessConfigs = mapped
    }

    /**
     * @param value An
     * array of alias IP ranges for this network interface. Can only be specified for network
     * interfaces on subnet-mode networks. Structure documented below.
     */
    @JvmName("ykfsgrcbmgqojswu")
    public suspend fun aliasIpRanges(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.aliasIpRanges = mapped
    }

    /**
     * @param argument An
     * array of alias IP ranges for this network interface. Can only be specified for network
     * interfaces on subnet-mode networks. Structure documented below.
     */
    @JvmName("loxqhyxpqnlfpfov")
    public suspend fun aliasIpRanges(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            InstanceTemplateNetworkInterfaceAliasIpRangeArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.aliasIpRanges = mapped
    }

    /**
     * @param argument An
     * array of alias IP ranges for this network interface. Can only be specified for network
     * interfaces on subnet-mode networks. Structure documented below.
     */
    @JvmName("ndmodmhewsnygvmr")
    public suspend fun aliasIpRanges(vararg argument: suspend InstanceTemplateNetworkInterfaceAliasIpRangeArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            InstanceTemplateNetworkInterfaceAliasIpRangeArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.aliasIpRanges = mapped
    }

    /**
     * @param argument An
     * array of alias IP ranges for this network interface. Can only be specified for network
     * interfaces on subnet-mode networks. Structure documented below.
     */
    @JvmName("vjxegtktjteqnmcy")
    public suspend fun aliasIpRanges(argument: suspend InstanceTemplateNetworkInterfaceAliasIpRangeArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            InstanceTemplateNetworkInterfaceAliasIpRangeArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.aliasIpRanges = mapped
    }

    /**
     * @param values An
     * array of alias IP ranges for this network interface. Can only be specified for network
     * interfaces on subnet-mode networks. Structure documented below.
     */
    @JvmName("arlersxwpirvdiuc")
    public suspend fun aliasIpRanges(vararg values: InstanceTemplateNetworkInterfaceAliasIpRangeArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.aliasIpRanges = mapped
    }

    /**
     * @param value The prefix length of the primary internal IPv6 range.
     */
    @JvmName("jynllqvuxhqgitrw")
    public suspend fun internalIpv6PrefixLength(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.internalIpv6PrefixLength = mapped
    }

    /**
     * @param value An array of IPv6 access configurations for this interface.
     * Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig
     * specified, then this instance will have no external IPv6 Internet access. Structure documented below.
     */
    @JvmName("dcipmadlrqxskrfw")
    public suspend fun ipv6AccessConfigs(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ipv6AccessConfigs = mapped
    }

    /**
     * @param argument An array of IPv6 access configurations for this interface.
     * Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig
     * specified, then this instance will have no external IPv6 Internet access. Structure documented below.
     */
    @JvmName("lsypbnowmxkqilsb")
    public suspend fun ipv6AccessConfigs(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            InstanceTemplateNetworkInterfaceIpv6AccessConfigArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.ipv6AccessConfigs = mapped
    }

    /**
     * @param argument An array of IPv6 access configurations for this interface.
     * Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig
     * specified, then this instance will have no external IPv6 Internet access. Structure documented below.
     */
    @JvmName("cxmreijuuiameueb")
    public suspend fun ipv6AccessConfigs(vararg argument: suspend InstanceTemplateNetworkInterfaceIpv6AccessConfigArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            InstanceTemplateNetworkInterfaceIpv6AccessConfigArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.ipv6AccessConfigs = mapped
    }

    /**
     * @param argument An array of IPv6 access configurations for this interface.
     * Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig
     * specified, then this instance will have no external IPv6 Internet access. Structure documented below.
     */
    @JvmName("ldfoqvecxgukujks")
    public suspend fun ipv6AccessConfigs(argument: suspend InstanceTemplateNetworkInterfaceIpv6AccessConfigArgsBuilder.() -> Unit) {
        val toBeMapped =
            listOf(
                InstanceTemplateNetworkInterfaceIpv6AccessConfigArgsBuilder().applySuspend {
                    argument()
                }.build(),
            )
        val mapped = of(toBeMapped)
        this.ipv6AccessConfigs = mapped
    }

    /**
     * @param values An array of IPv6 access configurations for this interface.
     * Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig
     * specified, then this instance will have no external IPv6 Internet access. Structure documented below.
     */
    @JvmName("wtfudlntyjgvjnwd")
    public suspend fun ipv6AccessConfigs(vararg values: InstanceTemplateNetworkInterfaceIpv6AccessConfigArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.ipv6AccessConfigs = mapped
    }

    /**
     * @param value One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.
     */
    @JvmName("bkxdklprvowqijjb")
    public suspend fun ipv6AccessType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ipv6AccessType = mapped
    }

    /**
     * @param value An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.
     */
    @JvmName("yqnmhlclrhlldxik")
    public suspend fun ipv6Address(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ipv6Address = mapped
    }

    /**
     * @param value The name of the instance template. If you leave
     * this blank, the provider will auto-generate a unique name.
     */
    @JvmName("ydagwknjagehnwvw")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value The name or self_link of the network to attach this interface to.
     * Use `network` attribute for Legacy or Auto subnetted networks and
     * `subnetwork` for custom subnetted networks.
     */
    @JvmName("xtllqoybubjonujq")
    public suspend fun network(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.network = mapped
    }

    /**
     * @param value The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.
     */
    @JvmName("kjcmiiogspododbh")
    public suspend fun networkAttachment(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkAttachment = mapped
    }

    /**
     * @param value The private IP address to assign to the instance. If
     * empty, the address will be automatically assigned.
     */
    @JvmName("ipftqlbfhatylcpt")
    public suspend fun networkIp(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkIp = mapped
    }

    /**
     * @param value The type of vNIC to be used on this interface. Possible values: GVNIC, VIRTIO_NET. In the beta provider the additional values of MRDMA and IRDMA are supported.
     */
    @JvmName("pqoqavjmndmhsqro")
    public suspend fun nicType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.nicType = mapped
    }

    /**
     * @param value The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.
     */
    @JvmName("vymayfxmdujdopxs")
    public suspend fun queueCount(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.queueCount = mapped
    }

    /**
     * @param value The stack type for this network interface to identify whether the IPv6 feature is enabled or not. Values are IPV4_IPV6 or IPV4_ONLY. If not specified, IPV4_ONLY will be used.
     */
    @JvmName("fkegolbdndabgxyx")
    public suspend fun stackType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.stackType = mapped
    }

    /**
     * @param value the name of the subnetwork to attach this interface
     * to. The subnetwork must exist in the same `region` this instance will be
     * created in. Either `network` or `subnetwork` must be provided.
     */
    @JvmName("uiviyegeulnybrkn")
    public suspend fun subnetwork(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subnetwork = mapped
    }

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

    internal fun build(): InstanceTemplateNetworkInterfaceArgs = InstanceTemplateNetworkInterfaceArgs(
        accessConfigs = accessConfigs,
        aliasIpRanges = aliasIpRanges,
        internalIpv6PrefixLength = internalIpv6PrefixLength,
        ipv6AccessConfigs = ipv6AccessConfigs,
        ipv6AccessType = ipv6AccessType,
        ipv6Address = ipv6Address,
        name = name,
        network = network,
        networkAttachment = networkAttachment,
        networkIp = networkIp,
        nicType = nicType,
        queueCount = queueCount,
        stackType = stackType,
        subnetwork = subnetwork,
        subnetworkProject = subnetworkProject,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy