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

com.pulumi.googlenative.compute.alpha.kotlin.InterconnectArgs.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.

The newest version!
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.googlenative.compute.alpha.kotlin

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.googlenative.compute.alpha.InterconnectArgs.builder
import com.pulumi.googlenative.compute.alpha.kotlin.enums.InterconnectInterconnectType
import com.pulumi.googlenative.compute.alpha.kotlin.enums.InterconnectLinkType
import com.pulumi.googlenative.compute.alpha.kotlin.enums.InterconnectRequestedFeaturesItem
import com.pulumi.googlenative.compute.alpha.kotlin.inputs.InterconnectMacsecArgs
import com.pulumi.googlenative.compute.alpha.kotlin.inputs.InterconnectMacsecArgsBuilder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Int
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Creates an Interconnect in the specified project using the data included in the request.
 * @property adminEnabled Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true.
 * @property customerName Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect.
 * @property description An optional description of this resource. Provide this property when you create the resource.
 * @property interconnectType Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED.
 * @property labels Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.
 * @property linkType Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle.
 * @property location URL of the InterconnectLocation object that represents where this connection is to be provisioned.
 * @property macsec Configuration to enable Media Access Control security (MACsec) on the Interconnect between Google and your on-premises router.
 * @property macsecEnabled Enable or disable MACsec on this Interconnect. MACsec enablement will fail if the macsec object is not specified.
 * @property name Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
 * @property nocContactEmail Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Cloud Monitoring logs alerting and Cloud Notifications. This field is required for users who sign up for Cloud Interconnect using workforce identity federation.
 * @property project
 * @property remoteLocation Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside of Google's network that the interconnect is connected to.
 * @property requestId An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000).
 * @property requestedFeatures Optional. List of features requested for this interconnect, which can take one of the following values: - MACSEC If specified then the interconnect will be created on MACsec capable hardware ports. If not specified, the default value is false, which will allocate non-MACsec capable ports first if available. This parameter can only be provided during interconnect INSERT and cannot be changed using interconnect PATCH. Please review Interconnect Pricing for implications on enabling this flag.
 * @property requestedLinkCount Target number of physical links in the link bundle, as requested by the customer.
 */
public data class InterconnectArgs(
    public val adminEnabled: Output? = null,
    public val customerName: Output? = null,
    public val description: Output? = null,
    public val interconnectType: Output? = null,
    public val labels: Output>? = null,
    public val linkType: Output? = null,
    public val location: Output? = null,
    public val macsec: Output? = null,
    public val macsecEnabled: Output? = null,
    public val name: Output? = null,
    public val nocContactEmail: Output? = null,
    public val project: Output? = null,
    public val remoteLocation: Output? = null,
    public val requestId: Output? = null,
    public val requestedFeatures: Output>? = null,
    public val requestedLinkCount: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.googlenative.compute.alpha.InterconnectArgs =
        com.pulumi.googlenative.compute.alpha.InterconnectArgs.builder()
            .adminEnabled(adminEnabled?.applyValue({ args0 -> args0 }))
            .customerName(customerName?.applyValue({ args0 -> args0 }))
            .description(description?.applyValue({ args0 -> args0 }))
            .interconnectType(interconnectType?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .labels(labels?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .linkType(linkType?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .location(location?.applyValue({ args0 -> args0 }))
            .macsec(macsec?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .macsecEnabled(macsecEnabled?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .nocContactEmail(nocContactEmail?.applyValue({ args0 -> args0 }))
            .project(project?.applyValue({ args0 -> args0 }))
            .remoteLocation(remoteLocation?.applyValue({ args0 -> args0 }))
            .requestId(requestId?.applyValue({ args0 -> args0 }))
            .requestedFeatures(
                requestedFeatures?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .requestedLinkCount(requestedLinkCount?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [InterconnectArgs].
 */
@PulumiTagMarker
public class InterconnectArgsBuilder internal constructor() {
    private var adminEnabled: Output? = null

    private var customerName: Output? = null

    private var description: Output? = null

    private var interconnectType: Output? = null

    private var labels: Output>? = null

    private var linkType: Output? = null

    private var location: Output? = null

    private var macsec: Output? = null

    private var macsecEnabled: Output? = null

    private var name: Output? = null

    private var nocContactEmail: Output? = null

    private var project: Output? = null

    private var remoteLocation: Output? = null

    private var requestId: Output? = null

    private var requestedFeatures: Output>? = null

    private var requestedLinkCount: Output? = null

    /**
     * @param value Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true.
     */
    @JvmName("waxqwhedblmogmfu")
    public suspend fun adminEnabled(`value`: Output) {
        this.adminEnabled = value
    }

    /**
     * @param value Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect.
     */
    @JvmName("fmhlprgvoqieucpo")
    public suspend fun customerName(`value`: Output) {
        this.customerName = value
    }

    /**
     * @param value An optional description of this resource. Provide this property when you create the resource.
     */
    @JvmName("ysvuttistbwxocfa")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED.
     */
    @JvmName("bjuknuqdpgoufccb")
    public suspend fun interconnectType(`value`: Output) {
        this.interconnectType = value
    }

    /**
     * @param value Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.
     */
    @JvmName("kiawfgehatpaccrt")
    public suspend fun labels(`value`: Output>) {
        this.labels = value
    }

    /**
     * @param value Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle.
     */
    @JvmName("hbkojylnfakjqkay")
    public suspend fun linkType(`value`: Output) {
        this.linkType = value
    }

    /**
     * @param value URL of the InterconnectLocation object that represents where this connection is to be provisioned.
     */
    @JvmName("alcxrpwfqhectamd")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value Configuration to enable Media Access Control security (MACsec) on the Interconnect between Google and your on-premises router.
     */
    @JvmName("mqfttqmylrkvacuv")
    public suspend fun macsec(`value`: Output) {
        this.macsec = value
    }

    /**
     * @param value Enable or disable MACsec on this Interconnect. MACsec enablement will fail if the macsec object is not specified.
     */
    @JvmName("mgqqfdqxwntdoslh")
    public suspend fun macsecEnabled(`value`: Output) {
        this.macsecEnabled = value
    }

    /**
     * @param value Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     */
    @JvmName("bydwwbidrwtqbhpi")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Cloud Monitoring logs alerting and Cloud Notifications. This field is required for users who sign up for Cloud Interconnect using workforce identity federation.
     */
    @JvmName("fsyoruuyrixbdwqn")
    public suspend fun nocContactEmail(`value`: Output) {
        this.nocContactEmail = value
    }

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

    /**
     * @param value Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside of Google's network that the interconnect is connected to.
     */
    @JvmName("gcagymvreivfrvrj")
    public suspend fun remoteLocation(`value`: Output) {
        this.remoteLocation = value
    }

    /**
     * @param value An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000).
     */
    @JvmName("apykiutxcwdebiaf")
    public suspend fun requestId(`value`: Output) {
        this.requestId = value
    }

    /**
     * @param value Optional. List of features requested for this interconnect, which can take one of the following values: - MACSEC If specified then the interconnect will be created on MACsec capable hardware ports. If not specified, the default value is false, which will allocate non-MACsec capable ports first if available. This parameter can only be provided during interconnect INSERT and cannot be changed using interconnect PATCH. Please review Interconnect Pricing for implications on enabling this flag.
     */
    @JvmName("ieccewntfkberjdw")
    public suspend fun requestedFeatures(`value`: Output>) {
        this.requestedFeatures = value
    }

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

    /**
     * @param values Optional. List of features requested for this interconnect, which can take one of the following values: - MACSEC If specified then the interconnect will be created on MACsec capable hardware ports. If not specified, the default value is false, which will allocate non-MACsec capable ports first if available. This parameter can only be provided during interconnect INSERT and cannot be changed using interconnect PATCH. Please review Interconnect Pricing for implications on enabling this flag.
     */
    @JvmName("owjinklotbstwfvt")
    public suspend fun requestedFeatures(values: List>) {
        this.requestedFeatures = Output.all(values)
    }

    /**
     * @param value Target number of physical links in the link bundle, as requested by the customer.
     */
    @JvmName("vcsssdydbtllnagc")
    public suspend fun requestedLinkCount(`value`: Output) {
        this.requestedLinkCount = value
    }

    /**
     * @param value Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true.
     */
    @JvmName("sbcqeiyxypbwqxuf")
    public suspend fun adminEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.adminEnabled = mapped
    }

    /**
     * @param value Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect.
     */
    @JvmName("xoepjomukfalonfg")
    public suspend fun customerName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customerName = mapped
    }

    /**
     * @param value An optional description of this resource. Provide this property when you create the resource.
     */
    @JvmName("ppvtvsujvkvlkegr")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED.
     */
    @JvmName("xewhsrxiigdgxnqm")
    public suspend fun interconnectType(`value`: InterconnectInterconnectType?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.interconnectType = mapped
    }

    /**
     * @param value Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.
     */
    @JvmName("qiqvyggkvierbsfo")
    public suspend fun labels(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param values Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.
     */
    @JvmName("wfuorfqswtogebpj")
    public fun labels(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param value Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle.
     */
    @JvmName("ubbchsjdjgkwaxpl")
    public suspend fun linkType(`value`: InterconnectLinkType?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.linkType = mapped
    }

    /**
     * @param value URL of the InterconnectLocation object that represents where this connection is to be provisioned.
     */
    @JvmName("iiknyantfewejtrl")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value Configuration to enable Media Access Control security (MACsec) on the Interconnect between Google and your on-premises router.
     */
    @JvmName("jionjvtloudjafbf")
    public suspend fun macsec(`value`: InterconnectMacsecArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.macsec = mapped
    }

    /**
     * @param argument Configuration to enable Media Access Control security (MACsec) on the Interconnect between Google and your on-premises router.
     */
    @JvmName("nlkvmjstvkgbvcrm")
    public suspend fun macsec(argument: suspend InterconnectMacsecArgsBuilder.() -> Unit) {
        val toBeMapped = InterconnectMacsecArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.macsec = mapped
    }

    /**
     * @param value Enable or disable MACsec on this Interconnect. MACsec enablement will fail if the macsec object is not specified.
     */
    @JvmName("celjbdsafuisyhgh")
    public suspend fun macsecEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.macsecEnabled = mapped
    }

    /**
     * @param value Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     */
    @JvmName("rwdpdbgcnmkfobda")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Cloud Monitoring logs alerting and Cloud Notifications. This field is required for users who sign up for Cloud Interconnect using workforce identity federation.
     */
    @JvmName("uggretmocttrhbta")
    public suspend fun nocContactEmail(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.nocContactEmail = mapped
    }

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

    /**
     * @param value Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside of Google's network that the interconnect is connected to.
     */
    @JvmName("nuwlbimvymrejecv")
    public suspend fun remoteLocation(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.remoteLocation = mapped
    }

    /**
     * @param value An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000).
     */
    @JvmName("qsrsdogypvqtvton")
    public suspend fun requestId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.requestId = mapped
    }

    /**
     * @param value Optional. List of features requested for this interconnect, which can take one of the following values: - MACSEC If specified then the interconnect will be created on MACsec capable hardware ports. If not specified, the default value is false, which will allocate non-MACsec capable ports first if available. This parameter can only be provided during interconnect INSERT and cannot be changed using interconnect PATCH. Please review Interconnect Pricing for implications on enabling this flag.
     */
    @JvmName("whvaowrhflltbrxv")
    public suspend fun requestedFeatures(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.requestedFeatures = mapped
    }

    /**
     * @param values Optional. List of features requested for this interconnect, which can take one of the following values: - MACSEC If specified then the interconnect will be created on MACsec capable hardware ports. If not specified, the default value is false, which will allocate non-MACsec capable ports first if available. This parameter can only be provided during interconnect INSERT and cannot be changed using interconnect PATCH. Please review Interconnect Pricing for implications on enabling this flag.
     */
    @JvmName("jkklbkswbeylwevk")
    public suspend fun requestedFeatures(vararg values: InterconnectRequestedFeaturesItem) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.requestedFeatures = mapped
    }

    /**
     * @param value Target number of physical links in the link bundle, as requested by the customer.
     */
    @JvmName("rperojtwpbintwyl")
    public suspend fun requestedLinkCount(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.requestedLinkCount = mapped
    }

    internal fun build(): InterconnectArgs = InterconnectArgs(
        adminEnabled = adminEnabled,
        customerName = customerName,
        description = description,
        interconnectType = interconnectType,
        labels = labels,
        linkType = linkType,
        location = location,
        macsec = macsec,
        macsecEnabled = macsecEnabled,
        name = name,
        nocContactEmail = nocContactEmail,
        project = project,
        remoteLocation = remoteLocation,
        requestId = requestId,
        requestedFeatures = requestedFeatures,
        requestedLinkCount = requestedLinkCount,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy