@cuemby/equinix
Version:
A Pulumi package for creating and managing equinix cloud resources.
596 lines (595 loc) • 24 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
import { input as inputs, output as outputs } from "./types";
/**
* Resource `equinix.ECXL2Connection` allows creation and management of Equinix Fabric
* layer 2 connections.
*
* ## Example Usage
* ### Non-redundant Connection from own Equinix Fabric Port
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as equinix from "@cuemby/equinix";
* import * as equinix from "@pulumi/equinix";
*
* const aws = equinix.GetECXL2Sellerprofile({
* name: "AWS Direct Connect",
* });
* const sv-qinq-pri = equinix.GetECXPort({
* name: "CX-SV5-NL-Dot1q-BO-10G-PRI",
* });
* const port_2_aws = new equinix.ECXL2Connection("port-2-aws", {
* profileUuid: aws.then(aws => aws.id),
* speed: 200,
* speedUnit: "MB",
* notifications: [
* "marry@equinix.com",
* "john@equinix.com",
* ],
* portUuid: sv_qinq_pri.then(sv_qinq_pri => sv_qinq_pri.id),
* vlanStag: 777,
* vlanCtag: 1000,
* sellerRegion: "us-west-1",
* sellerMetroCode: "SV",
* authorizationKey: "345742915919",
* });
* ```
* ### Non-redundant Connection from Network Edge device
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as equinix from "@cuemby/equinix";
* import * as equinix from "@pulumi/equinix";
*
* const gcp-1 = equinix.GetECXL2Sellerprofile({
* name: "Google Cloud Partner Interconnect Zone 1",
* });
* const router_to_gcp = new equinix.ECXL2Connection("router-to-gcp", {
* profileUuid: gcp_1.then(gcp_1 => gcp_1.id),
* deviceUuid: equinix_network_device.myrouter.id,
* deviceInterfaceId: 5,
* speed: 100,
* speedUnit: "MB",
* notifications: [
* "john@equinix.com",
* "marry@equinix.com",
* ],
* sellerMetroCode: "SV",
* sellerRegion: "us-west1",
* authorizationKey: "4d335adc-00fd-4a41-c9f3-782ca31ab3f7/us-west1/1",
* });
* ```
* ### Non-redundant Connection from an Equinix customer port using A-Side Service token
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as equinix from "@cuemby/equinix";
* import * as equinix from "@pulumi/equinix";
*
* const gcp = equinix.GetECXL2Sellerprofile({
* name: "Google Cloud Partner Interconnect Zone 1",
* });
* const token_to_gcp = new equinix.ECXL2Connection("token-to-gcp", {
* profileUuid: data.equinix_ecx_l2_sellerprofile["gcp-1"].id,
* serviceToken: "e9c22453-d3a7-4d5d-9112-d50173531392",
* speed: 100,
* speedUnit: "MB",
* notifications: [
* "john@equinix.com",
* "marry@equinix.com",
* ],
* sellerMetroCode: "SV",
* sellerRegion: "us-west1",
* authorizationKey: "4d335adc-00fd-4a41-c9f3-782ca31ab3f7/us-west1/1",
* });
* ```
* ### Non-redundant Connection from own Equinix Fabric Port to an Equinix customer port using Z-Side Service token
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as equinix from "@cuemby/equinix";
* import * as equinix from "@pulumi/equinix";
*
* const sv-qinq-pri = equinix.GetECXPort({
* name: "CX-SV5-NL-Dot1q-BO-10G-PRI",
* });
* const port_to_token = new equinix.ECXL2Connection("port-to-token", {
* zsideServiceToken: "e9c22453-d3a7-4d5d-9112-d50173531392",
* speed: 200,
* speedUnit: "MB",
* notifications: [
* "john@equinix.com",
* "marry@equinix.com",
* ],
* sellerMetroCode: "FR",
* portUuid: sv_qinq_pri.then(sv_qinq_pri => sv_qinq_pri.id),
* vlanStag: 1000,
* });
* ```
*
* > **NOTE:** See Equinix Fabric connecting to the cloud
* guide for more details on how to connect to a CSP.
* ## Update operation behavior
*
* Update of most arguments will force replacement of a connection (including related redundant
* connection in HA setup).
*
* Following arguments can be updated. **NOTE** that Equinix Fabric may still forbid updates depending
* on current connection state, used service provider or number of updates requested during the day.
*
* * `name`
* * `speed` and `speedUnit`
*
* ## Import
*
* into `vendor_token` but `service_token` and `zside_service_token` will remain empty. Equinix L2 connections can be imported using an existing `id`existing_connection_id='example-uuid-1'
*
* ```sh
* $ pulumi import equinix:index/eCXL2Connection:ECXL2Connection example ${existing_connection_id}
* ```
*
* (primary and secondary) into a single string separated by `:`. To import a redundant Equinix L2 connectionexisting_primary_connection_id='example-uuid-1' existing_secondary_connection_id='example-uuid-2'
*
* ```sh
* $ pulumi import equinix:index/eCXL2Connection:ECXL2Connection example ${existing_primary_connection_id}:${existing_secondary_connection_id}
* ```
*/
export declare class ECXL2Connection extends pulumi.CustomResource {
/**
* Get an existing ECXL2Connection 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?: ECXL2ConnectionState, opts?: pulumi.CustomResourceOptions): ECXL2Connection;
/**
* Returns true if the given object is an instance of ECXL2Connection. 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 ECXL2Connection;
/**
* One or more pending actions to complete connection provisioning.
*/
readonly actions: pulumi.Output<outputs.ECXL2ConnectionAction[]>;
/**
* one or more additional information key-value objects
*/
readonly additionalInfos: pulumi.Output<outputs.ECXL2ConnectionAdditionalInfo[] | undefined>;
/**
* Unique identifier authorizing Equinix to provision a connection
* towards a cloud service provider. At Equinix, an `Authorization Key` is a generic term and is NOT
* encrypted on Equinix Fabric. Cloud Service Providers might use a different name to refer to this
* key such as `Service Key` or `Authentication Key`. Value depends on a provider service profile,
* more information on [Equinix Fabric how to guide](https://developer.equinix.com/docs/ecx-how-to-guide).
*/
readonly authorizationKey: pulumi.Output<string>;
/**
* Applicable with `deviceUuid`, identifier of network interface
* on a given device, used for a connection. If not specified then first available interface will be
* selected.
*/
readonly deviceInterfaceId: pulumi.Output<number | undefined>;
/**
* Unique identifier of
* the Network Edge virtual device from which the connection would originate.
*/
readonly deviceUuid: pulumi.Output<string | undefined>;
/**
* additional information key
*/
readonly name: pulumi.Output<string>;
/**
* The type of peering to set up when connecting to Azure Express Route.
* Valid values: `PRIVATE`, `MICROSOFT`, `MANUAL`\*, `PUBLIC`\*.
*/
readonly namedTag: pulumi.Output<string | undefined>;
/**
* A list of email addresses used for sending connection update
* notifications.
*/
readonly notifications: pulumi.Output<string[]>;
/**
* Unique identifier of
* the Equinix Fabric Port from which the connection would originate.
*/
readonly portUuid: pulumi.Output<string>;
/**
* Unique identifier of the service provider's profile.
*/
readonly profileUuid: pulumi.Output<string>;
/**
* Connection provisioning status on service provider's side.
*/
readonly providerStatus: pulumi.Output<string>;
/**
* Connection's purchase order number to reflect on the invoice
*/
readonly purchaseOrderNumber: pulumi.Output<string | undefined>;
/**
* Unique identifier of group containing a primary and secondary connection.
*/
readonly redundancyGroup: pulumi.Output<string>;
/**
* Connection redundancy type, applicable for HA connections. Valid values are
* `PRIMARY`, `SECONDARY`.
*/
readonly redundancyType: pulumi.Output<string>;
/**
* Unique identifier of the redundant connection, applicable for HA connections.
*/
readonly redundantUuid: pulumi.Output<string>;
/**
* Definition of secondary connection for redundant, HA
* connectivity. See Secondary Connection below for more details.
*/
readonly secondaryConnection: pulumi.Output<outputs.ECXL2ConnectionSecondaryConnection | undefined>;
/**
* The metro code that denotes the connection’s remote/destination
* side (z-side).
*/
readonly sellerMetroCode: pulumi.Output<string>;
/**
* The region in which the seller port resides.
*/
readonly sellerRegion: pulumi.Output<string | undefined>;
/**
* - A-side
* service tokens authorize you to create a connection from a customer port, which created the token
* for you, to a service profile or your own port.
* More details in [A-Side Fabric Service Tokens](https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm#:~:text=the%20service%20token.-,A%2DSide%20Service%20Tokens,-If%20you%20want).
*/
readonly serviceToken: pulumi.Output<string | undefined>;
/**
* Speed/Bandwidth to be allocated to the connection.
*/
readonly speed: pulumi.Output<number>;
/**
* Unit of the speed/bandwidth to be allocated to the connection.
*/
readonly speedUnit: pulumi.Output<string>;
/**
* Connection provisioning status on Equinix Fabric side.
*/
readonly status: pulumi.Output<string>;
/**
* Unique identifier of the connection.
*/
readonly uuid: pulumi.Output<string>;
/**
* The Equinix Fabric Token the connection was created with. Applicable if the
* connection was created with a `serviceToken` (a-side) or `zsideServiceToken` (z-side).
* * `secondaryConnection`:
* * `zsidePortUuid`
* * `zsideVlanStag`
* * `zsideVlanCtag`
* * `redundancyType`
* * `redundancyGroup`
* * `vendorToken`
*/
readonly vendorToken: pulumi.Output<string>;
/**
* C-Tag/Inner-Tag of the connection - a numeric character ranging from 2
* \- 4094.
*/
readonly vlanCtag: pulumi.Output<number | undefined>;
/**
* S-Tag/Outer-Tag of the connection - a numeric
* character ranging from 2 - 4094.
*/
readonly vlanStag: pulumi.Output<number>;
/**
* Unique identifier of the port on the remote/destination side
* (z-side). Allows you to connect between your own ports or virtual devices across your company's
* Equinix Fabric deployment, with no need for a private service profile.
*/
readonly zsidePortUuid: pulumi.Output<string>;
/**
* - Z-side
* service tokens authorize you to create a connection from your port or virtual device to a customer
* port which created the token for you. `zsideServiceToken` cannot be used with `secondaryConnection`.
* More details in [Z-Side Fabric Service Tokens](https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm#:~:text=requirements%20per%20provider.-,Z%2DSide%20Service%20Tokens,-If%20you%20want).
*/
readonly zsideServiceToken: pulumi.Output<string | undefined>;
/**
* C-Tag/Inner-Tag of the connection on the remote/destination
* side (z-side) - a numeric character ranging from 2 - 4094.
* `secondaryConnection` is defined it will internally use same `zsideVlanCtag` for the secondary
* connection.
*/
readonly zsideVlanCtag: pulumi.Output<number>;
/**
* S-Tag/Outer-Tag of the connection on the remote/destination
* side (z-side) - a numeric character ranging from 2 - 4094.
*/
readonly zsideVlanStag: pulumi.Output<number>;
/**
* Create a ECXL2Connection 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: ECXL2ConnectionArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering ECXL2Connection resources.
*/
export interface ECXL2ConnectionState {
/**
* One or more pending actions to complete connection provisioning.
*/
actions?: pulumi.Input<pulumi.Input<inputs.ECXL2ConnectionAction>[]>;
/**
* one or more additional information key-value objects
*/
additionalInfos?: pulumi.Input<pulumi.Input<inputs.ECXL2ConnectionAdditionalInfo>[]>;
/**
* Unique identifier authorizing Equinix to provision a connection
* towards a cloud service provider. At Equinix, an `Authorization Key` is a generic term and is NOT
* encrypted on Equinix Fabric. Cloud Service Providers might use a different name to refer to this
* key such as `Service Key` or `Authentication Key`. Value depends on a provider service profile,
* more information on [Equinix Fabric how to guide](https://developer.equinix.com/docs/ecx-how-to-guide).
*/
authorizationKey?: pulumi.Input<string>;
/**
* Applicable with `deviceUuid`, identifier of network interface
* on a given device, used for a connection. If not specified then first available interface will be
* selected.
*/
deviceInterfaceId?: pulumi.Input<number>;
/**
* Unique identifier of
* the Network Edge virtual device from which the connection would originate.
*/
deviceUuid?: pulumi.Input<string>;
/**
* additional information key
*/
name?: pulumi.Input<string>;
/**
* The type of peering to set up when connecting to Azure Express Route.
* Valid values: `PRIVATE`, `MICROSOFT`, `MANUAL`\*, `PUBLIC`\*.
*/
namedTag?: pulumi.Input<string>;
/**
* A list of email addresses used for sending connection update
* notifications.
*/
notifications?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Unique identifier of
* the Equinix Fabric Port from which the connection would originate.
*/
portUuid?: pulumi.Input<string>;
/**
* Unique identifier of the service provider's profile.
*/
profileUuid?: pulumi.Input<string>;
/**
* Connection provisioning status on service provider's side.
*/
providerStatus?: pulumi.Input<string>;
/**
* Connection's purchase order number to reflect on the invoice
*/
purchaseOrderNumber?: pulumi.Input<string>;
/**
* Unique identifier of group containing a primary and secondary connection.
*/
redundancyGroup?: pulumi.Input<string>;
/**
* Connection redundancy type, applicable for HA connections. Valid values are
* `PRIMARY`, `SECONDARY`.
*/
redundancyType?: pulumi.Input<string>;
/**
* Unique identifier of the redundant connection, applicable for HA connections.
*/
redundantUuid?: pulumi.Input<string>;
/**
* Definition of secondary connection for redundant, HA
* connectivity. See Secondary Connection below for more details.
*/
secondaryConnection?: pulumi.Input<inputs.ECXL2ConnectionSecondaryConnection>;
/**
* The metro code that denotes the connection’s remote/destination
* side (z-side).
*/
sellerMetroCode?: pulumi.Input<string>;
/**
* The region in which the seller port resides.
*/
sellerRegion?: pulumi.Input<string>;
/**
* - A-side
* service tokens authorize you to create a connection from a customer port, which created the token
* for you, to a service profile or your own port.
* More details in [A-Side Fabric Service Tokens](https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm#:~:text=the%20service%20token.-,A%2DSide%20Service%20Tokens,-If%20you%20want).
*/
serviceToken?: pulumi.Input<string>;
/**
* Speed/Bandwidth to be allocated to the connection.
*/
speed?: pulumi.Input<number>;
/**
* Unit of the speed/bandwidth to be allocated to the connection.
*/
speedUnit?: pulumi.Input<string>;
/**
* Connection provisioning status on Equinix Fabric side.
*/
status?: pulumi.Input<string>;
/**
* Unique identifier of the connection.
*/
uuid?: pulumi.Input<string>;
/**
* The Equinix Fabric Token the connection was created with. Applicable if the
* connection was created with a `serviceToken` (a-side) or `zsideServiceToken` (z-side).
* * `secondaryConnection`:
* * `zsidePortUuid`
* * `zsideVlanStag`
* * `zsideVlanCtag`
* * `redundancyType`
* * `redundancyGroup`
* * `vendorToken`
*/
vendorToken?: pulumi.Input<string>;
/**
* C-Tag/Inner-Tag of the connection - a numeric character ranging from 2
* \- 4094.
*/
vlanCtag?: pulumi.Input<number>;
/**
* S-Tag/Outer-Tag of the connection - a numeric
* character ranging from 2 - 4094.
*/
vlanStag?: pulumi.Input<number>;
/**
* Unique identifier of the port on the remote/destination side
* (z-side). Allows you to connect between your own ports or virtual devices across your company's
* Equinix Fabric deployment, with no need for a private service profile.
*/
zsidePortUuid?: pulumi.Input<string>;
/**
* - Z-side
* service tokens authorize you to create a connection from your port or virtual device to a customer
* port which created the token for you. `zsideServiceToken` cannot be used with `secondaryConnection`.
* More details in [Z-Side Fabric Service Tokens](https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm#:~:text=requirements%20per%20provider.-,Z%2DSide%20Service%20Tokens,-If%20you%20want).
*/
zsideServiceToken?: pulumi.Input<string>;
/**
* C-Tag/Inner-Tag of the connection on the remote/destination
* side (z-side) - a numeric character ranging from 2 - 4094.
* `secondaryConnection` is defined it will internally use same `zsideVlanCtag` for the secondary
* connection.
*/
zsideVlanCtag?: pulumi.Input<number>;
/**
* S-Tag/Outer-Tag of the connection on the remote/destination
* side (z-side) - a numeric character ranging from 2 - 4094.
*/
zsideVlanStag?: pulumi.Input<number>;
}
/**
* The set of arguments for constructing a ECXL2Connection resource.
*/
export interface ECXL2ConnectionArgs {
/**
* one or more additional information key-value objects
*/
additionalInfos?: pulumi.Input<pulumi.Input<inputs.ECXL2ConnectionAdditionalInfo>[]>;
/**
* Unique identifier authorizing Equinix to provision a connection
* towards a cloud service provider. At Equinix, an `Authorization Key` is a generic term and is NOT
* encrypted on Equinix Fabric. Cloud Service Providers might use a different name to refer to this
* key such as `Service Key` or `Authentication Key`. Value depends on a provider service profile,
* more information on [Equinix Fabric how to guide](https://developer.equinix.com/docs/ecx-how-to-guide).
*/
authorizationKey?: pulumi.Input<string>;
/**
* Applicable with `deviceUuid`, identifier of network interface
* on a given device, used for a connection. If not specified then first available interface will be
* selected.
*/
deviceInterfaceId?: pulumi.Input<number>;
/**
* Unique identifier of
* the Network Edge virtual device from which the connection would originate.
*/
deviceUuid?: pulumi.Input<string>;
/**
* additional information key
*/
name?: pulumi.Input<string>;
/**
* The type of peering to set up when connecting to Azure Express Route.
* Valid values: `PRIVATE`, `MICROSOFT`, `MANUAL`\*, `PUBLIC`\*.
*/
namedTag?: pulumi.Input<string>;
/**
* A list of email addresses used for sending connection update
* notifications.
*/
notifications: pulumi.Input<pulumi.Input<string>[]>;
/**
* Unique identifier of
* the Equinix Fabric Port from which the connection would originate.
*/
portUuid?: pulumi.Input<string>;
/**
* Unique identifier of the service provider's profile.
*/
profileUuid?: pulumi.Input<string>;
/**
* Connection's purchase order number to reflect on the invoice
*/
purchaseOrderNumber?: pulumi.Input<string>;
/**
* Definition of secondary connection for redundant, HA
* connectivity. See Secondary Connection below for more details.
*/
secondaryConnection?: pulumi.Input<inputs.ECXL2ConnectionSecondaryConnection>;
/**
* The metro code that denotes the connection’s remote/destination
* side (z-side).
*/
sellerMetroCode?: pulumi.Input<string>;
/**
* The region in which the seller port resides.
*/
sellerRegion?: pulumi.Input<string>;
/**
* - A-side
* service tokens authorize you to create a connection from a customer port, which created the token
* for you, to a service profile or your own port.
* More details in [A-Side Fabric Service Tokens](https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm#:~:text=the%20service%20token.-,A%2DSide%20Service%20Tokens,-If%20you%20want).
*/
serviceToken?: pulumi.Input<string>;
/**
* Speed/Bandwidth to be allocated to the connection.
*/
speed: pulumi.Input<number>;
/**
* Unit of the speed/bandwidth to be allocated to the connection.
*/
speedUnit: pulumi.Input<string>;
/**
* C-Tag/Inner-Tag of the connection - a numeric character ranging from 2
* \- 4094.
*/
vlanCtag?: pulumi.Input<number>;
/**
* S-Tag/Outer-Tag of the connection - a numeric
* character ranging from 2 - 4094.
*/
vlanStag?: pulumi.Input<number>;
/**
* Unique identifier of the port on the remote/destination side
* (z-side). Allows you to connect between your own ports or virtual devices across your company's
* Equinix Fabric deployment, with no need for a private service profile.
*/
zsidePortUuid?: pulumi.Input<string>;
/**
* - Z-side
* service tokens authorize you to create a connection from your port or virtual device to a customer
* port which created the token for you. `zsideServiceToken` cannot be used with `secondaryConnection`.
* More details in [Z-Side Fabric Service Tokens](https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm#:~:text=requirements%20per%20provider.-,Z%2DSide%20Service%20Tokens,-If%20you%20want).
*/
zsideServiceToken?: pulumi.Input<string>;
/**
* C-Tag/Inner-Tag of the connection on the remote/destination
* side (z-side) - a numeric character ranging from 2 - 4094.
* `secondaryConnection` is defined it will internally use same `zsideVlanCtag` for the secondary
* connection.
*/
zsideVlanCtag?: pulumi.Input<number>;
/**
* S-Tag/Outer-Tag of the connection on the remote/destination
* side (z-side) - a numeric character ranging from 2 - 4094.
*/
zsideVlanStag?: pulumi.Input<number>;
}