import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Represents an InterconnectAttachment (VLAN attachment) resource. For more * information, see Creating VLAN Attachments. * * To get more information about InterconnectAttachment, see: * * * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/interconnectAttachments) * * How-to Guides * * [Create a Interconnect attachment](https://cloud.google.com/network-connectivity/docs/interconnect/how-to/dedicated/creating-vlan-attachments) * * ## Example Usage * * ### Interconnect Attachment Basic * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const foobarNetwork = new gcp.compute.Network("foobar", { * name: "network-1", * autoCreateSubnetworks: false, * }); * const foobar = new gcp.compute.Router("foobar", { * name: "router-1", * network: foobarNetwork.name, * bgp: { * asn: 16550, * }, * }); * const onPrem = new gcp.compute.InterconnectAttachment("on_prem", { * name: "on-prem-attachment", * edgeAvailabilityDomain: "AVAILABILITY_DOMAIN_1", * type: "PARTNER", * router: foobar.id, * mtu: "1500", * labels: { * mykey: "myvalue", * }, * }); * ``` * ### Compute Interconnect Attachment Ipsec Encryption * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const network = new gcp.compute.Network("network", { * name: "test-network", * autoCreateSubnetworks: false, * }); * const address = new gcp.compute.Address("address", { * name: "test-address", * addressType: "INTERNAL", * purpose: "IPSEC_INTERCONNECT", * address: "192.168.1.0", * prefixLength: 29, * network: network.selfLink, * }); * const router = new gcp.compute.Router("router", { * name: "test-router", * network: network.name, * encryptedInterconnectRouter: true, * bgp: { * asn: 16550, * }, * }); * const ipsec_encrypted_interconnect_attachment = new gcp.compute.InterconnectAttachment("ipsec-encrypted-interconnect-attachment", { * name: "test-interconnect-attachment", * edgeAvailabilityDomain: "AVAILABILITY_DOMAIN_1", * type: "PARTNER", * router: router.id, * encryption: "IPSEC", * ipsecInternalAddresses: [address.selfLink], * }); * ``` * ### Compute Interconnect Attachment Custom Ranges * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const foobarNetwork = new gcp.compute.Network("foobar", { * name: "test-network", * autoCreateSubnetworks: false, * }); * const foobar = new gcp.compute.Router("foobar", { * name: "test-router", * network: foobarNetwork.name, * bgp: { * asn: 16550, * }, * }); * const custom_ranges_interconnect_attachment = new gcp.compute.InterconnectAttachment("custom-ranges-interconnect-attachment", { * name: "test-custom-ranges-interconnect-attachment", * edgeAvailabilityDomain: "AVAILABILITY_DOMAIN_1", * type: "PARTNER", * router: foobar.id, * mtu: "1500", * stackType: "IPV4_IPV6", * labels: { * mykey: "myvalue", * }, * candidateCloudRouterIpAddress: "192.169.0.1/29", * candidateCustomerRouterIpAddress: "192.169.0.2/29", * candidateCloudRouterIpv6Address: "748d:2f23:6651:9455:828b:ca81:6fe0:fed1/125", * candidateCustomerRouterIpv6Address: "748d:2f23:6651:9455:828b:ca81:6fe0:fed2/125", * }); * ``` * * ## Import * * InterconnectAttachment can be imported using any of these accepted formats: * * * `projects/{{project}}/regions/{{region}}/interconnectAttachments/{{name}}` * * * `{{project}}/{{region}}/{{name}}` * * * `{{region}}/{{name}}` * * * `{{name}}` * * When using the `pulumi import` command, InterconnectAttachment can be imported using one of the formats above. For example: * * ```sh * $ pulumi import gcp:compute/interconnectAttachment:InterconnectAttachment default projects/{{project}}/regions/{{region}}/interconnectAttachments/{{name}} * ``` * * ```sh * $ pulumi import gcp:compute/interconnectAttachment:InterconnectAttachment default {{project}}/{{region}}/{{name}} * ``` * * ```sh * $ pulumi import gcp:compute/interconnectAttachment:InterconnectAttachment default {{region}}/{{name}} * ``` * * ```sh * $ pulumi import gcp:compute/interconnectAttachment:InterconnectAttachment default {{name}} * ``` */ export declare class InterconnectAttachment extends pulumi.CustomResource { /** * Get an existing InterconnectAttachment resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input, state?: InterconnectAttachmentState, opts?: pulumi.CustomResourceOptions): InterconnectAttachment; /** * Returns true if the given object is an instance of InterconnectAttachment. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is InterconnectAttachment; /** * Whether the VLAN attachment is enabled or disabled. When using * PARTNER type this will Pre-Activate the interconnect attachment */ readonly adminEnabled: pulumi.Output; /** * URL of the AttachmentGroup that includes this Attachment. */ readonly attachmentGroup: pulumi.Output; /** * Provisioned bandwidth capacity for the interconnect attachment. * For attachments of type DEDICATED, the user can set the bandwidth. * For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. * Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, * Defaults to BPS_10G * Possible values are: `BPS_50M`, `BPS_100M`, `BPS_200M`, `BPS_300M`, `BPS_400M`, `BPS_500M`, `BPS_1G`, `BPS_2G`, `BPS_5G`, `BPS_10G`, `BPS_20G`, `BPS_50G`, `BPS_100G`. */ readonly bandwidth: pulumi.Output; /** * Single IPv4 address + prefix length to be configured on the cloud router interface for this * interconnect attachment. Example: 203.0.113.1/29 */ readonly candidateCloudRouterIpAddress: pulumi.Output; /** * Single IPv6 address + prefix length to be configured on the cloud router interface for this * interconnect attachment. Example: 2001:db8::1/125 */ readonly candidateCloudRouterIpv6Address: pulumi.Output; /** * Single IPv4 address + prefix length to be configured on the customer router interface for this * interconnect attachment. Example: 203.0.113.2/29 */ readonly candidateCustomerRouterIpAddress: pulumi.Output; /** * Single IPv6 address + prefix length to be configured on the customer router interface for this * interconnect attachment. Example: 2001:db8::2/125 */ readonly candidateCustomerRouterIpv6Address: pulumi.Output; /** * Up to 16 candidate prefixes that can be used to restrict the allocation * of cloudRouterIpAddress and customerRouterIpAddress for this attachment. * All prefixes must be within link-local address space (169.254.0.0/16) * and must be /29 or shorter (/28, /27, etc). Google will attempt to select * an unused /29 from the supplied candidate prefix(es). The request will * fail if all possible /29s are in use on Google's edge. If not supplied, * Google will randomly select an unused /29 from all of link-local space. */ readonly candidateSubnets: pulumi.Output; /** * IPv4 address + prefix length to be configured on Cloud Router * Interface for this interconnect attachment. */ readonly cloudRouterIpAddress: pulumi.Output; /** * IPv6 address + prefix length to be configured on Cloud Router * Interface for this interconnect attachment. */ readonly cloudRouterIpv6Address: pulumi.Output; /** * Creation timestamp in RFC3339 text format. */ readonly creationTimestamp: pulumi.Output; /** * IPv4 address + prefix length to be configured on the customer * router subinterface for this interconnect attachment. */ readonly customerRouterIpAddress: pulumi.Output; /** * IPv6 address + prefix length to be configured on the customer * router subinterface for this interconnect attachment. */ readonly customerRouterIpv6Address: pulumi.Output; /** * An optional description of this resource. */ readonly description: pulumi.Output; /** * Desired availability domain for the attachment. Only available for type * PARTNER, at creation time. For improved reliability, customers should * configure a pair of attachments with one per availability domain. The * selected availability domain will be provided to the Partner via the * pairing key so that the provisioned circuit will lie in the specified * domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY. */ readonly edgeAvailabilityDomain: pulumi.Output; /** * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. */ readonly effectiveLabels: pulumi.Output<{ [key: string]: string; }>; /** * Indicates the user-supplied encryption option of this interconnect * attachment. Can only be specified at attachment creation for PARTNER or * DEDICATED attachments. * * NONE - This is the default value, which means that the VLAN attachment * carries unencrypted traffic. VMs are able to send traffic to, or receive * traffic from, such a VLAN attachment. * * IPSEC - The VLAN attachment carries only encrypted traffic that is * encrypted by an IPsec device, such as an HA VPN gateway or third-party * IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, * such a VLAN attachment. To use HA VPN over Cloud Interconnect, the VLAN * attachment must be created with this option. * Default value is `NONE`. * Possible values are: `NONE`, `IPSEC`. */ readonly encryption: pulumi.Output; /** * Google reference ID, to be used when raising support tickets with * Google or otherwise to debug backend connectivity issues. */ readonly googleReferenceId: pulumi.Output; /** * URL of the underlying Interconnect object that this attachment's * traffic will traverse through. Required if type is DEDICATED, must not * be set if type is PARTNER. */ readonly interconnect: pulumi.Output; /** * URL of addresses that have been reserved for the interconnect attachment, * Used only for interconnect attachment that has the encryption option as * IPSEC. * The addresses must be RFC 1918 IP address ranges. When creating HA VPN * gateway over the interconnect attachment, if the attachment is configured * to use an RFC 1918 IP address, then the VPN gateway's IP address will be * allocated from the IP address range specified here. * For example, if the HA VPN gateway's interface 0 is paired to this * interconnect attachment, then an RFC 1918 IP address for the VPN gateway * interface 0 will be allocated from the IP address specified for this * interconnect attachment. * If this field is not specified for interconnect attachment that has * encryption option as IPSEC, later on when creating HA VPN gateway on this * interconnect attachment, the HA VPN gateway's IP address will be * allocated from regional external IP address pool. */ readonly ipsecInternalAddresses: pulumi.Output; /** * A fingerprint for the labels being applied to this Interconnect, which is essentially a hash * of the labels set used for optimistic locking. The fingerprint is initially generated by * Compute Engine and changes after every request to modify or update labels. * You must always provide an up-to-date fingerprint hash in order to update or change labels, * otherwise the request will fail with error 412 conditionNotMet. */ readonly labelFingerprint: pulumi.Output; /** * 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. * * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. * Please refer to the field `effectiveLabels` for all of the labels present on the resource. */ readonly labels: pulumi.Output<{ [key: string]: string; } | undefined>; /** * Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment. * Valid values are 1440, 1460, 1500, and 8896. If not specified, the value will default to 1440. */ readonly mtu: pulumi.Output; /** * 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?` 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. */ readonly name: pulumi.Output; /** * [Output only for type PARTNER. Not present for DEDICATED]. The opaque * identifier of an PARTNER attachment used to initiate provisioning with * a selected partner. Of the form "XXXXX/region/domain" */ readonly pairingKey: pulumi.Output; /** * [Output only for type PARTNER. Not present for DEDICATED]. Optional * BGP ASN for the router that should be supplied by a layer 3 Partner if * they configured BGP on behalf of the customer. */ readonly partnerAsn: pulumi.Output; /** * Information specific to an InterconnectAttachment. This property * is populated if the interconnect that this is attached to is of type DEDICATED. * Structure is documented below. */ readonly privateInterconnectInfos: pulumi.Output; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ readonly project: pulumi.Output; /** * The combination of labels configured directly on the resource * and default labels configured on the provider. */ readonly pulumiLabels: pulumi.Output<{ [key: string]: string; }>; /** * Region where the regional interconnect attachment resides. */ readonly region: pulumi.Output; /** * URL of the cloud router to be used for dynamic routing. This router must be in * the same region as this InterconnectAttachment. The InterconnectAttachment will * automatically connect the Interconnect to the network & region within which the * Cloud Router is configured. */ readonly router: pulumi.Output; /** * The URI of the created resource. */ readonly selfLink: pulumi.Output; /** * The stack type for this interconnect attachment to identify whether the IPv6 * feature is enabled or not. If not specified, IPV4_ONLY will be used. * This field can be both set at interconnect attachments creation and update * interconnect attachment operations. * Possible values are: `IPV4_IPV6`, `IPV4_ONLY`. */ readonly stackType: pulumi.Output; /** * [Output Only] The current state of this attachment's functionality. */ readonly state: pulumi.Output; /** * Length of the IPv4 subnet mask. Allowed values: 29 (default), 30. The default value is 29, * except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a * constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure * remote location fall into this category. In these cases, the default value is 30, and * requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it * gives Google Cloud Support more debugging visibility. */ readonly subnetLength: pulumi.Output; /** * The type of InterconnectAttachment you wish to create. Defaults to * DEDICATED. * Possible values are: `DEDICATED`, `PARTNER`, `PARTNER_PROVIDER`. */ readonly type: pulumi.Output; /** * The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4094. When * using PARTNER type this will be managed upstream. */ readonly vlanTag8021q: pulumi.Output; /** * Create a InterconnectAttachment resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: InterconnectAttachmentArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering InterconnectAttachment resources. */ export interface InterconnectAttachmentState { /** * Whether the VLAN attachment is enabled or disabled. When using * PARTNER type this will Pre-Activate the interconnect attachment */ adminEnabled?: pulumi.Input; /** * URL of the AttachmentGroup that includes this Attachment. */ attachmentGroup?: pulumi.Input; /** * Provisioned bandwidth capacity for the interconnect attachment. * For attachments of type DEDICATED, the user can set the bandwidth. * For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. * Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, * Defaults to BPS_10G * Possible values are: `BPS_50M`, `BPS_100M`, `BPS_200M`, `BPS_300M`, `BPS_400M`, `BPS_500M`, `BPS_1G`, `BPS_2G`, `BPS_5G`, `BPS_10G`, `BPS_20G`, `BPS_50G`, `BPS_100G`. */ bandwidth?: pulumi.Input; /** * Single IPv4 address + prefix length to be configured on the cloud router interface for this * interconnect attachment. Example: 203.0.113.1/29 */ candidateCloudRouterIpAddress?: pulumi.Input; /** * Single IPv6 address + prefix length to be configured on the cloud router interface for this * interconnect attachment. Example: 2001:db8::1/125 */ candidateCloudRouterIpv6Address?: pulumi.Input; /** * Single IPv4 address + prefix length to be configured on the customer router interface for this * interconnect attachment. Example: 203.0.113.2/29 */ candidateCustomerRouterIpAddress?: pulumi.Input; /** * Single IPv6 address + prefix length to be configured on the customer router interface for this * interconnect attachment. Example: 2001:db8::2/125 */ candidateCustomerRouterIpv6Address?: pulumi.Input; /** * Up to 16 candidate prefixes that can be used to restrict the allocation * of cloudRouterIpAddress and customerRouterIpAddress for this attachment. * All prefixes must be within link-local address space (169.254.0.0/16) * and must be /29 or shorter (/28, /27, etc). Google will attempt to select * an unused /29 from the supplied candidate prefix(es). The request will * fail if all possible /29s are in use on Google's edge. If not supplied, * Google will randomly select an unused /29 from all of link-local space. */ candidateSubnets?: pulumi.Input[]>; /** * IPv4 address + prefix length to be configured on Cloud Router * Interface for this interconnect attachment. */ cloudRouterIpAddress?: pulumi.Input; /** * IPv6 address + prefix length to be configured on Cloud Router * Interface for this interconnect attachment. */ cloudRouterIpv6Address?: pulumi.Input; /** * Creation timestamp in RFC3339 text format. */ creationTimestamp?: pulumi.Input; /** * IPv4 address + prefix length to be configured on the customer * router subinterface for this interconnect attachment. */ customerRouterIpAddress?: pulumi.Input; /** * IPv6 address + prefix length to be configured on the customer * router subinterface for this interconnect attachment. */ customerRouterIpv6Address?: pulumi.Input; /** * An optional description of this resource. */ description?: pulumi.Input; /** * Desired availability domain for the attachment. Only available for type * PARTNER, at creation time. For improved reliability, customers should * configure a pair of attachments with one per availability domain. The * selected availability domain will be provided to the Partner via the * pairing key so that the provisioned circuit will lie in the specified * domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY. */ edgeAvailabilityDomain?: pulumi.Input; /** * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. */ effectiveLabels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Indicates the user-supplied encryption option of this interconnect * attachment. Can only be specified at attachment creation for PARTNER or * DEDICATED attachments. * * NONE - This is the default value, which means that the VLAN attachment * carries unencrypted traffic. VMs are able to send traffic to, or receive * traffic from, such a VLAN attachment. * * IPSEC - The VLAN attachment carries only encrypted traffic that is * encrypted by an IPsec device, such as an HA VPN gateway or third-party * IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, * such a VLAN attachment. To use HA VPN over Cloud Interconnect, the VLAN * attachment must be created with this option. * Default value is `NONE`. * Possible values are: `NONE`, `IPSEC`. */ encryption?: pulumi.Input; /** * Google reference ID, to be used when raising support tickets with * Google or otherwise to debug backend connectivity issues. */ googleReferenceId?: pulumi.Input; /** * URL of the underlying Interconnect object that this attachment's * traffic will traverse through. Required if type is DEDICATED, must not * be set if type is PARTNER. */ interconnect?: pulumi.Input; /** * URL of addresses that have been reserved for the interconnect attachment, * Used only for interconnect attachment that has the encryption option as * IPSEC. * The addresses must be RFC 1918 IP address ranges. When creating HA VPN * gateway over the interconnect attachment, if the attachment is configured * to use an RFC 1918 IP address, then the VPN gateway's IP address will be * allocated from the IP address range specified here. * For example, if the HA VPN gateway's interface 0 is paired to this * interconnect attachment, then an RFC 1918 IP address for the VPN gateway * interface 0 will be allocated from the IP address specified for this * interconnect attachment. * If this field is not specified for interconnect attachment that has * encryption option as IPSEC, later on when creating HA VPN gateway on this * interconnect attachment, the HA VPN gateway's IP address will be * allocated from regional external IP address pool. */ ipsecInternalAddresses?: pulumi.Input[]>; /** * A fingerprint for the labels being applied to this Interconnect, which is essentially a hash * of the labels set used for optimistic locking. The fingerprint is initially generated by * Compute Engine and changes after every request to modify or update labels. * You must always provide an up-to-date fingerprint hash in order to update or change labels, * otherwise the request will fail with error 412 conditionNotMet. */ labelFingerprint?: pulumi.Input; /** * 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. * * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. * Please refer to the field `effectiveLabels` for all of the labels present on the resource. */ labels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment. * Valid values are 1440, 1460, 1500, and 8896. If not specified, the value will default to 1440. */ mtu?: pulumi.Input; /** * 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?` 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. */ name?: pulumi.Input; /** * [Output only for type PARTNER. Not present for DEDICATED]. The opaque * identifier of an PARTNER attachment used to initiate provisioning with * a selected partner. Of the form "XXXXX/region/domain" */ pairingKey?: pulumi.Input; /** * [Output only for type PARTNER. Not present for DEDICATED]. Optional * BGP ASN for the router that should be supplied by a layer 3 Partner if * they configured BGP on behalf of the customer. */ partnerAsn?: pulumi.Input; /** * Information specific to an InterconnectAttachment. This property * is populated if the interconnect that this is attached to is of type DEDICATED. * Structure is documented below. */ privateInterconnectInfos?: pulumi.Input[]>; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input; /** * The combination of labels configured directly on the resource * and default labels configured on the provider. */ pulumiLabels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Region where the regional interconnect attachment resides. */ region?: pulumi.Input; /** * URL of the cloud router to be used for dynamic routing. This router must be in * the same region as this InterconnectAttachment. The InterconnectAttachment will * automatically connect the Interconnect to the network & region within which the * Cloud Router is configured. */ router?: pulumi.Input; /** * The URI of the created resource. */ selfLink?: pulumi.Input; /** * The stack type for this interconnect attachment to identify whether the IPv6 * feature is enabled or not. If not specified, IPV4_ONLY will be used. * This field can be both set at interconnect attachments creation and update * interconnect attachment operations. * Possible values are: `IPV4_IPV6`, `IPV4_ONLY`. */ stackType?: pulumi.Input; /** * [Output Only] The current state of this attachment's functionality. */ state?: pulumi.Input; /** * Length of the IPv4 subnet mask. Allowed values: 29 (default), 30. The default value is 29, * except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a * constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure * remote location fall into this category. In these cases, the default value is 30, and * requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it * gives Google Cloud Support more debugging visibility. */ subnetLength?: pulumi.Input; /** * The type of InterconnectAttachment you wish to create. Defaults to * DEDICATED. * Possible values are: `DEDICATED`, `PARTNER`, `PARTNER_PROVIDER`. */ type?: pulumi.Input; /** * The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4094. When * using PARTNER type this will be managed upstream. */ vlanTag8021q?: pulumi.Input; } /** * The set of arguments for constructing a InterconnectAttachment resource. */ export interface InterconnectAttachmentArgs { /** * Whether the VLAN attachment is enabled or disabled. When using * PARTNER type this will Pre-Activate the interconnect attachment */ adminEnabled?: pulumi.Input; /** * Provisioned bandwidth capacity for the interconnect attachment. * For attachments of type DEDICATED, the user can set the bandwidth. * For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. * Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, * Defaults to BPS_10G * Possible values are: `BPS_50M`, `BPS_100M`, `BPS_200M`, `BPS_300M`, `BPS_400M`, `BPS_500M`, `BPS_1G`, `BPS_2G`, `BPS_5G`, `BPS_10G`, `BPS_20G`, `BPS_50G`, `BPS_100G`. */ bandwidth?: pulumi.Input; /** * Single IPv4 address + prefix length to be configured on the cloud router interface for this * interconnect attachment. Example: 203.0.113.1/29 */ candidateCloudRouterIpAddress?: pulumi.Input; /** * Single IPv6 address + prefix length to be configured on the cloud router interface for this * interconnect attachment. Example: 2001:db8::1/125 */ candidateCloudRouterIpv6Address?: pulumi.Input; /** * Single IPv4 address + prefix length to be configured on the customer router interface for this * interconnect attachment. Example: 203.0.113.2/29 */ candidateCustomerRouterIpAddress?: pulumi.Input; /** * Single IPv6 address + prefix length to be configured on the customer router interface for this * interconnect attachment. Example: 2001:db8::2/125 */ candidateCustomerRouterIpv6Address?: pulumi.Input; /** * Up to 16 candidate prefixes that can be used to restrict the allocation * of cloudRouterIpAddress and customerRouterIpAddress for this attachment. * All prefixes must be within link-local address space (169.254.0.0/16) * and must be /29 or shorter (/28, /27, etc). Google will attempt to select * an unused /29 from the supplied candidate prefix(es). The request will * fail if all possible /29s are in use on Google's edge. If not supplied, * Google will randomly select an unused /29 from all of link-local space. */ candidateSubnets?: pulumi.Input[]>; /** * An optional description of this resource. */ description?: pulumi.Input; /** * Desired availability domain for the attachment. Only available for type * PARTNER, at creation time. For improved reliability, customers should * configure a pair of attachments with one per availability domain. The * selected availability domain will be provided to the Partner via the * pairing key so that the provisioned circuit will lie in the specified * domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY. */ edgeAvailabilityDomain?: pulumi.Input; /** * Indicates the user-supplied encryption option of this interconnect * attachment. Can only be specified at attachment creation for PARTNER or * DEDICATED attachments. * * NONE - This is the default value, which means that the VLAN attachment * carries unencrypted traffic. VMs are able to send traffic to, or receive * traffic from, such a VLAN attachment. * * IPSEC - The VLAN attachment carries only encrypted traffic that is * encrypted by an IPsec device, such as an HA VPN gateway or third-party * IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, * such a VLAN attachment. To use HA VPN over Cloud Interconnect, the VLAN * attachment must be created with this option. * Default value is `NONE`. * Possible values are: `NONE`, `IPSEC`. */ encryption?: pulumi.Input; /** * URL of the underlying Interconnect object that this attachment's * traffic will traverse through. Required if type is DEDICATED, must not * be set if type is PARTNER. */ interconnect?: pulumi.Input; /** * URL of addresses that have been reserved for the interconnect attachment, * Used only for interconnect attachment that has the encryption option as * IPSEC. * The addresses must be RFC 1918 IP address ranges. When creating HA VPN * gateway over the interconnect attachment, if the attachment is configured * to use an RFC 1918 IP address, then the VPN gateway's IP address will be * allocated from the IP address range specified here. * For example, if the HA VPN gateway's interface 0 is paired to this * interconnect attachment, then an RFC 1918 IP address for the VPN gateway * interface 0 will be allocated from the IP address specified for this * interconnect attachment. * If this field is not specified for interconnect attachment that has * encryption option as IPSEC, later on when creating HA VPN gateway on this * interconnect attachment, the HA VPN gateway's IP address will be * allocated from regional external IP address pool. */ ipsecInternalAddresses?: pulumi.Input[]>; /** * 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. * * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. * Please refer to the field `effectiveLabels` for all of the labels present on the resource. */ labels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment. * Valid values are 1440, 1460, 1500, and 8896. If not specified, the value will default to 1440. */ mtu?: pulumi.Input; /** * 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?` 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. */ name?: pulumi.Input; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input; /** * Region where the regional interconnect attachment resides. */ region?: pulumi.Input; /** * URL of the cloud router to be used for dynamic routing. This router must be in * the same region as this InterconnectAttachment. The InterconnectAttachment will * automatically connect the Interconnect to the network & region within which the * Cloud Router is configured. */ router: pulumi.Input; /** * The stack type for this interconnect attachment to identify whether the IPv6 * feature is enabled or not. If not specified, IPV4_ONLY will be used. * This field can be both set at interconnect attachments creation and update * interconnect attachment operations. * Possible values are: `IPV4_IPV6`, `IPV4_ONLY`. */ stackType?: pulumi.Input; /** * Length of the IPv4 subnet mask. Allowed values: 29 (default), 30. The default value is 29, * except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a * constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure * remote location fall into this category. In these cases, the default value is 30, and * requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it * gives Google Cloud Support more debugging visibility. */ subnetLength?: pulumi.Input; /** * The type of InterconnectAttachment you wish to create. Defaults to * DEDICATED. * Possible values are: `DEDICATED`, `PARTNER`, `PARTNER_PROVIDER`. */ type?: pulumi.Input; /** * The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4094. When * using PARTNER type this will be managed upstream. */ vlanTag8021q?: pulumi.Input; }