@pulumi/gcp
Version:
A Pulumi package for creating and managing Google Cloud Platform resources.
878 lines • 42.6 kB
TypeScript
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}}
* $ pulumi import gcp:compute/interconnectAttachment:InterconnectAttachment default {{project}}/{{region}}/{{name}}
* $ pulumi import gcp:compute/interconnectAttachment:InterconnectAttachment default {{region}}/{{name}}
* $ 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<pulumi.ID>, 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<boolean | undefined>;
/**
* URL of the AttachmentGroup that includes this Attachment.
*/
readonly attachmentGroup: pulumi.Output<string>;
/**
* 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`, `BPS_400G`.
*/
readonly bandwidth: pulumi.Output<string>;
/**
* 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<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string[] | undefined>;
/**
* IPv4 address + prefix length to be configured on Cloud Router
* Interface for this interconnect attachment.
*/
readonly cloudRouterIpAddress: pulumi.Output<string>;
/**
* IPv6 address + prefix length to be configured on Cloud Router
* Interface for this interconnect attachment.
*/
readonly cloudRouterIpv6Address: pulumi.Output<string>;
/**
* Creation timestamp in RFC3339 text format.
*/
readonly creationTimestamp: pulumi.Output<string>;
/**
* IPv4 address + prefix length to be configured on the customer
* router subinterface for this interconnect attachment.
*/
readonly customerRouterIpAddress: pulumi.Output<string>;
/**
* IPv6 address + prefix length to be configured on the customer
* router subinterface for this interconnect attachment.
*/
readonly customerRouterIpv6Address: pulumi.Output<string>;
/**
* Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
* When a 'terraform destroy' or 'pulumi up' would delete the resource,
* the command will fail if this field is set to "PREVENT" in Terraform state.
* When set to "ABANDON", the command will remove the resource from Terraform
* management without updating or deleting the resource in the API.
* When set to "DELETE", deleting the resource is allowed.
*/
readonly deletionPolicy: pulumi.Output<string>;
/**
* An optional description of this resource.
*/
readonly description: pulumi.Output<string | undefined>;
/**
* 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<string>;
/**
* 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<string | undefined>;
/**
* Google reference ID, to be used when raising support tickets with
* Google or otherwise to debug backend connectivity issues.
*/
readonly googleReferenceId: pulumi.Output<string>;
/**
* 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<string | undefined>;
/**
* 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<string[] | undefined>;
/**
* L2 Interconnect Attachment related configuration.
* Structure is documented below.
*/
readonly l2Forwarding: pulumi.Output<outputs.compute.InterconnectAttachmentL2Forwarding | undefined>;
/**
* 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<string>;
/**
* 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<string>;
/**
* 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<string>;
/**
* [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<string>;
/**
* Additional params passed with the request, but not persisted as part of resource payload
* Structure is documented below.
*/
readonly params: pulumi.Output<outputs.compute.InterconnectAttachmentParams | undefined>;
/**
* [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<string>;
/**
* 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<outputs.compute.InterconnectAttachmentPrivateInterconnectInfo[]>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
readonly project: pulumi.Output<string>;
/**
* 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<string>;
/**
* 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<string | undefined>;
/**
* The URI of the created resource.
*/
readonly selfLink: pulumi.Output<string>;
/**
* 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<string>;
/**
* [Output Only] The current state of this attachment's functionality.
*/
readonly state: pulumi.Output<string>;
/**
* 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<number | undefined>;
/**
* The type of InterconnectAttachment you wish to create. Defaults to
* DEDICATED.
* Possible values are: `DEDICATED`, `PARTNER`, `PARTNER_PROVIDER`, `L2_DEDICATED`.
*/
readonly type: pulumi.Output<string>;
/**
* 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<number>;
/**
* 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<boolean | undefined>;
/**
* URL of the AttachmentGroup that includes this Attachment.
*/
attachmentGroup?: pulumi.Input<string | undefined>;
/**
* 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`, `BPS_400G`.
*/
bandwidth?: pulumi.Input<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<pulumi.Input<string>[] | undefined>;
/**
* IPv4 address + prefix length to be configured on Cloud Router
* Interface for this interconnect attachment.
*/
cloudRouterIpAddress?: pulumi.Input<string | undefined>;
/**
* IPv6 address + prefix length to be configured on Cloud Router
* Interface for this interconnect attachment.
*/
cloudRouterIpv6Address?: pulumi.Input<string | undefined>;
/**
* Creation timestamp in RFC3339 text format.
*/
creationTimestamp?: pulumi.Input<string | undefined>;
/**
* IPv4 address + prefix length to be configured on the customer
* router subinterface for this interconnect attachment.
*/
customerRouterIpAddress?: pulumi.Input<string | undefined>;
/**
* IPv6 address + prefix length to be configured on the customer
* router subinterface for this interconnect attachment.
*/
customerRouterIpv6Address?: pulumi.Input<string | undefined>;
/**
* Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
* When a 'terraform destroy' or 'pulumi up' would delete the resource,
* the command will fail if this field is set to "PREVENT" in Terraform state.
* When set to "ABANDON", the command will remove the resource from Terraform
* management without updating or deleting the resource in the API.
* When set to "DELETE", deleting the resource is allowed.
*/
deletionPolicy?: pulumi.Input<string | undefined>;
/**
* An optional description of this resource.
*/
description?: pulumi.Input<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string>;
} | undefined>;
/**
* 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<string | undefined>;
/**
* Google reference ID, to be used when raising support tickets with
* Google or otherwise to debug backend connectivity issues.
*/
googleReferenceId?: pulumi.Input<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<pulumi.Input<string>[] | undefined>;
/**
* L2 Interconnect Attachment related configuration.
* Structure is documented below.
*/
l2Forwarding?: pulumi.Input<inputs.compute.InterconnectAttachmentL2Forwarding | undefined>;
/**
* 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<string | undefined>;
/**
* 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<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.
*/
mtu?: pulumi.Input<string | undefined>;
/**
* 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<string | undefined>;
/**
* [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<string | undefined>;
/**
* Additional params passed with the request, but not persisted as part of resource payload
* Structure is documented below.
*/
params?: pulumi.Input<inputs.compute.InterconnectAttachmentParams | undefined>;
/**
* [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<string | undefined>;
/**
* 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<pulumi.Input<inputs.compute.InterconnectAttachmentPrivateInterconnectInfo>[] | undefined>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string | undefined>;
/**
* The combination of labels configured directly on the resource
* and default labels configured on the provider.
*/
pulumiLabels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
} | undefined>;
/**
* Region where the regional interconnect attachment resides.
*/
region?: pulumi.Input<string | undefined>;
/**
* 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<string | undefined>;
/**
* The URI of the created resource.
*/
selfLink?: pulumi.Input<string | undefined>;
/**
* 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<string | undefined>;
/**
* [Output Only] The current state of this attachment's functionality.
*/
state?: pulumi.Input<string | undefined>;
/**
* 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<number | undefined>;
/**
* The type of InterconnectAttachment you wish to create. Defaults to
* DEDICATED.
* Possible values are: `DEDICATED`, `PARTNER`, `PARTNER_PROVIDER`, `L2_DEDICATED`.
*/
type?: pulumi.Input<string | undefined>;
/**
* 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<number | undefined>;
}
/**
* 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<boolean | undefined>;
/**
* 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`, `BPS_400G`.
*/
bandwidth?: pulumi.Input<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<pulumi.Input<string>[] | undefined>;
/**
* Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
* When a 'terraform destroy' or 'pulumi up' would delete the resource,
* the command will fail if this field is set to "PREVENT" in Terraform state.
* When set to "ABANDON", the command will remove the resource from Terraform
* management without updating or deleting the resource in the API.
* When set to "DELETE", deleting the resource is allowed.
*/
deletionPolicy?: pulumi.Input<string | undefined>;
/**
* An optional description of this resource.
*/
description?: pulumi.Input<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<pulumi.Input<string>[] | undefined>;
/**
* L2 Interconnect Attachment related configuration.
* Structure is documented below.
*/
l2Forwarding?: pulumi.Input<inputs.compute.InterconnectAttachmentL2Forwarding | undefined>;
/**
* 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<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.
*/
mtu?: pulumi.Input<string | undefined>;
/**
* 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<string | undefined>;
/**
* Additional params passed with the request, but not persisted as part of resource payload
* Structure is documented below.
*/
params?: pulumi.Input<inputs.compute.InterconnectAttachmentParams | undefined>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string | undefined>;
/**
* Region where the regional interconnect attachment resides.
*/
region?: pulumi.Input<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<string | undefined>;
/**
* 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<number | undefined>;
/**
* The type of InterconnectAttachment you wish to create. Defaults to
* DEDICATED.
* Possible values are: `DEDICATED`, `PARTNER`, `PARTNER_PROVIDER`, `L2_DEDICATED`.
*/
type?: pulumi.Input<string | undefined>;
/**
* 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<number | undefined>;
}
//# sourceMappingURL=interconnectAttachment.d.ts.map