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

com.pulumi.gcp.compute.kotlin.inputs.InstanceNetworkInterfaceArgs.kt Maven / Gradle / Ivy

@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.InstanceNetworkInterfaceArgs.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.
 * @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 A unique name for the resource, required by GCE.
 * Changing this forces a new resource to be created.
 * @property network The name or self_link of the network to attach this interface to.
 * Either `network` or `subnetwork` must be provided. If network isn't provided it will
 * be inferred from the subnetwork.
 * @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, IDPF. 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 securityPolicy A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.
 * @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 or self_link of the subnetwork to attach this
 * interface to. Either `network` or `subnetwork` must be provided. If network isn't provided
 * it will be inferred from the subnetwork. The subnetwork must exist in the same region this
 * instance will be created in. If the network resource is in
 * [legacy](https://cloud.google.com/vpc/docs/legacy) mode, do not specify this field. If the
 * network is in auto subnet mode, specifying the subnetwork is optional. If the network is
 * in custom subnet mode, specifying the subnetwork is required.
 * @property subnetworkProject The project in which the subnetwork belongs.
 * If the `subnetwork` is a self_link, this field is set to the project
 * defined in the subnetwork self_link. If the `subnetwork` is a name and this
 * field is not provided, the provider project is used.
 */
public data class InstanceNetworkInterfaceArgs(
    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 securityPolicy: 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.InstanceNetworkInterfaceArgs =
        com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs.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 }))
            .securityPolicy(securityPolicy?.applyValue({ args0 -> args0 }))
            .stackType(stackType?.applyValue({ args0 -> args0 }))
            .subnetwork(subnetwork?.applyValue({ args0 -> args0 }))
            .subnetworkProject(subnetworkProject?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [InstanceNetworkInterfaceArgs].
 */
@PulumiTagMarker
public class InstanceNetworkInterfaceArgsBuilder 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 securityPolicy: 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.
     */
    @JvmName("wqrpiqhilukrlopg")
    public suspend fun accessConfigs(`value`: Output>) {
        this.accessConfigs = value
    }

    @JvmName("cirlyvpthrkjpkrq")
    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.
     */
    @JvmName("heqnpuvgrppjmrsh")
    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("fuklsevukklcpoce")
    public suspend fun aliasIpRanges(`value`: Output>) {
        this.aliasIpRanges = value
    }

    @JvmName("mefageoslufswxls")
    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("mxbhorhscafvscau")
    public suspend fun aliasIpRanges(values: List>) {
        this.aliasIpRanges = Output.all(values)
    }

    /**
     * @param value The prefix length of the primary internal IPv6 range.
     */
    @JvmName("sqwixdxpyexduyew")
    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("dryfdgagimhnsimk")
    public suspend fun ipv6AccessConfigs(`value`: Output>) {
        this.ipv6AccessConfigs = value
    }

    @JvmName("scpbrjkwbcpisxyd")
    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("ectkglecdqfagcou")
    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("kubrmxvvraakbylr")
    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("htnruwpjdtripbtn")
    public suspend fun ipv6Address(`value`: Output) {
        this.ipv6Address = value
    }

    /**
     * @param value A unique name for the resource, required by GCE.
     * Changing this forces a new resource to be created.
     */
    @JvmName("yhwtiewookhjhbrw")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value The name or self_link of the network to attach this interface to.
     * Either `network` or `subnetwork` must be provided. If network isn't provided it will
     * be inferred from the subnetwork.
     */
    @JvmName("whgvxfbbwchftnka")
    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("uvnlyilgeclrmxap")
    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("axyeyqinohrgiyta")
    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, IDPF. In the beta provider the additional values of MRDMA and IRDMA are supported.
     */
    @JvmName("phmdydqgcikatnof")
    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("fsyrsdjfjhetyiho")
    public suspend fun queueCount(`value`: Output) {
        this.queueCount = value
    }

    /**
     * @param value A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.
     */
    @JvmName("rixmruiulutnfjex")
    public suspend fun securityPolicy(`value`: Output) {
        this.securityPolicy = 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("dldqduqgynsejskg")
    public suspend fun stackType(`value`: Output) {
        this.stackType = value
    }

    /**
     * @param value The name or self_link of the subnetwork to attach this
     * interface to. Either `network` or `subnetwork` must be provided. If network isn't provided
     * it will be inferred from the subnetwork. The subnetwork must exist in the same region this
     * instance will be created in. If the network resource is in
     * [legacy](https://cloud.google.com/vpc/docs/legacy) mode, do not specify this field. If the
     * network is in auto subnet mode, specifying the subnetwork is optional. If the network is
     * in custom subnet mode, specifying the subnetwork is required.
     */
    @JvmName("gttadcocguwaxlbs")
    public suspend fun subnetwork(`value`: Output) {
        this.subnetwork = value
    }

    /**
     * @param value The project in which the subnetwork belongs.
     * If the `subnetwork` is a self_link, this field is set to the project
     * defined in the subnetwork self_link. If the `subnetwork` is a name and this
     * field is not provided, the provider project is used.
     */
    @JvmName("fwonyoenokojvlhk")
    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.
     */
    @JvmName("waewogysrriygqmg")
    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.
     */
    @JvmName("bqgdsalqyetjtmhx")
    public suspend fun accessConfigs(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            InstanceNetworkInterfaceAccessConfigArgsBuilder().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.
     */
    @JvmName("kxcbjchaqbyvvyou")
    public suspend fun accessConfigs(vararg argument: suspend InstanceNetworkInterfaceAccessConfigArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            InstanceNetworkInterfaceAccessConfigArgsBuilder().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.
     */
    @JvmName("eagttvbdlapbegqr")
    public suspend fun accessConfigs(argument: suspend InstanceNetworkInterfaceAccessConfigArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            InstanceNetworkInterfaceAccessConfigArgsBuilder().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.
     */
    @JvmName("qjinkqxvvoplbhbh")
    public suspend fun accessConfigs(vararg values: InstanceNetworkInterfaceAccessConfigArgs) {
        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("lcmkndiljcgahekn")
    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("ddwcbahqpivmreic")
    public suspend fun aliasIpRanges(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            InstanceNetworkInterfaceAliasIpRangeArgsBuilder().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("ldqqkvxtrvpalxxh")
    public suspend fun aliasIpRanges(vararg argument: suspend InstanceNetworkInterfaceAliasIpRangeArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            InstanceNetworkInterfaceAliasIpRangeArgsBuilder().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("gaqpbfwfwlyhwffr")
    public suspend fun aliasIpRanges(argument: suspend InstanceNetworkInterfaceAliasIpRangeArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            InstanceNetworkInterfaceAliasIpRangeArgsBuilder().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("nwsnmoymksfqpipr")
    public suspend fun aliasIpRanges(vararg values: InstanceNetworkInterfaceAliasIpRangeArgs) {
        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("ikmvlpgltnwvvxms")
    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("vyfvlemnipwonoka")
    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("akjrifiuwqdwawey")
    public suspend fun ipv6AccessConfigs(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            InstanceNetworkInterfaceIpv6AccessConfigArgsBuilder().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("pmkaudvohtksivvm")
    public suspend fun ipv6AccessConfigs(vararg argument: suspend InstanceNetworkInterfaceIpv6AccessConfigArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            InstanceNetworkInterfaceIpv6AccessConfigArgsBuilder().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("swibnesthsogkfps")
    public suspend fun ipv6AccessConfigs(argument: suspend InstanceNetworkInterfaceIpv6AccessConfigArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            InstanceNetworkInterfaceIpv6AccessConfigArgsBuilder().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("sahgeianfluvpkni")
    public suspend fun ipv6AccessConfigs(vararg values: InstanceNetworkInterfaceIpv6AccessConfigArgs) {
        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("nibrmnsmmvybivov")
    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("kvfevukcjpooefem")
    public suspend fun ipv6Address(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ipv6Address = mapped
    }

    /**
     * @param value A unique name for the resource, required by GCE.
     * Changing this forces a new resource to be created.
     */
    @JvmName("ybndxcrcgojkrtgh")
    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.
     * Either `network` or `subnetwork` must be provided. If network isn't provided it will
     * be inferred from the subnetwork.
     */
    @JvmName("esuxdqiqsbxcopge")
    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("aqlrrewmajxrnmyu")
    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("xlabmntiudjarhjh")
    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, IDPF. In the beta provider the additional values of MRDMA and IRDMA are supported.
     */
    @JvmName("hiuratthjpuvhnoh")
    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("mgvaaprtsvmxdycm")
    public suspend fun queueCount(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.queueCount = mapped
    }

    /**
     * @param value A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.
     */
    @JvmName("giafegumivblwqvh")
    public suspend fun securityPolicy(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.securityPolicy = 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("crldfboactgixtev")
    public suspend fun stackType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.stackType = mapped
    }

    /**
     * @param value The name or self_link of the subnetwork to attach this
     * interface to. Either `network` or `subnetwork` must be provided. If network isn't provided
     * it will be inferred from the subnetwork. The subnetwork must exist in the same region this
     * instance will be created in. If the network resource is in
     * [legacy](https://cloud.google.com/vpc/docs/legacy) mode, do not specify this field. If the
     * network is in auto subnet mode, specifying the subnetwork is optional. If the network is
     * in custom subnet mode, specifying the subnetwork is required.
     */
    @JvmName("vwwqcnvyvigpyqkr")
    public suspend fun subnetwork(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subnetwork = mapped
    }

    /**
     * @param value The project in which the subnetwork belongs.
     * If the `subnetwork` is a self_link, this field is set to the project
     * defined in the subnetwork self_link. If the `subnetwork` is a name and this
     * field is not provided, the provider project is used.
     */
    @JvmName("reqffgorbqsfsrku")
    public suspend fun subnetworkProject(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subnetworkProject = mapped
    }

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy