UNPKG

@cuemby/equinix

Version:

A Pulumi package for creating and managing equinix cloud resources.

596 lines (595 loc) 24 kB
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>; }