UNPKG

@pulumi/gcp

Version:

A Pulumi package for creating and managing Google Cloud Platform resources.

616 lines (615 loc) • 30 kB
import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Represents an Interconnect resource. The Interconnect resource is a dedicated connection between * Google's network and your on-premises network. * * To get more information about Interconnect, see: * * * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/interconnects) * * How-to Guides * * [Create a Dedicated Interconnect](https://cloud.google.com/network-connectivity/docs/interconnect/concepts/dedicated-overview) * * ## Example Usage * * ### Compute Interconnect Basic * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const project = gcp.organizations.getProject({}); * const example_interconnect = new gcp.compute.Interconnect("example-interconnect", { * name: "example-interconnect", * customerName: "example_customer", * interconnectType: "DEDICATED", * linkType: "LINK_TYPE_ETHERNET_10G_LR", * location: project.then(project => `https://www.googleapis.com/compute/v1/${project.id}/global/interconnectLocations/iad-zone1-1`), * requestedLinkCount: 1, * }); * ``` * * ## Import * * Interconnect can be imported using any of these accepted formats: * * * `projects/{{project}}/global/interconnects/{{name}}` * * * `{{project}}/{{name}}` * * * `{{name}}` * * When using the `pulumi import` command, Interconnect can be imported using one of the formats above. For example: * * ```sh * $ pulumi import gcp:compute/interconnect:Interconnect default projects/{{project}}/global/interconnects/{{name}} * ``` * * ```sh * $ pulumi import gcp:compute/interconnect:Interconnect default {{project}}/{{name}} * ``` * * ```sh * $ pulumi import gcp:compute/interconnect:Interconnect default {{name}} * ``` */ export declare class Interconnect extends pulumi.CustomResource { /** * Get an existing Interconnect 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?: InterconnectState, opts?: pulumi.CustomResourceOptions): Interconnect; /** * Returns true if the given object is an instance of Interconnect. 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 Interconnect; /** * Enable or disable the Application Aware Interconnect(AAI) feature on this interconnect. */ readonly aaiEnabled: pulumi.Output<boolean | undefined>; /** * 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. */ readonly adminEnabled: pulumi.Output<boolean | undefined>; /** * Configuration that enables Media Access Control security (MACsec) on the Cloud * Interconnect connection between Google and your on-premises router. * Structure is documented below. */ readonly applicationAwareInterconnect: pulumi.Output<outputs.compute.InterconnectApplicationAwareInterconnect | undefined>; /** * interconnects.list of features available for this Interconnect connection. Can take the value: * MACSEC. If present then the Interconnect connection is provisioned on MACsec capable hardware * ports. If not present then the Interconnect connection is provisioned on non-MACsec capable * ports and MACsec isn't supported and enabling MACsec fails). */ readonly availableFeatures: pulumi.Output<string[]>; /** * A list of CircuitInfo objects, that describe the individual circuits in this LAG. * Structure is documented below. */ readonly circuitInfos: pulumi.Output<outputs.compute.InterconnectCircuitInfo[]>; /** * Creation timestamp in RFC3339 text format. */ readonly creationTimestamp: pulumi.Output<string>; /** * Customer name, to put in the Letter of Authorization as the party authorized to request a * crossconnect. This field is required for Dedicated and Partner Interconnect, should not be specified * for cross-cloud interconnect. */ readonly customerName: pulumi.Output<string | undefined>; /** * An optional description of this resource. Provide this property when you create the resource. */ readonly description: pulumi.Output<string | undefined>; /** * 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; }>; /** * A list of outages expected for this Interconnect. * Structure is documented below. */ readonly expectedOutages: pulumi.Output<outputs.compute.InterconnectExpectedOutage[]>; /** * IP address configured on the Google side of the Interconnect link. * This can be used only for ping tests. */ readonly googleIpAddress: pulumi.Output<string>; /** * Google reference ID to be used when raising support tickets with Google or otherwise to debug * backend connectivity issues. */ readonly googleReferenceId: pulumi.Output<string>; /** * A list of the URLs of all InterconnectAttachments configured to use this Interconnect. */ readonly interconnectAttachments: pulumi.Output<string[]>; /** * URLs of InterconnectGroups that include this Interconnect. * Order is arbitrary and items are unique. */ readonly interconnectGroups: pulumi.Output<string[]>; /** * Type of interconnect. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED. * 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. * Possible values are: `DEDICATED`, `PARTNER`, `IT_PRIVATE`. */ readonly interconnectType: pulumi.Output<string>; /** * 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>; /** * Type of link requested. Note that this field indicates the speed of each of the links in the * bundle, not the speed of the entire bundle. 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. * - LINK_TYPE_ETHERNET_400G_LR4: A 400G Ethernet with LR4 optics * Possible values are: `LINK_TYPE_ETHERNET_10G_LR`, `LINK_TYPE_ETHERNET_100G_LR`, `LINK_TYPE_ETHERNET_400G_LR4`. */ readonly linkType: pulumi.Output<string>; /** * URL of the InterconnectLocation object that represents where this connection is to be provisioned. * Specifies the location inside Google's Networks. */ readonly location: pulumi.Output<string>; /** * Configuration that enables Media Access Control security (MACsec) on the Cloud * Interconnect connection between Google and your on-premises router. * Structure is documented below. */ readonly macsec: pulumi.Output<outputs.compute.InterconnectMacsec | undefined>; /** * Enable or disable MACsec on this Interconnect connection. * MACsec enablement fails if the MACsec object is not specified. */ readonly macsecEnabled: pulumi.Output<boolean | 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. */ readonly name: pulumi.Output<string>; /** * 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. */ readonly nocContactEmail: pulumi.Output<string | undefined>; /** * The current status of this Interconnect's functionality, which can take one of the following: * - OS_ACTIVE: A valid Interconnect, which is turned up and is ready to use. Attachments may * be provisioned on this Interconnect. * - OS_UNPROVISIONED: An Interconnect that has not completed turnup. No attachments may be * provisioned on this Interconnect. * - OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal maintenance. No * attachments may be provisioned or updated on this Interconnect. */ readonly operationalStatus: pulumi.Output<string>; /** * IP address configured on the customer side of the Interconnect link. * The customer should configure this IP address during turnup when prompted by Google NOC. * This can be used only for ping tests. */ readonly peerIpAddress: pulumi.Output<string>; /** * 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>; /** * Number of links actually provisioned in this interconnect. */ readonly provisionedLinkCount: pulumi.Output<number>; /** * The combination of labels configured directly on the resource * and default labels configured on the provider. */ readonly pulumiLabels: pulumi.Output<{ [key: string]: string; }>; /** * Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside * of Google's network that the interconnect is connected to. */ readonly remoteLocation: pulumi.Output<string | undefined>; /** * interconnects.list of features requested for this Interconnect connection. Options: IF_MACSEC ( * If specified then the connection is created on MACsec capable hardware ports. If not * specified, the default value is false, which allocates non-MACsec capable ports first if * available). Note that MACSEC is still technically allowed for compatibility reasons, but it * does not work with the API, and will be removed in an upcoming major version. * Each value may be one of: `MACSEC`, `CROSS_SITE_NETWORK`, `IF_MACSEC`. */ readonly requestedFeatures: pulumi.Output<string[] | undefined>; /** * Target number of physical links in the link bundle, as requested by the customer. */ readonly requestedLinkCount: pulumi.Output<number>; /** * Reserved for future use. */ readonly satisfiesPzs: pulumi.Output<boolean>; /** * (Output) * State of this notification. Note that the versions of this enum prefixed with "NS_" have * been deprecated in favor of the unprefixed values. Can take one of the following values: * - ACTIVE: This outage notification is active. The event could be in the past, present, * or future. See startTime and endTime for scheduling. * - CANCELLED: The outage associated with this notification was cancelled before the * outage was due to start. * - COMPLETED: The outage associated with this notification is complete. */ readonly state: pulumi.Output<string>; /** * A list of the URLs of all CrossSiteNetwork WireGroups configured to use this Interconnect. The Interconnect cannot be deleted if this list is non-empty. */ readonly wireGroups: pulumi.Output<string[]>; /** * Create a Interconnect 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: InterconnectArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering Interconnect resources. */ export interface InterconnectState { /** * Enable or disable the Application Aware Interconnect(AAI) feature on this interconnect. */ aaiEnabled?: pulumi.Input<boolean>; /** * 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. */ adminEnabled?: pulumi.Input<boolean>; /** * Configuration that enables Media Access Control security (MACsec) on the Cloud * Interconnect connection between Google and your on-premises router. * Structure is documented below. */ applicationAwareInterconnect?: pulumi.Input<inputs.compute.InterconnectApplicationAwareInterconnect>; /** * interconnects.list of features available for this Interconnect connection. Can take the value: * MACSEC. If present then the Interconnect connection is provisioned on MACsec capable hardware * ports. If not present then the Interconnect connection is provisioned on non-MACsec capable * ports and MACsec isn't supported and enabling MACsec fails). */ availableFeatures?: pulumi.Input<pulumi.Input<string>[]>; /** * A list of CircuitInfo objects, that describe the individual circuits in this LAG. * Structure is documented below. */ circuitInfos?: pulumi.Input<pulumi.Input<inputs.compute.InterconnectCircuitInfo>[]>; /** * Creation timestamp in RFC3339 text format. */ creationTimestamp?: pulumi.Input<string>; /** * Customer name, to put in the Letter of Authorization as the party authorized to request a * crossconnect. This field is required for Dedicated and Partner Interconnect, should not be specified * for cross-cloud interconnect. */ customerName?: pulumi.Input<string>; /** * An optional description of this resource. Provide this property when you create the resource. */ description?: pulumi.Input<string>; /** * 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>; }>; /** * A list of outages expected for this Interconnect. * Structure is documented below. */ expectedOutages?: pulumi.Input<pulumi.Input<inputs.compute.InterconnectExpectedOutage>[]>; /** * IP address configured on the Google side of the Interconnect link. * This can be used only for ping tests. */ googleIpAddress?: pulumi.Input<string>; /** * Google reference ID to be used when raising support tickets with Google or otherwise to debug * backend connectivity issues. */ googleReferenceId?: pulumi.Input<string>; /** * A list of the URLs of all InterconnectAttachments configured to use this Interconnect. */ interconnectAttachments?: pulumi.Input<pulumi.Input<string>[]>; /** * URLs of InterconnectGroups that include this Interconnect. * Order is arbitrary and items are unique. */ interconnectGroups?: pulumi.Input<pulumi.Input<string>[]>; /** * Type of interconnect. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED. * 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. * Possible values are: `DEDICATED`, `PARTNER`, `IT_PRIVATE`. */ interconnectType?: pulumi.Input<string>; /** * 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>; /** * 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>; }>; /** * Type of link requested. Note that this field indicates the speed of each of the links in the * bundle, not the speed of the entire bundle. 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. * - LINK_TYPE_ETHERNET_400G_LR4: A 400G Ethernet with LR4 optics * Possible values are: `LINK_TYPE_ETHERNET_10G_LR`, `LINK_TYPE_ETHERNET_100G_LR`, `LINK_TYPE_ETHERNET_400G_LR4`. */ linkType?: pulumi.Input<string>; /** * URL of the InterconnectLocation object that represents where this connection is to be provisioned. * Specifies the location inside Google's Networks. */ location?: pulumi.Input<string>; /** * Configuration that enables Media Access Control security (MACsec) on the Cloud * Interconnect connection between Google and your on-premises router. * Structure is documented below. */ macsec?: pulumi.Input<inputs.compute.InterconnectMacsec>; /** * Enable or disable MACsec on this Interconnect connection. * MACsec enablement fails if the MACsec object is not specified. */ macsecEnabled?: pulumi.Input<boolean>; /** * 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>; /** * 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. */ nocContactEmail?: pulumi.Input<string>; /** * The current status of this Interconnect's functionality, which can take one of the following: * - OS_ACTIVE: A valid Interconnect, which is turned up and is ready to use. Attachments may * be provisioned on this Interconnect. * - OS_UNPROVISIONED: An Interconnect that has not completed turnup. No attachments may be * provisioned on this Interconnect. * - OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal maintenance. No * attachments may be provisioned or updated on this Interconnect. */ operationalStatus?: pulumi.Input<string>; /** * IP address configured on the customer side of the Interconnect link. * The customer should configure this IP address during turnup when prompted by Google NOC. * This can be used only for ping tests. */ peerIpAddress?: pulumi.Input<string>; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input<string>; /** * Number of links actually provisioned in this interconnect. */ provisionedLinkCount?: pulumi.Input<number>; /** * The combination of labels configured directly on the resource * and default labels configured on the provider. */ pulumiLabels?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside * of Google's network that the interconnect is connected to. */ remoteLocation?: pulumi.Input<string>; /** * interconnects.list of features requested for this Interconnect connection. Options: IF_MACSEC ( * If specified then the connection is created on MACsec capable hardware ports. If not * specified, the default value is false, which allocates non-MACsec capable ports first if * available). Note that MACSEC is still technically allowed for compatibility reasons, but it * does not work with the API, and will be removed in an upcoming major version. * Each value may be one of: `MACSEC`, `CROSS_SITE_NETWORK`, `IF_MACSEC`. */ requestedFeatures?: pulumi.Input<pulumi.Input<string>[]>; /** * Target number of physical links in the link bundle, as requested by the customer. */ requestedLinkCount?: pulumi.Input<number>; /** * Reserved for future use. */ satisfiesPzs?: pulumi.Input<boolean>; /** * (Output) * State of this notification. Note that the versions of this enum prefixed with "NS_" have * been deprecated in favor of the unprefixed values. Can take one of the following values: * - ACTIVE: This outage notification is active. The event could be in the past, present, * or future. See startTime and endTime for scheduling. * - CANCELLED: The outage associated with this notification was cancelled before the * outage was due to start. * - COMPLETED: The outage associated with this notification is complete. */ state?: pulumi.Input<string>; /** * A list of the URLs of all CrossSiteNetwork WireGroups configured to use this Interconnect. The Interconnect cannot be deleted if this list is non-empty. */ wireGroups?: pulumi.Input<pulumi.Input<string>[]>; } /** * The set of arguments for constructing a Interconnect resource. */ export interface InterconnectArgs { /** * Enable or disable the Application Aware Interconnect(AAI) feature on this interconnect. */ aaiEnabled?: pulumi.Input<boolean>; /** * 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. */ adminEnabled?: pulumi.Input<boolean>; /** * Configuration that enables Media Access Control security (MACsec) on the Cloud * Interconnect connection between Google and your on-premises router. * Structure is documented below. */ applicationAwareInterconnect?: pulumi.Input<inputs.compute.InterconnectApplicationAwareInterconnect>; /** * Customer name, to put in the Letter of Authorization as the party authorized to request a * crossconnect. This field is required for Dedicated and Partner Interconnect, should not be specified * for cross-cloud interconnect. */ customerName?: pulumi.Input<string>; /** * An optional description of this resource. Provide this property when you create the resource. */ description?: pulumi.Input<string>; /** * Type of interconnect. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED. * 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. * Possible values are: `DEDICATED`, `PARTNER`, `IT_PRIVATE`. */ interconnectType: pulumi.Input<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. */ labels?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * Type of link requested. Note that this field indicates the speed of each of the links in the * bundle, not the speed of the entire bundle. 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. * - LINK_TYPE_ETHERNET_400G_LR4: A 400G Ethernet with LR4 optics * Possible values are: `LINK_TYPE_ETHERNET_10G_LR`, `LINK_TYPE_ETHERNET_100G_LR`, `LINK_TYPE_ETHERNET_400G_LR4`. */ linkType: pulumi.Input<string>; /** * URL of the InterconnectLocation object that represents where this connection is to be provisioned. * Specifies the location inside Google's Networks. */ location: pulumi.Input<string>; /** * Configuration that enables Media Access Control security (MACsec) on the Cloud * Interconnect connection between Google and your on-premises router. * Structure is documented below. */ macsec?: pulumi.Input<inputs.compute.InterconnectMacsec>; /** * Enable or disable MACsec on this Interconnect connection. * MACsec enablement fails if the MACsec object is not specified. */ macsecEnabled?: pulumi.Input<boolean>; /** * 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>; /** * 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. */ nocContactEmail?: pulumi.Input<string>; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input<string>; /** * Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside * of Google's network that the interconnect is connected to. */ remoteLocation?: pulumi.Input<string>; /** * interconnects.list of features requested for this Interconnect connection. Options: IF_MACSEC ( * If specified then the connection is created on MACsec capable hardware ports. If not * specified, the default value is false, which allocates non-MACsec capable ports first if * available). Note that MACSEC is still technically allowed for compatibility reasons, but it * does not work with the API, and will be removed in an upcoming major version. * Each value may be one of: `MACSEC`, `CROSS_SITE_NETWORK`, `IF_MACSEC`. */ requestedFeatures?: pulumi.Input<pulumi.Input<string>[]>; /** * Target number of physical links in the link bundle, as requested by the customer. */ requestedLinkCount: pulumi.Input<number>; }