Skip to content

Commit

Permalink
Add Fabric Cloud Router and routing protocol terraform provider (#362)
Browse files Browse the repository at this point in the history
- Adds new Fabric resources and datasources:
  - equinix_fabric_cloud_router
  - equinix_fabric_routingprotocol


- Updates Fabric-go SDK version from v0.4.0(Fabric API v4.4) to
v0.6.0(Fabric API v4.9)
- Fabric API spec v.49 can be found at -
https://app.swaggerhub.com/apis/equinix-api/fabric/4.9
- Replaces Datasource equinix_fabric_connection type attribute value
GW_VC with IP_VC
- Replaces Equinix Fabric Gateway with Equinix Fabric Cloud router
- Includes terraform examples for the above 2 providers and all the
related documentation updated
- All related changes are listed on the release notes documented on the
below link as part of June 2023 and Aug 2023 releases -
https://developer.equinix.com/dev-docs/fabric/release-notes

---------

Signed-off-by: Manu Bhat <[email protected]>
Co-authored-by: Sabrina Wong <[email protected]>
Co-authored-by: Cindy Bai <[email protected]>
Co-authored-by: Sabrina Wong <[email protected]>
Co-authored-by: Tim Hogarty <[email protected]>
  • Loading branch information
5 people authored Aug 29, 2023
1 parent 9eb6c28 commit 1709c24
Show file tree
Hide file tree
Showing 52 changed files with 3,793 additions and 138 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
*.dll
*.exe
*.terraform.lock.hcl
.DS_Store
example.tf
terraform.tfplan
Expand Down
128 changes: 128 additions & 0 deletions docs/data-sources/equinix_fabric_cloud_router.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "equinix_fabric_cloud_router Data Source - terraform-provider-equinix"
subcategory: ""
description: |-
Fabric V4 API compatible data resource that allow user to fetch Fabric Cloud Router for a given UUID
~> Note Equinix Fabric v4 resources and datasources are currently in Beta. The interfaces related to equinix_fabric_ resources and datasources may change ahead of general availability. Please, do not hesitate to report any problems that you experience by opening a new issue https://github.com/equinix/terraform-provider-equinix/issues/new?template=bug.md
---

# equinix_fabric_clouder_router (Data Source)

Fabric V4 API compatible data resource that allow user to fetch Fabric Cloud Router for a given UUID

~> **Note** Equinix Fabric v4 resources and datasources are currently in Beta. The interfaces related to `equinix_fabric_` resources and datasources may change ahead of general availability. Please, do not hesitate to report any problems that you experience by opening a new [issue](https://github.com/equinix/terraform-provider-equinix/issues/new?template=bug.md)

API documentation can be found here - https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#fabric-cloud-routers


<!-- schema generated by tfplugindocs -->
## Schema

### Optional

- `uuid` (String) Equinix-assigned Fabric Cloud Router identifier

### Read-Only

- `account` (Set of Object) Customer account information that is associated with this Fabric Cloud Router (see [below for nested schema](#nestedatt--account))
- `bgp_ipv4_routes_count` (Number)
- `bgp_ipv6_routes_count` (Number)
- `change_log` (Set of Object) Captures Fabric Cloud Router lifecycle change information (see [below for nested schema](#nestedatt--change_log))
- `connections_count` (Number)
- `description` (String) Customer-provided Fabric Cloud Router description
- `equinix_asn` (Number) Equinix ASN
- `href` (String) Fabric Cloud Router URI information
- `id` (String) The ID of this resource.
- `location` (Set of Object) Fabric Cloud Router location (see [below for nested schema](#nestedatt--location))
- `name` (String) Fabric Cloud Router name. An alpha-numeric 24 characters string which can include only hyphens and underscores
- `notifications` (List of Object) Preferences for notifications on Fabric Cloud Router configuration or status changes (see [below for nested schema](#nestedatt--notifications))
- `order` (Set of Object) Order information related to this Fabric Cloud Router (see [below for nested schema](#nestedatt--order))
- `package` (Set of Object) Fabric Cloud Router package information (see [below for nested schema](#nestedatt--package))
- `project` (Block Set) Project information (see [below for nested schema](#nestedblock--project))
- `state` (String) Fabric Cloud Router overall state
- `type` (String) Defines the Fabric Cloud Router type like XF_GATEWAY

<a id="nestedatt--account"></a>
### Nested Schema for `account`

Read-Only:

- `account_name` (String)
- `account_number` (Number)
- `global_cust_id` (String)
- `global_org_id` (String)
- `global_organization_name` (String)
- `org_id` (Number)
- `organization_name` (String)


<a id="nestedatt--change_log"></a>
### Nested Schema for `change_log`

Read-Only:

- `created_by` (String)
- `created_by_email` (String)
- `created_by_full_name` (String)
- `created_date_time` (String)
- `deleted_by` (String)
- `deleted_by_email` (String)
- `deleted_by_full_name` (String)
- `deleted_date_time` (String)
- `updated_by` (String)
- `updated_by_email` (String)
- `updated_by_full_name` (String)
- `updated_date_time` (String)


<a id="nestedatt--location"></a>
### Nested Schema for `location`

Read-Only:

- `href` (String)
- `ibx` (String)
- `metro_code` (String)
- `metro_name` (String)
- `region` (String)


<a id="nestedatt--notifications"></a>
### Nested Schema for `notifications`

Read-Only:

- `emails` (List of String)
- `send_interval` (String)
- `type` (String)


<a id="nestedatt--order"></a>
### Nested Schema for `order`

Read-Only:

- `billing_tier` (String)
- `order_id` (String)
- `order_number` (String)
- `purchase_order_number` (String)


<a id="nestedatt--package"></a>
### Nested Schema for `package`

Read-Only:

- `code` (String)


<a id="nestedblock--project"></a>
### Nested Schema for `project`

Read-Only:

- `href` (String) Unique Resource URL
- `project_id` (String) Project Id


16 changes: 9 additions & 7 deletions docs/data-sources/equinix_fabric_connection.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Fabric V4 API compatible data resource that allow user to fetch connection for a
- `project` (Block Set) Project information (see [below for nested schema](#nestedblock--project))
- `redundancy` (Set of Object) Redundancy Information (see [below for nested schema](#nestedatt--redundancy))
- `state` (String) Connection overall state
- `type` (String) Defines the connection type like VG_VC, EVPL_VC, EPL_VC, EC_VC, GW_VC, ACCESS_EPL_VC
- `type` (String) Defines the connection type like VG_VC, EVPL_VC, EPL_VC, EC_VC, IP_VC, ACCESS_EPL_VC
- `z_side` (Set of Object) Destination or Provider side connection configuration object of the multi-segment connection (see [below for nested schema](#nestedatt--z_side))

<a id="nestedatt--a_side"></a>
Expand All @@ -59,7 +59,8 @@ Read-Only:

- `account` (Set of Object) (see [below for nested schema](#nestedobjatt--a_side--access_point--account))
- `authentication_key` (String)
- `gateway` (Set of Object) (see [below for nested schema](#nestedobjatt--a_side--access_point--gateway))
- **Deprecated** `gateway` Use `router` instead (Set of Object) (see [below for nested schema](#nestedobjatt--a_side--access_point--router))
- `router` CloudRouter; Replaces `gateway` attribute (Set of Object) (see [below for nested schema](#nestedobjatt--a_side--access_point--router))
- `interface` (Set of Object) (see [below for nested schema](#nestedobjatt--a_side--access_point--interface))
- `link_protocol` (Set of Object) (see [below for nested schema](#nestedobjatt--a_side--access_point--link_protocol))
- `location` (Set of Object) (see [below for nested schema](#nestedobjatt--a_side--access_point--location))
Expand All @@ -85,8 +86,8 @@ Read-Only:
- `organization_name` (String)


<a id="nestedobjatt--a_side--access_point--gateway"></a>
### Nested Schema for `a_side.access_point.gateway`
<a id="nestedobjatt--a_side--access_point--router"></a>
### Nested Schema for `a_side.access_point.router`

Read-Only:

Expand Down Expand Up @@ -366,7 +367,8 @@ Read-Only:

- `account` (Set of Object) (see [below for nested schema](#nestedobjatt--z_side--access_point--account))
- `authentication_key` (String)
- `gateway` (Set of Object) (see [below for nested schema](#nestedobjatt--z_side--access_point--gateway))
- **Deprecated** `gateway` Use `router` instead (Set of Object) (see [below for nested schema](#nestedobjatt--z_side--access_point--router))
- `router` CloudRouter; Replaces `gateway` attribute (Set of Object) (see [below for nested schema](#nestedobjatt--z_side--access_point--router))
- `interface` (Set of Object) (see [below for nested schema](#nestedobjatt--z_side--access_point--interface))
- `link_protocol` (Set of Object) (see [below for nested schema](#nestedobjatt--z_side--access_point--link_protocol))
- `location` (Set of Object) (see [below for nested schema](#nestedobjatt--z_side--access_point--location))
Expand All @@ -392,8 +394,8 @@ Read-Only:
- `organization_name` (String)


<a id="nestedobjatt--z_side--access_point--gateway"></a>
### Nested Schema for `z_side.access_point.gateway`
<a id="nestedobjatt--z_side--access_point--router"></a>
### Nested Schema for `z_side.access_point.router`

Read-Only:

Expand Down
165 changes: 165 additions & 0 deletions docs/data-sources/equinix_fabric_routing_protocol.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "equinix_fabric_routing_protocol Data Source - terraform-provider-equinix"
subcategory: "Fabric"
description: |-
Fabric V4 API compatible data resource that allow user to fetch routing protocol for a given UUID
~> Note Equinix Fabric v4 resources and datasources are currently in Beta. The interfaces related to equinix_fabric_ resources and datasources may change ahead of general availability. Please, do not hesitate to report any problems that you experience by opening a new issue https://github.com/equinix/terraform-provider-equinix/issues/new?template=bug.md
---

# equinix_fabric_routing_protocol (Data Source)

Fabric V4 API compatible data resource that allow user to fetch routing protocol for a given UUID

~> **Note** Equinix Fabric v4 resources and datasources are currently in Beta. The interfaces related to `equinix_fabric_` resources and datasources may change ahead of general availability. Please, do not hesitate to report any problems that you experience by opening a new [issue](https://github.com/equinix/terraform-provider-equinix/issues/new?template=bug.md)

API documentation can be found here - https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#routing-protocols

<!-- schema generated by tfplugindocs -->
## Schema

### Required

- `connection_uuid` (String) Connection URI associated with Routing Protocol

### Optional

- `bfd` (Block Set) Bidirectional Forwarding Detection (see [below for nested schema](#nestedblock--bfd))
- `bgp_auth_key` (String) BGP authorization key
- `bgp_ipv4` (Block Set) Routing Protocol BGP IPv4 (see [below for nested schema](#nestedblock--bgp_ipv4))
- `bgp_ipv6` (Block Set) Routing Protocol BGP IPv6 (see [below for nested schema](#nestedblock--bgp_ipv6))
- `customer_asn` (Number) Customer-provided ASN
- `description` (String) Customer-provided Fabric Routing Protocol description
- `direct_ipv4` (Block Set) Routing Protocol Direct IPv4 (see [below for nested schema](#nestedblock--direct_ipv4))
- `direct_ipv6` (Block Set) Routing Protocol Direct IPv6 (see [below for nested schema](#nestedblock--direct_ipv6))
- `name` (String) Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores
- `type` (String) Defines the routing protocol type like BGP or DIRECT
- `uuid` (String) Equinix-assigned routing protocol identifier

### Read-Only

- `change` (Set of Object) Routing Protocol configuration Changes (see [below for nested schema](#nestedatt--change))
- `change_log` (Set of Object) Captures Routing Protocol lifecycle change information (see [below for nested schema](#nestedatt--change_log))
- `equinix_asn` (Number) Equinix ASN
- `href` (String) Routing Protocol URI information
- `id` (String) The ID of this resource.
- `operation` (Set of Object) Routing Protocol type-specific operational data (see [below for nested schema](#nestedatt--operation))
- `state` (String) Routing Protocol overall state

<a id="nestedblock--bfd"></a>
### Nested Schema for `bfd`

Required:

- `enabled` (Boolean) Bidirectional Forwarding Detection enablement

Optional:

- `interval` (String) Interval range between the received BFD control packets


<a id="nestedblock--bgp_ipv4"></a>
### Nested Schema for `bgp_ipv4`

Required:

- `customer_peer_ip` (String) Customer side peering ip

Optional:

- `enabled` (Boolean) Admin status for the BGP session

Read-Only:

- `equinix_peer_ip` (String) Equinix side peering ip


<a id="nestedblock--bgp_ipv6"></a>
### Nested Schema for `bgp_ipv6`

Required:

- `customer_peer_ip` (String) Customer side peering ip

Optional:

- `enabled` (Boolean) Admin status for the BGP session

Read-Only:

- `equinix_peer_ip` (String) Equinix side peering ip


<a id="nestedblock--direct_ipv4"></a>
### Nested Schema for `direct_ipv4`

Required:

- `equinix_iface_ip` (String) Equinix side Interface IP address


<a id="nestedblock--direct_ipv6"></a>
### Nested Schema for `direct_ipv6`

Optional:

- `equinix_iface_ip` (String) Equinix side Interface IP address


<a id="nestedatt--change"></a>
### Nested Schema for `change`

Read-Only:

- `href` (String)
- `type` (String)
- `uuid` (String)


<a id="nestedatt--change_log"></a>
### Nested Schema for `change_log`

Read-Only:

- `created_by` (String)
- `created_by_email` (String)
- `created_by_full_name` (String)
- `created_date_time` (String)
- `deleted_by` (String)
- `deleted_by_email` (String)
- `deleted_by_full_name` (String)
- `deleted_date_time` (String)
- `updated_by` (String)
- `updated_by_email` (String)
- `updated_by_full_name` (String)
- `updated_date_time` (String)


<a id="nestedatt--operation"></a>
### Nested Schema for `operation`

Read-Only:

- `errors` (List of Object) (see [below for nested schema](#nestedobjatt--operation--errors))

<a id="nestedobjatt--operation--errors"></a>
### Nested Schema for `operation.errors`

Read-Only:

- `additional_info` (List of Object) (see [below for nested schema](#nestedobjatt--operation--errors--additional_info))
- `correlation_id` (String)
- `details` (String)
- `error_code` (String)
- `error_message` (String)
- `help` (String)

<a id="nestedobjatt--operation--errors--additional_info"></a>
### Nested Schema for `operation.errors.additional_info`

Read-Only:

- `property` (String)
- `reason` (String)


Loading

0 comments on commit 1709c24

Please sign in to comment.