diff --git a/Makefile b/Makefile index 07ff053..53f6051 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ GOLANGCILINT_VERSION ?= 1.50.0 export TERRAFORM_VERSION := 1.3.1 export TERRAFORM_PROVIDER_SOURCE := equinix/equinix -export TERRAFORM_PROVIDER_VERSION := 1.13.0 +export TERRAFORM_PROVIDER_VERSION := 1.18.0 export TERRAFORM_PROVIDER_DOWNLOAD_NAME := terraform-provider-equinix export TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX := https://releases.hashicorp.com/${TERRAFORM_PROVIDER_DOWNLOAD_NAME}/${TERRAFORM_PROVIDER_VERSION} export TERRAFORM_NATIVE_PROVIDER_BINARY := ${TERRAFORM_PROVIDER_DOWNLOAD_NAME}_v${TERRAFORM_PROVIDER_VERSION} @@ -120,6 +120,10 @@ pull-docs: git clone -c advice.detachedHead=false --depth 1 --filter=blob:none --branch "v$(TERRAFORM_PROVIDER_VERSION)" --sparse "$(TERRAFORM_PROVIDER_REPO)" "$(WORK_DIR)/$(TERRAFORM_PROVIDER_SOURCE)"; \ fi @git -C "$(WORK_DIR)/$(TERRAFORM_PROVIDER_SOURCE)" sparse-checkout set "$(TERRAFORM_DOCS_PATH)" + @echo "Removing examples known to cause parser errors for examples-generated" + @rm -f "$(WORK_DIR)/$(TERRAFORM_PROVIDER_SOURCE)/$(TERRAFORM_DOCS_PATH)/equinix_metal_port_vlan_attachment.md" + + generate.init: $(TERRAFORM_PROVIDER_SCHEMA) pull-docs generate.init: $(TERRAFORM_PROVIDER_SCHEMA) pull-docs diff --git a/apis/fabric/v1alpha1/zz_cloudrouter_types.go b/apis/fabric/v1alpha1/zz_cloudrouter_types.go new file mode 100755 index 0000000..cf106aa --- /dev/null +++ b/apis/fabric/v1alpha1/zz_cloudrouter_types.go @@ -0,0 +1,258 @@ +/* +Copyright 2021 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AccountObservation struct { +} + +type AccountParameters struct { + + // Account Number + // +kubebuilder:validation:Optional + AccountNumber *float64 `json:"accountNumber,omitempty" tf:"account_number,omitempty"` +} + +type ChangeLogObservation struct { + CreatedBy *string `json:"createdBy,omitempty" tf:"created_by,omitempty"` + + CreatedByEmail *string `json:"createdByEmail,omitempty" tf:"created_by_email,omitempty"` + + CreatedByFullName *string `json:"createdByFullName,omitempty" tf:"created_by_full_name,omitempty"` + + CreatedDateTime *string `json:"createdDateTime,omitempty" tf:"created_date_time,omitempty"` + + DeletedBy *string `json:"deletedBy,omitempty" tf:"deleted_by,omitempty"` + + DeletedByEmail *string `json:"deletedByEmail,omitempty" tf:"deleted_by_email,omitempty"` + + DeletedByFullName *string `json:"deletedByFullName,omitempty" tf:"deleted_by_full_name,omitempty"` + + DeletedDateTime *string `json:"deletedDateTime,omitempty" tf:"deleted_date_time,omitempty"` + + UpdatedBy *string `json:"updatedBy,omitempty" tf:"updated_by,omitempty"` + + UpdatedByEmail *string `json:"updatedByEmail,omitempty" tf:"updated_by_email,omitempty"` + + UpdatedByFullName *string `json:"updatedByFullName,omitempty" tf:"updated_by_full_name,omitempty"` + + UpdatedDateTime *string `json:"updatedDateTime,omitempty" tf:"updated_date_time,omitempty"` +} + +type ChangeLogParameters struct { +} + +type CloudRouterObservation struct { + + // Captures Fabric Cloud Router lifecycle change information + ChangeLog []ChangeLogObservation `json:"changeLog,omitempty" tf:"change_log,omitempty"` + + // Equinix ASN + EquinixAsn *float64 `json:"equinixAsn,omitempty" tf:"equinix_asn,omitempty"` + + // Fabric Cloud Router URI information + Href *string `json:"href,omitempty" tf:"href,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // Order information related to this Fabric Cloud Router + // +kubebuilder:validation:Optional + Order []OrderObservation `json:"order,omitempty" tf:"order,omitempty"` + + // Fabric Cloud Router overall state + State *string `json:"state,omitempty" tf:"state,omitempty"` +} + +type CloudRouterParameters struct { + + // Customer account information that is associated with this Fabric Cloud Router + // +kubebuilder:validation:Optional + Account []AccountParameters `json:"account,omitempty" tf:"account,omitempty"` + + // Customer-provided Fabric Cloud Router description + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // Fabric Cloud Router location + // +kubebuilder:validation:Required + Location []LocationParameters `json:"location" tf:"location,omitempty"` + + // Fabric Cloud Router name. An alpha-numeric 24 characters string which can include only hyphens and underscores + // +kubebuilder:validation:Required + Name *string `json:"name" tf:"name,omitempty"` + + // Preferences for notifications on Fabric Cloud Router configuration or status changes + // +kubebuilder:validation:Required + Notifications []NotificationsParameters `json:"notifications" tf:"notifications,omitempty"` + + // Order information related to this Fabric Cloud Router + // +kubebuilder:validation:Optional + Order []OrderParameters `json:"order,omitempty" tf:"order,omitempty"` + + // Fabric Cloud Router location + // +kubebuilder:validation:Required + Package []PackageParameters `json:"package" tf:"package,omitempty"` + + // Fabric Cloud Router project + // +kubebuilder:validation:Optional + Project []ProjectParameters `json:"project,omitempty" tf:"project,omitempty"` + + // Defines the FCR type like XF_ROUTER + // +kubebuilder:validation:Required + Type *string `json:"type" tf:"type,omitempty"` +} + +type LocationObservation struct { +} + +type LocationParameters struct { + + // IBX Code + // +kubebuilder:validation:Optional + Ibx *string `json:"ibx,omitempty" tf:"ibx,omitempty"` + + // Access point metro code + // +kubebuilder:validation:Optional + MetroCode *string `json:"metroCode,omitempty" tf:"metro_code,omitempty"` + + // Access point metro name + // +kubebuilder:validation:Optional + MetroName *string `json:"metroName,omitempty" tf:"metro_name,omitempty"` + + // Access point region + // +kubebuilder:validation:Optional + Region *string `json:"region,omitempty" tf:"region,omitempty"` +} + +type NotificationsObservation struct { +} + +type NotificationsParameters struct { + + // Array of contact emails + // +kubebuilder:validation:Required + Emails []*string `json:"emails" tf:"emails,omitempty"` + + // Send interval + // +kubebuilder:validation:Optional + SendInterval *string `json:"sendInterval,omitempty" tf:"send_interval,omitempty"` + + // Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS + // +kubebuilder:validation:Required + Type *string `json:"type" tf:"type,omitempty"` +} + +type OrderObservation struct { + + // Order Identification + OrderID *string `json:"orderId,omitempty" tf:"order_id,omitempty"` + + // Order Reference Number + OrderNumber *string `json:"orderNumber,omitempty" tf:"order_number,omitempty"` +} + +type OrderParameters struct { + + // Billing tier for connection bandwidth + // +kubebuilder:validation:Optional + BillingTier *string `json:"billingTier,omitempty" tf:"billing_tier,omitempty"` + + // Purchase order number + // +kubebuilder:validation:Optional + PurchaseOrderNumber *string `json:"purchaseOrderNumber,omitempty" tf:"purchase_order_number,omitempty"` +} + +type PackageObservation struct { +} + +type PackageParameters struct { + + // Fabric Cloud Router package code + // +kubebuilder:validation:Required + Code *string `json:"code" tf:"code,omitempty"` +} + +type ProjectObservation struct { +} + +type ProjectParameters struct { + + // Unique Resource URL + // +kubebuilder:validation:Optional + Href *string `json:"href,omitempty" tf:"href,omitempty"` + + // Project Id + // +kubebuilder:validation:Optional + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` +} + +// CloudRouterSpec defines the desired state of CloudRouter +type CloudRouterSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider CloudRouterParameters `json:"forProvider"` +} + +// CloudRouterStatus defines the observed state of CloudRouter. +type CloudRouterStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider CloudRouterObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// CloudRouter is the Schema for the CloudRouters API. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinix} +type CloudRouter struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec CloudRouterSpec `json:"spec"` + Status CloudRouterStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// CloudRouterList contains a list of CloudRouters +type CloudRouterList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []CloudRouter `json:"items"` +} + +// Repository type metadata. +var ( + CloudRouter_Kind = "CloudRouter" + CloudRouter_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: CloudRouter_Kind}.String() + CloudRouter_KindAPIVersion = CloudRouter_Kind + "." + CRDGroupVersion.String() + CloudRouter_GroupVersionKind = CRDGroupVersion.WithKind(CloudRouter_Kind) +) + +func init() { + SchemeBuilder.Register(&CloudRouter{}, &CloudRouterList{}) +} diff --git a/apis/fabric/v1alpha1/zz_connection_types.go b/apis/fabric/v1alpha1/zz_connection_types.go index 85fa2f0..f11399c 100755 --- a/apis/fabric/v1alpha1/zz_connection_types.go +++ b/apis/fabric/v1alpha1/zz_connection_types.go @@ -52,18 +52,26 @@ type ASideParameters struct { } type AccessPointAccountObservation struct { + + // Account Name AccountName *string `json:"accountName,omitempty" tf:"account_name,omitempty"` + // Account Number AccountNumber *float64 `json:"accountNumber,omitempty" tf:"account_number,omitempty"` + // Global Customer organization identifier GlobalCustID *string `json:"globalCustId,omitempty" tf:"global_cust_id,omitempty"` + // Global organization identifier GlobalOrgID *string `json:"globalOrgId,omitempty" tf:"global_org_id,omitempty"` + // Global organization name GlobalOrganizationName *string `json:"globalOrganizationName,omitempty" tf:"global_organization_name,omitempty"` + // Customer organization identifier OrgID *float64 `json:"orgId,omitempty" tf:"org_id,omitempty"` + // Customer organization name OrganizationName *string `json:"organizationName,omitempty" tf:"organization_name,omitempty"` } @@ -144,12 +152,26 @@ type AccessPointLocationParameters struct { Region *string `json:"region,omitempty" tf:"region,omitempty"` } +type AccessPointNetworkObservation struct { + + // Unique Resource Identifier + Href *string `json:"href,omitempty" tf:"href,omitempty"` +} + +type AccessPointNetworkParameters struct { + + // Equinix-assigned Network identifier + // +kubebuilder:validation:Optional + UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` +} + type AccessPointObservation struct { // Account - Account []AccountObservation `json:"account,omitempty" tf:"account,omitempty"` + // +kubebuilder:validation:Optional + Account []AccessPointAccountObservation `json:"account,omitempty" tf:"account,omitempty"` - // Gateway access point information + // Cloud Router access point information // +kubebuilder:validation:Optional Gateway []GatewayObservation `json:"gateway,omitempty" tf:"gateway,omitempty"` @@ -157,6 +179,10 @@ type AccessPointObservation struct { // +kubebuilder:validation:Optional Interface []InterfaceObservation `json:"interface,omitempty" tf:"interface,omitempty"` + // network access point information + // +kubebuilder:validation:Optional + Network []NetworkObservation `json:"network,omitempty" tf:"network,omitempty"` + // Port access point information // +kubebuilder:validation:Optional Port []PortObservation `json:"port,omitempty" tf:"port,omitempty"` @@ -165,6 +191,10 @@ type AccessPointObservation struct { // +kubebuilder:validation:Optional Profile []ProfileObservation `json:"profile,omitempty" tf:"profile,omitempty"` + // Cloud Router access point information + // +kubebuilder:validation:Optional + Router []RouterObservation `json:"router,omitempty" tf:"router,omitempty"` + // Virtual device // +kubebuilder:validation:Optional VirtualDevice []VirtualDeviceObservation `json:"virtualDevice,omitempty" tf:"virtual_device,omitempty"` @@ -172,11 +202,15 @@ type AccessPointObservation struct { type AccessPointParameters struct { + // Account + // +kubebuilder:validation:Optional + Account []AccessPointAccountParameters `json:"account,omitempty" tf:"account,omitempty"` + // Authentication key for provider based connections // +kubebuilder:validation:Optional AuthenticationKey *string `json:"authenticationKey,omitempty" tf:"authentication_key,omitempty"` - // Gateway access point information + // Cloud Router access point information // +kubebuilder:validation:Optional Gateway []GatewayParameters `json:"gateway,omitempty" tf:"gateway,omitempty"` @@ -190,7 +224,11 @@ type AccessPointParameters struct { // Access point location // +kubebuilder:validation:Optional - Location []LocationParameters `json:"location,omitempty" tf:"location,omitempty"` + Location []AccessPointLocationParameters `json:"location,omitempty" tf:"location,omitempty"` + + // network access point information + // +kubebuilder:validation:Optional + Network []NetworkParameters `json:"network,omitempty" tf:"network,omitempty"` // Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL // +kubebuilder:validation:Optional @@ -208,6 +246,10 @@ type AccessPointParameters struct { // +kubebuilder:validation:Optional ProviderConnectionID *string `json:"providerConnectionId,omitempty" tf:"provider_connection_id,omitempty"` + // Cloud Router access point information + // +kubebuilder:validation:Optional + Router []RouterParameters `json:"router,omitempty" tf:"router,omitempty"` + // Access point routing protocols configuration // +kubebuilder:validation:Optional RoutingProtocols []RoutingProtocolsParameters `json:"routingProtocols,omitempty" tf:"routing_protocols,omitempty"` @@ -216,7 +258,7 @@ type AccessPointParameters struct { // +kubebuilder:validation:Optional SellerRegion *string `json:"sellerRegion,omitempty" tf:"seller_region,omitempty"` - // Access point type - COLO, VD, VG, SP, IGW, SUBNET, GW + // Access point type - COLO, VD, VG, SP, IGW, SUBNET, CLOUD_ROUTER, NETWORK // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` @@ -270,6 +312,19 @@ type AccessPointProfileParameters struct { UUID *string `json:"uuid" tf:"uuid,omitempty"` } +type AccessPointRouterObservation struct { + + // Unique Resource Identifier + Href *string `json:"href,omitempty" tf:"href,omitempty"` +} + +type AccessPointRouterParameters struct { + + // Equinix-assigned virtual gateway identifier + // +kubebuilder:validation:Optional + UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` +} + type AccessPointRoutingProtocolsObservation struct { } @@ -314,7 +369,21 @@ type AccessPointVirtualDeviceParameters struct { UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` } -type AccountObservation struct { +type AdditionalInfoObservation struct { +} + +type AdditionalInfoParameters struct { + + // Additional information key + // +kubebuilder:validation:Optional + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // Additional information value + // +kubebuilder:validation:Optional + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type ConnectionAccountObservation struct { AccountName *string `json:"accountName,omitempty" tf:"account_name,omitempty"` AccountNumber *float64 `json:"accountNumber,omitempty" tf:"account_number,omitempty"` @@ -330,24 +399,10 @@ type AccountObservation struct { OrganizationName *string `json:"organizationName,omitempty" tf:"organization_name,omitempty"` } -type AccountParameters struct { -} - -type AdditionalInfoObservation struct { -} - -type AdditionalInfoParameters struct { - - // Additional information key - // +kubebuilder:validation:Optional - Key *string `json:"key,omitempty" tf:"key,omitempty"` - - // Additional information value - // +kubebuilder:validation:Optional - Value *string `json:"value,omitempty" tf:"value,omitempty"` +type ConnectionAccountParameters struct { } -type ChangeLogObservation struct { +type ConnectionChangeLogObservation struct { CreatedBy *string `json:"createdBy,omitempty" tf:"created_by,omitempty"` CreatedByEmail *string `json:"createdByEmail,omitempty" tf:"created_by_email,omitempty"` @@ -373,40 +428,25 @@ type ChangeLogObservation struct { UpdatedDateTime *string `json:"updatedDateTime,omitempty" tf:"updated_date_time,omitempty"` } -type ChangeLogParameters struct { -} - -type ConnectionAccountObservation struct { - AccountName *string `json:"accountName,omitempty" tf:"account_name,omitempty"` - - AccountNumber *float64 `json:"accountNumber,omitempty" tf:"account_number,omitempty"` - - GlobalCustID *string `json:"globalCustId,omitempty" tf:"global_cust_id,omitempty"` - - GlobalOrgID *string `json:"globalOrgId,omitempty" tf:"global_org_id,omitempty"` - - GlobalOrganizationName *string `json:"globalOrganizationName,omitempty" tf:"global_organization_name,omitempty"` - - OrgID *float64 `json:"orgId,omitempty" tf:"org_id,omitempty"` - - OrganizationName *string `json:"organizationName,omitempty" tf:"organization_name,omitempty"` +type ConnectionChangeLogParameters struct { } -type ConnectionAccountParameters struct { +type ConnectionNotificationsObservation struct { } -type ConnectionAdditionalInfoObservation struct { -} +type ConnectionNotificationsParameters struct { -type ConnectionAdditionalInfoParameters struct { + // Array of contact emails + // +kubebuilder:validation:Required + Emails []*string `json:"emails" tf:"emails,omitempty"` - // Additional information key + // Send interval // +kubebuilder:validation:Optional - Key *string `json:"key,omitempty" tf:"key,omitempty"` + SendInterval *string `json:"sendInterval,omitempty" tf:"send_interval,omitempty"` - // Additional information value - // +kubebuilder:validation:Optional - Value *string `json:"value,omitempty" tf:"value,omitempty"` + // Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS + // +kubebuilder:validation:Required + Type *string `json:"type" tf:"type,omitempty"` } type ConnectionObservation struct { @@ -419,7 +459,7 @@ type ConnectionObservation struct { Account []ConnectionAccountObservation `json:"account,omitempty" tf:"account,omitempty"` // Captures connection lifecycle change information - ChangeLog []ChangeLogObservation `json:"changeLog,omitempty" tf:"change_log,omitempty"` + ChangeLog []ConnectionChangeLogObservation `json:"changeLog,omitempty" tf:"change_log,omitempty"` // Connection directionality from the requester point of view Direction *string `json:"direction,omitempty" tf:"direction,omitempty"` @@ -437,15 +477,11 @@ type ConnectionObservation struct { // Order related to this connection information // +kubebuilder:validation:Optional - Order []OrderObservation `json:"order,omitempty" tf:"order,omitempty"` + Order []ConnectionOrderObservation `json:"order,omitempty" tf:"order,omitempty"` // Project information // +kubebuilder:validation:Optional - Project []ProjectObservation `json:"project,omitempty" tf:"project,omitempty"` - - // Redundancy Information - // +kubebuilder:validation:Optional - Redundancy []ConnectionRedundancyObservation `json:"redundancy,omitempty" tf:"redundancy,omitempty"` + Project []ConnectionProjectObservation `json:"project,omitempty" tf:"project,omitempty"` // Connection overall state State *string `json:"state,omitempty" tf:"state,omitempty"` @@ -455,6 +491,26 @@ type ConnectionObservation struct { ZSide []ZSideObservation `json:"zSide,omitempty" tf:"z_side,omitempty"` } +type ConnectionOrderObservation struct { + + // Order Identification + OrderID *string `json:"orderId,omitempty" tf:"order_id,omitempty"` + + // Order Reference Number + OrderNumber *string `json:"orderNumber,omitempty" tf:"order_number,omitempty"` +} + +type ConnectionOrderParameters struct { + + // Billing tier for connection bandwidth + // +kubebuilder:validation:Optional + BillingTier *string `json:"billingTier,omitempty" tf:"billing_tier,omitempty"` + + // Purchase order number + // +kubebuilder:validation:Optional + PurchaseOrderNumber *string `json:"purchaseOrderNumber,omitempty" tf:"purchase_order_number,omitempty"` +} + type ConnectionParameters struct { // Requester or Customer side connection configuration object of the multi-segment connection @@ -463,7 +519,7 @@ type ConnectionParameters struct { // Connection additional information // +kubebuilder:validation:Optional - AdditionalInfo []ConnectionAdditionalInfoParameters `json:"additionalInfo,omitempty" tf:"additional_info,omitempty"` + AdditionalInfo []map[string]*string `json:"additionalInfo,omitempty" tf:"additional_info,omitempty"` // Connection bandwidth in Mbps // +kubebuilder:validation:Required @@ -475,21 +531,21 @@ type ConnectionParameters struct { // Preferences for notifications on connection configuration or status changes // +kubebuilder:validation:Required - Notifications []NotificationsParameters `json:"notifications" tf:"notifications,omitempty"` + Notifications []ConnectionNotificationsParameters `json:"notifications" tf:"notifications,omitempty"` // Order related to this connection information // +kubebuilder:validation:Optional - Order []OrderParameters `json:"order,omitempty" tf:"order,omitempty"` + Order []ConnectionOrderParameters `json:"order,omitempty" tf:"order,omitempty"` // Project information // +kubebuilder:validation:Optional - Project []ProjectParameters `json:"project,omitempty" tf:"project,omitempty"` + Project []ConnectionProjectParameters `json:"project,omitempty" tf:"project,omitempty"` // Redundancy Information // +kubebuilder:validation:Optional Redundancy []ConnectionRedundancyParameters `json:"redundancy,omitempty" tf:"redundancy,omitempty"` - // Defines the connection type like VG_VC, EVPL_VC, EPL_VC, EC_VC, GW_VC, ACCESS_EPL_VC + // Defines the connection type like VG_VC, EVPL_VC, EPL_VC, EC_VC, IP_VC, IPWAN_VC,ACCESS_EPL_VC // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` @@ -498,14 +554,27 @@ type ConnectionParameters struct { ZSide []ZSideParameters `json:"zSide" tf:"z_side,omitempty"` } -type ConnectionRedundancyObservation struct { +type ConnectionProjectObservation struct { - // Redundancy group identifier - Group *string `json:"group,omitempty" tf:"group,omitempty"` + // Unique Resource URL + Href *string `json:"href,omitempty" tf:"href,omitempty"` + + // Project Id + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` +} + +type ConnectionProjectParameters struct { +} + +type ConnectionRedundancyObservation struct { } type ConnectionRedundancyParameters struct { + // Redundancy group identifier + // +kubebuilder:validation:Optional + Group *string `json:"group,omitempty" tf:"group,omitempty"` + // Priority type- PRIMARY, SECONDARY // +kubebuilder:validation:Optional Priority *string `json:"priority,omitempty" tf:"priority,omitempty"` @@ -589,44 +658,17 @@ type LinkProtocolParameters struct { VlanTag *float64 `json:"vlanTag,omitempty" tf:"vlan_tag,omitempty"` } -type LocationObservation struct { -} - -type LocationParameters struct { - - // IBX Code - // +kubebuilder:validation:Optional - Ibx *string `json:"ibx,omitempty" tf:"ibx,omitempty"` - - // Access point metro code - // +kubebuilder:validation:Optional - MetroCode *string `json:"metroCode,omitempty" tf:"metro_code,omitempty"` - - // Access point metro name - // +kubebuilder:validation:Optional - MetroName *string `json:"metroName,omitempty" tf:"metro_name,omitempty"` - - // Access point region - // +kubebuilder:validation:Optional - Region *string `json:"region,omitempty" tf:"region,omitempty"` -} +type NetworkObservation struct { -type NotificationsObservation struct { + // Unique Resource Identifier + Href *string `json:"href,omitempty" tf:"href,omitempty"` } -type NotificationsParameters struct { - - // Array of contact emails - // +kubebuilder:validation:Required - Emails []*string `json:"emails" tf:"emails,omitempty"` +type NetworkParameters struct { - // Send interval + // Equinix-assigned Network identifier // +kubebuilder:validation:Optional - SendInterval *string `json:"sendInterval,omitempty" tf:"send_interval,omitempty"` - - // Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS - // +kubebuilder:validation:Required - Type *string `json:"type" tf:"type,omitempty"` + UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` } type OperationObservation struct { @@ -640,26 +682,6 @@ type OperationObservation struct { type OperationParameters struct { } -type OrderObservation struct { - - // Order Identification - OrderID *string `json:"orderId,omitempty" tf:"order_id,omitempty"` - - // Order Reference Number - OrderNumber *string `json:"orderNumber,omitempty" tf:"order_number,omitempty"` -} - -type OrderParameters struct { - - // Billing tier for connection bandwidth - // +kubebuilder:validation:Optional - BillingTier *string `json:"billingTier,omitempty" tf:"billing_tier,omitempty"` - - // Purchase order number - // +kubebuilder:validation:Optional - PurchaseOrderNumber *string `json:"purchaseOrderNumber,omitempty" tf:"purchase_order_number,omitempty"` -} - type PortObservation struct { // Unique Resource Identifier @@ -721,23 +743,24 @@ type ProfileParameters struct { UUID *string `json:"uuid" tf:"uuid,omitempty"` } -type ProjectObservation struct { - - // Unique Resource URL - Href *string `json:"href,omitempty" tf:"href,omitempty"` - - // Project Id - ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` +type RedundancyObservation struct { + Priority *string `json:"priority,omitempty" tf:"priority,omitempty"` } -type ProjectParameters struct { +type RedundancyParameters struct { } -type RedundancyObservation struct { - Priority *string `json:"priority,omitempty" tf:"priority,omitempty"` +type RouterObservation struct { + + // Unique Resource Identifier + Href *string `json:"href,omitempty" tf:"href,omitempty"` } -type RedundancyParameters struct { +type RouterParameters struct { + + // Equinix-assigned virtual gateway identifier + // +kubebuilder:validation:Optional + UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` } type RoutingProtocolsObservation struct { @@ -795,12 +818,62 @@ type VirtualDeviceParameters struct { UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` } +type ZSideAccessPointAccountObservation struct { + + // Account Name + AccountName *string `json:"accountName,omitempty" tf:"account_name,omitempty"` + + // Account Number + AccountNumber *float64 `json:"accountNumber,omitempty" tf:"account_number,omitempty"` + + // Global Customer organization identifier + GlobalCustID *string `json:"globalCustId,omitempty" tf:"global_cust_id,omitempty"` + + // Global organization identifier + GlobalOrgID *string `json:"globalOrgId,omitempty" tf:"global_org_id,omitempty"` + + // Global organization name + GlobalOrganizationName *string `json:"globalOrganizationName,omitempty" tf:"global_organization_name,omitempty"` + + // Customer organization identifier + OrgID *float64 `json:"orgId,omitempty" tf:"org_id,omitempty"` + + // Customer organization name + OrganizationName *string `json:"organizationName,omitempty" tf:"organization_name,omitempty"` +} + +type ZSideAccessPointAccountParameters struct { +} + +type ZSideAccessPointLocationObservation struct { +} + +type ZSideAccessPointLocationParameters struct { + + // IBX Code + // +kubebuilder:validation:Optional + Ibx *string `json:"ibx,omitempty" tf:"ibx,omitempty"` + + // Access point metro code + // +kubebuilder:validation:Optional + MetroCode *string `json:"metroCode,omitempty" tf:"metro_code,omitempty"` + + // Access point metro name + // +kubebuilder:validation:Optional + MetroName *string `json:"metroName,omitempty" tf:"metro_name,omitempty"` + + // Access point region + // +kubebuilder:validation:Optional + Region *string `json:"region,omitempty" tf:"region,omitempty"` +} + type ZSideAccessPointObservation struct { // Account - Account []AccessPointAccountObservation `json:"account,omitempty" tf:"account,omitempty"` + // +kubebuilder:validation:Optional + Account []ZSideAccessPointAccountObservation `json:"account,omitempty" tf:"account,omitempty"` - // Gateway access point information + // Cloud Router access point information // +kubebuilder:validation:Optional Gateway []AccessPointGatewayObservation `json:"gateway,omitempty" tf:"gateway,omitempty"` @@ -808,6 +881,10 @@ type ZSideAccessPointObservation struct { // +kubebuilder:validation:Optional Interface []AccessPointInterfaceObservation `json:"interface,omitempty" tf:"interface,omitempty"` + // network access point information + // +kubebuilder:validation:Optional + Network []AccessPointNetworkObservation `json:"network,omitempty" tf:"network,omitempty"` + // Port access point information // +kubebuilder:validation:Optional Port []AccessPointPortObservation `json:"port,omitempty" tf:"port,omitempty"` @@ -816,6 +893,10 @@ type ZSideAccessPointObservation struct { // +kubebuilder:validation:Optional Profile []AccessPointProfileObservation `json:"profile,omitempty" tf:"profile,omitempty"` + // Cloud Router access point information + // +kubebuilder:validation:Optional + Router []AccessPointRouterObservation `json:"router,omitempty" tf:"router,omitempty"` + // Virtual device // +kubebuilder:validation:Optional VirtualDevice []AccessPointVirtualDeviceObservation `json:"virtualDevice,omitempty" tf:"virtual_device,omitempty"` @@ -823,11 +904,15 @@ type ZSideAccessPointObservation struct { type ZSideAccessPointParameters struct { + // Account + // +kubebuilder:validation:Optional + Account []ZSideAccessPointAccountParameters `json:"account,omitempty" tf:"account,omitempty"` + // Authentication key for provider based connections // +kubebuilder:validation:Optional AuthenticationKey *string `json:"authenticationKey,omitempty" tf:"authentication_key,omitempty"` - // Gateway access point information + // Cloud Router access point information // +kubebuilder:validation:Optional Gateway []AccessPointGatewayParameters `json:"gateway,omitempty" tf:"gateway,omitempty"` @@ -841,7 +926,11 @@ type ZSideAccessPointParameters struct { // Access point location // +kubebuilder:validation:Optional - Location []AccessPointLocationParameters `json:"location,omitempty" tf:"location,omitempty"` + Location []ZSideAccessPointLocationParameters `json:"location,omitempty" tf:"location,omitempty"` + + // network access point information + // +kubebuilder:validation:Optional + Network []AccessPointNetworkParameters `json:"network,omitempty" tf:"network,omitempty"` // Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL // +kubebuilder:validation:Optional @@ -859,6 +948,10 @@ type ZSideAccessPointParameters struct { // +kubebuilder:validation:Optional ProviderConnectionID *string `json:"providerConnectionId,omitempty" tf:"provider_connection_id,omitempty"` + // Cloud Router access point information + // +kubebuilder:validation:Optional + Router []AccessPointRouterParameters `json:"router,omitempty" tf:"router,omitempty"` + // Access point routing protocols configuration // +kubebuilder:validation:Optional RoutingProtocols []AccessPointRoutingProtocolsParameters `json:"routingProtocols,omitempty" tf:"routing_protocols,omitempty"` @@ -867,7 +960,7 @@ type ZSideAccessPointParameters struct { // +kubebuilder:validation:Optional SellerRegion *string `json:"sellerRegion,omitempty" tf:"seller_region,omitempty"` - // Access point type - COLO, VD, VG, SP, IGW, SUBNET, GW + // Access point type - COLO, VD, VG, SP, IGW, SUBNET, CLOUD_ROUTER, NETWORK // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` diff --git a/apis/fabric/v1alpha1/zz_generated.deepcopy.go b/apis/fabric/v1alpha1/zz_generated.deepcopy.go index 9aa531d..55dd4a7 100644 --- a/apis/fabric/v1alpha1/zz_generated.deepcopy.go +++ b/apis/fabric/v1alpha1/zz_generated.deepcopy.go @@ -405,12 +405,52 @@ func (in *AccessPointLocationParameters) DeepCopy() *AccessPointLocationParamete return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AccessPointNetworkObservation) DeepCopyInto(out *AccessPointNetworkObservation) { + *out = *in + if in.Href != nil { + in, out := &in.Href, &out.Href + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessPointNetworkObservation. +func (in *AccessPointNetworkObservation) DeepCopy() *AccessPointNetworkObservation { + if in == nil { + return nil + } + out := new(AccessPointNetworkObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AccessPointNetworkParameters) DeepCopyInto(out *AccessPointNetworkParameters) { + *out = *in + if in.UUID != nil { + in, out := &in.UUID, &out.UUID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessPointNetworkParameters. +func (in *AccessPointNetworkParameters) DeepCopy() *AccessPointNetworkParameters { + if in == nil { + return nil + } + out := new(AccessPointNetworkParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AccessPointObservation) DeepCopyInto(out *AccessPointObservation) { *out = *in if in.Account != nil { in, out := &in.Account, &out.Account - *out = make([]AccountObservation, len(*in)) + *out = make([]AccessPointAccountObservation, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -429,6 +469,13 @@ func (in *AccessPointObservation) DeepCopyInto(out *AccessPointObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = make([]NetworkObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Port != nil { in, out := &in.Port, &out.Port *out = make([]PortObservation, len(*in)) @@ -443,6 +490,13 @@ func (in *AccessPointObservation) DeepCopyInto(out *AccessPointObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Router != nil { + in, out := &in.Router, &out.Router + *out = make([]RouterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.VirtualDevice != nil { in, out := &in.VirtualDevice, &out.VirtualDevice *out = make([]VirtualDeviceObservation, len(*in)) @@ -465,6 +519,11 @@ func (in *AccessPointObservation) DeepCopy() *AccessPointObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AccessPointParameters) DeepCopyInto(out *AccessPointParameters) { *out = *in + if in.Account != nil { + in, out := &in.Account, &out.Account + *out = make([]AccessPointAccountParameters, len(*in)) + copy(*out, *in) + } if in.AuthenticationKey != nil { in, out := &in.AuthenticationKey, &out.AuthenticationKey *out = new(string) @@ -493,7 +552,14 @@ func (in *AccessPointParameters) DeepCopyInto(out *AccessPointParameters) { } if in.Location != nil { in, out := &in.Location, &out.Location - *out = make([]LocationParameters, len(*in)) + *out = make([]AccessPointLocationParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = make([]NetworkParameters, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -522,6 +588,13 @@ func (in *AccessPointParameters) DeepCopyInto(out *AccessPointParameters) { *out = new(string) **out = **in } + if in.Router != nil { + in, out := &in.Router, &out.Router + *out = make([]RouterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.RoutingProtocols != nil { in, out := &in.RoutingProtocols, &out.RoutingProtocols *out = make([]RoutingProtocolsParameters, len(*in)) @@ -672,6 +745,46 @@ func (in *AccessPointProfileParameters) DeepCopy() *AccessPointProfileParameters return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AccessPointRouterObservation) DeepCopyInto(out *AccessPointRouterObservation) { + *out = *in + if in.Href != nil { + in, out := &in.Href, &out.Href + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessPointRouterObservation. +func (in *AccessPointRouterObservation) DeepCopy() *AccessPointRouterObservation { + if in == nil { + return nil + } + out := new(AccessPointRouterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AccessPointRouterParameters) DeepCopyInto(out *AccessPointRouterParameters) { + *out = *in + if in.UUID != nil { + in, out := &in.UUID, &out.UUID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessPointRouterParameters. +func (in *AccessPointRouterParameters) DeepCopy() *AccessPointRouterParameters { + if in == nil { + return nil + } + out := new(AccessPointRouterParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AccessPointRoutingProtocolsObservation) DeepCopyInto(out *AccessPointRoutingProtocolsObservation) { *out = *in @@ -805,41 +918,6 @@ func (in *AccessPointVirtualDeviceParameters) DeepCopy() *AccessPointVirtualDevi // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AccountObservation) DeepCopyInto(out *AccountObservation) { *out = *in - if in.AccountName != nil { - in, out := &in.AccountName, &out.AccountName - *out = new(string) - **out = **in - } - if in.AccountNumber != nil { - in, out := &in.AccountNumber, &out.AccountNumber - *out = new(float64) - **out = **in - } - if in.GlobalCustID != nil { - in, out := &in.GlobalCustID, &out.GlobalCustID - *out = new(string) - **out = **in - } - if in.GlobalOrgID != nil { - in, out := &in.GlobalOrgID, &out.GlobalOrgID - *out = new(string) - **out = **in - } - if in.GlobalOrganizationName != nil { - in, out := &in.GlobalOrganizationName, &out.GlobalOrganizationName - *out = new(string) - **out = **in - } - if in.OrgID != nil { - in, out := &in.OrgID, &out.OrgID - *out = new(float64) - **out = **in - } - if in.OrganizationName != nil { - in, out := &in.OrganizationName, &out.OrganizationName - *out = new(string) - **out = **in - } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccountObservation. @@ -855,6 +933,11 @@ func (in *AccountObservation) DeepCopy() *AccountObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AccountParameters) DeepCopyInto(out *AccountParameters) { *out = *in + if in.AccountNumber != nil { + in, out := &in.AccountNumber, &out.AccountNumber + *out = new(float64) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccountParameters. @@ -952,6 +1035,136 @@ func (in *AuthenticationKeyParameters) DeepCopy() *AuthenticationKeyParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BGPIPv4Observation) DeepCopyInto(out *BGPIPv4Observation) { + *out = *in + if in.EquinixPeerIP != nil { + in, out := &in.EquinixPeerIP, &out.EquinixPeerIP + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPIPv4Observation. +func (in *BGPIPv4Observation) DeepCopy() *BGPIPv4Observation { + if in == nil { + return nil + } + out := new(BGPIPv4Observation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BGPIPv4Parameters) DeepCopyInto(out *BGPIPv4Parameters) { + *out = *in + if in.CustomerPeerIP != nil { + in, out := &in.CustomerPeerIP, &out.CustomerPeerIP + *out = new(string) + **out = **in + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPIPv4Parameters. +func (in *BGPIPv4Parameters) DeepCopy() *BGPIPv4Parameters { + if in == nil { + return nil + } + out := new(BGPIPv4Parameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BGPIPv6Observation) DeepCopyInto(out *BGPIPv6Observation) { + *out = *in + if in.EquinixPeerIP != nil { + in, out := &in.EquinixPeerIP, &out.EquinixPeerIP + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPIPv6Observation. +func (in *BGPIPv6Observation) DeepCopy() *BGPIPv6Observation { + if in == nil { + return nil + } + out := new(BGPIPv6Observation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BGPIPv6Parameters) DeepCopyInto(out *BGPIPv6Parameters) { + *out = *in + if in.CustomerPeerIP != nil { + in, out := &in.CustomerPeerIP, &out.CustomerPeerIP + *out = new(string) + **out = **in + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BGPIPv6Parameters. +func (in *BGPIPv6Parameters) DeepCopy() *BGPIPv6Parameters { + if in == nil { + return nil + } + out := new(BGPIPv6Parameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BfdObservation) DeepCopyInto(out *BfdObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BfdObservation. +func (in *BfdObservation) DeepCopy() *BfdObservation { + if in == nil { + return nil + } + out := new(BfdObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BfdParameters) DeepCopyInto(out *BfdParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Interval != nil { + in, out := &in.Interval, &out.Interval + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BfdParameters. +func (in *BfdParameters) DeepCopy() *BfdParameters { + if in == nil { + return nil + } + out := new(BfdParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ChangeLogObservation) DeepCopyInto(out *ChangeLogObservation) { *out = *in @@ -1043,163 +1256,103 @@ func (in *ChangeLogParameters) DeepCopy() *ChangeLogParameters { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Connection) DeepCopyInto(out *Connection) { +func (in *ChangeObservation) DeepCopyInto(out *ChangeObservation) { *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) + if in.Href != nil { + in, out := &in.Href, &out.Href + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.UUID != nil { + in, out := &in.UUID, &out.UUID + *out = new(string) + **out = **in + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Connection. -func (in *Connection) DeepCopy() *Connection { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChangeObservation. +func (in *ChangeObservation) DeepCopy() *ChangeObservation { if in == nil { return nil } - out := new(Connection) + out := new(ChangeObservation) in.DeepCopyInto(out) return out } -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Connection) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ChangeParameters) DeepCopyInto(out *ChangeParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChangeParameters. +func (in *ChangeParameters) DeepCopy() *ChangeParameters { + if in == nil { + return nil } - return nil + out := new(ChangeParameters) + in.DeepCopyInto(out) + return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConnectionAccountObservation) DeepCopyInto(out *ConnectionAccountObservation) { - *out = *in - if in.AccountName != nil { - in, out := &in.AccountName, &out.AccountName - *out = new(string) - **out = **in - } - if in.AccountNumber != nil { - in, out := &in.AccountNumber, &out.AccountNumber - *out = new(float64) - **out = **in - } - if in.GlobalCustID != nil { - in, out := &in.GlobalCustID, &out.GlobalCustID - *out = new(string) - **out = **in - } - if in.GlobalOrgID != nil { - in, out := &in.GlobalOrgID, &out.GlobalOrgID - *out = new(string) - **out = **in - } - if in.GlobalOrganizationName != nil { - in, out := &in.GlobalOrganizationName, &out.GlobalOrganizationName - *out = new(string) - **out = **in - } - if in.OrgID != nil { - in, out := &in.OrgID, &out.OrgID - *out = new(float64) - **out = **in - } - if in.OrganizationName != nil { - in, out := &in.OrganizationName, &out.OrganizationName - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionAccountObservation. -func (in *ConnectionAccountObservation) DeepCopy() *ConnectionAccountObservation { - if in == nil { - return nil - } - out := new(ConnectionAccountObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConnectionAccountParameters) DeepCopyInto(out *ConnectionAccountParameters) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionAccountParameters. -func (in *ConnectionAccountParameters) DeepCopy() *ConnectionAccountParameters { - if in == nil { - return nil - } - out := new(ConnectionAccountParameters) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConnectionAdditionalInfoObservation) DeepCopyInto(out *ConnectionAdditionalInfoObservation) { +func (in *CloudRouter) DeepCopyInto(out *CloudRouter) { *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionAdditionalInfoObservation. -func (in *ConnectionAdditionalInfoObservation) DeepCopy() *ConnectionAdditionalInfoObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudRouter. +func (in *CloudRouter) DeepCopy() *CloudRouter { if in == nil { return nil } - out := new(ConnectionAdditionalInfoObservation) + out := new(CloudRouter) in.DeepCopyInto(out) return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConnectionAdditionalInfoParameters) DeepCopyInto(out *ConnectionAdditionalInfoParameters) { - *out = *in - if in.Key != nil { - in, out := &in.Key, &out.Key - *out = new(string) - **out = **in - } - if in.Value != nil { - in, out := &in.Value, &out.Value - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionAdditionalInfoParameters. -func (in *ConnectionAdditionalInfoParameters) DeepCopy() *ConnectionAdditionalInfoParameters { - if in == nil { - return nil +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CloudRouter) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c } - out := new(ConnectionAdditionalInfoParameters) - in.DeepCopyInto(out) - return out + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConnectionList) DeepCopyInto(out *ConnectionList) { +func (in *CloudRouterList) DeepCopyInto(out *CloudRouterList) { *out = *in out.TypeMeta = in.TypeMeta in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items - *out = make([]Connection, len(*in)) + *out = make([]CloudRouter, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionList. -func (in *ConnectionList) DeepCopy() *ConnectionList { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudRouterList. +func (in *CloudRouterList) DeepCopy() *CloudRouterList { if in == nil { return nil } - out := new(ConnectionList) + out := new(CloudRouterList) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *ConnectionList) DeepCopyObject() runtime.Object { +func (in *CloudRouterList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -1207,22 +1360,8 @@ func (in *ConnectionList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConnectionObservation) DeepCopyInto(out *ConnectionObservation) { +func (in *CloudRouterObservation) DeepCopyInto(out *CloudRouterObservation) { *out = *in - if in.ASide != nil { - in, out := &in.ASide, &out.ASide - *out = make([]ASideObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Account != nil { - in, out := &in.Account, &out.Account - *out = make([]ConnectionAccountObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ChangeLog != nil { in, out := &in.ChangeLog, &out.ChangeLog *out = make([]ChangeLogObservation, len(*in)) @@ -1230,9 +1369,9 @@ func (in *ConnectionObservation) DeepCopyInto(out *ConnectionObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.Direction != nil { - in, out := &in.Direction, &out.Direction - *out = new(string) + if in.EquinixAsn != nil { + in, out := &in.EquinixAsn, &out.EquinixAsn + *out = new(float64) **out = **in } if in.Href != nil { @@ -1245,18 +1384,6 @@ func (in *ConnectionObservation) DeepCopyInto(out *ConnectionObservation) { *out = new(string) **out = **in } - if in.IsRemote != nil { - in, out := &in.IsRemote, &out.IsRemote - *out = new(bool) - **out = **in - } - if in.Operation != nil { - in, out := &in.Operation, &out.Operation - *out = make([]OperationObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.Order != nil { in, out := &in.Order, &out.Order *out = make([]OrderObservation, len(*in)) @@ -1264,66 +1391,45 @@ func (in *ConnectionObservation) DeepCopyInto(out *ConnectionObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.Project != nil { - in, out := &in.Project, &out.Project - *out = make([]ProjectObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Redundancy != nil { - in, out := &in.Redundancy, &out.Redundancy - *out = make([]ConnectionRedundancyObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.State != nil { in, out := &in.State, &out.State *out = new(string) **out = **in } - if in.ZSide != nil { - in, out := &in.ZSide, &out.ZSide - *out = make([]ZSideObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionObservation. -func (in *ConnectionObservation) DeepCopy() *ConnectionObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudRouterObservation. +func (in *CloudRouterObservation) DeepCopy() *CloudRouterObservation { if in == nil { return nil } - out := new(ConnectionObservation) + out := new(CloudRouterObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConnectionParameters) DeepCopyInto(out *ConnectionParameters) { +func (in *CloudRouterParameters) DeepCopyInto(out *CloudRouterParameters) { *out = *in - if in.ASide != nil { - in, out := &in.ASide, &out.ASide - *out = make([]ASideParameters, len(*in)) + if in.Account != nil { + in, out := &in.Account, &out.Account + *out = make([]AccountParameters, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.AdditionalInfo != nil { - in, out := &in.AdditionalInfo, &out.AdditionalInfo - *out = make([]ConnectionAdditionalInfoParameters, len(*in)) + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = make([]LocationParameters, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.Bandwidth != nil { - in, out := &in.Bandwidth, &out.Bandwidth - *out = new(float64) - **out = **in - } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -1343,14 +1449,16 @@ func (in *ConnectionParameters) DeepCopyInto(out *ConnectionParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Package != nil { + in, out := &in.Package, &out.Package + *out = make([]PackageParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Project != nil { in, out := &in.Project, &out.Project *out = make([]ProjectParameters, len(*in)) - copy(*out, *in) - } - if in.Redundancy != nil { - in, out := &in.Redundancy, &out.Redundancy - *out = make([]ConnectionRedundancyParameters, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -1360,139 +1468,1312 @@ func (in *ConnectionParameters) DeepCopyInto(out *ConnectionParameters) { *out = new(string) **out = **in } - if in.ZSide != nil { - in, out := &in.ZSide, &out.ZSide - *out = make([]ZSideParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionParameters. -func (in *ConnectionParameters) DeepCopy() *ConnectionParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudRouterParameters. +func (in *CloudRouterParameters) DeepCopy() *CloudRouterParameters { if in == nil { return nil } - out := new(ConnectionParameters) + out := new(CloudRouterParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConnectionRedundancyObservation) DeepCopyInto(out *ConnectionRedundancyObservation) { +func (in *CloudRouterSpec) DeepCopyInto(out *CloudRouterSpec) { *out = *in - if in.Group != nil { - in, out := &in.Group, &out.Group - *out = new(string) - **out = **in - } + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionRedundancyObservation. -func (in *ConnectionRedundancyObservation) DeepCopy() *ConnectionRedundancyObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudRouterSpec. +func (in *CloudRouterSpec) DeepCopy() *CloudRouterSpec { if in == nil { return nil } - out := new(ConnectionRedundancyObservation) + out := new(CloudRouterSpec) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConnectionRedundancyParameters) DeepCopyInto(out *ConnectionRedundancyParameters) { +func (in *CloudRouterStatus) DeepCopyInto(out *CloudRouterStatus) { *out = *in - if in.Priority != nil { - in, out := &in.Priority, &out.Priority - *out = new(string) - **out = **in - } + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionRedundancyParameters. -func (in *ConnectionRedundancyParameters) DeepCopy() *ConnectionRedundancyParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudRouterStatus. +func (in *CloudRouterStatus) DeepCopy() *CloudRouterStatus { if in == nil { return nil } - out := new(ConnectionRedundancyParameters) + out := new(CloudRouterStatus) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConnectionSpec) DeepCopyInto(out *ConnectionSpec) { +func (in *Connection) DeepCopyInto(out *Connection) { *out = *in - in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) - in.ForProvider.DeepCopyInto(&out.ForProvider) + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionSpec. -func (in *ConnectionSpec) DeepCopy() *ConnectionSpec { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Connection. +func (in *Connection) DeepCopy() *Connection { if in == nil { return nil } - out := new(ConnectionSpec) + out := new(Connection) in.DeepCopyInto(out) return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConnectionStatus) DeepCopyInto(out *ConnectionStatus) { - *out = *in - in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) - in.AtProvider.DeepCopyInto(&out.AtProvider) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionStatus. -func (in *ConnectionStatus) DeepCopy() *ConnectionStatus { - if in == nil { - return nil +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Connection) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c } - out := new(ConnectionStatus) - in.DeepCopyInto(out) - return out + return nil } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *CustomFieldsObservation) DeepCopyInto(out *CustomFieldsObservation) { +func (in *ConnectionAccountObservation) DeepCopyInto(out *ConnectionAccountObservation) { *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomFieldsObservation. -func (in *CustomFieldsObservation) DeepCopy() *CustomFieldsObservation { - if in == nil { - return nil + if in.AccountName != nil { + in, out := &in.AccountName, &out.AccountName + *out = new(string) + **out = **in } - out := new(CustomFieldsObservation) - in.DeepCopyInto(out) + if in.AccountNumber != nil { + in, out := &in.AccountNumber, &out.AccountNumber + *out = new(float64) + **out = **in + } + if in.GlobalCustID != nil { + in, out := &in.GlobalCustID, &out.GlobalCustID + *out = new(string) + **out = **in + } + if in.GlobalOrgID != nil { + in, out := &in.GlobalOrgID, &out.GlobalOrgID + *out = new(string) + **out = **in + } + if in.GlobalOrganizationName != nil { + in, out := &in.GlobalOrganizationName, &out.GlobalOrganizationName + *out = new(string) + **out = **in + } + if in.OrgID != nil { + in, out := &in.OrgID, &out.OrgID + *out = new(float64) + **out = **in + } + if in.OrganizationName != nil { + in, out := &in.OrganizationName, &out.OrganizationName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionAccountObservation. +func (in *ConnectionAccountObservation) DeepCopy() *ConnectionAccountObservation { + if in == nil { + return nil + } + out := new(ConnectionAccountObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionAccountParameters) DeepCopyInto(out *ConnectionAccountParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionAccountParameters. +func (in *ConnectionAccountParameters) DeepCopy() *ConnectionAccountParameters { + if in == nil { + return nil + } + out := new(ConnectionAccountParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionChangeLogObservation) DeepCopyInto(out *ConnectionChangeLogObservation) { + *out = *in + if in.CreatedBy != nil { + in, out := &in.CreatedBy, &out.CreatedBy + *out = new(string) + **out = **in + } + if in.CreatedByEmail != nil { + in, out := &in.CreatedByEmail, &out.CreatedByEmail + *out = new(string) + **out = **in + } + if in.CreatedByFullName != nil { + in, out := &in.CreatedByFullName, &out.CreatedByFullName + *out = new(string) + **out = **in + } + if in.CreatedDateTime != nil { + in, out := &in.CreatedDateTime, &out.CreatedDateTime + *out = new(string) + **out = **in + } + if in.DeletedBy != nil { + in, out := &in.DeletedBy, &out.DeletedBy + *out = new(string) + **out = **in + } + if in.DeletedByEmail != nil { + in, out := &in.DeletedByEmail, &out.DeletedByEmail + *out = new(string) + **out = **in + } + if in.DeletedByFullName != nil { + in, out := &in.DeletedByFullName, &out.DeletedByFullName + *out = new(string) + **out = **in + } + if in.DeletedDateTime != nil { + in, out := &in.DeletedDateTime, &out.DeletedDateTime + *out = new(string) + **out = **in + } + if in.UpdatedBy != nil { + in, out := &in.UpdatedBy, &out.UpdatedBy + *out = new(string) + **out = **in + } + if in.UpdatedByEmail != nil { + in, out := &in.UpdatedByEmail, &out.UpdatedByEmail + *out = new(string) + **out = **in + } + if in.UpdatedByFullName != nil { + in, out := &in.UpdatedByFullName, &out.UpdatedByFullName + *out = new(string) + **out = **in + } + if in.UpdatedDateTime != nil { + in, out := &in.UpdatedDateTime, &out.UpdatedDateTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionChangeLogObservation. +func (in *ConnectionChangeLogObservation) DeepCopy() *ConnectionChangeLogObservation { + if in == nil { + return nil + } + out := new(ConnectionChangeLogObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionChangeLogParameters) DeepCopyInto(out *ConnectionChangeLogParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionChangeLogParameters. +func (in *ConnectionChangeLogParameters) DeepCopy() *ConnectionChangeLogParameters { + if in == nil { + return nil + } + out := new(ConnectionChangeLogParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionList) DeepCopyInto(out *ConnectionList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Connection, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionList. +func (in *ConnectionList) DeepCopy() *ConnectionList { + if in == nil { + return nil + } + out := new(ConnectionList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConnectionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionNotificationsObservation) DeepCopyInto(out *ConnectionNotificationsObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionNotificationsObservation. +func (in *ConnectionNotificationsObservation) DeepCopy() *ConnectionNotificationsObservation { + if in == nil { + return nil + } + out := new(ConnectionNotificationsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionNotificationsParameters) DeepCopyInto(out *ConnectionNotificationsParameters) { + *out = *in + if in.Emails != nil { + in, out := &in.Emails, &out.Emails + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.SendInterval != nil { + in, out := &in.SendInterval, &out.SendInterval + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionNotificationsParameters. +func (in *ConnectionNotificationsParameters) DeepCopy() *ConnectionNotificationsParameters { + if in == nil { + return nil + } + out := new(ConnectionNotificationsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionObservation) DeepCopyInto(out *ConnectionObservation) { + *out = *in + if in.ASide != nil { + in, out := &in.ASide, &out.ASide + *out = make([]ASideObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Account != nil { + in, out := &in.Account, &out.Account + *out = make([]ConnectionAccountObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ChangeLog != nil { + in, out := &in.ChangeLog, &out.ChangeLog + *out = make([]ConnectionChangeLogObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Direction != nil { + in, out := &in.Direction, &out.Direction + *out = new(string) + **out = **in + } + if in.Href != nil { + in, out := &in.Href, &out.Href + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.IsRemote != nil { + in, out := &in.IsRemote, &out.IsRemote + *out = new(bool) + **out = **in + } + if in.Operation != nil { + in, out := &in.Operation, &out.Operation + *out = make([]OperationObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Order != nil { + in, out := &in.Order, &out.Order + *out = make([]ConnectionOrderObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Project != nil { + in, out := &in.Project, &out.Project + *out = make([]ConnectionProjectObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } + if in.ZSide != nil { + in, out := &in.ZSide, &out.ZSide + *out = make([]ZSideObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionObservation. +func (in *ConnectionObservation) DeepCopy() *ConnectionObservation { + if in == nil { + return nil + } + out := new(ConnectionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionOrderObservation) DeepCopyInto(out *ConnectionOrderObservation) { + *out = *in + if in.OrderID != nil { + in, out := &in.OrderID, &out.OrderID + *out = new(string) + **out = **in + } + if in.OrderNumber != nil { + in, out := &in.OrderNumber, &out.OrderNumber + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionOrderObservation. +func (in *ConnectionOrderObservation) DeepCopy() *ConnectionOrderObservation { + if in == nil { + return nil + } + out := new(ConnectionOrderObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionOrderParameters) DeepCopyInto(out *ConnectionOrderParameters) { + *out = *in + if in.BillingTier != nil { + in, out := &in.BillingTier, &out.BillingTier + *out = new(string) + **out = **in + } + if in.PurchaseOrderNumber != nil { + in, out := &in.PurchaseOrderNumber, &out.PurchaseOrderNumber + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionOrderParameters. +func (in *ConnectionOrderParameters) DeepCopy() *ConnectionOrderParameters { + if in == nil { + return nil + } + out := new(ConnectionOrderParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionParameters) DeepCopyInto(out *ConnectionParameters) { + *out = *in + if in.ASide != nil { + in, out := &in.ASide, &out.ASide + *out = make([]ASideParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AdditionalInfo != nil { + in, out := &in.AdditionalInfo, &out.AdditionalInfo + *out = make([]map[string]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + in, out := &val, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + } + } + if in.Bandwidth != nil { + in, out := &in.Bandwidth, &out.Bandwidth + *out = new(float64) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]ConnectionNotificationsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Order != nil { + in, out := &in.Order, &out.Order + *out = make([]ConnectionOrderParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Project != nil { + in, out := &in.Project, &out.Project + *out = make([]ConnectionProjectParameters, len(*in)) + copy(*out, *in) + } + if in.Redundancy != nil { + in, out := &in.Redundancy, &out.Redundancy + *out = make([]ConnectionRedundancyParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.ZSide != nil { + in, out := &in.ZSide, &out.ZSide + *out = make([]ZSideParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionParameters. +func (in *ConnectionParameters) DeepCopy() *ConnectionParameters { + if in == nil { + return nil + } + out := new(ConnectionParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionProjectObservation) DeepCopyInto(out *ConnectionProjectObservation) { + *out = *in + if in.Href != nil { + in, out := &in.Href, &out.Href + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionProjectObservation. +func (in *ConnectionProjectObservation) DeepCopy() *ConnectionProjectObservation { + if in == nil { + return nil + } + out := new(ConnectionProjectObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionProjectParameters) DeepCopyInto(out *ConnectionProjectParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionProjectParameters. +func (in *ConnectionProjectParameters) DeepCopy() *ConnectionProjectParameters { + if in == nil { + return nil + } + out := new(ConnectionProjectParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionRedundancyObservation) DeepCopyInto(out *ConnectionRedundancyObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionRedundancyObservation. +func (in *ConnectionRedundancyObservation) DeepCopy() *ConnectionRedundancyObservation { + if in == nil { + return nil + } + out := new(ConnectionRedundancyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionRedundancyParameters) DeepCopyInto(out *ConnectionRedundancyParameters) { + *out = *in + if in.Group != nil { + in, out := &in.Group, &out.Group + *out = new(string) + **out = **in + } + if in.Priority != nil { + in, out := &in.Priority, &out.Priority + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionRedundancyParameters. +func (in *ConnectionRedundancyParameters) DeepCopy() *ConnectionRedundancyParameters { + if in == nil { + return nil + } + out := new(ConnectionRedundancyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionSpec) DeepCopyInto(out *ConnectionSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionSpec. +func (in *ConnectionSpec) DeepCopy() *ConnectionSpec { + if in == nil { + return nil + } + out := new(ConnectionSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConnectionStatus) DeepCopyInto(out *ConnectionStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectionStatus. +func (in *ConnectionStatus) DeepCopy() *ConnectionStatus { + if in == nil { + return nil + } + out := new(ConnectionStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomFieldsObservation) DeepCopyInto(out *CustomFieldsObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomFieldsObservation. +func (in *CustomFieldsObservation) DeepCopy() *CustomFieldsObservation { + if in == nil { + return nil + } + out := new(CustomFieldsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomFieldsParameters) DeepCopyInto(out *CustomFieldsParameters) { + *out = *in + if in.CaptureInEmail != nil { + in, out := &in.CaptureInEmail, &out.CaptureInEmail + *out = new(bool) + **out = **in + } + if in.DataType != nil { + in, out := &in.DataType, &out.DataType + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Label != nil { + in, out := &in.Label, &out.Label + *out = new(string) + **out = **in + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Required != nil { + in, out := &in.Required, &out.Required + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomFieldsParameters. +func (in *CustomFieldsParameters) DeepCopy() *CustomFieldsParameters { + if in == nil { + return nil + } + out := new(CustomFieldsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DirectIPv4Observation) DeepCopyInto(out *DirectIPv4Observation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DirectIPv4Observation. +func (in *DirectIPv4Observation) DeepCopy() *DirectIPv4Observation { + if in == nil { + return nil + } + out := new(DirectIPv4Observation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DirectIPv4Parameters) DeepCopyInto(out *DirectIPv4Parameters) { + *out = *in + if in.EquinixIfaceIP != nil { + in, out := &in.EquinixIfaceIP, &out.EquinixIfaceIP + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DirectIPv4Parameters. +func (in *DirectIPv4Parameters) DeepCopy() *DirectIPv4Parameters { + if in == nil { + return nil + } + out := new(DirectIPv4Parameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DirectIPv6Observation) DeepCopyInto(out *DirectIPv6Observation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DirectIPv6Observation. +func (in *DirectIPv6Observation) DeepCopy() *DirectIPv6Observation { + if in == nil { + return nil + } + out := new(DirectIPv6Observation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DirectIPv6Parameters) DeepCopyInto(out *DirectIPv6Parameters) { + *out = *in + if in.EquinixIfaceIP != nil { + in, out := &in.EquinixIfaceIP, &out.EquinixIfaceIP + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DirectIPv6Parameters. +func (in *DirectIPv6Parameters) DeepCopy() *DirectIPv6Parameters { + if in == nil { + return nil + } + out := new(DirectIPv6Parameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ErrorsAdditionalInfoObservation) DeepCopyInto(out *ErrorsAdditionalInfoObservation) { + *out = *in + if in.Property != nil { + in, out := &in.Property, &out.Property + *out = new(string) + **out = **in + } + if in.Reason != nil { + in, out := &in.Reason, &out.Reason + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorsAdditionalInfoObservation. +func (in *ErrorsAdditionalInfoObservation) DeepCopy() *ErrorsAdditionalInfoObservation { + if in == nil { + return nil + } + out := new(ErrorsAdditionalInfoObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ErrorsAdditionalInfoParameters) DeepCopyInto(out *ErrorsAdditionalInfoParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorsAdditionalInfoParameters. +func (in *ErrorsAdditionalInfoParameters) DeepCopy() *ErrorsAdditionalInfoParameters { + if in == nil { + return nil + } + out := new(ErrorsAdditionalInfoParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ErrorsObservation) DeepCopyInto(out *ErrorsObservation) { + *out = *in + if in.AdditionalInfo != nil { + in, out := &in.AdditionalInfo, &out.AdditionalInfo + *out = make([]ErrorsAdditionalInfoObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CorrelationID != nil { + in, out := &in.CorrelationID, &out.CorrelationID + *out = new(string) + **out = **in + } + if in.Details != nil { + in, out := &in.Details, &out.Details + *out = new(string) + **out = **in + } + if in.ErrorCode != nil { + in, out := &in.ErrorCode, &out.ErrorCode + *out = new(string) + **out = **in + } + if in.ErrorMessage != nil { + in, out := &in.ErrorMessage, &out.ErrorMessage + *out = new(string) + **out = **in + } + if in.Help != nil { + in, out := &in.Help, &out.Help + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorsObservation. +func (in *ErrorsObservation) DeepCopy() *ErrorsObservation { + if in == nil { + return nil + } + out := new(ErrorsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ErrorsParameters) DeepCopyInto(out *ErrorsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorsParameters. +func (in *ErrorsParameters) DeepCopy() *ErrorsParameters { + if in == nil { + return nil + } + out := new(ErrorsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayObservation) DeepCopyInto(out *GatewayObservation) { + *out = *in + if in.Href != nil { + in, out := &in.Href, &out.Href + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayObservation. +func (in *GatewayObservation) DeepCopy() *GatewayObservation { + if in == nil { + return nil + } + out := new(GatewayObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayParameters) DeepCopyInto(out *GatewayParameters) { + *out = *in + if in.UUID != nil { + in, out := &in.UUID, &out.UUID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayParameters. +func (in *GatewayParameters) DeepCopy() *GatewayParameters { + if in == nil { + return nil + } + out := new(GatewayParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InterfaceObservation) DeepCopyInto(out *InterfaceObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InterfaceObservation. +func (in *InterfaceObservation) DeepCopy() *InterfaceObservation { + if in == nil { + return nil + } + out := new(InterfaceObservation) + in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *CustomFieldsParameters) DeepCopyInto(out *CustomFieldsParameters) { +func (in *InterfaceParameters) DeepCopyInto(out *InterfaceParameters) { *out = *in - if in.CaptureInEmail != nil { - in, out := &in.CaptureInEmail, &out.CaptureInEmail + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.UUID != nil { + in, out := &in.UUID, &out.UUID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InterfaceParameters. +func (in *InterfaceParameters) DeepCopy() *InterfaceParameters { + if in == nil { + return nil + } + out := new(InterfaceParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LinkProtocolConfigObservation) DeepCopyInto(out *LinkProtocolConfigObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinkProtocolConfigObservation. +func (in *LinkProtocolConfigObservation) DeepCopy() *LinkProtocolConfigObservation { + if in == nil { + return nil + } + out := new(LinkProtocolConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LinkProtocolConfigParameters) DeepCopyInto(out *LinkProtocolConfigParameters) { + *out = *in + if in.Encapsulation != nil { + in, out := &in.Encapsulation, &out.Encapsulation + *out = new(string) + **out = **in + } + if in.EncapsulationStrategy != nil { + in, out := &in.EncapsulationStrategy, &out.EncapsulationStrategy + *out = new(string) + **out = **in + } + if in.ReuseVlanSTag != nil { + in, out := &in.ReuseVlanSTag, &out.ReuseVlanSTag + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinkProtocolConfigParameters. +func (in *LinkProtocolConfigParameters) DeepCopy() *LinkProtocolConfigParameters { + if in == nil { + return nil + } + out := new(LinkProtocolConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LinkProtocolObservation) DeepCopyInto(out *LinkProtocolObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinkProtocolObservation. +func (in *LinkProtocolObservation) DeepCopy() *LinkProtocolObservation { + if in == nil { + return nil + } + out := new(LinkProtocolObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LinkProtocolParameters) DeepCopyInto(out *LinkProtocolParameters) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.VlanCTag != nil { + in, out := &in.VlanCTag, &out.VlanCTag + *out = new(float64) + **out = **in + } + if in.VlanSTag != nil { + in, out := &in.VlanSTag, &out.VlanSTag + *out = new(float64) + **out = **in + } + if in.VlanTag != nil { + in, out := &in.VlanTag, &out.VlanTag + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinkProtocolParameters. +func (in *LinkProtocolParameters) DeepCopy() *LinkProtocolParameters { + if in == nil { + return nil + } + out := new(LinkProtocolParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LocationObservation) DeepCopyInto(out *LocationObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocationObservation. +func (in *LocationObservation) DeepCopy() *LocationObservation { + if in == nil { + return nil + } + out := new(LocationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LocationParameters) DeepCopyInto(out *LocationParameters) { + *out = *in + if in.Ibx != nil { + in, out := &in.Ibx, &out.Ibx + *out = new(string) + **out = **in + } + if in.MetroCode != nil { + in, out := &in.MetroCode, &out.MetroCode + *out = new(string) + **out = **in + } + if in.MetroName != nil { + in, out := &in.MetroName, &out.MetroName + *out = new(string) + **out = **in + } + if in.Region != nil { + in, out := &in.Region, &out.Region + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocationParameters. +func (in *LocationParameters) DeepCopy() *LocationParameters { + if in == nil { + return nil + } + out := new(LocationParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MarketingInfoObservation) DeepCopyInto(out *MarketingInfoObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MarketingInfoObservation. +func (in *MarketingInfoObservation) DeepCopy() *MarketingInfoObservation { + if in == nil { + return nil + } + out := new(MarketingInfoObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MarketingInfoParameters) DeepCopyInto(out *MarketingInfoParameters) { + *out = *in + if in.Logo != nil { + in, out := &in.Logo, &out.Logo + *out = new(string) + **out = **in + } + if in.ProcessStep != nil { + in, out := &in.ProcessStep, &out.ProcessStep + *out = make([]ProcessStepParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Promotion != nil { + in, out := &in.Promotion, &out.Promotion + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MarketingInfoParameters. +func (in *MarketingInfoParameters) DeepCopy() *MarketingInfoParameters { + if in == nil { + return nil + } + out := new(MarketingInfoParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetrosObservation) DeepCopyInto(out *MetrosObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetrosObservation. +func (in *MetrosObservation) DeepCopy() *MetrosObservation { + if in == nil { + return nil + } + out := new(MetrosObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetrosParameters) DeepCopyInto(out *MetrosParameters) { + *out = *in + if in.Code != nil { + in, out := &in.Code, &out.Code + *out = new(string) + **out = **in + } + if in.DisplayName != nil { + in, out := &in.DisplayName, &out.DisplayName + *out = new(string) + **out = **in + } + if in.Ibxs != nil { + in, out := &in.Ibxs, &out.Ibxs + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.InTrail != nil { + in, out := &in.InTrail, &out.InTrail *out = new(bool) **out = **in } - if in.DataType != nil { - in, out := &in.DataType, &out.DataType + if in.Name != nil { + in, out := &in.Name, &out.Name *out = new(string) **out = **in } - if in.Description != nil { - in, out := &in.Description, &out.Description + if in.SellerRegions != nil { + in, out := &in.SellerRegions, &out.SellerRegions + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + in, out := &val, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetrosParameters. +func (in *MetrosParameters) DeepCopy() *MetrosParameters { + if in == nil { + return nil + } + out := new(MetrosParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkObservation) DeepCopyInto(out *NetworkObservation) { + *out = *in + if in.Href != nil { + in, out := &in.Href, &out.Href *out = new(string) **out = **in } - if in.Label != nil { - in, out := &in.Label, &out.Label +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkObservation. +func (in *NetworkObservation) DeepCopy() *NetworkObservation { + if in == nil { + return nil + } + out := new(NetworkObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkParameters) DeepCopyInto(out *NetworkParameters) { + *out = *in + if in.UUID != nil { + in, out := &in.UUID, &out.UUID *out = new(string) **out = **in } - if in.Options != nil { - in, out := &in.Options, &out.Options +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkParameters. +func (in *NetworkParameters) DeepCopy() *NetworkParameters { + if in == nil { + return nil + } + out := new(NetworkParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NotificationsObservation) DeepCopyInto(out *NotificationsObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NotificationsObservation. +func (in *NotificationsObservation) DeepCopy() *NotificationsObservation { + if in == nil { + return nil + } + out := new(NotificationsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NotificationsParameters) DeepCopyInto(out *NotificationsParameters) { + *out = *in + if in.Emails != nil { + in, out := &in.Emails, &out.Emails *out = make([]*string, len(*in)) for i := range *in { if (*in)[i] != nil { @@ -1502,25 +2783,30 @@ func (in *CustomFieldsParameters) DeepCopyInto(out *CustomFieldsParameters) { } } } - if in.Required != nil { - in, out := &in.Required, &out.Required - *out = new(bool) + if in.SendInterval != nil { + in, out := &in.SendInterval, &out.SendInterval + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomFieldsParameters. -func (in *CustomFieldsParameters) DeepCopy() *CustomFieldsParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NotificationsParameters. +func (in *NotificationsParameters) DeepCopy() *NotificationsParameters { if in == nil { return nil } - out := new(CustomFieldsParameters) + out := new(NotificationsParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ErrorsAdditionalInfoObservation) DeepCopyInto(out *ErrorsAdditionalInfoObservation) { +func (in *OperationErrorsAdditionalInfoObservation) DeepCopyInto(out *OperationErrorsAdditionalInfoObservation) { *out = *in if in.Property != nil { in, out := &in.Property, &out.Property @@ -1534,37 +2820,37 @@ func (in *ErrorsAdditionalInfoObservation) DeepCopyInto(out *ErrorsAdditionalInf } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorsAdditionalInfoObservation. -func (in *ErrorsAdditionalInfoObservation) DeepCopy() *ErrorsAdditionalInfoObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationErrorsAdditionalInfoObservation. +func (in *OperationErrorsAdditionalInfoObservation) DeepCopy() *OperationErrorsAdditionalInfoObservation { if in == nil { return nil } - out := new(ErrorsAdditionalInfoObservation) + out := new(OperationErrorsAdditionalInfoObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ErrorsAdditionalInfoParameters) DeepCopyInto(out *ErrorsAdditionalInfoParameters) { +func (in *OperationErrorsAdditionalInfoParameters) DeepCopyInto(out *OperationErrorsAdditionalInfoParameters) { *out = *in } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorsAdditionalInfoParameters. -func (in *ErrorsAdditionalInfoParameters) DeepCopy() *ErrorsAdditionalInfoParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationErrorsAdditionalInfoParameters. +func (in *OperationErrorsAdditionalInfoParameters) DeepCopy() *OperationErrorsAdditionalInfoParameters { if in == nil { return nil } - out := new(ErrorsAdditionalInfoParameters) + out := new(OperationErrorsAdditionalInfoParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ErrorsObservation) DeepCopyInto(out *ErrorsObservation) { +func (in *OperationErrorsObservation) DeepCopyInto(out *OperationErrorsObservation) { *out = *in if in.AdditionalInfo != nil { in, out := &in.AdditionalInfo, &out.AdditionalInfo - *out = make([]ErrorsAdditionalInfoObservation, len(*in)) + *out = make([]OperationErrorsAdditionalInfoObservation, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -1596,228 +2882,267 @@ func (in *ErrorsObservation) DeepCopyInto(out *ErrorsObservation) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorsObservation. -func (in *ErrorsObservation) DeepCopy() *ErrorsObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationErrorsObservation. +func (in *OperationErrorsObservation) DeepCopy() *OperationErrorsObservation { if in == nil { return nil } - out := new(ErrorsObservation) + out := new(OperationErrorsObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ErrorsParameters) DeepCopyInto(out *ErrorsParameters) { +func (in *OperationErrorsParameters) DeepCopyInto(out *OperationErrorsParameters) { *out = *in } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorsParameters. -func (in *ErrorsParameters) DeepCopy() *ErrorsParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationErrorsParameters. +func (in *OperationErrorsParameters) DeepCopy() *OperationErrorsParameters { if in == nil { return nil } - out := new(ErrorsParameters) + out := new(OperationErrorsParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GatewayObservation) DeepCopyInto(out *GatewayObservation) { +func (in *OperationObservation) DeepCopyInto(out *OperationObservation) { *out = *in - if in.Href != nil { - in, out := &in.Href, &out.Href + if in.EquinixStatus != nil { + in, out := &in.EquinixStatus, &out.EquinixStatus + *out = new(string) + **out = **in + } + if in.Errors != nil { + in, out := &in.Errors, &out.Errors + *out = make([]ErrorsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ProviderStatus != nil { + in, out := &in.ProviderStatus, &out.ProviderStatus *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayObservation. -func (in *GatewayObservation) DeepCopy() *GatewayObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationObservation. +func (in *OperationObservation) DeepCopy() *OperationObservation { if in == nil { return nil } - out := new(GatewayObservation) + out := new(OperationObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GatewayParameters) DeepCopyInto(out *GatewayParameters) { +func (in *OperationParameters) DeepCopyInto(out *OperationParameters) { *out = *in - if in.UUID != nil { - in, out := &in.UUID, &out.UUID - *out = new(string) - **out = **in - } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayParameters. -func (in *GatewayParameters) DeepCopy() *GatewayParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationParameters. +func (in *OperationParameters) DeepCopy() *OperationParameters { if in == nil { return nil } - out := new(GatewayParameters) + out := new(OperationParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *InterfaceObservation) DeepCopyInto(out *InterfaceObservation) { +func (in *OrderObservation) DeepCopyInto(out *OrderObservation) { *out = *in - if in.ID != nil { - in, out := &in.ID, &out.ID + if in.OrderID != nil { + in, out := &in.OrderID, &out.OrderID + *out = new(string) + **out = **in + } + if in.OrderNumber != nil { + in, out := &in.OrderNumber, &out.OrderNumber *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InterfaceObservation. -func (in *InterfaceObservation) DeepCopy() *InterfaceObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrderObservation. +func (in *OrderObservation) DeepCopy() *OrderObservation { if in == nil { return nil } - out := new(InterfaceObservation) + out := new(OrderObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *InterfaceParameters) DeepCopyInto(out *InterfaceParameters) { +func (in *OrderParameters) DeepCopyInto(out *OrderParameters) { *out = *in - if in.Type != nil { - in, out := &in.Type, &out.Type + if in.BillingTier != nil { + in, out := &in.BillingTier, &out.BillingTier *out = new(string) **out = **in } - if in.UUID != nil { - in, out := &in.UUID, &out.UUID + if in.PurchaseOrderNumber != nil { + in, out := &in.PurchaseOrderNumber, &out.PurchaseOrderNumber *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InterfaceParameters. -func (in *InterfaceParameters) DeepCopy() *InterfaceParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrderParameters. +func (in *OrderParameters) DeepCopy() *OrderParameters { if in == nil { return nil } - out := new(InterfaceParameters) + out := new(OrderParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LinkProtocolConfigObservation) DeepCopyInto(out *LinkProtocolConfigObservation) { +func (in *PackageObservation) DeepCopyInto(out *PackageObservation) { *out = *in } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinkProtocolConfigObservation. -func (in *LinkProtocolConfigObservation) DeepCopy() *LinkProtocolConfigObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageObservation. +func (in *PackageObservation) DeepCopy() *PackageObservation { if in == nil { return nil } - out := new(LinkProtocolConfigObservation) + out := new(PackageObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LinkProtocolConfigParameters) DeepCopyInto(out *LinkProtocolConfigParameters) { +func (in *PackageParameters) DeepCopyInto(out *PackageParameters) { *out = *in - if in.Encapsulation != nil { - in, out := &in.Encapsulation, &out.Encapsulation + if in.Code != nil { + in, out := &in.Code, &out.Code *out = new(string) **out = **in } - if in.EncapsulationStrategy != nil { - in, out := &in.EncapsulationStrategy, &out.EncapsulationStrategy +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageParameters. +func (in *PackageParameters) DeepCopy() *PackageParameters { + if in == nil { + return nil + } + out := new(PackageParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortObservation) DeepCopyInto(out *PortObservation) { + *out = *in + if in.Href != nil { + in, out := &in.Href, &out.Href *out = new(string) **out = **in } - if in.ReuseVlanSTag != nil { - in, out := &in.ReuseVlanSTag, &out.ReuseVlanSTag - *out = new(bool) + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) **out = **in } + if in.Redundancy != nil { + in, out := &in.Redundancy, &out.Redundancy + *out = make([]RedundancyObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinkProtocolConfigParameters. -func (in *LinkProtocolConfigParameters) DeepCopy() *LinkProtocolConfigParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortObservation. +func (in *PortObservation) DeepCopy() *PortObservation { if in == nil { return nil } - out := new(LinkProtocolConfigParameters) + out := new(PortObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortParameters) DeepCopyInto(out *PortParameters) { + *out = *in + if in.UUID != nil { + in, out := &in.UUID, &out.UUID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortParameters. +func (in *PortParameters) DeepCopy() *PortParameters { + if in == nil { + return nil + } + out := new(PortParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LinkProtocolObservation) DeepCopyInto(out *LinkProtocolObservation) { +func (in *PortRedundancyObservation) DeepCopyInto(out *PortRedundancyObservation) { *out = *in + if in.Priority != nil { + in, out := &in.Priority, &out.Priority + *out = new(string) + **out = **in + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinkProtocolObservation. -func (in *LinkProtocolObservation) DeepCopy() *LinkProtocolObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortRedundancyObservation. +func (in *PortRedundancyObservation) DeepCopy() *PortRedundancyObservation { if in == nil { return nil } - out := new(LinkProtocolObservation) + out := new(PortRedundancyObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LinkProtocolParameters) DeepCopyInto(out *LinkProtocolParameters) { +func (in *PortRedundancyParameters) DeepCopyInto(out *PortRedundancyParameters) { *out = *in - if in.Type != nil { - in, out := &in.Type, &out.Type - *out = new(string) - **out = **in - } - if in.VlanCTag != nil { - in, out := &in.VlanCTag, &out.VlanCTag - *out = new(float64) - **out = **in - } - if in.VlanSTag != nil { - in, out := &in.VlanSTag, &out.VlanSTag - *out = new(float64) - **out = **in - } - if in.VlanTag != nil { - in, out := &in.VlanTag, &out.VlanTag - *out = new(float64) - **out = **in - } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinkProtocolParameters. -func (in *LinkProtocolParameters) DeepCopy() *LinkProtocolParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortRedundancyParameters. +func (in *PortRedundancyParameters) DeepCopy() *PortRedundancyParameters { if in == nil { return nil } - out := new(LinkProtocolParameters) + out := new(PortRedundancyParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LocationObservation) DeepCopyInto(out *LocationObservation) { +func (in *PortsLocationObservation) DeepCopyInto(out *PortsLocationObservation) { *out = *in } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocationObservation. -func (in *LocationObservation) DeepCopy() *LocationObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortsLocationObservation. +func (in *PortsLocationObservation) DeepCopy() *PortsLocationObservation { if in == nil { return nil } - out := new(LocationObservation) + out := new(PortsLocationObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LocationParameters) DeepCopyInto(out *LocationParameters) { +func (in *PortsLocationParameters) DeepCopyInto(out *PortsLocationParameters) { *out = *in if in.Ibx != nil { in, out := &in.Ibx, &out.Ibx @@ -1841,341 +3166,267 @@ func (in *LocationParameters) DeepCopyInto(out *LocationParameters) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocationParameters. -func (in *LocationParameters) DeepCopy() *LocationParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortsLocationParameters. +func (in *PortsLocationParameters) DeepCopy() *PortsLocationParameters { if in == nil { return nil } - out := new(LocationParameters) + out := new(PortsLocationParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MarketingInfoObservation) DeepCopyInto(out *MarketingInfoObservation) { +func (in *PortsObservation) DeepCopyInto(out *PortsObservation) { *out = *in } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MarketingInfoObservation. -func (in *MarketingInfoObservation) DeepCopy() *MarketingInfoObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortsObservation. +func (in *PortsObservation) DeepCopy() *PortsObservation { if in == nil { return nil } - out := new(MarketingInfoObservation) + out := new(PortsObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MarketingInfoParameters) DeepCopyInto(out *MarketingInfoParameters) { +func (in *PortsParameters) DeepCopyInto(out *PortsParameters) { *out = *in - if in.Logo != nil { - in, out := &in.Logo, &out.Logo + if in.CrossConnectID != nil { + in, out := &in.CrossConnectID, &out.CrossConnectID *out = new(string) **out = **in } - if in.ProcessStep != nil { - in, out := &in.ProcessStep, &out.ProcessStep - *out = make([]ProcessStepParameters, len(*in)) + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = make([]PortsLocationParameters, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.Promotion != nil { - in, out := &in.Promotion, &out.Promotion - *out = new(bool) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MarketingInfoParameters. -func (in *MarketingInfoParameters) DeepCopy() *MarketingInfoParameters { - if in == nil { - return nil - } - out := new(MarketingInfoParameters) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MetrosObservation) DeepCopyInto(out *MetrosObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetrosObservation. -func (in *MetrosObservation) DeepCopy() *MetrosObservation { - if in == nil { - return nil - } - out := new(MetrosObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MetrosParameters) DeepCopyInto(out *MetrosParameters) { - *out = *in - if in.Code != nil { - in, out := &in.Code, &out.Code + if in.SellerRegion != nil { + in, out := &in.SellerRegion, &out.SellerRegion *out = new(string) **out = **in } - if in.DisplayName != nil { - in, out := &in.DisplayName, &out.DisplayName + if in.SellerRegionDescription != nil { + in, out := &in.SellerRegionDescription, &out.SellerRegionDescription *out = new(string) **out = **in } - if in.Ibxs != nil { - in, out := &in.Ibxs, &out.Ibxs - *out = make([]*string, len(*in)) - for i := range *in { - if (*in)[i] != nil { - in, out := &(*in)[i], &(*out)[i] - *out = new(string) - **out = **in - } - } - } - if in.InTrail != nil { - in, out := &in.InTrail, &out.InTrail - *out = new(bool) + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) **out = **in } - if in.Name != nil { - in, out := &in.Name, &out.Name + if in.UUID != nil { + in, out := &in.UUID, &out.UUID *out = new(string) **out = **in } - if in.SellerRegions != nil { - in, out := &in.SellerRegions, &out.SellerRegions - *out = make(map[string]*string, len(*in)) - for key, val := range *in { - var outVal *string - if val == nil { - (*out)[key] = nil - } else { - in, out := &val, &outVal - *out = new(string) - **out = **in - } - (*out)[key] = outVal - } - } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetrosParameters. -func (in *MetrosParameters) DeepCopy() *MetrosParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortsParameters. +func (in *PortsParameters) DeepCopy() *PortsParameters { if in == nil { return nil } - out := new(MetrosParameters) + out := new(PortsParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NotificationsObservation) DeepCopyInto(out *NotificationsObservation) { +func (in *ProcessStepObservation) DeepCopyInto(out *ProcessStepObservation) { *out = *in } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NotificationsObservation. -func (in *NotificationsObservation) DeepCopy() *NotificationsObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessStepObservation. +func (in *ProcessStepObservation) DeepCopy() *ProcessStepObservation { if in == nil { return nil } - out := new(NotificationsObservation) + out := new(ProcessStepObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NotificationsParameters) DeepCopyInto(out *NotificationsParameters) { +func (in *ProcessStepParameters) DeepCopyInto(out *ProcessStepParameters) { *out = *in - if in.Emails != nil { - in, out := &in.Emails, &out.Emails - *out = make([]*string, len(*in)) - for i := range *in { - if (*in)[i] != nil { - in, out := &(*in)[i], &(*out)[i] - *out = new(string) - **out = **in - } - } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in } - if in.SendInterval != nil { - in, out := &in.SendInterval, &out.SendInterval + if in.SubTitle != nil { + in, out := &in.SubTitle, &out.SubTitle *out = new(string) **out = **in } - if in.Type != nil { - in, out := &in.Type, &out.Type + if in.Title != nil { + in, out := &in.Title, &out.Title *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NotificationsParameters. -func (in *NotificationsParameters) DeepCopy() *NotificationsParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessStepParameters. +func (in *ProcessStepParameters) DeepCopy() *ProcessStepParameters { if in == nil { return nil } - out := new(NotificationsParameters) + out := new(ProcessStepParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OperationObservation) DeepCopyInto(out *OperationObservation) { +func (in *ProfileAccessPointTypeConfigsObservation) DeepCopyInto(out *ProfileAccessPointTypeConfigsObservation) { *out = *in - if in.EquinixStatus != nil { - in, out := &in.EquinixStatus, &out.EquinixStatus + if in.Type != nil { + in, out := &in.Type, &out.Type *out = new(string) **out = **in } - if in.Errors != nil { - in, out := &in.Errors, &out.Errors - *out = make([]ErrorsObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.ProviderStatus != nil { - in, out := &in.ProviderStatus, &out.ProviderStatus + if in.UUID != nil { + in, out := &in.UUID, &out.UUID *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationObservation. -func (in *OperationObservation) DeepCopy() *OperationObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProfileAccessPointTypeConfigsObservation. +func (in *ProfileAccessPointTypeConfigsObservation) DeepCopy() *ProfileAccessPointTypeConfigsObservation { if in == nil { return nil } - out := new(OperationObservation) + out := new(ProfileAccessPointTypeConfigsObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OperationParameters) DeepCopyInto(out *OperationParameters) { +func (in *ProfileAccessPointTypeConfigsParameters) DeepCopyInto(out *ProfileAccessPointTypeConfigsParameters) { *out = *in } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationParameters. -func (in *OperationParameters) DeepCopy() *OperationParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProfileAccessPointTypeConfigsParameters. +func (in *ProfileAccessPointTypeConfigsParameters) DeepCopy() *ProfileAccessPointTypeConfigsParameters { if in == nil { return nil } - out := new(OperationParameters) + out := new(ProfileAccessPointTypeConfigsParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OrderObservation) DeepCopyInto(out *OrderObservation) { +func (in *ProfileObservation) DeepCopyInto(out *ProfileObservation) { *out = *in - if in.OrderID != nil { - in, out := &in.OrderID, &out.OrderID + if in.AccessPointTypeConfigs != nil { + in, out := &in.AccessPointTypeConfigs, &out.AccessPointTypeConfigs + *out = make([]AccessPointTypeConfigsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Description != nil { + in, out := &in.Description, &out.Description *out = new(string) **out = **in } - if in.OrderNumber != nil { - in, out := &in.OrderNumber, &out.OrderNumber + if in.Href != nil { + in, out := &in.Href, &out.Href + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrderObservation. -func (in *OrderObservation) DeepCopy() *OrderObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProfileObservation. +func (in *ProfileObservation) DeepCopy() *ProfileObservation { if in == nil { return nil } - out := new(OrderObservation) + out := new(ProfileObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OrderParameters) DeepCopyInto(out *OrderParameters) { +func (in *ProfileParameters) DeepCopyInto(out *ProfileParameters) { *out = *in - if in.BillingTier != nil { - in, out := &in.BillingTier, &out.BillingTier + if in.Type != nil { + in, out := &in.Type, &out.Type *out = new(string) **out = **in } - if in.PurchaseOrderNumber != nil { - in, out := &in.PurchaseOrderNumber, &out.PurchaseOrderNumber + if in.UUID != nil { + in, out := &in.UUID, &out.UUID *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrderParameters. -func (in *OrderParameters) DeepCopy() *OrderParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProfileParameters. +func (in *ProfileParameters) DeepCopy() *ProfileParameters { if in == nil { return nil } - out := new(OrderParameters) + out := new(ProfileParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *PortObservation) DeepCopyInto(out *PortObservation) { +func (in *ProjectObservation) DeepCopyInto(out *ProjectObservation) { *out = *in - if in.Href != nil { - in, out := &in.Href, &out.Href - *out = new(string) - **out = **in - } - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.Redundancy != nil { - in, out := &in.Redundancy, &out.Redundancy - *out = make([]RedundancyObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortObservation. -func (in *PortObservation) DeepCopy() *PortObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectObservation. +func (in *ProjectObservation) DeepCopy() *ProjectObservation { if in == nil { return nil } - out := new(PortObservation) + out := new(ProjectObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *PortParameters) DeepCopyInto(out *PortParameters) { +func (in *ProjectParameters) DeepCopyInto(out *ProjectParameters) { *out = *in - if in.UUID != nil { - in, out := &in.UUID, &out.UUID + if in.Href != nil { + in, out := &in.Href, &out.Href + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortParameters. -func (in *PortParameters) DeepCopy() *PortParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectParameters. +func (in *ProjectParameters) DeepCopy() *ProjectParameters { if in == nil { return nil } - out := new(PortParameters) + out := new(ProjectParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *PortRedundancyObservation) DeepCopyInto(out *PortRedundancyObservation) { +func (in *RedundancyObservation) DeepCopyInto(out *RedundancyObservation) { *out = *in if in.Priority != nil { in, out := &in.Priority, &out.Priority @@ -2184,268 +3435,390 @@ func (in *PortRedundancyObservation) DeepCopyInto(out *PortRedundancyObservation } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortRedundancyObservation. -func (in *PortRedundancyObservation) DeepCopy() *PortRedundancyObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RedundancyObservation. +func (in *RedundancyObservation) DeepCopy() *RedundancyObservation { if in == nil { return nil } - out := new(PortRedundancyObservation) + out := new(RedundancyObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *PortRedundancyParameters) DeepCopyInto(out *PortRedundancyParameters) { +func (in *RedundancyParameters) DeepCopyInto(out *RedundancyParameters) { *out = *in } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortRedundancyParameters. -func (in *PortRedundancyParameters) DeepCopy() *PortRedundancyParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RedundancyParameters. +func (in *RedundancyParameters) DeepCopy() *RedundancyParameters { if in == nil { return nil } - out := new(PortRedundancyParameters) + out := new(RedundancyParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *PortsLocationObservation) DeepCopyInto(out *PortsLocationObservation) { +func (in *RouterObservation) DeepCopyInto(out *RouterObservation) { *out = *in + if in.Href != nil { + in, out := &in.Href, &out.Href + *out = new(string) + **out = **in + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortsLocationObservation. -func (in *PortsLocationObservation) DeepCopy() *PortsLocationObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterObservation. +func (in *RouterObservation) DeepCopy() *RouterObservation { if in == nil { return nil } - out := new(PortsLocationObservation) + out := new(RouterObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *PortsLocationParameters) DeepCopyInto(out *PortsLocationParameters) { +func (in *RouterParameters) DeepCopyInto(out *RouterParameters) { *out = *in - if in.Ibx != nil { - in, out := &in.Ibx, &out.Ibx - *out = new(string) - **out = **in - } - if in.MetroCode != nil { - in, out := &in.MetroCode, &out.MetroCode - *out = new(string) - **out = **in - } - if in.MetroName != nil { - in, out := &in.MetroName, &out.MetroName - *out = new(string) - **out = **in - } - if in.Region != nil { - in, out := &in.Region, &out.Region + if in.UUID != nil { + in, out := &in.UUID, &out.UUID *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortsLocationParameters. -func (in *PortsLocationParameters) DeepCopy() *PortsLocationParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterParameters. +func (in *RouterParameters) DeepCopy() *RouterParameters { if in == nil { return nil } - out := new(PortsLocationParameters) + out := new(RouterParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *PortsObservation) DeepCopyInto(out *PortsObservation) { +func (in *RoutingProtocol) DeepCopyInto(out *RoutingProtocol) { *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortsObservation. -func (in *PortsObservation) DeepCopy() *PortsObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoutingProtocol. +func (in *RoutingProtocol) DeepCopy() *RoutingProtocol { if in == nil { return nil } - out := new(PortsObservation) + out := new(RoutingProtocol) in.DeepCopyInto(out) return out } +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoutingProtocol) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *PortsParameters) DeepCopyInto(out *PortsParameters) { +func (in *RoutingProtocolChangeLogObservation) DeepCopyInto(out *RoutingProtocolChangeLogObservation) { *out = *in - if in.CrossConnectID != nil { - in, out := &in.CrossConnectID, &out.CrossConnectID + if in.CreatedBy != nil { + in, out := &in.CreatedBy, &out.CreatedBy *out = new(string) **out = **in } - if in.Location != nil { - in, out := &in.Location, &out.Location - *out = make([]PortsLocationParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + if in.CreatedByEmail != nil { + in, out := &in.CreatedByEmail, &out.CreatedByEmail + *out = new(string) + **out = **in } - if in.SellerRegion != nil { - in, out := &in.SellerRegion, &out.SellerRegion + if in.CreatedByFullName != nil { + in, out := &in.CreatedByFullName, &out.CreatedByFullName *out = new(string) **out = **in } - if in.SellerRegionDescription != nil { - in, out := &in.SellerRegionDescription, &out.SellerRegionDescription + if in.CreatedDateTime != nil { + in, out := &in.CreatedDateTime, &out.CreatedDateTime *out = new(string) **out = **in } - if in.Type != nil { - in, out := &in.Type, &out.Type + if in.DeletedBy != nil { + in, out := &in.DeletedBy, &out.DeletedBy *out = new(string) **out = **in } - if in.UUID != nil { - in, out := &in.UUID, &out.UUID + if in.DeletedByEmail != nil { + in, out := &in.DeletedByEmail, &out.DeletedByEmail + *out = new(string) + **out = **in + } + if in.DeletedByFullName != nil { + in, out := &in.DeletedByFullName, &out.DeletedByFullName + *out = new(string) + **out = **in + } + if in.DeletedDateTime != nil { + in, out := &in.DeletedDateTime, &out.DeletedDateTime + *out = new(string) + **out = **in + } + if in.UpdatedBy != nil { + in, out := &in.UpdatedBy, &out.UpdatedBy + *out = new(string) + **out = **in + } + if in.UpdatedByEmail != nil { + in, out := &in.UpdatedByEmail, &out.UpdatedByEmail + *out = new(string) + **out = **in + } + if in.UpdatedByFullName != nil { + in, out := &in.UpdatedByFullName, &out.UpdatedByFullName + *out = new(string) + **out = **in + } + if in.UpdatedDateTime != nil { + in, out := &in.UpdatedDateTime, &out.UpdatedDateTime *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortsParameters. -func (in *PortsParameters) DeepCopy() *PortsParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoutingProtocolChangeLogObservation. +func (in *RoutingProtocolChangeLogObservation) DeepCopy() *RoutingProtocolChangeLogObservation { if in == nil { return nil } - out := new(PortsParameters) + out := new(RoutingProtocolChangeLogObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ProcessStepObservation) DeepCopyInto(out *ProcessStepObservation) { +func (in *RoutingProtocolChangeLogParameters) DeepCopyInto(out *RoutingProtocolChangeLogParameters) { *out = *in } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessStepObservation. -func (in *ProcessStepObservation) DeepCopy() *ProcessStepObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoutingProtocolChangeLogParameters. +func (in *RoutingProtocolChangeLogParameters) DeepCopy() *RoutingProtocolChangeLogParameters { if in == nil { return nil } - out := new(ProcessStepObservation) + out := new(RoutingProtocolChangeLogParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ProcessStepParameters) DeepCopyInto(out *ProcessStepParameters) { +func (in *RoutingProtocolList) DeepCopyInto(out *RoutingProtocolList) { *out = *in - if in.Description != nil { - in, out := &in.Description, &out.Description + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RoutingProtocol, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoutingProtocolList. +func (in *RoutingProtocolList) DeepCopy() *RoutingProtocolList { + if in == nil { + return nil + } + out := new(RoutingProtocolList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoutingProtocolList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoutingProtocolObservation) DeepCopyInto(out *RoutingProtocolObservation) { + *out = *in + if in.BGPIPv4 != nil { + in, out := &in.BGPIPv4, &out.BGPIPv4 + *out = make([]BGPIPv4Observation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.BGPIPv6 != nil { + in, out := &in.BGPIPv6, &out.BGPIPv6 + *out = make([]BGPIPv6Observation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Change != nil { + in, out := &in.Change, &out.Change + *out = make([]ChangeObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ChangeLog != nil { + in, out := &in.ChangeLog, &out.ChangeLog + *out = make([]RoutingProtocolChangeLogObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.EquinixAsn != nil { + in, out := &in.EquinixAsn, &out.EquinixAsn + *out = new(float64) + **out = **in + } + if in.Href != nil { + in, out := &in.Href, &out.Href *out = new(string) **out = **in } - if in.SubTitle != nil { - in, out := &in.SubTitle, &out.SubTitle + if in.ID != nil { + in, out := &in.ID, &out.ID *out = new(string) **out = **in } - if in.Title != nil { - in, out := &in.Title, &out.Title + if in.Operation != nil { + in, out := &in.Operation, &out.Operation + *out = make([]RoutingProtocolOperationObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.State != nil { + in, out := &in.State, &out.State *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessStepParameters. -func (in *ProcessStepParameters) DeepCopy() *ProcessStepParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoutingProtocolObservation. +func (in *RoutingProtocolObservation) DeepCopy() *RoutingProtocolObservation { if in == nil { return nil } - out := new(ProcessStepParameters) + out := new(RoutingProtocolObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ProfileAccessPointTypeConfigsObservation) DeepCopyInto(out *ProfileAccessPointTypeConfigsObservation) { +func (in *RoutingProtocolOperationObservation) DeepCopyInto(out *RoutingProtocolOperationObservation) { *out = *in - if in.Type != nil { - in, out := &in.Type, &out.Type - *out = new(string) - **out = **in - } - if in.UUID != nil { - in, out := &in.UUID, &out.UUID - *out = new(string) - **out = **in + if in.Errors != nil { + in, out := &in.Errors, &out.Errors + *out = make([]OperationErrorsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProfileAccessPointTypeConfigsObservation. -func (in *ProfileAccessPointTypeConfigsObservation) DeepCopy() *ProfileAccessPointTypeConfigsObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoutingProtocolOperationObservation. +func (in *RoutingProtocolOperationObservation) DeepCopy() *RoutingProtocolOperationObservation { if in == nil { return nil } - out := new(ProfileAccessPointTypeConfigsObservation) + out := new(RoutingProtocolOperationObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ProfileAccessPointTypeConfigsParameters) DeepCopyInto(out *ProfileAccessPointTypeConfigsParameters) { +func (in *RoutingProtocolOperationParameters) DeepCopyInto(out *RoutingProtocolOperationParameters) { *out = *in } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProfileAccessPointTypeConfigsParameters. -func (in *ProfileAccessPointTypeConfigsParameters) DeepCopy() *ProfileAccessPointTypeConfigsParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoutingProtocolOperationParameters. +func (in *RoutingProtocolOperationParameters) DeepCopy() *RoutingProtocolOperationParameters { if in == nil { return nil } - out := new(ProfileAccessPointTypeConfigsParameters) + out := new(RoutingProtocolOperationParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ProfileObservation) DeepCopyInto(out *ProfileObservation) { +func (in *RoutingProtocolParameters) DeepCopyInto(out *RoutingProtocolParameters) { *out = *in - if in.AccessPointTypeConfigs != nil { - in, out := &in.AccessPointTypeConfigs, &out.AccessPointTypeConfigs - *out = make([]AccessPointTypeConfigsObservation, len(*in)) + if in.BGPAuthKey != nil { + in, out := &in.BGPAuthKey, &out.BGPAuthKey + *out = new(string) + **out = **in + } + if in.BGPIPv4 != nil { + in, out := &in.BGPIPv4, &out.BGPIPv4 + *out = make([]BGPIPv4Parameters, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.Description != nil { - in, out := &in.Description, &out.Description + if in.BGPIPv6 != nil { + in, out := &in.BGPIPv6, &out.BGPIPv6 + *out = make([]BGPIPv6Parameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Bfd != nil { + in, out := &in.Bfd, &out.Bfd + *out = make([]BfdParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ConnectionUUID != nil { + in, out := &in.ConnectionUUID, &out.ConnectionUUID *out = new(string) **out = **in } - if in.Href != nil { - in, out := &in.Href, &out.Href + if in.CustomerAsn != nil { + in, out := &in.CustomerAsn, &out.CustomerAsn + *out = new(float64) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description *out = new(string) **out = **in } + if in.DirectIPv4 != nil { + in, out := &in.DirectIPv4, &out.DirectIPv4 + *out = make([]DirectIPv4Parameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DirectIPv6 != nil { + in, out := &in.DirectIPv6, &out.DirectIPv6 + *out = make([]DirectIPv6Parameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) **out = **in } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProfileObservation. -func (in *ProfileObservation) DeepCopy() *ProfileObservation { - if in == nil { - return nil - } - out := new(ProfileObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ProfileParameters) DeepCopyInto(out *ProfileParameters) { - *out = *in if in.Type != nil { in, out := &in.Type, &out.Type *out = new(string) @@ -2458,87 +3831,46 @@ func (in *ProfileParameters) DeepCopyInto(out *ProfileParameters) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProfileParameters. -func (in *ProfileParameters) DeepCopy() *ProfileParameters { - if in == nil { - return nil - } - out := new(ProfileParameters) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ProjectObservation) DeepCopyInto(out *ProjectObservation) { - *out = *in - if in.Href != nil { - in, out := &in.Href, &out.Href - *out = new(string) - **out = **in - } - if in.ProjectID != nil { - in, out := &in.ProjectID, &out.ProjectID - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectObservation. -func (in *ProjectObservation) DeepCopy() *ProjectObservation { - if in == nil { - return nil - } - out := new(ProjectObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ProjectParameters) DeepCopyInto(out *ProjectParameters) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectParameters. -func (in *ProjectParameters) DeepCopy() *ProjectParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoutingProtocolParameters. +func (in *RoutingProtocolParameters) DeepCopy() *RoutingProtocolParameters { if in == nil { return nil } - out := new(ProjectParameters) + out := new(RoutingProtocolParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RedundancyObservation) DeepCopyInto(out *RedundancyObservation) { +func (in *RoutingProtocolSpec) DeepCopyInto(out *RoutingProtocolSpec) { *out = *in - if in.Priority != nil { - in, out := &in.Priority, &out.Priority - *out = new(string) - **out = **in - } + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RedundancyObservation. -func (in *RedundancyObservation) DeepCopy() *RedundancyObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoutingProtocolSpec. +func (in *RoutingProtocolSpec) DeepCopy() *RoutingProtocolSpec { if in == nil { return nil } - out := new(RedundancyObservation) + out := new(RoutingProtocolSpec) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RedundancyParameters) DeepCopyInto(out *RedundancyParameters) { +func (in *RoutingProtocolStatus) DeepCopyInto(out *RoutingProtocolStatus) { *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RedundancyParameters. -func (in *RedundancyParameters) DeepCopy() *RedundancyParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoutingProtocolStatus. +func (in *RoutingProtocolStatus) DeepCopy() *RoutingProtocolStatus { if in == nil { return nil } - out := new(RedundancyParameters) + out := new(RoutingProtocolStatus) in.DeepCopyInto(out) return out } @@ -3420,12 +4752,127 @@ func (in *VirtualDevicesParameters) DeepCopy() *VirtualDevicesParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ZSideAccessPointAccountObservation) DeepCopyInto(out *ZSideAccessPointAccountObservation) { + *out = *in + if in.AccountName != nil { + in, out := &in.AccountName, &out.AccountName + *out = new(string) + **out = **in + } + if in.AccountNumber != nil { + in, out := &in.AccountNumber, &out.AccountNumber + *out = new(float64) + **out = **in + } + if in.GlobalCustID != nil { + in, out := &in.GlobalCustID, &out.GlobalCustID + *out = new(string) + **out = **in + } + if in.GlobalOrgID != nil { + in, out := &in.GlobalOrgID, &out.GlobalOrgID + *out = new(string) + **out = **in + } + if in.GlobalOrganizationName != nil { + in, out := &in.GlobalOrganizationName, &out.GlobalOrganizationName + *out = new(string) + **out = **in + } + if in.OrgID != nil { + in, out := &in.OrgID, &out.OrgID + *out = new(float64) + **out = **in + } + if in.OrganizationName != nil { + in, out := &in.OrganizationName, &out.OrganizationName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ZSideAccessPointAccountObservation. +func (in *ZSideAccessPointAccountObservation) DeepCopy() *ZSideAccessPointAccountObservation { + if in == nil { + return nil + } + out := new(ZSideAccessPointAccountObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ZSideAccessPointAccountParameters) DeepCopyInto(out *ZSideAccessPointAccountParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ZSideAccessPointAccountParameters. +func (in *ZSideAccessPointAccountParameters) DeepCopy() *ZSideAccessPointAccountParameters { + if in == nil { + return nil + } + out := new(ZSideAccessPointAccountParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ZSideAccessPointLocationObservation) DeepCopyInto(out *ZSideAccessPointLocationObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ZSideAccessPointLocationObservation. +func (in *ZSideAccessPointLocationObservation) DeepCopy() *ZSideAccessPointLocationObservation { + if in == nil { + return nil + } + out := new(ZSideAccessPointLocationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ZSideAccessPointLocationParameters) DeepCopyInto(out *ZSideAccessPointLocationParameters) { + *out = *in + if in.Ibx != nil { + in, out := &in.Ibx, &out.Ibx + *out = new(string) + **out = **in + } + if in.MetroCode != nil { + in, out := &in.MetroCode, &out.MetroCode + *out = new(string) + **out = **in + } + if in.MetroName != nil { + in, out := &in.MetroName, &out.MetroName + *out = new(string) + **out = **in + } + if in.Region != nil { + in, out := &in.Region, &out.Region + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ZSideAccessPointLocationParameters. +func (in *ZSideAccessPointLocationParameters) DeepCopy() *ZSideAccessPointLocationParameters { + if in == nil { + return nil + } + out := new(ZSideAccessPointLocationParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ZSideAccessPointObservation) DeepCopyInto(out *ZSideAccessPointObservation) { *out = *in if in.Account != nil { in, out := &in.Account, &out.Account - *out = make([]AccessPointAccountObservation, len(*in)) + *out = make([]ZSideAccessPointAccountObservation, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -3444,6 +4891,13 @@ func (in *ZSideAccessPointObservation) DeepCopyInto(out *ZSideAccessPointObserva (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = make([]AccessPointNetworkObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Port != nil { in, out := &in.Port, &out.Port *out = make([]AccessPointPortObservation, len(*in)) @@ -3458,6 +4912,13 @@ func (in *ZSideAccessPointObservation) DeepCopyInto(out *ZSideAccessPointObserva (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Router != nil { + in, out := &in.Router, &out.Router + *out = make([]AccessPointRouterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.VirtualDevice != nil { in, out := &in.VirtualDevice, &out.VirtualDevice *out = make([]AccessPointVirtualDeviceObservation, len(*in)) @@ -3480,6 +4941,11 @@ func (in *ZSideAccessPointObservation) DeepCopy() *ZSideAccessPointObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ZSideAccessPointParameters) DeepCopyInto(out *ZSideAccessPointParameters) { *out = *in + if in.Account != nil { + in, out := &in.Account, &out.Account + *out = make([]ZSideAccessPointAccountParameters, len(*in)) + copy(*out, *in) + } if in.AuthenticationKey != nil { in, out := &in.AuthenticationKey, &out.AuthenticationKey *out = new(string) @@ -3508,7 +4974,14 @@ func (in *ZSideAccessPointParameters) DeepCopyInto(out *ZSideAccessPointParamete } if in.Location != nil { in, out := &in.Location, &out.Location - *out = make([]AccessPointLocationParameters, len(*in)) + *out = make([]ZSideAccessPointLocationParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = make([]AccessPointNetworkParameters, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -3537,6 +5010,13 @@ func (in *ZSideAccessPointParameters) DeepCopyInto(out *ZSideAccessPointParamete *out = new(string) **out = **in } + if in.Router != nil { + in, out := &in.Router, &out.Router + *out = make([]AccessPointRouterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.RoutingProtocols != nil { in, out := &in.RoutingProtocols, &out.RoutingProtocols *out = make([]AccessPointRoutingProtocolsParameters, len(*in)) diff --git a/apis/fabric/v1alpha1/zz_generated.managed.go b/apis/fabric/v1alpha1/zz_generated.managed.go index d650d98..e8554f5 100644 --- a/apis/fabric/v1alpha1/zz_generated.managed.go +++ b/apis/fabric/v1alpha1/zz_generated.managed.go @@ -19,6 +19,72 @@ package v1alpha1 import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +// GetCondition of this CloudRouter. +func (mg *CloudRouter) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this CloudRouter. +func (mg *CloudRouter) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this CloudRouter. +func (mg *CloudRouter) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this CloudRouter. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *CloudRouter) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this CloudRouter. +func (mg *CloudRouter) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this CloudRouter. +func (mg *CloudRouter) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this CloudRouter. +func (mg *CloudRouter) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this CloudRouter. +func (mg *CloudRouter) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this CloudRouter. +func (mg *CloudRouter) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this CloudRouter. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *CloudRouter) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this CloudRouter. +func (mg *CloudRouter) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this CloudRouter. +func (mg *CloudRouter) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + // GetCondition of this Connection. func (mg *Connection) GetCondition(ct xpv1.ConditionType) xpv1.Condition { return mg.Status.GetCondition(ct) @@ -85,6 +151,72 @@ func (mg *Connection) SetWriteConnectionSecretToReference(r *xpv1.SecretReferenc mg.Spec.WriteConnectionSecretToReference = r } +// GetCondition of this RoutingProtocol. +func (mg *RoutingProtocol) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this RoutingProtocol. +func (mg *RoutingProtocol) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this RoutingProtocol. +func (mg *RoutingProtocol) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this RoutingProtocol. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *RoutingProtocol) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this RoutingProtocol. +func (mg *RoutingProtocol) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this RoutingProtocol. +func (mg *RoutingProtocol) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this RoutingProtocol. +func (mg *RoutingProtocol) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this RoutingProtocol. +func (mg *RoutingProtocol) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this RoutingProtocol. +func (mg *RoutingProtocol) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this RoutingProtocol. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *RoutingProtocol) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this RoutingProtocol. +func (mg *RoutingProtocol) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this RoutingProtocol. +func (mg *RoutingProtocol) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + // GetCondition of this ServiceProfile. func (mg *ServiceProfile) GetCondition(ct xpv1.ConditionType) xpv1.Condition { return mg.Status.GetCondition(ct) diff --git a/apis/fabric/v1alpha1/zz_generated.managedlist.go b/apis/fabric/v1alpha1/zz_generated.managedlist.go index bd83e89..9a1b12e 100644 --- a/apis/fabric/v1alpha1/zz_generated.managedlist.go +++ b/apis/fabric/v1alpha1/zz_generated.managedlist.go @@ -19,6 +19,15 @@ package v1alpha1 import resource "github.com/crossplane/crossplane-runtime/pkg/resource" +// GetItems of this CloudRouterList. +func (l *CloudRouterList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + // GetItems of this ConnectionList. func (l *ConnectionList) GetItems() []resource.Managed { items := make([]resource.Managed, len(l.Items)) @@ -28,6 +37,15 @@ func (l *ConnectionList) GetItems() []resource.Managed { return items } +// GetItems of this RoutingProtocolList. +func (l *RoutingProtocolList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + // GetItems of this ServiceProfileList. func (l *ServiceProfileList) GetItems() []resource.Managed { items := make([]resource.Managed, len(l.Items)) diff --git a/apis/fabric/v1alpha1/zz_generated_terraformed.go b/apis/fabric/v1alpha1/zz_generated_terraformed.go index 24b8549..9dd265e 100755 --- a/apis/fabric/v1alpha1/zz_generated_terraformed.go +++ b/apis/fabric/v1alpha1/zz_generated_terraformed.go @@ -25,6 +25,80 @@ import ( "github.com/upbound/upjet/pkg/resource/json" ) +// GetTerraformResourceType returns Terraform resource type for this CloudRouter +func (mg *CloudRouter) GetTerraformResourceType() string { + return "equinix_fabric_cloud_router" +} + +// GetConnectionDetailsMapping for this CloudRouter +func (tr *CloudRouter) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this CloudRouter +func (tr *CloudRouter) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this CloudRouter +func (tr *CloudRouter) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this CloudRouter +func (tr *CloudRouter) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this CloudRouter +func (tr *CloudRouter) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this CloudRouter +func (tr *CloudRouter) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this CloudRouter using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *CloudRouter) LateInitialize(attrs []byte) (bool, error) { + params := &CloudRouterParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *CloudRouter) GetTerraformSchemaVersion() int { + return 0 +} + // GetTerraformResourceType returns Terraform resource type for this Connection func (mg *Connection) GetTerraformResourceType() string { return "equinix_fabric_connection" @@ -99,6 +173,80 @@ func (tr *Connection) GetTerraformSchemaVersion() int { return 0 } +// GetTerraformResourceType returns Terraform resource type for this RoutingProtocol +func (mg *RoutingProtocol) GetTerraformResourceType() string { + return "equinix_fabric_routing_protocol" +} + +// GetConnectionDetailsMapping for this RoutingProtocol +func (tr *RoutingProtocol) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this RoutingProtocol +func (tr *RoutingProtocol) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this RoutingProtocol +func (tr *RoutingProtocol) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this RoutingProtocol +func (tr *RoutingProtocol) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this RoutingProtocol +func (tr *RoutingProtocol) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this RoutingProtocol +func (tr *RoutingProtocol) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// LateInitialize this RoutingProtocol using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *RoutingProtocol) LateInitialize(attrs []byte) (bool, error) { + params := &RoutingProtocolParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *RoutingProtocol) GetTerraformSchemaVersion() int { + return 0 +} + // GetTerraformResourceType returns Terraform resource type for this ServiceProfile func (mg *ServiceProfile) GetTerraformResourceType() string { return "equinix_fabric_service_profile" diff --git a/apis/fabric/v1alpha1/zz_routingprotocol_types.go b/apis/fabric/v1alpha1/zz_routingprotocol_types.go new file mode 100755 index 0000000..a0e2495 --- /dev/null +++ b/apis/fabric/v1alpha1/zz_routingprotocol_types.go @@ -0,0 +1,298 @@ +/* +Copyright 2021 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type BGPIPv4Observation struct { + + // Equinix side peering ip + EquinixPeerIP *string `json:"equinixPeerIp,omitempty" tf:"equinix_peer_ip,omitempty"` +} + +type BGPIPv4Parameters struct { + + // Customer side peering ip + // +kubebuilder:validation:Required + CustomerPeerIP *string `json:"customerPeerIp" tf:"customer_peer_ip,omitempty"` + + // Admin status for the BGP session + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type BGPIPv6Observation struct { + + // Equinix side peering ip + EquinixPeerIP *string `json:"equinixPeerIp,omitempty" tf:"equinix_peer_ip,omitempty"` +} + +type BGPIPv6Parameters struct { + + // Customer side peering ip + // +kubebuilder:validation:Required + CustomerPeerIP *string `json:"customerPeerIp" tf:"customer_peer_ip,omitempty"` + + // Admin status for the BGP session + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type BfdObservation struct { +} + +type BfdParameters struct { + + // Bidirectional Forwarding Detection enablement + // +kubebuilder:validation:Required + Enabled *bool `json:"enabled" tf:"enabled,omitempty"` + + // Interval range between the received BFD control packets + // +kubebuilder:validation:Optional + Interval *string `json:"interval,omitempty" tf:"interval,omitempty"` +} + +type ChangeObservation struct { + Href *string `json:"href,omitempty" tf:"href,omitempty"` + + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` +} + +type ChangeParameters struct { +} + +type DirectIPv4Observation struct { +} + +type DirectIPv4Parameters struct { + + // Equinix side Interface IP address + // +kubebuilder:validation:Required + EquinixIfaceIP *string `json:"equinixIfaceIp" tf:"equinix_iface_ip,omitempty"` +} + +type DirectIPv6Observation struct { +} + +type DirectIPv6Parameters struct { + + // Equinix side Interface IP address + // +kubebuilder:validation:Optional + EquinixIfaceIP *string `json:"equinixIfaceIp,omitempty" tf:"equinix_iface_ip,omitempty"` +} + +type OperationErrorsAdditionalInfoObservation struct { + Property *string `json:"property,omitempty" tf:"property,omitempty"` + + Reason *string `json:"reason,omitempty" tf:"reason,omitempty"` +} + +type OperationErrorsAdditionalInfoParameters struct { +} + +type OperationErrorsObservation struct { + AdditionalInfo []OperationErrorsAdditionalInfoObservation `json:"additionalInfo,omitempty" tf:"additional_info,omitempty"` + + CorrelationID *string `json:"correlationId,omitempty" tf:"correlation_id,omitempty"` + + Details *string `json:"details,omitempty" tf:"details,omitempty"` + + ErrorCode *string `json:"errorCode,omitempty" tf:"error_code,omitempty"` + + ErrorMessage *string `json:"errorMessage,omitempty" tf:"error_message,omitempty"` + + Help *string `json:"help,omitempty" tf:"help,omitempty"` +} + +type OperationErrorsParameters struct { +} + +type RoutingProtocolChangeLogObservation struct { + CreatedBy *string `json:"createdBy,omitempty" tf:"created_by,omitempty"` + + CreatedByEmail *string `json:"createdByEmail,omitempty" tf:"created_by_email,omitempty"` + + CreatedByFullName *string `json:"createdByFullName,omitempty" tf:"created_by_full_name,omitempty"` + + CreatedDateTime *string `json:"createdDateTime,omitempty" tf:"created_date_time,omitempty"` + + DeletedBy *string `json:"deletedBy,omitempty" tf:"deleted_by,omitempty"` + + DeletedByEmail *string `json:"deletedByEmail,omitempty" tf:"deleted_by_email,omitempty"` + + DeletedByFullName *string `json:"deletedByFullName,omitempty" tf:"deleted_by_full_name,omitempty"` + + DeletedDateTime *string `json:"deletedDateTime,omitempty" tf:"deleted_date_time,omitempty"` + + UpdatedBy *string `json:"updatedBy,omitempty" tf:"updated_by,omitempty"` + + UpdatedByEmail *string `json:"updatedByEmail,omitempty" tf:"updated_by_email,omitempty"` + + UpdatedByFullName *string `json:"updatedByFullName,omitempty" tf:"updated_by_full_name,omitempty"` + + UpdatedDateTime *string `json:"updatedDateTime,omitempty" tf:"updated_date_time,omitempty"` +} + +type RoutingProtocolChangeLogParameters struct { +} + +type RoutingProtocolObservation struct { + + // Routing Protocol BGP IPv4 + // +kubebuilder:validation:Optional + BGPIPv4 []BGPIPv4Observation `json:"bgpIpv4,omitempty" tf:"bgp_ipv4,omitempty"` + + // Routing Protocol BGP IPv6 + // +kubebuilder:validation:Optional + BGPIPv6 []BGPIPv6Observation `json:"bgpIpv6,omitempty" tf:"bgp_ipv6,omitempty"` + + // Routing Protocol configuration Changes + Change []ChangeObservation `json:"change,omitempty" tf:"change,omitempty"` + + // Captures Routing Protocol lifecycle change information + ChangeLog []RoutingProtocolChangeLogObservation `json:"changeLog,omitempty" tf:"change_log,omitempty"` + + // Equinix ASN + EquinixAsn *float64 `json:"equinixAsn,omitempty" tf:"equinix_asn,omitempty"` + + // Routing Protocol URI information + Href *string `json:"href,omitempty" tf:"href,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // Routing Protocol type-specific operational data + Operation []RoutingProtocolOperationObservation `json:"operation,omitempty" tf:"operation,omitempty"` + + // Routing Protocol overall state + State *string `json:"state,omitempty" tf:"state,omitempty"` +} + +type RoutingProtocolOperationObservation struct { + Errors []OperationErrorsObservation `json:"errors,omitempty" tf:"errors,omitempty"` +} + +type RoutingProtocolOperationParameters struct { +} + +type RoutingProtocolParameters struct { + + // BGP authorization key + // +kubebuilder:validation:Optional + BGPAuthKey *string `json:"bgpAuthKey,omitempty" tf:"bgp_auth_key,omitempty"` + + // Routing Protocol BGP IPv4 + // +kubebuilder:validation:Optional + BGPIPv4 []BGPIPv4Parameters `json:"bgpIpv4,omitempty" tf:"bgp_ipv4,omitempty"` + + // Routing Protocol BGP IPv6 + // +kubebuilder:validation:Optional + BGPIPv6 []BGPIPv6Parameters `json:"bgpIpv6,omitempty" tf:"bgp_ipv6,omitempty"` + + // Bidirectional Forwarding Detection + // +kubebuilder:validation:Optional + Bfd []BfdParameters `json:"bfd,omitempty" tf:"bfd,omitempty"` + + // Connection URI associated with Routing Protocol + // +kubebuilder:validation:Required + ConnectionUUID *string `json:"connectionUuid" tf:"connection_uuid,omitempty"` + + // Customer-provided ASN + // +kubebuilder:validation:Optional + CustomerAsn *float64 `json:"customerAsn,omitempty" tf:"customer_asn,omitempty"` + + // Customer-provided Fabric Routing Protocol description + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // Routing Protocol Direct IPv4 + // +kubebuilder:validation:Optional + DirectIPv4 []DirectIPv4Parameters `json:"directIpv4,omitempty" tf:"direct_ipv4,omitempty"` + + // Routing Protocol Direct IPv6 + // +kubebuilder:validation:Optional + DirectIPv6 []DirectIPv6Parameters `json:"directIpv6,omitempty" tf:"direct_ipv6,omitempty"` + + // Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // Defines the routing protocol type like BGP or DIRECT + // +kubebuilder:validation:Optional + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // Equinix-assigned routing protocol identifier + // +kubebuilder:validation:Optional + UUID *string `json:"uuid,omitempty" tf:"uuid,omitempty"` +} + +// RoutingProtocolSpec defines the desired state of RoutingProtocol +type RoutingProtocolSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider RoutingProtocolParameters `json:"forProvider"` +} + +// RoutingProtocolStatus defines the observed state of RoutingProtocol. +type RoutingProtocolStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider RoutingProtocolObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// RoutingProtocol is the Schema for the RoutingProtocols API. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,equinix} +type RoutingProtocol struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec RoutingProtocolSpec `json:"spec"` + Status RoutingProtocolStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// RoutingProtocolList contains a list of RoutingProtocols +type RoutingProtocolList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []RoutingProtocol `json:"items"` +} + +// Repository type metadata. +var ( + RoutingProtocol_Kind = "RoutingProtocol" + RoutingProtocol_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: RoutingProtocol_Kind}.String() + RoutingProtocol_KindAPIVersion = RoutingProtocol_Kind + "." + CRDGroupVersion.String() + RoutingProtocol_GroupVersionKind = CRDGroupVersion.WithKind(RoutingProtocol_Kind) +) + +func init() { + SchemeBuilder.Register(&RoutingProtocol{}, &RoutingProtocolList{}) +} diff --git a/apis/metal/v1alpha1/zz_connection_types.go b/apis/metal/v1alpha1/zz_connection_types.go index 18f3c31..e72674b 100755 --- a/apis/metal/v1alpha1/zz_connection_types.go +++ b/apis/metal/v1alpha1/zz_connection_types.go @@ -49,12 +49,17 @@ type ConnectionObservation struct { type ConnectionParameters struct { + // The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key. + // The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key + // +kubebuilder:validation:Optional + ContactEmail *string `json:"contactEmail,omitempty" tf:"contact_email,omitempty"` + // Description for the connection resource. // Description of the connection resource // +kubebuilder:validation:Optional Description *string `json:"description,omitempty" tf:"description,omitempty"` - // Facility where the connection will be created. + // (Deprecated) Facility where the connection will be created. Use metro instead; read the facility to metro migration guide // Facility where the connection will be created // +kubebuilder:validation:Optional Facility *string `json:"facility,omitempty" tf:"facility,omitempty"` @@ -112,9 +117,9 @@ type ConnectionParameters struct { ServiceTokenType *string `json:"serviceTokenType,omitempty" tf:"service_token_type,omitempty"` // Connection speed - one of 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps. - // Port speed. Allowed values are 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps - // +kubebuilder:validation:Required - Speed *string `json:"speed" tf:"speed,omitempty"` + // Port speed. Required for a_side connections. Allowed values are 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps + // +kubebuilder:validation:Optional + Speed *string `json:"speed,omitempty" tf:"speed,omitempty"` // String list of tags. // Tags attached to the connection diff --git a/apis/metal/v1alpha1/zz_device_types.go b/apis/metal/v1alpha1/zz_device_types.go index 8491b08..23c6dc3 100755 --- a/apis/metal/v1alpha1/zz_device_types.go +++ b/apis/metal/v1alpha1/zz_device_types.go @@ -54,7 +54,7 @@ type DeviceObservation struct { // The timestamp for when the device was created Created *string `json:"created,omitempty" tf:"created,omitempty"` - // The facility where the device is deployed. + // (Deprecated) The facility where the device is deployed. Use metro instead; read the facility to metro migration guide // The facility where the device is deployed DeployedFacility *string `json:"deployedFacility,omitempty" tf:"deployed_facility,omitempty"` @@ -130,11 +130,11 @@ type DeviceParameters struct { // +kubebuilder:validation:Optional Description *string `json:"description,omitempty" tf:"description,omitempty"` - // List of facility codes with deployment preferences. Equinix Metal API will go + // (Deprecated) List of facility codes with deployment preferences. Equinix Metal API will go // through the list and will deploy your device to first facility with free capacity. List items must // be facility codes or any (a wildcard). To find the facility code, visit // Facilities API docs, set your API auth - // token in the top of the page and see JSON from the API response. Conflicts with metro. + // token in the top of the page and see JSON from the API response. Conflicts with metro. Use metro instead; read the facility to metro migration guide // List of facility codes with deployment preferences. Equinix Metal API will go through the list and will deploy your device to first facility with free capacity. List items must be facility codes or any (a wildcard). To find the facility code, visit [Facilities API docs](https://metal.equinix.com/developers/api/facilities/), set your API auth token in the top of the page and see JSON from the API response. Conflicts with metro // +kubebuilder:validation:Optional Facilities []*string `json:"facilities,omitempty" tf:"facilities,omitempty"` @@ -212,11 +212,8 @@ type DeviceParameters struct { // +kubebuilder:validation:Optional ProjectIDSelector *v1.Selector `json:"projectIdSelector,omitempty" tf:"-"` - // Array of IDs of the project SSH keys which should be added to the device. - // If you omit this, SSH keys of all the members of the parent project will be added to the device. If - // you specify this array, only the listed project SSH keys will be added. Project SSH keys can be - // created with the equinix_metal_project_ssh_key resource. - // Array of IDs of the project SSH keys which should be added to the device. If you omit this, SSH keys of all the members of the parent project will be added to the device. If you specify this array, only the listed project SSH keys (and any user_ssh_key_ids) will be added. Project SSH keys can be created with the [equinix_metal_project_ssh_key](equinix_metal_project_ssh_key.md) resource + // Array of IDs of the project SSH keys which should be added to the device. If you specify this array, only the listed project SSH keys (and any SSH keys for the users specified in user_ssh_key_ids) will be added. If no SSH keys are specified (both user_ssh_keys_ids and project_ssh_key_ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included. Project SSH keys can be created with the equinix_metal_project_ssh_key resource. + // Array of IDs of the project SSH keys which should be added to the device. If you specify this array, only the listed project SSH keys (and any SSH keys for the users specified in user_ssh_key_ids) will be added. If no SSH keys are specified (both user_ssh_keys_ids and project_ssh_key_ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included. Project SSH keys can be created with the [equinix_metal_project_ssh_key](equinix_metal_project_ssh_key.md) resource // +kubebuilder:validation:Optional ProjectSSHKeyIds []*string `json:"projectSshKeyIds,omitempty" tf:"project_ssh_key_ids,omitempty"` @@ -251,8 +248,8 @@ type DeviceParameters struct { // +kubebuilder:validation:Optional UserDataSecretRef *v1.SecretKeySelector `json:"userDataSecretRef,omitempty" tf:"-"` - // Array of IDs of the user SSH keys which should be added to the device. If you omit this, SSH keys of all the members of the parent project will be added to the device. If you specify this array, only the listed user SSH keys (and any project_ssh_key_ids) will be added. User SSH keys can be created with the equinix_metal_ssh_key resource - // Array of IDs of the user SSH keys which should be added to the device. If you omit this, SSH keys of all the members of the parent project will be added to the device. If you specify this array, only the listed user SSH keys (and any project_ssh_key_ids) will be added. User SSH keys can be created with the [equinix_metal_ssh_key](equinix_metal_ssh_key.md) resource + // Array of IDs of the users whose SSH keys should be added to the device. If you specify this array, only the listed users' SSH keys (and any project SSH keys specified in project_ssh_key_ids) will be added. If no SSH keys are specified (both user_ssh_keys_ids and project_ssh_key_ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included. User SSH keys can be created with the equinix_metal_ssh_key resource. + // Array of IDs of the users whose SSH keys should be added to the device. If you specify this array, only the listed users' SSH keys (and any project SSH keys specified in project_ssh_key_ids) will be added. If no SSH keys are specified (both user_ssh_keys_ids and project_ssh_key_ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included. User SSH keys can be created with the [equinix_metal_ssh_key](equinix_metal_ssh_key.md) resource // +kubebuilder:validation:Optional UserSSHKeyIds []*string `json:"userSshKeyIds,omitempty" tf:"user_ssh_key_ids,omitempty"` diff --git a/apis/metal/v1alpha1/zz_generated.deepcopy.go b/apis/metal/v1alpha1/zz_generated.deepcopy.go index 56295fd..db2b8b0 100644 --- a/apis/metal/v1alpha1/zz_generated.deepcopy.go +++ b/apis/metal/v1alpha1/zz_generated.deepcopy.go @@ -441,6 +441,11 @@ func (in *ConnectionObservation) DeepCopy() *ConnectionObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ConnectionParameters) DeepCopyInto(out *ConnectionParameters) { *out = *in + if in.ContactEmail != nil { + in, out := &in.ContactEmail, &out.ContactEmail + *out = new(string) + **out = **in + } if in.Description != nil { in, out := &in.Description, &out.Description *out = new(string) @@ -1590,6 +1595,11 @@ func (in *IPAttachmentStatus) DeepCopy() *IPAttachmentStatus { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *InstanceParametersObservation) DeepCopyInto(out *InstanceParametersObservation) { *out = *in + if in.TerminationTime != nil { + in, out := &in.TerminationTime, &out.TerminationTime + *out = new(string) + **out = **in + } if in.TermintationTime != nil { in, out := &in.TermintationTime, &out.TermintationTime *out = new(string) diff --git a/apis/metal/v1alpha1/zz_ipattachment_types.go b/apis/metal/v1alpha1/zz_ipattachment_types.go index a654688..83b6c8d 100755 --- a/apis/metal/v1alpha1/zz_ipattachment_types.go +++ b/apis/metal/v1alpha1/zz_ipattachment_types.go @@ -68,7 +68,7 @@ type IPAttachmentObservation struct { type IPAttachmentParameters struct { // CIDR notation of subnet from block reserved in the same project - // and facility as the device. + // and metro as the device. // +kubebuilder:validation:Required CidrNotation *string `json:"cidrNotation" tf:"cidr_notation,omitempty"` diff --git a/apis/metal/v1alpha1/zz_portvlanattachment_types.go b/apis/metal/v1alpha1/zz_portvlanattachment_types.go index 8ba5ab3..b3f633d 100755 --- a/apis/metal/v1alpha1/zz_portvlanattachment_types.go +++ b/apis/metal/v1alpha1/zz_portvlanattachment_types.go @@ -26,22 +26,17 @@ import ( ) type PortVlanAttachmentObservation struct { - - // UUID of device port used in the assignment. ID *string `json:"id,omitempty" tf:"id,omitempty"` - // UUID of device port. // UUID of device port PortID *string `json:"portId,omitempty" tf:"port_id,omitempty"` - // UUID of VLAN API resource. // UUID of VLAN API resource VlanID *string `json:"vlanId,omitempty" tf:"vlan_id,omitempty"` } type PortVlanAttachmentParameters struct { - // ID of device to be assigned to the VLAN. // ID of device to be assigned to the VLAN // +crossplane:generate:reference:type=Device // +kubebuilder:validation:Optional @@ -55,26 +50,18 @@ type PortVlanAttachmentParameters struct { // +kubebuilder:validation:Optional DeviceIDSelector *v1.Selector `json:"deviceIdSelector,omitempty" tf:"-"` - // Add port back to the bond when this resource is removed. Default is - // false. // Add port back to the bond when this resource is removed. Default is false // +kubebuilder:validation:Optional ForceBond *bool `json:"forceBond,omitempty" tf:"force_bond,omitempty"` - // Mark this VLAN a native VLAN on the port. This can be used only if this - // assignment assigns second or further VLAN to the port. To ensure that this attachment is not first - // on a port, you can use depends_on pointing to another equinix_metal_port_vlan_attachment, just - // like in the layer2-individual example above. // Mark this VLAN a native VLAN on the port. This can be used only if this assignment assigns second or further VLAN to the port. To ensure that this attachment is not first on a port, you can use depends_on pointing to another equinix_metal_port_vlan_attachment, just like in the layer2-individual example above // +kubebuilder:validation:Optional Native *bool `json:"native,omitempty" tf:"native,omitempty"` - // Name of network port to be assigned to the VLAN. // Name of network port to be assigned to the VLAN // +kubebuilder:validation:Required PortName *string `json:"portName" tf:"port_name,omitempty"` - // VXLAN Network Identifier. // VXLAN Network Identifier, integer // +kubebuilder:validation:Required VlanVnid *float64 `json:"vlanVnid" tf:"vlan_vnid,omitempty"` @@ -94,7 +81,7 @@ type PortVlanAttachmentStatus struct { // +kubebuilder:object:root=true -// PortVlanAttachment is the Schema for the PortVlanAttachments API. +// PortVlanAttachment is the Schema for the PortVlanAttachments API. // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" diff --git a/apis/metal/v1alpha1/zz_project_types.go b/apis/metal/v1alpha1/zz_project_types.go index d434a2d..fdbfdf7 100755 --- a/apis/metal/v1alpha1/zz_project_types.go +++ b/apis/metal/v1alpha1/zz_project_types.go @@ -43,8 +43,8 @@ type BGPConfigParameters struct { // +kubebuilder:validation:Required Asn *float64 `json:"asn" tf:"asn,omitempty"` - // private or public, the private is likely to be usable immediately, the - // public will need to be reviewed by Equinix Metal engineers. + // local or global, the local is likely to be usable immediately, the + // global will need to be reviewed by Equinix Metal engineers. // "local" or "global", the local is likely to be usable immediately, the global will need to be review by Equinix Metal engineers // +kubebuilder:validation:Required DeploymentType *string `json:"deploymentType" tf:"deployment_type,omitempty"` @@ -86,13 +86,13 @@ type ProjectParameters struct { // +kubebuilder:validation:Optional BackendTransfer *bool `json:"backendTransfer,omitempty" tf:"backend_transfer,omitempty"` - // The name of the project. - // The name of the project + // The name of the project. The maximum length is 80 characters + // The name of the project. The maximum length is 80 characters. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` // The UUID of organization under which you want to create the project. If you - // leave it out, the project will be create under your the default organization of your account. + // leave it out, the project will be created under your the default organization of your account. // The UUID of organization under which you want to create the project. If you leave it out, the project will be create under your the default organization of your account // +crossplane:generate:reference:type=Organization // +kubebuilder:validation:Optional diff --git a/apis/metal/v1alpha1/zz_reservedipblock_types.go b/apis/metal/v1alpha1/zz_reservedipblock_types.go index becb846..c033d5a 100755 --- a/apis/metal/v1alpha1/zz_reservedipblock_types.go +++ b/apis/metal/v1alpha1/zz_reservedipblock_types.go @@ -38,7 +38,7 @@ type ReservedIPBlockObservation struct { Gateway *string `json:"gateway,omitempty" tf:"gateway,omitempty"` // Boolean flag whether addresses from a block are global (i.e. can be assigned in any - // facility). + // metro). // Flag indicating whether IP block is global, i.e. assignable in any location Global *bool `json:"global,omitempty" tf:"global,omitempty"` @@ -74,8 +74,8 @@ type ReservedIPBlockParameters struct { // +kubebuilder:validation:Optional Description *string `json:"description,omitempty" tf:"description,omitempty"` - // Facility where to allocate the public IP address block, makes sense only - // if type is public_ipv4 and must be empty if type is global_ipv4. Conflicts with metro. + // (Deprecated) Facility where to allocate the public IP address block, makes sense only + // if type is public_ipv4 and must be empty if type is global_ipv4. Conflicts with metro. Use metro instead; read the facility to metro migration guide // Facility where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with metro // +kubebuilder:validation:Optional Facility *string `json:"facility,omitempty" tf:"facility,omitempty"` diff --git a/apis/metal/v1alpha1/zz_spotmarketrequest_types.go b/apis/metal/v1alpha1/zz_spotmarketrequest_types.go index 2da4fd5..d528df8 100755 --- a/apis/metal/v1alpha1/zz_spotmarketrequest_types.go +++ b/apis/metal/v1alpha1/zz_spotmarketrequest_types.go @@ -26,6 +26,8 @@ import ( ) type InstanceParametersObservation struct { + TerminationTime *string `json:"terminationTime,omitempty" tf:"termination_time,omitempty"` + TermintationTime *string `json:"termintationTime,omitempty" tf:"termintation_time,omitempty"` } @@ -82,7 +84,7 @@ type SpotMarketRequestObservation struct { // Key/Value pairs of parameters for devices provisioned from // this request. Valid keys are: billing_cycle, plan, operating_system, hostname, - // termintation_time, always_pxe, description, features, locked, project_ssh_keys, + // termination_time, always_pxe, description, features, locked, project_ssh_keys, // user_ssh_keys, userdata, customdata, ipxe_script_url, tags. You can find each parameter // description in equinix_metal_device docs. // Parameters for devices provisioned from this request. You can find the parameter description from the [equinix_metal_device doc](device.md) @@ -102,14 +104,14 @@ type SpotMarketRequestParameters struct { // +kubebuilder:validation:Required DevicesMin *float64 `json:"devicesMin" tf:"devices_min,omitempty"` - // Facility IDs where devices should be created. + // (Deprecated) Facility IDs where devices should be created. Use metro instead; read the facility to metro migration guide // Facility IDs where devices should be created // +kubebuilder:validation:Optional Facilities []*string `json:"facilities,omitempty" tf:"facilities,omitempty"` // Key/Value pairs of parameters for devices provisioned from // this request. Valid keys are: billing_cycle, plan, operating_system, hostname, - // termintation_time, always_pxe, description, features, locked, project_ssh_keys, + // termination_time, always_pxe, description, features, locked, project_ssh_keys, // user_ssh_keys, userdata, customdata, ipxe_script_url, tags. You can find each parameter // description in equinix_metal_device docs. // Parameters for devices provisioned from this request. You can find the parameter description from the [equinix_metal_device doc](device.md) diff --git a/apis/metal/v1alpha1/zz_vlan_types.go b/apis/metal/v1alpha1/zz_vlan_types.go index 607e681..a1e272f 100755 --- a/apis/metal/v1alpha1/zz_vlan_types.go +++ b/apis/metal/v1alpha1/zz_vlan_types.go @@ -38,11 +38,13 @@ type VlanParameters struct { // +kubebuilder:validation:Optional Description *string `json:"description,omitempty" tf:"description,omitempty"` - // Facility where to create the VLAN. + // (Deprecated) Facility where to create the VLAN. Use metro instead; read the facility to metro migration guide // Facility where to create the VLAN // +kubebuilder:validation:Optional Facility *string `json:"facility,omitempty" tf:"facility,omitempty"` + // Metro in which to create the VLAN + // Metro in which to create the VLAN // +kubebuilder:validation:Optional Metro *string `json:"metro,omitempty" tf:"metro,omitempty"` diff --git a/apis/network/v1alpha1/zz_device_types.go b/apis/network/v1alpha1/zz_device_types.go index 5e22ba4..a387650 100755 --- a/apis/network/v1alpha1/zz_device_types.go +++ b/apis/network/v1alpha1/zz_device_types.go @@ -175,6 +175,12 @@ type DeviceParameters struct { // +kubebuilder:validation:Optional ClusterDetails []ClusterDetailsParameters `json:"clusterDetails,omitempty" tf:"cluster_details,omitempty"` + // Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). + // If not specified, default will be INTERNET-ACCESS + // Parameter to identify internet access for device. Supported Values: INTERNET-ACCESS(default) or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT + // +kubebuilder:validation:Optional + Connectivity *string `json:"connectivity,omitempty" tf:"connectivity,omitempty"` + // Number of CPU cores used by device. // Number of CPU cores used by device // +kubebuilder:validation:Required diff --git a/apis/network/v1alpha1/zz_generated.deepcopy.go b/apis/network/v1alpha1/zz_generated.deepcopy.go index 7bd6e58..bf7d3a4 100644 --- a/apis/network/v1alpha1/zz_generated.deepcopy.go +++ b/apis/network/v1alpha1/zz_generated.deepcopy.go @@ -915,6 +915,11 @@ func (in *DeviceParameters) DeepCopyInto(out *DeviceParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Connectivity != nil { + in, out := &in.Connectivity, &out.Connectivity + *out = new(string) + **out = **in + } if in.CoreCount != nil { in, out := &in.CoreCount, &out.CoreCount *out = new(float64) @@ -1827,6 +1832,11 @@ func (in *SSHKeyParameters_2) DeepCopyInto(out *SSHKeyParameters_2) { *out = new(string) **out = **in } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHKeyParameters_2. diff --git a/apis/network/v1alpha1/zz_sshkey_types.go b/apis/network/v1alpha1/zz_sshkey_types.go index f0d16bd..9537953 100755 --- a/apis/network/v1alpha1/zz_sshkey_types.go +++ b/apis/network/v1alpha1/zz_sshkey_types.go @@ -45,6 +45,11 @@ type SSHKeyParameters_2 struct { // The SSH public key. If this is a file, it can be read using the file interpolation function // +kubebuilder:validation:Required PublicKey *string `json:"publicKey" tf:"public_key,omitempty"` + + // The type of SSH key: RSA (default) or DSA. + // The type of SSH key: RSA (default) or DSA + // +kubebuilder:validation:Optional + Type *string `json:"type,omitempty" tf:"type,omitempty"` } // SSHKeySpec defines the desired state of SSHKey diff --git a/config/provider-metadata.yaml b/config/provider-metadata.yaml index 1896e46..7edbbb0 100644 --- a/config/provider-metadata.yaml +++ b/config/provider-metadata.yaml @@ -20,6 +20,9 @@ resources: attribute is only set on bond ports. port_id: '- (Required) ID of the port to read.' reset_on_delete: '- (Optional) Behavioral setting to reset the port to default settings (layer3 bonded mode without any vlan attached) before delete/destroy.' + timeouts.create: '- (Defaults to 30 mins) Used when creating the Port.' + timeouts.delete: '- (Defaults to 30 mins) Used when deleting the Port.' + timeouts.update: '- (Defaults to 30 mins) Used when updating the Port.' type: '- Type is either "NetworkBondPort" for bond ports or "NetworkPort" for bondable ethernet ports.' vlan_ids: |- - (Optional) List of VLAN UUIDs to attach to the port, valid only for L2 and Hybrid @@ -434,6 +437,57 @@ resources: - (Required) A list of email addresses that will receive notifications about connections approvals and rejections. importStatements: [] + equinix_fabric_cloud_router Resource - terraform-provider-equinix: + subCategory: Fabric + description: Fabric V4 API compatible resource allows creation and management of Equinix Fabric Cloud Router ~> 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 + name: equinix_fabric_cloud_router Resource - terraform-provider-equinix + title: equinix_fabric_cloud_router Resource - terraform-provider-equinix + argumentDocs: + account: '(Block Set, Max: 1) Customer account information that is associated with this Fabric Cloud Router (see below for nested schema)' + account_number: (Number) Account Number + billing_tier: (String) Billing tier for connection bandwidth + change_log: (Set of Object) Captures Fabric Cloud Router lifecycle change information (see below for nested schema) + code: (String) Fabric Cloud Router package code + create: (String) + created_by: (String) + created_by_email: (String) + created_by_full_name: (String) + created_date_time: (String) + delete: (String) + deleted_by: (String) + deleted_by_email: (String) + deleted_by_full_name: (String) + deleted_date_time: (String) + description: (String) Customer-provided Fabric Cloud Router description + emails: (List of String) Array of contact emails + equinix_asn: (Number) Equinix ASN + href: (String) Fabric Cloud Router URI information + ibx: (String) IBX Code + id: (String) The ID of this resource. + location: '(Block Set, Min: 1, Max: 1) Fabric Cloud Router location (see below for nested schema)' + metro_code: (String) Access point metro code + metro_name: (String) Access point metro name + name: (String) Fabric Cloud Router name. An alpha-numeric 24 characters string which can include only hyphens and underscores + notifications: '(Block List, Min: 1) Preferences for notifications on Fabric Cloud Router configuration or status changes (see below for nested schema)' + order: '(Block Set, Max: 1) Order information related to this Fabric Cloud Router (see below for nested schema)' + order_id: (String) Order Identification + order_number: (String) Order Reference Number + package: '(Block Set, Min: 1, Max: 1) Fabric Cloud Router package (see below for nested schema)' + project: (Block Set) Fabric Cloud Router project (see below for nested schema) + project_id: (String) Project Id + purchase_order_number: (String) Purchase order number + read: (String) + region: (String) Access point region + send_interval: (String) Send interval + state: (String) Fabric Cloud Router overall state + timeouts: (Block, Optional) (see below for nested schema) + type: (String) Defines the FCR type like XF_GATEWAY + update: (String) + updated_by: (String) + updated_by_email: (String) + updated_by_full_name: (String) + updated_date_time: (String) + importStatements: [] equinix_fabric_connection Resource - terraform-provider-equinix: subCategory: Fabric description: Fabric V4 API compatible resource allows creation and management of Equinix Fabric connection ~> 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 @@ -470,11 +524,11 @@ resources: error_code: (String) error_message: (String) errors: (List of Object) (see below for nested schema) - gateway: (Block Set) Gateway access point information (see below for nested schema) + gateway: Use router attribute instead; (Block Set) (see below for nested schema) global_cust_id: (String) global_org_id: (String) global_organization_name: (String) - group: (String) Redundancy group identifier + group: (String) help: (String) href: (String) Connection URI information ibx: (String) IBX Code @@ -508,13 +562,14 @@ resources: reason: (String) redundancy: (Block Set) Redundancy Information (see below for nested schema) region: (String) Access point region + router: (Block Set) Cloud Router access point information that replaces gateway (refers to below for nested schema) routing_protocols: (Block List) Access point routing protocols configuration (see below for nested schema) seller_region: (String) Access point seller region send_interval: (String) Send interval service_token: (Block Set) For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets (see below for nested schema) state: (String) Connection overall state timeouts: (Block, Optional) (see below for nested schema) - 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 update: (String) updated_by: (String) updated_by_email: (String) @@ -528,6 +583,63 @@ resources: vlan_tag: (Number) Vlan Tag information, vlanTag value specified for DOT1Q connections z_side: '(Block Set, Min: 1) Destination or Provider side connection configuration object of the multi-segment connection (see below for nested schema)' importStatements: [] + equinix_fabric_routing_protocol Resource - terraform-provider-equinix: + subCategory: Fabric + description: Fabric V4 API compatible resource allows creation and management of Equinix Fabric connection ~> 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 + name: equinix_fabric_routing_protocol Resource - terraform-provider-equinix + title: equinix_fabric_routing_protocol Resource - terraform-provider-equinix + argumentDocs: + additional_info: (List of Object) (see below for nested schema) + bfd: (Block Set) Bidirectional Forwarding Detection (see below for nested schema) + bgp_auth_key: (String) BGP authorization key + bgp_ipv4: (Block Set) Routing Protocol BGP IPv4 (see below for nested schema) + bgp_ipv6: (Block Set) Routing Protocol BGP IPv6 (see below for nested schema) + change: (Set of Object) Routing Protocol configuration Changes (see below for nested schema) + change_log: (Set of Object) Captures Routing Protocol lifecycle change information (see below for nested schema) + connection_uuid: (String) Connection URI associated with Routing Protocol + correlation_id: (String) + create: (String) + created_by: (String) + created_by_email: (String) + created_by_full_name: (String) + created_date_time: (String) + customer_asn: (Number) Customer-provided ASN + customer_peer_ip: (String) Customer side peering ip + delete: (String) + deleted_by: (String) + deleted_by_email: (String) + deleted_by_full_name: (String) + deleted_date_time: (String) + description: (String) Customer-provided Fabric Routing Protocol description + details: (String) + direct_ipv4: (Block Set) Routing Protocol Direct IPv4 (see below for nested schema) + direct_ipv6: (Block Set) Routing Protocol Direct IPv6 (see below for nested schema) + enabled: (Boolean) Bidirectional Forwarding Detection enablement + equinix_asn: (Number) Equinix ASN + equinix_iface_ip: (String) Equinix side Interface IP address + equinix_peer_ip: (String) Equinix side peering ip + error_code: (String) + error_message: (String) + errors: (List of Object) (see below for nested schema) + help: (String) + href: (String) Routing Protocol URI information + id: (String) The ID of this resource. + interval: (String) Interval range between the received BFD control packets + name: (String) Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores + operation: (Set of Object) Routing Protocol type-specific operational data (see below for nested schema) + property: (String) + read: (String) + reason: (String) + state: (String) Routing Protocol overall state + timeouts: (Block, Optional) (see below for nested schema) + type: (String) Defines the routing protocol type like BGP or DIRECT + update: (String) + updated_by: (String) + updated_by_email: (String) + updated_by_full_name: (String) + updated_date_time: (String) + uuid: (String) Equinix-assigned routing protocol identifier + importStatements: [] equinix_fabric_service_profile Resource - terraform-provider-equinix: subCategory: Fabric description: Fabric V4 API compatible resource allows creation and management of Equinix Fabric Service Profile ~> 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 @@ -647,17 +759,17 @@ resources: equinix_metal_device.test: |- { "billing_cycle": "hourly", - "facilities": [ - "ny5" - ], "hostname": "terraform-test-bgp-sesh", + "metro": [ + "ny" + ], "operating_system": "ubuntu_20_04", "plan": "c3.small.x86", "project_id": "${local.project_id}" } equinix_metal_reserved_ip_block.addr: |- { - "facility": "ny5", + "metro": "ny", "project_id": "${local.project_id}", "quantity": 1 } @@ -717,6 +829,7 @@ resources: - name: example manifest: |- { + "contact_email": "username@example.com", "metro": "sv", "name": "tf-metal-to-azure", "project_id": "${local.project_id}", @@ -751,6 +864,7 @@ resources: - name: example manifest: |- { + "contact_email": "username@example.com", "metro": "FR", "name": "tf-port-to-metal", "project_id": "${local.project_id}", @@ -777,6 +891,7 @@ resources: - name: example manifest: |- { + "contact_email": "username@example.com", "metro": "SV", "name": "tf-port-to-metal-legacy", "project_id": "${local.my_project_id}", @@ -799,8 +914,9 @@ resources: "vlan_stag": 1020 } argumentDocs: + contact_email: '- (Optional) The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.' description: '- (Optional) Description for the connection resource.' - facility: '- (Optional) Facility where the connection will be created.' + facility: '- (Deprecated) Facility where the connection will be created. Use metro instead; read the facility to metro migration guide' metro: '- (Optional) Metro where the connection will be created.' mode: '- (Optional) Mode for connections in IBX facilities with the dedicated type - standard or tunnel. Default is standard.' name: '- (Required) Name of the connection resource' @@ -843,7 +959,7 @@ resources: "always_pxe": "false", "billing_cycle": "hourly", "hostname": "tf.coreos2-pxe", - "ipxe_script_url": "https://rawgit.com/cloudnativelabs/pxe/master/metal/coreos-stable-metal.ipxe", + "ipxe_script_url": "https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe", "metro": "sv", "operating_system": "custom_ipxe", "plan": "c3.small.x86", @@ -857,9 +973,6 @@ resources: manifest: |- { "billing_cycle": "hourly", - "facilities": [ - "ny5" - ], "hostname": "tf.coreos2", "ip_address": [ { @@ -867,6 +980,7 @@ resources: "type": "private_ipv4" } ], + "metro": "ny", "operating_system": "ubuntu_20_04", "plan": "c3.small.x86", "project_id": "${local.project_id}" @@ -877,11 +991,9 @@ resources: manifest: |- { "billing_cycle": "hourly", - "facilities": [ - "ny5" - ], "hardware_reservation_id": "next-available", "hostname": "tftest", + "metro": "ny", "operating_system": "ubuntu_20_04", "plan": "c3.small.x86", "project_id": "${local.project_id}", @@ -904,7 +1016,7 @@ resources: "billing_cycle": "hourly", "custom_data": "${local.custom_data}", "hostname": "tf.coreos2-pxe", - "ipxe_script_url": "https://rawgit.com/cloudnativelabs/pxe/master/metal/coreos-stable-metal.ipxe", + "ipxe_script_url": "https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe", "metro": "sv", "operating_system": "custom_ipxe", "plan": "c3.small.x86", @@ -930,7 +1042,7 @@ resources: cidr: '- Bit length of the network mask of the address.' created: '- The timestamp for when the device was created.' custom_data: '- (Optional) A string of the desired Custom Data for the device. By default, changing this attribute will cause the provider to destroy and recreate your device. If reinstall is specified or behavior.allow_changes includes "custom_data", the device will be updated in-place instead of recreated.' - deployed_facility: '- The facility where the device is deployed.' + deployed_facility: '- (Deprecated) The facility where the device is deployed. Use metro instead; read the facility to metro migration guide' deployed_hardware_reservation_id: |- - ID of hardware reservation where this device was deployed. It is useful when using the next-available hardware reservation. @@ -939,11 +1051,11 @@ resources: equinix_metal_device.name.network.1: . equinix_metal_device.name.network.2: . facilities: |- - - (Optional) List of facility codes with deployment preferences. Equinix Metal API will go + - (Deprecated) List of facility codes with deployment preferences. Equinix Metal API will go through the list and will deploy your device to first facility with free capacity. List items must be facility codes or any (a wildcard). To find the facility code, visit Facilities API docs, set your API auth - token in the top of the page and see JSON from the API response. Conflicts with metro. + token in the top of the page and see JSON from the API response. Conflicts with metro. Use metro instead; read the facility to metro migration guide family: '- IP version. One of 4, 6.' force_detach_volumes: |- - (Optional) Delete device even if it has volumes attached. Only applies @@ -1004,11 +1116,7 @@ resources: - List of ports assigned to the device. See Ports Attribute below for more details. project_id: '- (Required) The ID of the project in which to create the device' - project_ssh_key_ids: |- - - (Optional) Array of IDs of the project SSH keys which should be added to the device. - If you omit this, SSH keys of all the members of the parent project will be added to the device. If - you specify this array, only the listed project SSH keys will be added. Project SSH keys can be - created with the equinix_metal_project_ssh_key resource. + project_ssh_key_ids: '- (Optional) Array of IDs of the project SSH keys which should be added to the device. If you specify this array, only the listed project SSH keys (and any SSH keys for the users specified in user_ssh_key_ids) will be added. If no SSH keys are specified (both user_ssh_keys_ids and project_ssh_key_ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included. Project SSH keys can be created with the equinix_metal_project_ssh_key resource.' public: '- Whether the address is routable from the Internet.' reinstall: |- - (Optional) Whether the device should be reinstalled instead of destroyed when @@ -1042,7 +1150,7 @@ resources: type: '- Type of the port (e.g. NetworkPort or NetworkBondPort).' updated: '- The timestamp for the last time the device was updated.' user_data: '- (Optional) A string of the desired User Data for the device. By default, changing this attribute will cause the provider to destroy and recreate your device. If reinstall is specified or behavior.allow_changes includes "user_data", the device will be updated in-place instead of recreated.' - user_ssh_key_ids: '- (Optional) Array of IDs of the user SSH keys which should be added to the device. If you omit this, SSH keys of all the members of the parent project will be added to the device. If you specify this array, only the listed user SSH keys (and any project_ssh_key_ids) will be added. User SSH keys can be created with the equinix_metal_ssh_key resource' + user_ssh_key_ids: '- (Optional) Array of IDs of the users whose SSH keys should be added to the device. If you specify this array, only the listed users'' SSH keys (and any project SSH keys specified in project_ssh_key_ids) will be added. If no SSH keys are specified (both user_ssh_keys_ids and project_ssh_key_ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included. User SSH keys can be created with the equinix_metal_ssh_key resource.' wait_for_reservation_deprovision: |- - (Optional) Only used for devices in reserved hardware. If set, the deletion of this device will block until the hardware reservation is marked provisionable @@ -1122,7 +1230,7 @@ resources: dependencies: equinix_metal_reserved_ip_block.myblock: |- { - "facility": "ny5", + "metro": "ny", "project_id": "${local.project_id}", "quantity": 2 } @@ -1131,7 +1239,7 @@ resources: cidr: '- Length of CIDR prefix of the subnet as integer.' cidr_notation: |- - (Required) CIDR notation of subnet from block reserved in the same project - and facility as the device. + and metro as the device. device_id: '- (Required) ID of device to which to assign the subnet.' gateway: '- IP address of gateway for the subnet.' id: '- The unique ID of the assignment.' @@ -1212,142 +1320,6 @@ resources: state: '- The state of the membership (''invited'' when an invitation is open, ''active'' when the user is an organization member)' updated: '- When the invitation was updated (only known in the invitation stage)' importStatements: [] - equinix_metal_port_vlan_attachment: - subCategory: Metal - name: equinix_metal_port_vlan_attachment - title: "" - examples: - - name: test - manifest: |- - { - "device_id": "${equinix_metal_device_network_type.test.id}", - "port_name": "eth1", - "vlan_vnid": "${equinix_metal_vlan.test.vxlan}" - } - references: - device_id: equinix_metal_device_network_type.test.id - vlan_vnid: equinix_metal_vlan.test.vxlan - dependencies: - equinix_metal_device.test: |- - { - "billing_cycle": "hourly", - "facilities": [ - "ny5" - ], - "hostname": "test", - "operating_system": "ubuntu_20_04", - "plan": "c3.small.x86", - "project_id": "${local.project_id}" - } - equinix_metal_device_network_type.test: |- - { - "device_id": "${equinix_metal_device.test.id}", - "type": "hybrid" - } - equinix_metal_vlan.test: |- - { - "description": "VLAN in New Jersey", - "facility": "ny5", - "project_id": "${local.project_id}" - } - - name: test1 - manifest: |- - { - "device_id": "${equinix_metal_device_network_type.test.id}", - "port_name": "eth1", - "vlan_vnid": "${equinix_metal_vlan.test1.vxlan}" - } - references: - device_id: equinix_metal_device_network_type.test.id - vlan_vnid: equinix_metal_vlan.test1.vxlan - dependencies: - equinix_metal_device.test: |- - { - "billing_cycle": "hourly", - "facilities": [ - "ny5" - ], - "hostname": "test", - "operating_system": "ubuntu_20_04", - "plan": "c3.small.x86", - "project_id": "${local.project_id}" - } - equinix_metal_device_network_type.test: |- - { - "device_id": "${equinix_metal_device.test.id}", - "type": "layer2-individual" - } - equinix_metal_vlan.test1: |- - { - "description": "VLAN in New Jersey", - "facility": "ny5", - "project_id": "${local.project_id}" - } - equinix_metal_vlan.test2: |- - { - "description": "VLAN in New Jersey", - "facility": "ny5", - "project_id": "${local.project_id}" - } - - name: test2 - manifest: |- - { - "depends_on": [ - "equinix_metal_port_vlan_attachment.test1" - ], - "device_id": "${equinix_metal_device_network_type.test.id}", - "native": true, - "port_name": "eth1", - "vlan_vnid": "${equinix_metal_vlan.test2.vxlan}" - } - references: - device_id: equinix_metal_device_network_type.test.id - vlan_vnid: equinix_metal_vlan.test2.vxlan - dependencies: - equinix_metal_device.test: |- - { - "billing_cycle": "hourly", - "facilities": [ - "ny5" - ], - "hostname": "test", - "operating_system": "ubuntu_20_04", - "plan": "c3.small.x86", - "project_id": "${local.project_id}" - } - equinix_metal_device_network_type.test: |- - { - "device_id": "${equinix_metal_device.test.id}", - "type": "layer2-individual" - } - equinix_metal_vlan.test1: |- - { - "description": "VLAN in New Jersey", - "facility": "ny5", - "project_id": "${local.project_id}" - } - equinix_metal_vlan.test2: |- - { - "description": "VLAN in New Jersey", - "facility": "ny5", - "project_id": "${local.project_id}" - } - argumentDocs: - device_id: '- (Required) ID of device to be assigned to the VLAN.' - force_bond: |- - - (Optional) Add port back to the bond when this resource is removed. Default is - false. - id: '- UUID of device port used in the assignment.' - native: |- - - (Optional) Mark this VLAN a native VLAN on the port. This can be used only if this - assignment assigns second or further VLAN to the port. To ensure that this attachment is not first - on a port, you can use depends_on pointing to another equinix_metal_port_vlan_attachment, just - like in the layer2-individual example above. - port_id: '- UUID of device port.' - port_name: '- (Required) Name of network port to be assigned to the VLAN.' - vlan_id: '- UUID of VLAN API resource.' - vlan_vnid: '- (Required) VXLAN Network Identifier.' - importStatements: [] equinix_metal_project: subCategory: Metal name: equinix_metal_project @@ -1387,17 +1359,17 @@ resources: bgp_config: '- Optional BGP settings. Refer to Equinix Metal guide for BGP.' bgp_config.asn: '- (Required) Autonomous System Number for local BGP deployment.' bgp_config.deployment_type: |- - - (Required) private or public, the private is likely to be usable immediately, the - public will need to be reviewed by Equinix Metal engineers. + - (Required) local or global, the local is likely to be usable immediately, the + global will need to be reviewed by Equinix Metal engineers. bgp_config.max_prefix: '- The maximum number of route filters allowed per server.' bgp_config.md5: '- (Optional) Password for BGP session in plaintext (not a checksum).' bgp_config.status: '- status of BGP configuration in the project.' created: '- The timestamp for when the project was created.' id: '- The unique ID of the project.' - name: '- (Required) The name of the project.' + name: '- (Required) The name of the project. The maximum length is 80 characters' organization_id: |- - (Required) The UUID of organization under which you want to create the project. If you - leave it out, the project will be create under your the default organization of your account. + leave it out, the project will be created under your the default organization of your account. payment_method_id: |- - The UUID of payment method for this project. The payment method and the project need to belong to the same organization (passed with organization_id, or default). @@ -1441,10 +1413,8 @@ resources: equinix_metal_device.test: |- { "billing_cycle": "hourly", - "facilities": [ - "ny5" - ], "hostname": "test", + "metro": "ny", "operating_system": "ubuntu_20_04", "plan": "c3.medium.x86", "project_id": "${local.project_id}", @@ -1470,7 +1440,7 @@ resources: - name: two_elastic_addresses manifest: |- { - "facility": "sv15", + "metro": "sv", "project_id": "${local.project_id}", "quantity": 2 } @@ -1498,7 +1468,7 @@ resources: - name: example manifest: |- { - "facility": "sv15", + "metro": "sv", "project_id": "${local.project_id}", "quantity": 2 } @@ -1508,9 +1478,6 @@ resources: equinix_metal_device.nodes: |- { "billing_cycle": "hourly", - "facilities": [ - "sv15" - ], "hostname": "test", "ip_address": [ { @@ -1524,6 +1491,7 @@ resources: "type": "private_ipv4" } ], + "metro": "sv", "operating_system": "ubuntu_20_04", "plan": "c3.small.x86", "project_id": "${local.project_id}" @@ -1535,11 +1503,11 @@ resources: custom_data: '- (Optional) Custom Data is an arbitrary object (submitted in Terraform as serialized JSON) to assign to the IP Reservation. This may be helpful for self-managed IPAM. The object must be valid JSON.' description: '- (Optional) Arbitrary description.' facility: |- - - (Optional) Facility where to allocate the public IP address block, makes sense only - if type is public_ipv4 and must be empty if type is global_ipv4. Conflicts with metro. + - (Deprecated) Facility where to allocate the public IP address block, makes sense only + if type is public_ipv4 and must be empty if type is global_ipv4. Conflicts with metro. Use metro instead; read the facility to metro migration guide global: |- - Boolean flag whether addresses from a block are global (i.e. can be assigned in any - facility). + metro). id: '- The unique ID of the block.' metro: |- - (Optional) Metro where to allocate the public IP address block, makes sense only @@ -1566,9 +1534,6 @@ resources: { "devices_max": 1, "devices_min": 1, - "facilities": [ - "ny5" - ], "instance_parameters": [ { "billing_cycle": "hourly", @@ -1578,6 +1543,7 @@ resources: } ], "max_bid_price": 0.03, + "metro": "ny", "project_id": "${local.project_id}" } references: @@ -1585,12 +1551,12 @@ resources: argumentDocs: devices_max: '- (Required) Maximum number devices to be created.' devices_min: '- (Required) Miniumum number devices to be created.' - facilities: '- (Optional) Facility IDs where devices should be created.' + facilities: '- (Deprecated) Facility IDs where devices should be created. Use metro instead; read the facility to metro migration guide' id: '- The ID of the Spot Market Request.' instance_parameters: |- - (Required) Key/Value pairs of parameters for devices provisioned from this request. Valid keys are: billing_cycle, plan, operating_system, hostname, - termintation_time, always_pxe, description, features, locked, project_ssh_keys, + termination_time, always_pxe, description, features, locked, project_ssh_keys, user_ssh_keys, userdata, customdata, ipxe_script_url, tags. You can find each parameter description in equinix_metal_device docs. locked: '- (Optional) Blocks deletion of the SpotMarketRequest device until the lock is disabled.' @@ -1711,15 +1677,6 @@ resources: name: equinix_metal_vlan title: "" examples: - - name: vlan1 - manifest: |- - { - "description": "VLAN in New Jersey", - "facility": "sv15", - "project_id": "${local.project_id}" - } - references: - project_id: local.project_id - name: vlan1 manifest: |- { @@ -1732,8 +1689,9 @@ resources: project_id: local.project_id argumentDocs: description: '- (Optional) Description string.' - facility: '- (Required) Facility where to create the VLAN.' + facility: '- (Deprecated) Facility where to create the VLAN. Use metro instead; read the facility to metro migration guide' id: '- ID of the virtual network.' + metro: '- (Optional) Metro in which to create the VLAN' project_id: '- (Required) ID of parent project.' vxlan: '- (Optional) VLAN ID, must be unique in metro.' importStatements: [] @@ -1870,6 +1828,7 @@ resources: { "account_number": "${data.equinix_network_account.dc.number}", "byol": false, + "connectivity": "INTERNET-ACCESS", "core_count": 2, "hostname": "csr1000v-p", "metro_code": "${data.equinix_network_account.dc.metro_code}", @@ -1893,7 +1852,7 @@ resources: } ], "self_managed": false, - "term_length": 6, + "term_length": 12, "throughput": 500, "throughput_unit": "Mbps", "type_code": "CSR1000V", @@ -1952,7 +1911,7 @@ resources: "username": "test" } ], - "term_length": 6, + "term_length": 12, "type_code": "PA-VM", "version": "10.1.3" } @@ -1974,7 +1933,7 @@ resources: ], "package_code": "STD", "self_managed": true, - "term_length": 6, + "term_length": 12, "type_code": "AVIATRIX_EDGE", "version": "6.9" } @@ -2016,13 +1975,65 @@ resources: "username": "test-username" } ], - "term_length": 6, + "term_length": 12, "type_code": "C8000V", "version": "17.06.01a" } references: account_number: data.equinix_network_account.sv.number metro_code: data.equinix_network_account.sv.metro_code + - name: arista-ha + manifest: |- + { + "account_number": "${data.equinix_network_account.sv.number}", + "acl_template_id": "c637a17b-7a6a-4486-924b-30e6c36904b0", + "additional_bandwidth": 5, + "byol": true, + "connectivity": "PRIVATE", + "core_count": 4, + "hostname": "arista-p", + "metro_code": "${data.equinix_network_account.sv.metro_code}", + "name": "tf-arista-p", + "notifications": [ + "test@equinix.com" + ], + "package_code": "CloudEOS", + "secondary_device": [ + { + "account_number": "${data.equinix_network_account.sv.number}", + "acl_template_id": "fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138", + "hostname": "arista-s", + "metro_code": "${data.equinix_network_account.sv.metro_code}", + "name": "tf-arista-s", + "notifications": [ + "test@eq.com" + ] + } + ], + "self_managed": true, + "ssh_key": [ + { + "key_name": "${equinix_network_ssh_key.test-public-key.name}", + "username": "test-username" + } + ], + "term_length": 12, + "type_code": "ARISTA-ROUTER", + "version": "4.29.0" + } + references: + account_number: data.equinix_network_account.sv.number + metro_code: data.equinix_network_account.sv.metro_code + secondary_device.account_number: data.equinix_network_account.sv.number + secondary_device.metro_code: data.equinix_network_account.sv.metro_code + ssh_key.key_name: equinix_network_ssh_key.test-public-key.name + dependencies: + equinix_network_ssh_key.test-public-key: |- + { + "name": "key-name", + "public_key": "ssh-dss key-value", + "type": "DSA" + } argumentDocs: account_number: '- (Required) Billing account number for a device.' acl_template_id: '- (Optional) Identifier of a WAN interface ACL template that will be applied on the device.' @@ -2062,6 +2073,9 @@ resources: - (Required) An object that has node1 configuration. See Cluster Details - Nodes below for more details. cluster_id: '- The ID of the cluster.' + connectivity: |- + - (Optional) Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). + If not specified, default will be INTERNET-ACCESS core_count: '- (Required) Number of CPU cores used by device.' hostname: '- (Optional) Device hostname prefix.' ibx: '- Device location Equinix Business Exchange name.' @@ -2276,13 +2290,15 @@ resources: manifest: |- { "name": "johnKent", - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDpXGdxljAyPp9vH97436U171cX" + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDpXGdxljAyPp9vH97436U171cX", + "type": "RSA" } argumentDocs: name: '- (Required) The name of SSH key used for identification.' public_key: |- - (Required) The SSH public key. If this is a file, it can be read using the file interpolation function. + type: '- (Optional) The type of SSH key: RSA (default) or DSA.' uuid: '- The unique identifier of the key' importStatements: [] equinix_network_ssh_user: diff --git a/config/schema.json b/config/schema.json index 6e96734..b66af6b 100644 --- a/config/schema.json +++ b/config/schema.json @@ -1 +1 @@ -{"format_version":"1.0","provider_schemas":{"registry.terraform.io/equinix/equinix":{"provider":{"version":0,"block":{"attributes":{"auth_token":{"type":"string","description":"The Equinix Metal API auth key for API operations","description_kind":"plain","optional":true},"client_id":{"type":"string","description":"API Consumer Key available under My Apps section in developer portal","description_kind":"plain","optional":true},"client_secret":{"type":"string","description":"API Consumer secret available under My Apps section in developer portal","description_kind":"plain","optional":true},"endpoint":{"type":"string","description":"The Equinix API base URL to point out desired environment. Defaults to https://api.equinix.com","description_kind":"plain","optional":true},"max_retries":{"type":"number","description_kind":"plain","optional":true},"max_retry_wait_seconds":{"type":"number","description_kind":"plain","optional":true},"request_timeout":{"type":"number","description":"The duration of time, in seconds, that the Equinix Platform API Client should wait before canceling an API request. Defaults to 30","description_kind":"plain","optional":true},"response_max_page_size":{"type":"number","description":"The maximum number of records in a single response for REST queries that produce paginated responses","description_kind":"plain","optional":true},"token":{"type":"string","description":"API token from the developer sandbox","description_kind":"plain","optional":true}},"description_kind":"plain"}},"resource_schemas":{"equinix_ecx_l2_connection":{"version":0,"block":{"attributes":{"actions":{"type":["set",["object",{"message":"string","operation_id":"string","required_data":["set",["object",{"editable":"bool","key":"string","label":"string","validation_pattern":"string","value":"string"}]],"type":"string"}]],"description":"One or more pending actions to complete connection provisioning","description_kind":"plain","computed":true},"authorization_key":{"type":"string","description":"Text field used to authorize connection on the provider side. Value depends on a provider service profile used for connection","description_kind":"plain","optional":true,"computed":true},"device_interface_id":{"type":"number","description":"Identifier of network interface on a given device, used for a connection. If not specified then first available interface will be selected","description_kind":"plain","optional":true},"device_uuid":{"type":"string","description":"Unique identifier of the Network Edge virtual device from which the connection would originate","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores","description_kind":"plain","required":true},"named_tag":{"type":"string","description":"The type of peering to set up in case when connecting to Azure Express Route. One of PRIVATE, MICROSOFT, MANUAL, PUBLIC (MANUAL and PUBLIC are deprecated and not available for new connections)","description_kind":"plain","optional":true},"notifications":{"type":["set","string"],"description":"A list of email addresses used for sending connection update notifications","description_kind":"plain","required":true},"port_uuid":{"type":"string","description":"Unique identifier of the buyer's port from which the connection would originate","description_kind":"plain","optional":true,"computed":true},"profile_uuid":{"type":"string","description":"Unique identifier of the service provider's service profile","description_kind":"plain","optional":true,"computed":true},"provider_status":{"type":"string","description":"Connection provisioning status on service provider's side","description_kind":"plain","computed":true},"purchase_order_number":{"type":"string","description":"Connection's purchase order number to reflect on the invoice","description_kind":"plain","optional":true},"redundancy_group":{"type":"string","description":"Unique identifier of group containing a primary and secondary connection","description_kind":"plain","computed":true},"redundancy_type":{"type":"string","description":"Connection redundancy type, applicable for HA connections. Either primary or secondary","description_kind":"plain","computed":true},"redundant_uuid":{"type":"string","description":"Unique identifier of the redundant connection, applicable for HA connections","description_kind":"plain","computed":true},"seller_metro_code":{"type":"string","description":"The metro code that denotes the connection's remote side (z-side)","description_kind":"plain","optional":true,"computed":true},"seller_region":{"type":"string","description":"The region in which the seller port resides","description_kind":"plain","optional":true},"service_token":{"type":"string","description":"Unique Equinix Fabric key given by a provider that grants you authorization to enable connectivity from a shared multi-tenant port (a-side)","description_kind":"plain","optional":true},"speed":{"type":"number","description":"Speed/Bandwidth to be allocated to the connection","description_kind":"plain","required":true},"speed_unit":{"type":"string","description":"Unit of the speed/bandwidth to be allocated to the connection","description_kind":"plain","required":true},"status":{"type":"string","description":"Connection provisioning status on Equinix Fabric side","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Unique identifier of the connection","description_kind":"plain","computed":true},"vendor_token":{"type":"string","description":"The Equinix Fabric Token the connection was created with. Applicable if the connection was created with a ServiceToken (a-side) or ZSideServiceToken (z-side)","description_kind":"plain","computed":true},"vlan_ctag":{"type":"number","description":"C-Tag/Inner-Tag of the connection, a numeric character ranging from 2 - 4094","description_kind":"plain","optional":true},"vlan_stag":{"type":"number","description":"S-Tag/Outer-Tag of the connection, a numeric character ranging from 2 - 4094","description_kind":"plain","optional":true,"computed":true},"zside_port_uuid":{"type":"string","description":"Unique identifier of the port on the remote side (z-side)","description_kind":"plain","optional":true,"computed":true},"zside_service_token":{"type":"string","description":"Unique Equinix Fabric key given by a provider that grants you authorization to enable connectivity to a shared multi-tenant port (z-side)","description_kind":"plain","optional":true},"zside_vlan_ctag":{"type":"number","description":"C-Tag/Inner-Tag of the connection on the remote side (z-side)","description_kind":"plain","optional":true,"computed":true},"zside_vlan_stag":{"type":"number","description":"S-Tag/Outer-Tag of the connection on the remote side (z-side)","description_kind":"plain","optional":true,"computed":true}},"block_types":{"additional_info":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description":"Additional information key","description_kind":"plain","required":true},"value":{"type":"string","description":"Additional information value","description_kind":"plain","required":true}},"description":"One or more additional information key-value objects","description_kind":"plain"}},"secondary_connection":{"nesting_mode":"list","block":{"attributes":{"actions":{"type":["set",["object",{"message":"string","operation_id":"string","required_data":["set",["object",{"editable":"bool","key":"string","label":"string","validation_pattern":"string","value":"string"}]],"type":"string"}]],"description":"One or more pending actions to complete connection provisioning","description_kind":"plain","computed":true},"authorization_key":{"type":"string","description":"Text field used to authorize connection on the provider side. Value depends on a provider service profile used for connection","description_kind":"plain","optional":true,"computed":true},"device_interface_id":{"type":"number","description":"Identifier of network interface on a given device, used for a connection. If not specified then first available interface will be selected","description_kind":"plain","optional":true,"computed":true},"device_uuid":{"type":"string","description":"Unique identifier of the Network Edge virtual device from which the connection would originate","description_kind":"plain","optional":true},"name":{"type":"string","description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores","description_kind":"plain","required":true},"port_uuid":{"type":"string","description":"Unique identifier of the buyer's port from which the connection would originate","description_kind":"plain","optional":true,"computed":true},"profile_uuid":{"type":"string","description":"Unique identifier of the service provider's service profile","description_kind":"plain","optional":true,"computed":true},"provider_status":{"type":"string","description":"Connection provisioning status on service provider's side","description_kind":"plain","computed":true},"redundancy_group":{"type":"string","description":"Unique identifier of group containing a primary and secondary connection","description_kind":"plain","computed":true},"redundancy_type":{"type":"string","description":"Connection redundancy type, applicable for HA connections. Either primary or secondary","description_kind":"plain","computed":true},"redundant_uuid":{"type":"string","description":"Unique identifier of the redundant connection, applicable for HA connections","description_kind":"plain","deprecated":true,"computed":true},"seller_metro_code":{"type":"string","description":"The metro code that denotes the connection's remote side (z-side)","description_kind":"plain","optional":true,"computed":true},"seller_region":{"type":"string","description":"The region in which the seller port resides","description_kind":"plain","optional":true,"computed":true},"service_token":{"type":"string","description":"Unique Equinix Fabric key given by a provider that grants you authorization to enable connectivity from a shared multi-tenant port (a-side)","description_kind":"plain","optional":true},"speed":{"type":"number","description":"Speed/Bandwidth to be allocated to the connection","description_kind":"plain","optional":true,"computed":true},"speed_unit":{"type":"string","description":"Unit of the speed/bandwidth to be allocated to the connection","description_kind":"plain","optional":true,"computed":true},"status":{"type":"string","description":"Connection provisioning status on Equinix Fabric side","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Unique identifier of the connection","description_kind":"plain","computed":true},"vendor_token":{"type":"string","description":"The Equinix Fabric Token the connection was created with. Applicable if the connection was created with a ServiceToken (a-side) or ZSideServiceToken (z-side)","description_kind":"plain","computed":true},"vlan_ctag":{"type":"number","description":"C-Tag/Inner-Tag of the connection, a numeric character ranging from 2 - 4094","description_kind":"plain","optional":true},"vlan_stag":{"type":"number","description":"S-Tag/Outer-Tag of the connection, a numeric character ranging from 2 - 4094","description_kind":"plain","optional":true,"computed":true},"zside_port_uuid":{"type":"string","description":"Unique identifier of the port on the remote side (z-side)","description_kind":"plain","computed":true},"zside_vlan_ctag":{"type":"number","description":"C-Tag/Inner-Tag of the connection on the remote side (z-side)","description_kind":"plain","computed":true},"zside_vlan_stag":{"type":"number","description":"S-Tag/Outer-Tag of the connection on the remote side (z-side)","description_kind":"plain","computed":true}},"description":"Definition of secondary connection for redundant, HA connectivity","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource allows creation and management of Equinix Fabric\tlayer 2 connections","description_kind":"plain"}},"equinix_ecx_l2_connection_accepter":{"version":0,"block":{"attributes":{"access_key":{"type":"string","description":"Access Key used to accept connection on provider side","description_kind":"plain","optional":true,"computed":true,"sensitive":true},"aws_connection_id":{"type":"string","description":"Identifier of a hosted Direct Connect connection on AWS side, applicable for accepter resource with connections to AWS only","description_kind":"plain","computed":true},"aws_profile":{"type":"string","description":"AWS Profile Name for retrieving credentials from shared credentials file","description_kind":"plain","optional":true},"connection_id":{"type":"string","description":"Identifier of layer 2 connection that will be accepted","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"secret_key":{"type":"string","description":"Secret Key used to accept connection on provider side","description_kind":"plain","optional":true,"computed":true,"sensitive":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource is used to accept Equinix Fabric layer 2 connection on provider side","description_kind":"plain","deprecated":true}},"equinix_ecx_l2_serviceprofile":{"version":0,"block":{"attributes":{"api_integration":{"type":"bool","description":"Specifies the API integration ID that was provided to the customer during onboarding","description_kind":"plain","optional":true},"authkey_label":{"type":"string","description":"Name of the authentication key label to be used by the Authentication Key service","description_kind":"plain","optional":true},"bandwidth_alert_threshold":{"type":"number","description":"Specifies the port bandwidth threshold percentage. If the bandwidth limit is met or exceeded, an alert is sent to the seller","description_kind":"plain","optional":true},"bandwidth_threshold_notifications":{"type":["set","string"],"description":"A list of email addresses that will receive notifications about bandwidth thresholds","description_kind":"plain","required":true},"connection_name_label":{"type":"string","description":"Custom name used for calling a connections i.e. circuit. Defaults to Connection","description_kind":"plain","optional":true},"ctag_label":{"type":"string","description":"C-Tag/Inner-Tag label name for the connections","description_kind":"plain","optional":true},"description":{"type":"string","description":"Description of the service profile","description_kind":"plain","optional":true},"equinix_managed_port_vlan":{"type":"bool","description":"Boolean value that indicates whether the port and VLAN details are managed by Equinix","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"integration_id":{"type":"string","description":"Specifies the API integration ID that was provided to the customer during onboarding","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the service profile. An alpha-numeric 50 characters string which can include only hyphens and underscores","description_kind":"plain","required":true},"oversubscription":{"type":"string","description":"Oversubscription limit that will cause alerting. Default is 1x","description_kind":"plain","optional":true},"oversubscription_allowed":{"type":"bool","description":"Boolean value that determines if, regardless of the utilization, Equinix Fabric will continue to add connections to your links until we reach the oversubscription limit","description_kind":"plain","optional":true},"private":{"type":"bool","description":"Boolean value that indicates whether or not this is a private profile.","description_kind":"plain","optional":true},"private_user_emails":{"type":["set","string"],"description":"A list of email addresses associated to users that will be allowed to access this service profile. Applicable for private profiles","description_kind":"plain","optional":true},"profile_statuschange_notifications":{"type":["set","string"],"description":"A list of email addresses that will receive notifications about profile status changes","description_kind":"plain","required":true},"redundancy_required":{"type":"bool","description":"Boolean value that determines if yourconnections will require redundancy","description_kind":"plain","optional":true},"secondary_vlan_from_primary":{"type":"bool","description":"Indicates whether the VLAN ID of the secondary connection is the same as the primary connection","description_kind":"plain","optional":true},"servicekey_autogenerated":{"type":"bool","description":"Boolean value that indicates whether multiple connections can be created with the same authorization key","description_kind":"plain","optional":true},"speed_customization_allowed":{"type":"bool","description":"Boolean value that determines if customer is allowed to enter a custom connection speed","description_kind":"plain","optional":true},"speed_from_api":{"type":"bool","description":"Boolean valuta that determines if connection speed will be derived from an API call","description_kind":"plain","optional":true},"state":{"type":"string","description":"Service profile provisioning status","description_kind":"plain","computed":true},"tag_type":{"type":"string","description":"Specifies additional tagging information required by the seller profile for Dot1Q to QinQ translation","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Unique identifier of the service profile","description_kind":"plain","computed":true},"vc_statuschange_notifications":{"type":["set","string"],"description":"A list of email addresses that will receive notifications about connections approvals and rejections","description_kind":"plain","required":true}},"block_types":{"features":{"nesting_mode":"set","block":{"attributes":{"allow_remote_connections":{"type":"bool","description":"Indicates whether or not connections to this profile can be created from remote metro locations","description_kind":"plain","required":true},"test_profile":{"type":"bool","description":"Indicates whether or not this profile can be used for test connections","description_kind":"plain","deprecated":true,"optional":true}},"description":"Block of profile features configuration","description_kind":"plain"},"min_items":1,"max_items":1},"port":{"nesting_mode":"set","block":{"attributes":{"metro_code":{"type":"string","description":"Port location metro code","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Unique identifier of the port","description_kind":"plain","required":true}},"description":"One or more definitions of ports associated with the profile","description_kind":"plain"},"min_items":1},"speed_band":{"nesting_mode":"set","block":{"attributes":{"speed":{"type":"number","description":"Speed/bandwidth supported by given service profile","description_kind":"plain","required":true},"speed_unit":{"type":"string","description":"Unit of the speed/bandwidth supported by given service profile","description_kind":"plain","required":true}},"description":"One or more definitions of supported speed/bandwidth configurations","description_kind":"plain"}}},"description_kind":"plain"}},"equinix_fabric_connection":{"version":0,"block":{"attributes":{"account":{"type":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"description":"Customer account information that is associated with this connection","description_kind":"plain","computed":true},"bandwidth":{"type":"number","description":"Connection bandwidth in Mbps","description_kind":"plain","required":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures connection lifecycle change information","description_kind":"plain","computed":true},"direction":{"type":"string","description":"Connection directionality from the requester point of view","description_kind":"plain","computed":true},"href":{"type":"string","description":"Connection URI information","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_remote":{"type":"bool","description":"Connection property derived from access point locations","description_kind":"plain","computed":true},"name":{"type":"string","description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores","description_kind":"plain","required":true},"operation":{"type":["set",["object",{"equinix_status":"string","errors":["list",["object",{"additional_info":["list",["object",{"property":"string","reason":"string"}]],"correlation_id":"string","details":"string","error_code":"string","error_message":"string","help":"string"}]],"provider_status":"string"}]],"description":"Connection type-specific operational data","description_kind":"plain","computed":true},"state":{"type":"string","description":"Connection overall state","description_kind":"plain","computed":true},"type":{"type":"string","description":"Defines the connection type like VG_VC, EVPL_VC, EPL_VC, EC_VC, GW_VC, ACCESS_EPL_VC","description_kind":"plain","required":true}},"block_types":{"a_side":{"nesting_mode":"set","block":{"block_types":{"access_point":{"nesting_mode":"set","block":{"attributes":{"account":{"type":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"description":"Account","description_kind":"plain","computed":true},"authentication_key":{"type":"string","description":"Authentication key for provider based connections","description_kind":"plain","optional":true},"peering_type":{"type":"string","description":"Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL","description_kind":"plain","optional":true},"provider_connection_id":{"type":"string","description":"Provider assigned Connection Id","description_kind":"plain","optional":true},"seller_region":{"type":"string","description":"Access point seller region","description_kind":"plain","optional":true},"type":{"type":"string","description":"Access point type - COLO, VD, VG, SP, IGW, SUBNET, GW","description_kind":"plain","optional":true}},"block_types":{"gateway":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier","description_kind":"plain","optional":true}},"description":"Gateway access point information","description_kind":"plain"}},"interface":{"nesting_mode":"set","block":{"attributes":{"id":{"type":"string","description":"id","description_kind":"plain","computed":true},"type":{"type":"string","description":"Interface type","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned interface identifier","description_kind":"plain","optional":true}},"description":"Virtual device interface","description_kind":"plain"}},"link_protocol":{"nesting_mode":"set","block":{"attributes":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN","description_kind":"plain","optional":true},"vlan_c_tag":{"type":"number","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections","description_kind":"plain","optional":true,"computed":true},"vlan_s_tag":{"type":"number","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections","description_kind":"plain","optional":true,"computed":true},"vlan_tag":{"type":"number","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections","description_kind":"plain","optional":true,"computed":true}},"description":"Connection link protocol","description_kind":"plain"}},"location":{"nesting_mode":"set","block":{"attributes":{"ibx":{"type":"string","description":"IBX Code","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Access point metro code","description_kind":"plain","optional":true,"computed":true},"metro_name":{"type":"string","description":"Access point metro name","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Access point region","description_kind":"plain","optional":true,"computed":true}},"description":"Access point location","description_kind":"plain"}},"port":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"name":{"type":"string","description":"Port name","description_kind":"plain","computed":true},"redundancy":{"type":["set",["object",{"priority":"string"}]],"description":"Redundancy Information","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned Port identifier","description_kind":"plain","optional":true,"computed":true}},"description":"Port access point information","description_kind":"plain"}},"profile":{"nesting_mode":"set","block":{"attributes":{"access_point_type_configs":{"type":["list",["object",{"type":"string","uuid":"string"}]],"description":"Access point config information","description_kind":"plain","computed":true},"description":{"type":"string","description":"User-provided service description","description_kind":"plain","computed":true},"href":{"type":"string","description":"Service Profile URI response attribute","description_kind":"plain","computed":true},"name":{"type":"string","description":"Customer-assigned service profile name","description_kind":"plain","computed":true},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Equinix assigned service profile identifier","description_kind":"plain","required":true}},"description":"Service Profile","description_kind":"plain"}},"routing_protocols":{"nesting_mode":"list","block":{"attributes":{"state":{"type":"string","description":"Routing protocol instance state","description_kind":"plain","optional":true},"type":{"type":"string","description":"Routing Protocol type","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned Routing protocol identifier","description_kind":"plain","optional":true}},"description":"Access point routing protocols configuration","description_kind":"plain"}},"virtual_device":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"type":{"type":"string","description":"Virtual Device type","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier","description_kind":"plain","optional":true}},"description":"Virtual device","description_kind":"plain"}}},"description":"Point of access details","description_kind":"plain"}},"additional_info":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description":"Additional information key","description_kind":"plain","optional":true},"value":{"type":"string","description":"Additional information value","description_kind":"plain","optional":true}},"description":"Connection side additional information","description_kind":"plain"}},"service_token":{"nesting_mode":"set","block":{"attributes":{"description":{"type":"string","description":"Service token description","description_kind":"plain","computed":true},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context","description_kind":"plain","computed":true},"type":{"type":"string","description":"Token type - VC_TOKEN","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned service token identifier","description_kind":"plain","optional":true}},"description":"For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets","description_kind":"plain"}}},"description":"Requester or Customer side connection configuration object of the multi-segment connection","description_kind":"plain"},"min_items":1},"additional_info":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description":"Additional information key","description_kind":"plain","optional":true},"value":{"type":"string","description":"Additional information value","description_kind":"plain","optional":true}},"description":"Connection additional information","description_kind":"plain"}},"notifications":{"nesting_mode":"list","block":{"attributes":{"emails":{"type":["list","string"],"description":"Array of contact emails","description_kind":"plain","required":true},"send_interval":{"type":"string","description":"Send interval","description_kind":"plain","optional":true},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS","description_kind":"plain","required":true}},"description":"Preferences for notifications on connection configuration or status changes","description_kind":"plain"},"min_items":1},"order":{"nesting_mode":"set","block":{"attributes":{"billing_tier":{"type":"string","description":"Billing tier for connection bandwidth","description_kind":"plain","optional":true},"order_id":{"type":"string","description":"Order Identification","description_kind":"plain","computed":true},"order_number":{"type":"string","description":"Order Reference Number","description_kind":"plain","computed":true},"purchase_order_number":{"type":"string","description":"Purchase order number","description_kind":"plain","optional":true}},"description":"Order related to this connection information","description_kind":"plain"}},"project":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource URL","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"Project Id","description_kind":"plain","computed":true}},"description":"Project information","description_kind":"plain"}},"redundancy":{"nesting_mode":"set","block":{"attributes":{"group":{"type":"string","description":"Redundancy group identifier","description_kind":"plain","computed":true},"priority":{"type":"string","description":"Priority type- PRIMARY, SECONDARY","description_kind":"plain","optional":true}},"description":"Redundancy Information","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"z_side":{"nesting_mode":"set","block":{"block_types":{"access_point":{"nesting_mode":"set","block":{"attributes":{"account":{"type":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"description":"Account","description_kind":"plain","computed":true},"authentication_key":{"type":"string","description":"Authentication key for provider based connections","description_kind":"plain","optional":true},"peering_type":{"type":"string","description":"Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL","description_kind":"plain","optional":true},"provider_connection_id":{"type":"string","description":"Provider assigned Connection Id","description_kind":"plain","optional":true},"seller_region":{"type":"string","description":"Access point seller region","description_kind":"plain","optional":true},"type":{"type":"string","description":"Access point type - COLO, VD, VG, SP, IGW, SUBNET, GW","description_kind":"plain","optional":true}},"block_types":{"gateway":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier","description_kind":"plain","optional":true}},"description":"Gateway access point information","description_kind":"plain"}},"interface":{"nesting_mode":"set","block":{"attributes":{"id":{"type":"string","description":"id","description_kind":"plain","computed":true},"type":{"type":"string","description":"Interface type","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned interface identifier","description_kind":"plain","optional":true}},"description":"Virtual device interface","description_kind":"plain"}},"link_protocol":{"nesting_mode":"set","block":{"attributes":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN","description_kind":"plain","optional":true},"vlan_c_tag":{"type":"number","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections","description_kind":"plain","optional":true,"computed":true},"vlan_s_tag":{"type":"number","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections","description_kind":"plain","optional":true,"computed":true},"vlan_tag":{"type":"number","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections","description_kind":"plain","optional":true,"computed":true}},"description":"Connection link protocol","description_kind":"plain"}},"location":{"nesting_mode":"set","block":{"attributes":{"ibx":{"type":"string","description":"IBX Code","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Access point metro code","description_kind":"plain","optional":true,"computed":true},"metro_name":{"type":"string","description":"Access point metro name","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Access point region","description_kind":"plain","optional":true,"computed":true}},"description":"Access point location","description_kind":"plain"}},"port":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"name":{"type":"string","description":"Port name","description_kind":"plain","computed":true},"redundancy":{"type":["set",["object",{"priority":"string"}]],"description":"Redundancy Information","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned Port identifier","description_kind":"plain","optional":true,"computed":true}},"description":"Port access point information","description_kind":"plain"}},"profile":{"nesting_mode":"set","block":{"attributes":{"access_point_type_configs":{"type":["list",["object",{"type":"string","uuid":"string"}]],"description":"Access point config information","description_kind":"plain","computed":true},"description":{"type":"string","description":"User-provided service description","description_kind":"plain","computed":true},"href":{"type":"string","description":"Service Profile URI response attribute","description_kind":"plain","computed":true},"name":{"type":"string","description":"Customer-assigned service profile name","description_kind":"plain","computed":true},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Equinix assigned service profile identifier","description_kind":"plain","required":true}},"description":"Service Profile","description_kind":"plain"}},"routing_protocols":{"nesting_mode":"list","block":{"attributes":{"state":{"type":"string","description":"Routing protocol instance state","description_kind":"plain","optional":true},"type":{"type":"string","description":"Routing Protocol type","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned Routing protocol identifier","description_kind":"plain","optional":true}},"description":"Access point routing protocols configuration","description_kind":"plain"}},"virtual_device":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"type":{"type":"string","description":"Virtual Device type","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier","description_kind":"plain","optional":true}},"description":"Virtual device","description_kind":"plain"}}},"description":"Point of access details","description_kind":"plain"}},"additional_info":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description":"Additional information key","description_kind":"plain","optional":true},"value":{"type":"string","description":"Additional information value","description_kind":"plain","optional":true}},"description":"Connection side additional information","description_kind":"plain"}},"service_token":{"nesting_mode":"set","block":{"attributes":{"description":{"type":"string","description":"Service token description","description_kind":"plain","computed":true},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context","description_kind":"plain","computed":true},"type":{"type":"string","description":"Token type - VC_TOKEN","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned service token identifier","description_kind":"plain","optional":true}},"description":"For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets","description_kind":"plain"}}},"description":"Destination or Provider side connection configuration object of the multi-segment connection","description_kind":"plain"},"min_items":1}},"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric connection\n\n~\u003e **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)","description_kind":"plain"}},"equinix_fabric_service_profile":{"version":0,"block":{"attributes":{"allowed_emails":{"type":["list","string"],"description":"Array of contact emails","description_kind":"plain","optional":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures connection lifecycle change information","description_kind":"plain","computed":true},"description":{"type":"string","description":"User-provided service description","description_kind":"plain","required":true},"href":{"type":"string","description":"Service Profile URI response attribute","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Customer-assigned service profile name","description_kind":"plain","required":true},"self_profile":{"type":"bool","description":"Self Profile","description_kind":"plain","optional":true},"state":{"type":"string","description":"Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"Tags attached to the connection","description_kind":"plain","optional":true},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Equinix assigned service profile identifier","description_kind":"plain","computed":true},"visibility":{"type":"string","description":"Service profile visibility - PUBLIC, PRIVATE","description_kind":"plain","optional":true}},"block_types":{"access_point_type_configs":{"nesting_mode":"list","block":{"attributes":{"allow_bandwidth_auto_approval":{"type":"bool","description":"Setting to enable or disable the ability of the buyer to change connection bandwidth without approval of the seller","description_kind":"plain","optional":true},"allow_bandwidth_upgrade":{"type":"bool","description":"Availability of a bandwidth upgrade. The default is false","description_kind":"plain","optional":true},"allow_custom_bandwidth":{"type":"bool","description":"Setting to enable or disable the ability of the buyer to customize the bandwidth","description_kind":"plain","optional":true},"allow_remote_connections":{"type":"bool","description":"Setting to allow or prohibit remote connections to the service profile","description_kind":"plain","optional":true},"bandwidth_alert_threshold":{"type":"number","description":"Percentage of port bandwidth at which an allocation alert is generated","description_kind":"plain","optional":true},"connection_label":{"type":"string","description":"Custom name for Connection","description_kind":"plain","optional":true},"connection_redundancy_required":{"type":"bool","description":"Mandate redundant connections","description_kind":"plain","optional":true},"enable_auto_generate_service_key":{"type":"bool","description":"Enable auto generate service key","description_kind":"plain","optional":true},"supported_bandwidths":{"type":["list","number"],"description":"Supported bandwidths","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of access point type config - VD, COLO","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Colo/Port Uuid","description_kind":"plain","computed":true}},"block_types":{"api_config":{"nesting_mode":"set","block":{"attributes":{"allow_over_subscription":{"type":"bool","description":"Setting showing that oversubscription support is available (true) or not (false). The default is false","description_kind":"plain","optional":true},"api_available":{"type":"bool","description":"Setting indicating whether the API is available (true) or not (false)","description_kind":"plain","optional":true},"bandwidth_from_api":{"type":"bool","description":"Bandwidth from api","description_kind":"plain","optional":true},"equinix_managed_port":{"type":"bool","description":"Setting indicating that the port is managed by Equinix (true) or not (false)","description_kind":"plain","optional":true},"equinix_managed_vlan":{"type":"bool","description":"Setting indicating that the VLAN is managed by Equinix (true) or not (false)","description_kind":"plain","optional":true},"integration_id":{"type":"string","description":"Integration id","description_kind":"plain","optional":true},"over_subscription_limit":{"type":"number","description":"A cap on over subscription","description_kind":"plain","optional":true}},"description":"Api configuration details","description_kind":"plain"}},"authentication_key":{"nesting_mode":"set","block":{"attributes":{"description":{"type":"string","description":"Description","description_kind":"plain","optional":true},"label":{"type":"string","description":"Label","description_kind":"plain","optional":true},"required":{"type":"bool","description":"Required","description_kind":"plain","optional":true}},"description":"Authentication key details","description_kind":"plain"}},"link_protocol_config":{"nesting_mode":"set","block":{"attributes":{"encapsulation":{"type":"string","description":"Port Encapsulation","description_kind":"plain","optional":true},"encapsulation_strategy":{"type":"string","description":"Encapsulation strategy","description_kind":"plain","optional":true},"reuse_vlan_s_tag":{"type":"bool","description":"Reuse vlan sTag","description_kind":"plain","optional":true}},"description":"Link protocol configuration details","description_kind":"plain"}}},"description":"Access point config information","description_kind":"plain"}},"account":{"nesting_mode":"set","block":{"attributes":{"account_name":{"type":"string","description":"Account Name","description_kind":"plain","optional":true},"account_number":{"type":"number","description":"Account Number","description_kind":"plain","optional":true},"global_cust_id":{"type":"string","description":"Global Customer organization identifier","description_kind":"plain","optional":true},"global_org_id":{"type":"string","description":"Global organization identifier","description_kind":"plain","optional":true},"global_organization_name":{"type":"string","description":"Global organization name","description_kind":"plain","optional":true},"org_id":{"type":"number","description":"Customer organization identifier","description_kind":"plain","optional":true},"organization_name":{"type":"string","description":"Customer organization name","description_kind":"plain","optional":true},"ucm_id":{"type":"string","description":"Enterprise datastore id","description_kind":"plain","optional":true}},"description":"Account","description_kind":"plain"}},"custom_fields":{"nesting_mode":"list","block":{"attributes":{"capture_in_email":{"type":"bool","description":"Required field","description_kind":"plain","optional":true},"data_type":{"type":"string","description":"Data type","description_kind":"plain","required":true},"description":{"type":"string","description":"Description","description_kind":"plain","optional":true},"label":{"type":"string","description":"Label","description_kind":"plain","required":true},"options":{"type":["list","string"],"description":"Options","description_kind":"plain","optional":true},"required":{"type":"bool","description":"Required field","description_kind":"plain","required":true}},"description":"Custom Fields","description_kind":"plain"}},"marketing_info":{"nesting_mode":"set","block":{"attributes":{"logo":{"type":"string","description":"Logo","description_kind":"plain","optional":true},"promotion":{"type":"bool","description":"Promotion","description_kind":"plain","optional":true}},"block_types":{"process_step":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Description","description_kind":"plain","optional":true},"sub_title":{"type":"string","description":"Sub Title","description_kind":"plain","optional":true},"title":{"type":"string","description":"Title","description_kind":"plain","optional":true}},"description":"Process Step","description_kind":"plain"}}},"description":"Marketing Info","description_kind":"plain"}},"metros":{"nesting_mode":"list","block":{"attributes":{"code":{"type":"string","description":"Metro Code - Example SV","description_kind":"plain","optional":true},"display_name":{"type":"string","description":"Display Name","description_kind":"plain","optional":true},"ibxs":{"type":["list","string"],"description":"IBX- Equinix International Business Exchange list","description_kind":"plain","optional":true},"in_trail":{"type":"bool","description":"In Trail","description_kind":"plain","optional":true},"name":{"type":"string","description":"Metro Name","description_kind":"plain","optional":true},"seller_regions":{"type":["map","string"],"description":"Seller Regions","description_kind":"plain","optional":true}},"description":"Access point config information","description_kind":"plain"}},"notifications":{"nesting_mode":"list","block":{"attributes":{"emails":{"type":["list","string"],"description":"Array of contact emails","description_kind":"plain","required":true},"send_interval":{"type":"string","description":"Send interval","description_kind":"plain","optional":true},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS","description_kind":"plain","required":true}},"description":"Preferences for notifications on connection configuration or status changes","description_kind":"plain"}},"ports":{"nesting_mode":"list","block":{"attributes":{"cross_connect_id":{"type":"string","description":"Cross Connect Id","description_kind":"plain","optional":true},"seller_region":{"type":"string","description":"Seller Region","description_kind":"plain","optional":true},"seller_region_description":{"type":"string","description":"Seller Region details","description_kind":"plain","optional":true},"type":{"type":"string","description":"Colo/Port Type","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Colo/Port Uuid","description_kind":"plain","required":true}},"block_types":{"location":{"nesting_mode":"set","block":{"attributes":{"ibx":{"type":"string","description":"IBX Code","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Access point metro code","description_kind":"plain","optional":true,"computed":true},"metro_name":{"type":"string","description":"Access point metro name","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Access point region","description_kind":"plain","optional":true,"computed":true}},"description":"Colo/Port Location","description_kind":"plain"}}},"description":"Ports","description_kind":"plain"}},"project":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource URL","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"Project Id","description_kind":"plain","computed":true}},"description":"Project information","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"virtual_devices":{"nesting_mode":"list","block":{"attributes":{"interface_uuid":{"type":"string","description":"Device Interface Uuid","description_kind":"plain","optional":true},"type":{"type":"string","description":"Virtual Device Type","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Virtual Device Uuid","description_kind":"plain","required":true}},"block_types":{"location":{"nesting_mode":"set","block":{"attributes":{"ibx":{"type":"string","description":"IBX Code","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Access point metro code","description_kind":"plain","optional":true,"computed":true},"metro_name":{"type":"string","description":"Access point metro name","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Access point region","description_kind":"plain","optional":true,"computed":true}},"description":" Device Location","description_kind":"plain"}}},"description":"Virtual Devices","description_kind":"plain"}}},"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Service Profile\n\n~\u003e **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)","description_kind":"plain"}},"equinix_metal_bgp_session":{"version":0,"block":{"attributes":{"address_family":{"type":"string","description":"ipv4 or ipv6","description_kind":"plain","required":true},"default_route":{"type":"bool","description":"Boolean flag to set the default route policy. False by default","description_kind":"plain","optional":true},"device_id":{"type":"string","description":"ID of device","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"status":{"type":"string","description":"Status of the session - up or down","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_connection":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the connection resource","description_kind":"plain","optional":true},"facility":{"type":"string","description":"Facility where the connection will be created","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"Metro where the connection will be created","description_kind":"plain","optional":true,"computed":true},"mode":{"type":"string","description":"Mode for connections in IBX facilities with the dedicated type - standard or tunnel","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the connection resource","description_kind":"plain","required":true},"organization_id":{"type":"string","description":"ID of the organization responsible for the connection. Applicable with type \"dedicated\"","description_kind":"plain","optional":true,"computed":true},"ports":{"type":["list",["object",{"id":"string","link_status":"string","name":"string","role":"string","speed":"number","status":"string","virtual_circuit_ids":["list","string"]}]],"description":"List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"ID of the project where the connection is scoped to. Required with type \"shared\"","description_kind":"plain","optional":true},"redundancy":{"type":"string","description":"Connection redundancy - redundant or primary","description_kind":"plain","required":true},"service_token_type":{"type":"string","description":"Only used with shared connection. Type of service token to use for the connection, a_side or z_side","description_kind":"plain","optional":true},"service_tokens":{"type":["list",["object",{"expires_at":"string","id":"string","max_allowed_speed":"string","role":"string","state":"string","type":"string"}]],"description":"Only used with shared connection. List of service tokens required to continue the setup process with [equinix_ecx_l2_connection](https://registry.terraform.io/providers/equinix/equinix/latest/docs/resources/equinix_ecx_l2_connection) or from the [Equinix Fabric Portal](https://ecxfabric.equinix.com/dashboard)","description_kind":"plain","computed":true},"speed":{"type":"string","description":"Port speed. Allowed values are 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps","description_kind":"plain","required":true},"status":{"type":"string","description":"Status of the connection resource","description_kind":"plain","computed":true},"tags":{"type":["list","string"],"description":"Tags attached to the connection","description_kind":"plain","optional":true},"token":{"type":"string","description":"Only used with shared connection. Fabric Token required to continue the setup process with [equinix_ecx_l2_connection](https://registry.terraform.io/providers/equinix/equinix/latest/docs/resources/equinix_ecx_l2_connection) or from the [Equinix Fabric Portal](https://ecxfabric.equinix.com/dashboard)","description_kind":"plain","deprecated":true,"computed":true},"type":{"type":"string","description":"Connection type - dedicated or shared","description_kind":"plain","required":true},"vlans":{"type":["list","number"],"description":"Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection","description_kind":"plain","optional":true}},"description_kind":"plain"}},"equinix_metal_device":{"version":0,"block":{"attributes":{"access_private_ipv4":{"type":"string","description":"The ipv4 private IP assigned to the device","description_kind":"plain","computed":true},"access_public_ipv4":{"type":"string","description":"The ipv4 maintenance IP assigned to the device","description_kind":"plain","computed":true},"access_public_ipv6":{"type":"string","description":"The ipv6 maintenance IP assigned to the device","description_kind":"plain","computed":true},"always_pxe":{"type":"bool","description":"If true, a device with OS custom_ipxe will","description_kind":"plain","optional":true},"billing_cycle":{"type":"string","description":"monthly or hourly","description_kind":"plain","optional":true,"computed":true},"created":{"type":"string","description":"The timestamp for when the device was created","description_kind":"plain","computed":true},"custom_data":{"type":"string","description":"A string of the desired Custom Data for the device. By default, changing this attribute will cause the provider to destroy and recreate your device. If `reinstall` is specified or `behavior.allow_changes` includes `\"custom_data\"`, the device will be updated in-place instead of recreated.","description_kind":"plain","optional":true,"sensitive":true},"deployed_facility":{"type":"string","description":"The facility where the device is deployed","description_kind":"plain","computed":true},"deployed_hardware_reservation_id":{"type":"string","description":"ID of hardware reservation where this device was deployed. It is useful when using the next-available hardware reservation","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description string for the device","description_kind":"plain","optional":true},"facilities":{"type":["list","string"],"description":"List of facility codes with deployment preferences. Equinix Metal API will go through the list and will deploy your device to first facility with free capacity. List items must be facility codes or any (a wildcard). To find the facility code, visit [Facilities API docs](https://metal.equinix.com/developers/api/facilities/), set your API auth token in the top of the page and see JSON from the API response. Conflicts with metro","description_kind":"plain","optional":true},"force_detach_volumes":{"type":"bool","description":"Delete device even if it has volumes attached. Only applies for destroy action","description_kind":"plain","optional":true},"hardware_reservation_id":{"type":"string","description":"The UUID of the hardware reservation where you want this device deployed, or next-available if you want to pick your next available reservation automatically","description_kind":"plain","optional":true},"hostname":{"type":"string","description":"The device hostname used in deployments taking advantage of Layer3 DHCP or metadata service configuration.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ipxe_script_url":{"type":"string","description":"URL pointing to a hosted iPXE script. More","description_kind":"plain","optional":true},"locked":{"type":"bool","description":"Whether the device is locked","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro area for the new device. Conflicts with facilities","description_kind":"plain","optional":true},"network":{"type":["list",["object",{"address":"string","cidr":"number","family":"number","gateway":"string","public":"bool"}]],"description":"The device's private and public IP (v4 and v6) network details. When a device is run without any special network configuration, it will have 3 addresses: public ipv4, private ipv4 and ipv6","description_kind":"plain","computed":true},"network_type":{"type":"string","description":"Network type of a device, used in [Layer 2 networking](https://metal.equinix.com/developers/docs/networking/layer2/). Will be one of layer3, hybrid, hybrid-bonded, layer2-individual, layer2-bonded","description_kind":"plain","deprecated":true,"computed":true},"operating_system":{"type":"string","description":"The operating system slug. To find the slug, or visit [Operating Systems API docs](https://metal.equinix.com/developers/api/operatingsystems), set your API auth token in the top of the page and see JSON from the API response. By default, changing this attribute will cause your device to be deleted and recreated. If `reinstall` is enabled, the device will be updated in-place instead of recreated.","description_kind":"plain","required":true},"plan":{"type":"string","description":"The device plan slug. To find the plan slug, visit [Device plans API docs](https://metal.equinix.com/developers/api/plans), set your auth token in the top of the page and see JSON from the API response","description_kind":"plain","required":true},"ports":{"type":["list",["object",{"bonded":"bool","id":"string","mac":"string","name":"string","type":"string"}]],"description":"Ports assigned to the device","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"The ID of the project in which to create the device","description_kind":"plain","required":true},"project_ssh_key_ids":{"type":["list","string"],"description":"Array of IDs of the project SSH keys which should be added to the device. If you omit this, SSH keys of all the members of the parent project will be added to the device. If you specify this array, only the listed project SSH keys (and any user_ssh_key_ids) will be added. Project SSH keys can be created with the [equinix_metal_project_ssh_key](equinix_metal_project_ssh_key.md) resource","description_kind":"plain","optional":true},"root_password":{"type":"string","description":"Root password to the server (disabled after 24 hours)","description_kind":"plain","computed":true,"sensitive":true},"ssh_key_ids":{"type":["list","string"],"description":"List of IDs of SSH keys deployed in the device, can be both user and project SSH keys","description_kind":"plain","computed":true},"state":{"type":"string","description":"The status of the device","description_kind":"plain","computed":true},"storage":{"type":"string","description":"JSON for custom partitioning. Only usable on reserved hardware. More information in in the [Custom Partitioning and RAID](https://metal.equinix.com/developers/docs/servers/custom-partitioning-raid/) doc","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"Tags attached to the device","description_kind":"plain","optional":true},"termination_time":{"type":"string","description":"Timestamp for device termination. For example \"2021-09-03T16:32:00+03:00\". If you don't supply timezone info, timestamp is assumed to be in UTC.","description_kind":"plain","optional":true},"updated":{"type":"string","description":"The timestamp for the last time the device was updated","description_kind":"plain","computed":true},"user_data":{"type":"string","description":"A string of the desired User Data for the device. By default, changing this attribute will cause the provider to destroy and recreate your device. If `reinstall` is specified or `behavior.allow_changes` includes `\"user_data\"`, the device will be updated in-place instead of recreated.","description_kind":"plain","optional":true,"sensitive":true},"user_ssh_key_ids":{"type":["list","string"],"description":"Array of IDs of the user SSH keys which should be added to the device. If you omit this, SSH keys of all the members of the parent project will be added to the device. If you specify this array, only the listed user SSH keys (and any project_ssh_key_ids) will be added. User SSH keys can be created with the [equinix_metal_ssh_key](equinix_metal_ssh_key.md) resource","description_kind":"plain","optional":true},"wait_for_reservation_deprovision":{"type":"bool","description":"Only used for devices in reserved hardware. If set, the deletion of this device will block until the hardware reservation is marked provisionable (about 4 minutes in August 2019)","description_kind":"plain","optional":true}},"block_types":{"behavior":{"nesting_mode":"list","block":{"attributes":{"allow_changes":{"type":["list","string"],"description":"List of attributes that are allowed to change without recreating the instance. Supported attributes: `custom_data`, `user_data`","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"ip_address":{"nesting_mode":"list","block":{"attributes":{"cidr":{"type":"number","description":"CIDR suffix for IP block assigned to this device","description_kind":"plain","optional":true},"reservation_ids":{"type":["list","string"],"description":"IDs of reservations to pick the blocks from","description_kind":"plain","optional":true},"type":{"type":"string","description":"one of public_ipv4,private_ipv4,public_ipv6","description_kind":"plain","required":true}},"description":"A list of IP address types for the device (structure is documented below)","description_kind":"plain"}},"reinstall":{"nesting_mode":"list","block":{"attributes":{"deprovision_fast":{"type":"bool","description":"Whether the OS disk should be filled with `00h` bytes before reinstall","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"Whether the device should be reinstalled instead of destroyed","description_kind":"plain","optional":true},"preserve_data":{"type":"bool","description":"Whether the non-OS disks should be kept or wiped during reinstall","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_device_network_type":{"version":0,"block":{"attributes":{"device_id":{"type":"string","description":"The ID of the device on which the network type should be set","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description":"Network type to set. Must be one of layer3, hybrid, hybrid-bonded, layer2-individual, layer2-bonded","description_kind":"plain","required":true}},"description_kind":"plain"}},"equinix_metal_gateway":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_reservation_id":{"type":"string","description":"UUID of the Public or VRF IP Reservation to associate, must be in the same metro as the VLAN","description_kind":"plain","optional":true},"private_ipv4_subnet_size":{"type":"number","description":"Size of the private IPv4 subnet to create for this gateway, one of [8 16 32 64 128]","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"UUID of the Project where the Gateway is scoped to","description_kind":"plain","required":true},"state":{"type":"string","description":"Status of the gateway resource","description_kind":"plain","computed":true},"vlan_id":{"type":"string","description":"UUID of the VLAN to associate","description_kind":"plain","required":true},"vrf_id":{"type":"string","description":"UUID of the VRF associated with the IP Reservation","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_ip_attachment":{"version":0,"block":{"attributes":{"address":{"type":"string","description_kind":"plain","computed":true},"address_family":{"type":"number","description":"Address family as integer (4 or 6)","description_kind":"plain","computed":true},"cidr":{"type":"number","description":"Length of CIDR prefix of the block as integer","description_kind":"plain","computed":true},"cidr_notation":{"type":"string","description_kind":"plain","required":true},"device_id":{"type":"string","description_kind":"plain","required":true},"gateway":{"type":"string","description_kind":"plain","computed":true},"global":{"type":"bool","description":"Flag indicating whether IP block is global, i.e. assignable in any location","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"manageable":{"type":"bool","description_kind":"plain","computed":true},"management":{"type":"bool","description_kind":"plain","computed":true},"netmask":{"type":"string","description":"Mask in decimal notation, e.g. 255.255.255.0","description_kind":"plain","computed":true},"network":{"type":"string","description":"Network IP address portion of the block specification","description_kind":"plain","computed":true},"public":{"type":"bool","description":"Flag indicating whether IP block is addressable from the Internet","description_kind":"plain","computed":true},"vrf_id":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_organization":{"version":0,"block":{"attributes":{"created":{"type":"string","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"logo":{"type":"string","description":"Logo URL","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the Organization","description_kind":"plain","required":true},"twitter":{"type":"string","description":"Twitter handle","description_kind":"plain","optional":true},"updated":{"type":"string","description_kind":"plain","computed":true},"website":{"type":"string","description":"Website link","description_kind":"plain","optional":true}},"block_types":{"address":{"nesting_mode":"list","block":{"attributes":{"address":{"type":"string","description":"Postal address","description_kind":"plain","required":true},"city":{"type":"string","description":"City name","description_kind":"plain","required":true},"country":{"type":"string","description":"Two letter country code (ISO 3166-1 alpha-2), e.g. US","description_kind":"plain","required":true},"state":{"type":"string","description":"State name","description_kind":"plain","optional":true},"zip_code":{"type":"string","description":"Zip Code","description_kind":"plain","required":true}},"description":"Address information block","description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"}},"equinix_metal_organization_member":{"version":0,"block":{"attributes":{"created":{"type":"string","description":"When the invitation was created (only known in the invitation stage)","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"invited_by":{"type":"string","description":"The user id of the user that sent the invitation (only known in the invitation stage)","description_kind":"plain","computed":true},"invitee":{"type":"string","description":"The email address of the user to invite","description_kind":"plain","required":true},"message":{"type":"string","description":"A message to the invitee (only used during the invitation stage)","description_kind":"plain","optional":true},"nonce":{"type":"string","description":"The nonce for the invitation (only known in the invitation stage)","description_kind":"plain","computed":true},"organization_id":{"type":"string","description":"The organization to invite the user to","description_kind":"plain","required":true},"projects_ids":{"type":["set","string"],"description":"Project IDs the member has access to within the organization. If the member is an 'owner', the projects list should be empty.","description_kind":"plain","required":true},"roles":{"type":["set","string"],"description":"Organization roles (owner, collaborator, limited_collaborator, billing)","description_kind":"plain","required":true},"state":{"type":"string","description":"The state of the membership ('invited' when an invitation is open, 'active' when the user is an organization member)","description_kind":"plain","computed":true},"updated":{"type":"string","description":"When the invitation was updated (only known in the invitation stage)","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_port":{"version":0,"block":{"attributes":{"bond_id":{"type":"string","description":"UUID of the bond port","description_kind":"plain","computed":true},"bond_name":{"type":"string","description":"Name of the bond port","description_kind":"plain","computed":true},"bonded":{"type":"bool","description":"Flag indicating whether the port should be bonded","description_kind":"plain","required":true},"disbond_supported":{"type":"bool","description":"Flag indicating whether the port can be removed from a bond","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"layer2":{"type":"bool","description":"Flag indicating whether the port is in layer2 (or layer3) mode. The `layer2` flag can be set only for bond ports.","description_kind":"plain","optional":true},"mac":{"type":"string","description":"MAC address of the port","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the port to look up, e.g. bond0, eth1","description_kind":"plain","computed":true},"native_vlan_id":{"type":"string","description":"UUID of native VLAN of the port","description_kind":"plain","optional":true},"network_type":{"type":"string","description":"One of layer2-bonded, layer2-individual, layer3, hybrid and hybrid-bonded. This attribute is only set on bond ports.","description_kind":"plain","computed":true},"port_id":{"type":"string","description":"UUID of the port to lookup","description_kind":"plain","required":true},"reset_on_delete":{"type":"bool","description":"Behavioral setting to reset the port to default settings (layer3 bonded mode without any vlan attached) before delete/destroy","description_kind":"plain","optional":true},"type":{"type":"string","description":"Port type","description_kind":"plain","computed":true},"vlan_ids":{"type":["set","string"],"description":"UUIDs VLANs to attach. To avoid jitter, use the UUID and not the VXLAN","description_kind":"plain","optional":true,"computed":true},"vxlan_ids":{"type":["set","number"],"description":"VLAN VXLAN ids to attach (example: [1000])","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_port_vlan_attachment":{"version":0,"block":{"attributes":{"device_id":{"type":"string","description":"ID of device to be assigned to the VLAN","description_kind":"plain","required":true},"force_bond":{"type":"bool","description":"Add port back to the bond when this resource is removed. Default is false","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"native":{"type":"bool","description":"Mark this VLAN a native VLAN on the port. This can be used only if this assignment assigns second or further VLAN to the port. To ensure that this attachment is not first on a port, you can use depends_on pointing to another equinix_metal_port_vlan_attachment, just like in the layer2-individual example above","description_kind":"plain","optional":true},"port_id":{"type":"string","description":"UUID of device port","description_kind":"plain","computed":true},"port_name":{"type":"string","description":"Name of network port to be assigned to the VLAN","description_kind":"plain","required":true},"vlan_id":{"type":"string","description":"UUID of VLAN API resource","description_kind":"plain","computed":true},"vlan_vnid":{"type":"number","description":"VXLAN Network Identifier, integer","description_kind":"plain","required":true}},"description_kind":"plain"}},"equinix_metal_project":{"version":0,"block":{"attributes":{"backend_transfer":{"type":"bool","description":"Enable or disable [Backend Transfer](https://metal.equinix.com/developers/docs/networking/backend-transfer/), default is false","description_kind":"plain","optional":true},"created":{"type":"string","description":"The timestamp for when the project was created","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the project","description_kind":"plain","required":true},"organization_id":{"type":"string","description":"The UUID of organization under which you want to create the project. If you leave it out, the project will be create under your the default organization of your account","description_kind":"plain","optional":true,"computed":true},"payment_method_id":{"type":"string","description":"The UUID of payment method for this project. The payment method and the project need to belong to the same organization (passed with organization_id, or default)","description_kind":"plain","optional":true,"computed":true},"updated":{"type":"string","description":"The timestamp for the last time the project was updated","description_kind":"plain","computed":true}},"block_types":{"bgp_config":{"nesting_mode":"list","block":{"attributes":{"asn":{"type":"number","description":"Autonomous System Number for local BGP deployment","description_kind":"plain","required":true},"deployment_type":{"type":"string","description":"\"local\" or \"global\", the local is likely to be usable immediately, the global will need to be review by Equinix Metal engineers","description_kind":"plain","required":true},"max_prefix":{"type":"number","description":"The maximum number of route filters allowed per server","description_kind":"plain","computed":true},"md5":{"type":"string","description":"Password for BGP session in plaintext (not a checksum)","description_kind":"plain","optional":true,"sensitive":true},"status":{"type":"string","description":"Status of BGP configuration in the project","description_kind":"plain","computed":true}},"description":"Optional BGP settings. Refer to [Equinix Metal guide for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/)","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"equinix_metal_project_api_key":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description string for the API key","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"UUID of project which the new API key is scoped to","description_kind":"plain","required":true},"read_only":{"type":"bool","description":"Flag indicating whether the API key shoud be read-only","description_kind":"plain","required":true},"token":{"type":"string","description":"API token for API clients","description_kind":"plain","computed":true,"sensitive":true}},"description_kind":"plain"}},"equinix_metal_project_ssh_key":{"version":0,"block":{"attributes":{"created":{"type":"string","description":"The timestamp for when the SSH key was created","description_kind":"plain","computed":true},"fingerprint":{"type":"string","description":"The fingerprint of the SSH key","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the SSH key for identification","description_kind":"plain","required":true},"owner_id":{"type":"string","description":"The UUID of the Equinix Metal API User who owns this key","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"The ID of parent project","description_kind":"plain","required":true},"public_key":{"type":"string","description":"The public key. If this is a file, it","description_kind":"plain","required":true},"updated":{"type":"string","description":"The timestamp for the last time the SSH key was updated","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_reserved_ip_block":{"version":0,"block":{"attributes":{"address":{"type":"string","description_kind":"plain","computed":true},"address_family":{"type":"number","description":"Address family as integer (4 or 6)","description_kind":"plain","computed":true},"cidr":{"type":"number","description":"the size of the network to reserve from an existing vrf ip_range. `cidr` can only be specified with `vrf_id`. Minimum range is 22-29, with 30-31 supported and necessary for virtual-circuits","description_kind":"plain","optional":true,"computed":true},"cidr_notation":{"type":"string","description_kind":"plain","computed":true},"custom_data":{"type":"string","description":"Custom Data is an arbitrary object (submitted in Terraform as serialized JSON) to assign to the IP Reservation. This may be helpful for self-managed IPAM. The object must be valid JSON.","description_kind":"plain","optional":true},"description":{"type":"string","description":"Arbitrary description","description_kind":"plain","optional":true},"facility":{"type":"string","description":"Facility where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with metro","description_kind":"plain","optional":true},"gateway":{"type":"string","description_kind":"plain","computed":true},"global":{"type":"bool","description":"Flag indicating whether IP block is global, i.e. assignable in any location","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"manageable":{"type":"bool","description_kind":"plain","computed":true},"management":{"type":"bool","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with facility","description_kind":"plain","optional":true},"netmask":{"type":"string","description":"Mask in decimal notation, e.g. 255.255.255.0","description_kind":"plain","computed":true},"network":{"type":"string","description":"an unreserved network address from an existing vrf ip_range. `network` can only be specified with vrf_id","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"The metal project ID where to allocate the address block","description_kind":"plain","required":true},"public":{"type":"bool","description":"Flag indicating whether IP block is addressable from the Internet","description_kind":"plain","computed":true},"quantity":{"type":"number","description":"The number of allocated /32 addresses, a power of 2","description_kind":"plain","optional":true,"computed":true},"tags":{"type":["set","string"],"description":"Tags attached to the reserved block","description_kind":"plain","optional":true},"type":{"type":"string","description":"Either global_ipv4, public_ipv4, or vrf. Defaults to public_ipv4.","description_kind":"plain","optional":true},"vrf_id":{"type":"string","description":"VRF ID for type=vrf reservations","description_kind":"plain","optional":true},"wait_for_state":{"type":"string","description":"Wait for the IP reservation block to reach a desired state on resource creation. One of: `pending`, `created`. The `created` state is default and recommended if the addresses are needed within the configuration. An error will be returned if a timeout or the `denied` state is encountered.","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_spot_market_request":{"version":0,"block":{"attributes":{"devices_max":{"type":"number","description":"Maximum number devices to be created","description_kind":"plain","required":true},"devices_min":{"type":"number","description":"Miniumum number devices to be created","description_kind":"plain","required":true},"facilities":{"type":["list","string"],"description":"Facility IDs where devices should be created","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"max_bid_price":{"type":"number","description":"Maximum price user is willing to pay per hour per device","description_kind":"plain","required":true},"metro":{"type":"string","description":"Metro where devices should be created","description_kind":"plain","optional":true},"project_id":{"type":"string","description":"Project ID","description_kind":"plain","required":true},"wait_for_devices":{"type":"bool","description":"On resource creation - wait until all desired devices are active, on resource destruction - wait until devices are removed","description_kind":"plain","optional":true}},"block_types":{"instance_parameters":{"nesting_mode":"list","block":{"attributes":{"always_pxe":{"type":"bool","description_kind":"plain","optional":true},"billing_cycle":{"type":"string","description_kind":"plain","required":true},"customdata":{"type":"string","description_kind":"plain","optional":true},"description":{"type":"string","description_kind":"plain","optional":true},"features":{"type":["list","string"],"description_kind":"plain","optional":true},"hostname":{"type":"string","description_kind":"plain","required":true},"ipxe_script_url":{"type":"string","description_kind":"plain","optional":true},"locked":{"type":"bool","description_kind":"plain","optional":true},"operating_system":{"type":"string","description_kind":"plain","required":true},"plan":{"type":"string","description_kind":"plain","required":true},"project_ssh_keys":{"type":["list","string"],"description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description_kind":"plain","optional":true},"termintation_time":{"type":"string","description_kind":"plain","computed":true},"user_ssh_keys":{"type":["list","string"],"description_kind":"plain","optional":true},"userdata":{"type":"string","description_kind":"plain","optional":true}},"description":"Parameters for devices provisioned from this request. You can find the parameter description from the [equinix_metal_device doc](device.md)","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_ssh_key":{"version":0,"block":{"attributes":{"created":{"type":"string","description":"The timestamp for when the SSH key was created","description_kind":"plain","computed":true},"fingerprint":{"type":"string","description":"The fingerprint of the SSH key","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the SSH key for identification","description_kind":"plain","required":true},"owner_id":{"type":"string","description":"The UUID of the Equinix Metal API User who owns this key","description_kind":"plain","computed":true},"public_key":{"type":"string","description":"The public key. If this is a file, it","description_kind":"plain","required":true},"updated":{"type":"string","description":"The timestamp for the last time the SSH key was updated","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_user_api_key":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description string for the API key","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"read_only":{"type":"bool","description":"Flag indicating whether the API key shoud be read-only","description_kind":"plain","required":true},"token":{"type":"string","description":"API token for API clients","description_kind":"plain","computed":true,"sensitive":true},"user_id":{"type":"string","description":"UUID of user owning this key","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_virtual_circuit":{"version":0,"block":{"attributes":{"connection_id":{"type":"string","description":"UUID of Connection where the VC is scoped to","description_kind":"plain","required":true},"customer_ip":{"type":"string","description":"The Customer IP address which the CSR switch will peer with. Will default to the other usable IP in the subnet.","description_kind":"plain","optional":true},"description":{"type":"string","description":"Description of the Virtual Circuit resource","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"md5":{"type":"string","description":"The password that can be set for the VRF BGP peer","description_kind":"plain","optional":true,"sensitive":true},"metal_ip":{"type":"string","description":"The Metal IP address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the subnet.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the Virtual Circuit resource","description_kind":"plain","optional":true},"nni_vlan":{"type":"number","description":"Equinix Metal network-to-network VLAN ID (optional when the connection has mode=tunnel)","description_kind":"plain","optional":true},"nni_vnid":{"type":"number","description":"Nni VLAN ID parameter, see https://metal.equinix.com/developers/docs/networking/fabric/","description_kind":"plain","computed":true},"peer_asn":{"type":"number","description":"The BGP ASN of the peer. The same ASN may be the used across several VCs, but it cannot be the same as the local_asn of the VRF.","description_kind":"plain","optional":true},"port_id":{"type":"string","description":"UUID of the Connection Port where the VC is scoped to","description_kind":"plain","required":true},"project_id":{"type":"string","description":"UUID of the Project where the VC is scoped to","description_kind":"plain","required":true},"speed":{"type":"string","description":"Description of the Virtual Circuit speed. This is for information purposes and is computed when the connection type is shared.","description_kind":"plain","optional":true,"computed":true},"status":{"type":"string","description":"Status of the virtual circuit resource","description_kind":"plain","computed":true},"subnet":{"type":"string","description":"A subnet from one of the IP blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /30 or /31.\n\t\t\t\t * For a /31 block, it will only have two IP addresses, which will be used for the metal_ip and customer_ip.\n\t\t\t\t * For a /30 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"Tags attached to the virtual circuit","description_kind":"plain","optional":true},"vlan_id":{"type":"string","description":"UUID of the VLAN to associate","description_kind":"plain","optional":true},"vnid":{"type":"number","description":"VNID VLAN parameter, see https://metal.equinix.com/developers/docs/networking/fabric/","description_kind":"plain","computed":true},"vrf_id":{"type":"string","description":"UUID of the VRF to associate","description_kind":"plain","optional":true}},"description_kind":"plain"}},"equinix_metal_vlan":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description string","description_kind":"plain","optional":true},"facility":{"type":"string","description":"Facility where to create the VLAN","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description_kind":"plain","optional":true},"project_id":{"type":"string","description":"ID of parent project","description_kind":"plain","required":true},"vxlan":{"type":"number","description":"VLAN ID, must be unique in metro","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"equinix_metal_vrf":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the VRF","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_ranges":{"type":["set","string"],"description":"All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF.","description_kind":"plain","optional":true},"local_asn":{"type":"number","description":"The 4-byte ASN set on the VRF.","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"Metro Code","description_kind":"plain","required":true},"name":{"type":"string","description":"User-supplied name of the VRF, unique to the project","description_kind":"plain","required":true},"project_id":{"type":"string","description":"Project ID","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"equinix_network_acl_template":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"ACL template description, up to 200 characters","description_kind":"plain","optional":true},"device_acl_status":{"type":"string","description":"Status of ACL template provisioning process on a device, where template was applied","description_kind":"plain","computed":true},"device_details":{"type":["list",["object",{"acl_status":"string","name":"string","uuid":"string"}]],"description":"Device Details to which ACL template is assigned to. ","description_kind":"plain","computed":true},"device_id":{"type":"string","description":"Identifier of a network device where template was applied","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"ACL template location metro code","description_kind":"plain","deprecated":true,"optional":true},"name":{"type":"string","description":"ACL template name","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Unique identifier of ACL template resource","description_kind":"plain","computed":true}},"block_types":{"inbound_rule":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Inbound rule description, up to 200 characters","description_kind":"plain","optional":true},"dst_port":{"type":"string","description":"Inbound traffic destination ports. Either up to 10, comma separated ports or port range or any word","description_kind":"plain","required":true},"protocol":{"type":"string","description":"Inbound traffic protocol. One of: `IP`, `TCP`, `UDP`","description_kind":"plain","required":true},"sequence_number":{"type":"number","description":"Inbound rule sequence number","description_kind":"plain","computed":true},"source_type":{"type":"string","description":"Type of traffic source used in a given inbound rule","description_kind":"plain","deprecated":true,"computed":true},"src_port":{"type":"string","description":"Inbound traffic source ports. Either up to 10, comma separated ports or port range or any word","description_kind":"plain","required":true},"subnet":{"type":"string","description":"Inbound traffic source IP subnet in CIDR format","description_kind":"plain","optional":true},"subnets":{"type":["list","string"],"description":"Inbound traffic source IP subnets in CIDR format","description_kind":"plain","deprecated":true,"optional":true}},"description":"One or more rules to specify allowed inbound traffic. Rules are ordered, matching traffic rule stops processing subsequent ones.","description_kind":"plain"},"min_items":1}},"description":"Resource allows creation and management of Equinix Network Edge device Access Control List templates","description_kind":"plain"}},"equinix_network_bgp":{"version":0,"block":{"attributes":{"authentication_key":{"type":"string","description":"Shared key used for BGP peer authentication","description_kind":"plain","optional":true,"sensitive":true},"connection_id":{"type":"string","description":"Identifier of a connection established between network device and remote service provider that will be used for peering","description_kind":"plain","required":true},"device_id":{"type":"string","description":"Unique identifier of a network device that is a local peer in a given BGP peering configuration","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"local_asn":{"type":"number","description":"Local ASN number","description_kind":"plain","required":true},"local_ip_address":{"type":"string","description":"IP address in CIDR format of a local device","description_kind":"plain","required":true},"provisioning_status":{"type":"string","description":"BGP peering configuration provisioning status","description_kind":"plain","computed":true},"remote_asn":{"type":"number","description":"Remote ASN number","description_kind":"plain","required":true},"remote_ip_address":{"type":"string","description":"IP address of remote peer","description_kind":"plain","required":true},"state":{"type":"string","description":"BGP peer state","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"BGP peering configuration unique identifier","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource allows creation and management of Equinix Network Edge BGP peering configurations","description_kind":"plain"}},"equinix_network_device":{"version":0,"block":{"attributes":{"account_number":{"type":"string","description":"Device billing account number","description_kind":"plain","required":true},"acl_template_id":{"type":"string","description":"Unique identifier of applied ACL template","description_kind":"plain","optional":true},"additional_bandwidth":{"type":"number","description":"Additional Internet bandwidth, in Mbps, that will be allocated to the device","description_kind":"plain","optional":true,"computed":true},"asn":{"type":"number","description":"Autonomous system number","description_kind":"plain","computed":true},"byol":{"type":"bool","description":"Boolean value that determines device licensing mode: bring your own license or subscription (default)","description_kind":"plain","optional":true},"cloud_init_file_id":{"type":"string","description":"Unique identifier of applied cloud init file","description_kind":"plain","optional":true},"core_count":{"type":"number","description":"Number of CPU cores used by device","description_kind":"plain","required":true},"hostname":{"type":"string","description":"Device hostname prefix","description_kind":"plain","optional":true,"computed":true},"ibx":{"type":"string","description":"Device location Equinix Business Exchange name","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interface":{"type":["list",["object",{"assigned_type":"string","id":"number","ip_address":"string","mac_address":"string","name":"string","operational_status":"string","status":"string","type":"string"}]],"description":"List of device interfaces","description_kind":"plain","computed":true},"interface_count":{"type":"number","description":"Number of network interfaces on a device. If not specified, default number for a given device type will be used","description_kind":"plain","optional":true,"computed":true},"license_file":{"type":"string","description":"Path to the license file that will be uploaded and applied on a device, applicable for some device types in BYOL licensing mode","description_kind":"plain","optional":true},"license_file_id":{"type":"string","description":"Unique identifier of applied license file","description_kind":"plain","optional":true,"computed":true},"license_status":{"type":"string","description":"Device license registration status","description_kind":"plain","computed":true},"license_token":{"type":"string","description":"License Token applicable for some device types in BYOL licensing mode","description_kind":"plain","optional":true},"metro_code":{"type":"string","description":"Device location metro code","description_kind":"plain","required":true},"mgmt_acl_template_uuid":{"type":"string","description":"Unique identifier of applied MGMT ACL template","description_kind":"plain","optional":true},"name":{"type":"string","description":"Device name","description_kind":"plain","required":true},"notifications":{"type":["set","string"],"description":"List of email addresses that will receive device status notifications","description_kind":"plain","required":true},"order_reference":{"type":"string","description":"Name/number used to identify device order on the invoice","description_kind":"plain","optional":true},"package_code":{"type":"string","description":"Device software package code","description_kind":"plain","required":true},"purchase_order_number":{"type":"string","description":"Purchase order number associated with a device order","description_kind":"plain","optional":true},"redundancy_type":{"type":"string","description":"Device redundancy type applicable for HA devices, either primary or secondary","description_kind":"plain","computed":true},"redundant_id":{"type":"string","description":"Unique identifier for a redundant device, applicable for HA device","description_kind":"plain","computed":true},"region":{"type":"string","description":"Device location region","description_kind":"plain","computed":true},"self_managed":{"type":"bool","description":"Boolean value that determines device management mode: self-managed or subscription (default)","description_kind":"plain","optional":true},"ssh_ip_address":{"type":"string","description":"IP address of SSH enabled interface on the device","description_kind":"plain","computed":true},"ssh_ip_fqdn":{"type":"string","description":"FQDN of SSH enabled interface on the device","description_kind":"plain","computed":true},"status":{"type":"string","description":"Device provisioning status","description_kind":"plain","computed":true},"term_length":{"type":"number","description":"Device term length","description_kind":"plain","required":true},"throughput":{"type":"number","description":"Device license throughput","description_kind":"plain","optional":true},"throughput_unit":{"type":"string","description":"Device license throughput unit (Mbps or Gbps)","description_kind":"plain","optional":true},"type_code":{"type":"string","description":"Device type code","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Device unique identifier","description_kind":"plain","computed":true},"vendor_configuration":{"type":["map","string"],"description":"Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress)","description_kind":"plain","optional":true,"computed":true},"version":{"type":"string","description":"Device software software version","description_kind":"plain","required":true},"wan_interface_id":{"type":"string","description":"device interface id picked for WAN","description_kind":"plain","optional":true},"zone_code":{"type":"string","description":"Device location zone code","description_kind":"plain","computed":true}},"block_types":{"cluster_details":{"nesting_mode":"list","block":{"attributes":{"cluster_id":{"type":"string","description":"The id of the cluster","description_kind":"plain","computed":true},"cluster_name":{"type":"string","description":"The name of the cluster device","description_kind":"plain","required":true},"num_of_nodes":{"type":"number","description":"The number of nodes in the cluster","description_kind":"plain","computed":true}},"block_types":{"node0":{"nesting_mode":"list","block":{"attributes":{"license_file_id":{"type":"string","description":"License file id. This is necessary for Fortinet and Juniper clusters","description_kind":"plain","optional":true},"license_token":{"type":"string","description":"License token. This is necessary for Palo Alto clusters","description_kind":"plain","optional":true,"sensitive":true},"name":{"type":"string","description":"The name of the node","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"The unique id of the node","description_kind":"plain","computed":true}},"block_types":{"vendor_configuration":{"nesting_mode":"list","block":{"attributes":{"activation_key":{"type":"string","description":"Activation key. This is required for Velocloud clusters","description_kind":"plain","optional":true,"sensitive":true},"admin_password":{"type":"string","description":"The administrative password of the device. You can use it to log in to the console. This field is not available for all device types","description_kind":"plain","optional":true,"computed":true,"sensitive":true},"controller1":{"type":"string","description":"System IP Address. Mandatory for the Fortinet SDWAN cluster device","description_kind":"plain","optional":true},"controller_fqdn":{"type":"string","description":"Controller fqdn. This is required for Velocloud clusters","description_kind":"plain","optional":true},"hostname":{"type":"string","description":"Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters","description_kind":"plain","optional":true},"root_password":{"type":"string","description":"The CLI password of the device. This field is relevant only for the Velocloud SDWAN cluster","description_kind":"plain","optional":true,"sensitive":true}},"description":"An object that has fields relevant to the vendor of the cluster device","description_kind":"plain"},"max_items":1}},"description":"An object that has node0 details","description_kind":"plain"},"min_items":1,"max_items":1},"node1":{"nesting_mode":"list","block":{"attributes":{"license_file_id":{"type":"string","description":"License file id. This is necessary for Fortinet and Juniper clusters","description_kind":"plain","optional":true},"license_token":{"type":"string","description":"License token. This is necessary for Palo Alto clusters","description_kind":"plain","optional":true,"sensitive":true},"name":{"type":"string","description":"The name of the node","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"The unique id of the node","description_kind":"plain","computed":true}},"block_types":{"vendor_configuration":{"nesting_mode":"list","block":{"attributes":{"activation_key":{"type":"string","description":"Activation key. This is required for Velocloud clusters","description_kind":"plain","optional":true,"sensitive":true},"admin_password":{"type":"string","description":"The administrative password of the device. You can use it to log in to the console. This field is not available for all device types","description_kind":"plain","optional":true,"computed":true,"sensitive":true},"controller1":{"type":"string","description":"System IP Address. Mandatory for the Fortinet SDWAN cluster device","description_kind":"plain","optional":true},"controller_fqdn":{"type":"string","description":"Controller fqdn. This is required for Velocloud clusters","description_kind":"plain","optional":true},"hostname":{"type":"string","description":"Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters","description_kind":"plain","optional":true},"root_password":{"type":"string","description":"The CLI password of the device. This field is relevant only for the Velocloud SDWAN cluster","description_kind":"plain","optional":true,"sensitive":true}},"description":"An object that has fields relevant to the vendor of the cluster device","description_kind":"plain"},"max_items":1}},"description":"An object that has node1 details","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"An object that has the cluster details","description_kind":"plain"},"max_items":1},"secondary_device":{"nesting_mode":"list","block":{"attributes":{"account_number":{"type":"string","description":"Device billing account number","description_kind":"plain","required":true},"acl_template_id":{"type":"string","description":"Unique identifier of applied ACL template","description_kind":"plain","optional":true},"additional_bandwidth":{"type":"number","description":"Additional Internet bandwidth, in Mbps, that will be allocated to the device","description_kind":"plain","optional":true,"computed":true},"asn":{"type":"number","description":"Autonomous system number","description_kind":"plain","computed":true},"cloud_init_file_id":{"type":"string","description":"Unique identifier of applied cloud init file","description_kind":"plain","optional":true},"hostname":{"type":"string","description":"Device hostname prefix","description_kind":"plain","optional":true},"ibx":{"type":"string","description":"Device location Equinix Business Exchange name","description_kind":"plain","computed":true},"interface":{"type":["list",["object",{"assigned_type":"string","id":"number","ip_address":"string","mac_address":"string","name":"string","operational_status":"string","status":"string","type":"string"}]],"description":"List of device interfaces","description_kind":"plain","computed":true},"license_file":{"type":"string","description":"Path to the license file that will be uploaded and applied on a device, applicable for some device types in BYOL licensing mode","description_kind":"plain","optional":true},"license_file_id":{"type":"string","description":"Unique identifier of applied license file","description_kind":"plain","optional":true,"computed":true},"license_status":{"type":"string","description":"Device license registration status","description_kind":"plain","computed":true},"license_token":{"type":"string","description":"License Token applicable for some device types in BYOL licensing mode","description_kind":"plain","optional":true},"metro_code":{"type":"string","description":"Device location metro code","description_kind":"plain","required":true},"mgmt_acl_template_uuid":{"type":"string","description":"Unique identifier of applied MGMT ACL template","description_kind":"plain","optional":true},"name":{"type":"string","description":"Device name","description_kind":"plain","required":true},"notifications":{"type":["set","string"],"description":"List of email addresses that will receive device status notifications","description_kind":"plain","required":true},"redundancy_type":{"type":"string","description":"Device redundancy type applicable for HA devices, either primary or secondary","description_kind":"plain","computed":true},"redundant_id":{"type":"string","description":"Unique identifier for a redundant device, applicable for HA device","description_kind":"plain","computed":true},"region":{"type":"string","description":"Device location region","description_kind":"plain","computed":true},"ssh_ip_address":{"type":"string","description":"IP address of SSH enabled interface on the device","description_kind":"plain","computed":true},"ssh_ip_fqdn":{"type":"string","description":"FQDN of SSH enabled interface on the device","description_kind":"plain","computed":true},"status":{"type":"string","description":"Device provisioning status","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Device unique identifier","description_kind":"plain","computed":true},"vendor_configuration":{"type":["map","string"],"description":"Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress)","description_kind":"plain","optional":true,"computed":true},"wan_interface_id":{"type":"string","description":"device interface id picked for WAN","description_kind":"plain","optional":true},"zone_code":{"type":"string","description":"Device location zone code","description_kind":"plain","computed":true}},"block_types":{"ssh_key":{"nesting_mode":"set","block":{"attributes":{"key_name":{"type":"string","description":"Reference by name to previously provisioned public SSH key","description_kind":"plain","required":true},"username":{"type":"string","description":"Username associated with given key","description_kind":"plain","required":true}},"description":"Definition of SSH key that will be provisioned on a device","description_kind":"plain"},"max_items":1}},"description":"Definition of secondary device applicable for HA setup","description_kind":"plain"},"max_items":1},"ssh_key":{"nesting_mode":"set","block":{"attributes":{"key_name":{"type":"string","description":"Reference by name to previously provisioned public SSH key","description_kind":"plain","required":true},"username":{"type":"string","description":"Username associated with given key","description_kind":"plain","required":true}},"description":"Definition of SSH key that will be provisioned on a device","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource allows creation and management of Equinix Network Edge virtual devices","description_kind":"plain"}},"equinix_network_device_link":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"name","description_kind":"plain","required":true},"status":{"type":"string","description":"Device link provisioning status","description_kind":"plain","computed":true},"subnet":{"type":"string","description":"subnet","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Device link unique identifier","description_kind":"plain","computed":true}},"block_types":{"device":{"nesting_mode":"set","block":{"attributes":{"asn":{"type":"number","description":"Device ASN number","description_kind":"plain","optional":true},"id":{"type":"string","description":"Device identifier","description_kind":"plain","required":true},"interface_id":{"type":"number","description":"Device network interface identifier to use for device link connection","description_kind":"plain","optional":true},"ip_address":{"type":"string","description":"Assigned IP address from device link subnet","description_kind":"plain","computed":true},"status":{"type":"string","description":"Device link connection provisioning status","description_kind":"plain","computed":true}},"description_kind":"plain"},"min_items":2},"link":{"nesting_mode":"set","block":{"attributes":{"account_number":{"type":"string","description":"Billing account number to be used for connection charges","description_kind":"plain","required":true},"dst_metro_code":{"type":"string","description":"Connection destination metro code","description_kind":"plain","required":true},"dst_zone_code":{"type":"string","description":"Connection destination zone code","description_kind":"plain","deprecated":true,"optional":true},"src_metro_code":{"type":"string","description":"Connection source metro code","description_kind":"plain","required":true},"src_zone_code":{"type":"string","description":"Connection source zone code","description_kind":"plain","deprecated":true,"optional":true},"throughput":{"type":"string","description":"Connection throughput","description_kind":"plain","required":true},"throughput_unit":{"type":"string","description":"Connection throughput unit","description_kind":"plain","required":true}},"description":"link","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource allows creation and management of Equinix Network Edge device links","description_kind":"plain"}},"equinix_network_file":{"version":0,"block":{"attributes":{"byol":{"type":"bool","description":"Boolean value that determines device licensing mode: bring your own license or subscription","description_kind":"plain","required":true},"content":{"type":"string","description":"Uploaded file content, expected to be a UTF-8 encoded string","description_kind":"plain","required":true,"sensitive":true},"device_type_code":{"type":"string","description":"Device type code","description_kind":"plain","required":true},"file_name":{"type":"string","description":"File name","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"File upload location metro code","description_kind":"plain","required":true},"process_type":{"type":"string","description":"File process type (LICENSE or CLOUD_INIT)","description_kind":"plain","required":true},"self_managed":{"type":"bool","description":"Boolean value that determines device management mode: self-managed or equinix-managed","description_kind":"plain","required":true},"status":{"type":"string","description":"File upload status","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Unique identifier of file resource","description_kind":"plain","computed":true}},"description":"Resource allows creation and management of Equinix Network Edge device files","description_kind":"plain"}},"equinix_network_ssh_key":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of SSH key used for identification","description_kind":"plain","required":true},"public_key":{"type":"string","description":"The SSH public key. If this is a file, it can be read using the file interpolation function","description_kind":"plain","required":true},"uuid":{"type":"string","description":"The unique identifier of the key","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource allows creation and management of Equinix Network Edge SSH keys","description_kind":"plain"}},"equinix_network_ssh_user":{"version":0,"block":{"attributes":{"device_ids":{"type":["set","string"],"description":"list of device identifiers to which user will have access","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"password":{"type":"string","description":"SSH user password","description_kind":"plain","required":true,"sensitive":true},"username":{"type":"string","description":"SSH user login name","description_kind":"plain","required":true},"uuid":{"type":"string","description":"SSH user unique identifier","description_kind":"plain","computed":true}},"description":"Resource allows creation and management of Equinix Network Edge SSH users","description_kind":"plain"}}},"data_source_schemas":{"equinix_ecx_l2_sellerprofile":{"version":0,"block":{"attributes":{"additional_info":{"type":["set",["object",{"captured_in_email":"bool","data_type":"string","description":"string","mandatory":"bool","name":"string"}]],"description":"One or more specifications of additional buyer information attributes that can be provided in connection definition that uses given seller profile","description_kind":"plain","computed":true},"description":{"type":"string","description":"Seller Profile text description","description_kind":"plain","computed":true},"encapsulation":{"type":"string","description":"Seller profile's encapsulation (either Dot1q or QinQ)","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":["set",["object",{"code":"string","ibxes":["set","string"],"name":"string","regions":["map","string"]}]],"description":"One or more specifications of metro locations supported by seller profile","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the seller profile","description_kind":"plain","optional":true,"computed":true},"organization_global_name":{"type":"string","description":"Name of seller's global organization","description_kind":"plain","optional":true,"computed":true},"organization_name":{"type":"string","description":"Name of seller's organization","description_kind":"plain","optional":true,"computed":true},"redundancy_required":{"type":"bool","description":"Boolean that indicate if seller requires connections to be redundant","description_kind":"plain","computed":true},"speed_band":{"type":["set",["object",{"speed":"number","speed_unit":"string"}]],"description":"One or more specifications of speed/bandwidth supported by given seller profile","description_kind":"plain","computed":true},"speed_customization_allowed":{"type":"bool","description":"Boolean that indicates if seller allows customer to enter a custom connection speed","description_kind":"plain","computed":true},"speed_from_api":{"type":"bool","description":"Boolean that indicates if seller is deriving connection speed from an API call","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Unique identifier of the seller profile","description_kind":"plain","computed":true}},"description":"Use this data source to get details of Equinix Fabric layer 2 seller profile with a given name and / or organization","description_kind":"plain"}},"equinix_ecx_l2_sellerprofiles":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro_codes":{"type":["set","string"],"description":"List of metro codes of locations that should be served by resulting profiles","description_kind":"plain","optional":true},"name_regex":{"type":"string","description":"A regex string to apply on returned seller profile names and filter search results","description_kind":"plain","optional":true},"organization_global_name":{"type":"string","description":"Name of seller's global organization","description_kind":"plain","optional":true},"organization_name":{"type":"string","description":"Name of seller's organization","description_kind":"plain","optional":true},"profiles":{"type":["list",["object",{"additional_info":["set",["object",{"captured_in_email":"bool","data_type":"string","description":"string","mandatory":"bool","name":"string"}]],"description":"string","encapsulation":"string","metro":["set",["object",{"code":"string","ibxes":["set","string"],"name":"string","regions":["map","string"]}]],"name":"string","organization_global_name":"string","organization_name":"string","redundancy_required":"bool","speed_band":["set",["object",{"speed":"number","speed_unit":"string"}]],"speed_customization_allowed":"bool","speed_from_api":"bool","uuid":"string"}]],"description":"Resulting list of profiles that match filtering criteria","description_kind":"plain","computed":true},"speed_bands":{"type":["set","string"],"description":"List of speed bands that should be supported by resulting profiles","description_kind":"plain","optional":true}},"description":"Use this data source to get list of Equinix Fabric layer 2 seller profiles","description_kind":"plain"}},"equinix_ecx_port":{"version":0,"block":{"attributes":{"bandwidth":{"type":"string","description":"Port Bandwidth in bytes","description_kind":"plain","computed":true},"buyout":{"type":"bool","description":"Boolean value that indicates whether the port supports unlimited connections.","description_kind":"plain","computed":true},"encapsulation":{"type":"string","description":"The VLAN encapsulation of the port (Dot1q or QinQ)","description_kind":"plain","computed":true},"ibx":{"type":"string","description":"Port location Equinix Business Exchange (IBX)","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Port location metro code","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the port","description_kind":"plain","required":true},"priority":{"type":"string","description":"The priority of the device (primary / secondary) where the port resides","description_kind":"plain","computed":true},"region":{"type":"string","description":"Port location region","description_kind":"plain","computed":true},"status":{"type":"string","description":"Port status that indicates whether a port has been assigned or is ready for connection","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Unique identifier of the por","description_kind":"plain","computed":true}},"description":"Use this data source to get details of Equinix Fabric port with a given name","description_kind":"plain"}},"equinix_fabric_connection":{"version":0,"block":{"attributes":{"a_side":{"type":["set",["object",{"access_point":["set",["object",{"account":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"authentication_key":"string","gateway":["set",["object",{"href":"string","state":"string","uuid":"string"}]],"interface":["set",["object",{"id":"string","type":"string","uuid":"string"}]],"link_protocol":["set",["object",{"type":"string","vlan_c_tag":"number","vlan_s_tag":"number","vlan_tag":"number"}]],"location":["set",["object",{"href":"string","ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"peering_type":"string","port":["set",["object",{"href":"string","name":"string","redundancy":["set",["object",{"priority":"string"}]],"uuid":"string"}]],"profile":["set",["object",{"access_point_type_configs":["list",["object",{"allow_bandwidth_auto_approval":"bool","allow_bandwidth_upgrade":"bool","allow_custom_bandwidth":"bool","allow_remote_connections":"bool","api_config":["set",["object",{"allow_over_subscription":"bool","api_available":"bool","bandwidth_from_api":"bool","equinix_managed_port":"bool","equinix_managed_vlan":"bool","integration_id":"string","over_subscription_limit":"number"}]],"authentication_key":["set",["object",{"description":"string","label":"string","required":"bool"}]],"bandwidth_alert_threshold":"number","connection_label":"string","connection_redundancy_required":"bool","enable_auto_generate_service_key":"bool","link_protocol_config":["set",["object",{"encapsulation":"string","encapsulation_strategy":"string","reuse_vlan_s_tag":"bool"}]],"supported_bandwidths":["list","number"],"type":"string","uuid":"string"}]],"description":"string","href":"string","name":"string","type":"string","uuid":"string"}]],"provider_connection_id":"string","seller_region":"string","type":"string","virtual_device":["set",["object",{"href":"string","type":"string","uuid":"string"}]]}]],"service_token":["set",["object",{"description":"string","href":"string","type":"string","uuid":"string"}]]}]],"description":"Requester or Customer side connection configuration object of the multi-segment connection","description_kind":"plain","computed":true},"account":{"type":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"description":"Customer account information that is associated with this connection","description_kind":"plain","computed":true},"additional_info":{"type":["list",["object",{"key":"string","value":"string"}]],"description":"Connection additional information","description_kind":"plain","computed":true},"bandwidth":{"type":"number","description":"Connection bandwidth in Mbps","description_kind":"plain","computed":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures connection lifecycle change information","description_kind":"plain","computed":true},"description":{"type":"string","description":"Customer-provided connection description","description_kind":"plain","computed":true},"direction":{"type":"string","description":"Connection directionality from the requester point of view","description_kind":"plain","computed":true},"href":{"type":"string","description":"Connection URI information","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_remote":{"type":"bool","description":"Connection property derived from access point locations","description_kind":"plain","computed":true},"name":{"type":"string","description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores","description_kind":"plain","computed":true},"notifications":{"type":["list",["object",{"emails":["list","string"],"send_interval":"string","type":"string"}]],"description":"Preferences for notifications on connection configuration or status changes","description_kind":"plain","computed":true},"operation":{"type":["set",["object",{"equinix_status":"string","errors":["list",["object",{"additional_info":["list",["object",{"property":"string","reason":"string"}]],"correlation_id":"string","details":"string","error_code":"string","error_message":"string","help":"string"}]],"provider_status":"string"}]],"description":"Connection specific operational data","description_kind":"plain","computed":true},"order":{"type":["set",["object",{"billing_tier":"string","order_id":"string","order_number":"string","purchase_order_number":"string"}]],"description":"Order related to this connection information","description_kind":"plain","computed":true},"redundancy":{"type":["set",["object",{"group":"string","priority":"string"}]],"description":"Redundancy Information","description_kind":"plain","computed":true},"state":{"type":"string","description":"Connection overall state","description_kind":"plain","computed":true},"type":{"type":"string","description":"Defines the connection type like VG_VC, EVPL_VC, EPL_VC, EC_VC, GW_VC, ACCESS_EPL_VC","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned connection identifier","description_kind":"plain","optional":true},"z_side":{"type":["set",["object",{"access_point":["set",["object",{"account":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"authentication_key":"string","gateway":["set",["object",{"href":"string","state":"string","uuid":"string"}]],"interface":["set",["object",{"id":"string","type":"string","uuid":"string"}]],"link_protocol":["set",["object",{"type":"string","vlan_c_tag":"number","vlan_s_tag":"number","vlan_tag":"number"}]],"location":["set",["object",{"href":"string","ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"peering_type":"string","port":["set",["object",{"href":"string","name":"string","redundancy":["set",["object",{"priority":"string"}]],"uuid":"string"}]],"profile":["set",["object",{"access_point_type_configs":["list",["object",{"allow_bandwidth_auto_approval":"bool","allow_bandwidth_upgrade":"bool","allow_custom_bandwidth":"bool","allow_remote_connections":"bool","api_config":["set",["object",{"allow_over_subscription":"bool","api_available":"bool","bandwidth_from_api":"bool","equinix_managed_port":"bool","equinix_managed_vlan":"bool","integration_id":"string","over_subscription_limit":"number"}]],"authentication_key":["set",["object",{"description":"string","label":"string","required":"bool"}]],"bandwidth_alert_threshold":"number","connection_label":"string","connection_redundancy_required":"bool","enable_auto_generate_service_key":"bool","link_protocol_config":["set",["object",{"encapsulation":"string","encapsulation_strategy":"string","reuse_vlan_s_tag":"bool"}]],"supported_bandwidths":["list","number"],"type":"string","uuid":"string"}]],"description":"string","href":"string","name":"string","type":"string","uuid":"string"}]],"provider_connection_id":"string","seller_region":"string","type":"string","virtual_device":["set",["object",{"href":"string","type":"string","uuid":"string"}]]}]],"service_token":["set",["object",{"description":"string","href":"string","type":"string","uuid":"string"}]]}]],"description":"Destination or Provider side connection configuration object of the multi-segment connection","description_kind":"plain","computed":true}},"block_types":{"project":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource URL","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"Project Id","description_kind":"plain","computed":true}},"description":"Project information","description_kind":"plain"}}},"description":"Fabric V4 API compatible data resource that allow user to fetch connection for a given UUID\n\n~\u003e **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)","description_kind":"plain"}},"equinix_fabric_port":{"version":0,"block":{"attributes":{"account":{"type":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"description":"Customer account information that is associated with this port","description_kind":"plain","computed":true},"available_bandwidth":{"type":"number","description":"Port available bandwidth in Mbps","description_kind":"plain","computed":true},"bandwidth":{"type":"number","description":"Port bandwidth in Mbps","description_kind":"plain","computed":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures port lifecycle change information","description_kind":"plain","computed":true},"description":{"type":"string","description":"Port description","description_kind":"plain","computed":true},"device":{"type":["set",["object",{"name":"string","redundancy":["set",["object",{"group":"string","priority":"string"}]]}]],"description":"Port device","description_kind":"plain","computed":true},"encapsulation":{"type":["set",["object",{"tag_protocol_id":"string","type":"string"}]],"description":"Port encapsulation protocol","description_kind":"plain","computed":true},"href":{"type":"string","description":"Port URI information","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"lag":{"type":["set",["object",{"enabled":"bool","id":"string","member_status":"string","name":"string"}]],"description":"Port Lag","description_kind":"plain","computed":true},"location":{"type":["set",["object",{"href":"string","ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"description":"Port location information","description_kind":"plain","computed":true},"name":{"type":"string","description":"Port name","description_kind":"plain","computed":true},"operation":{"type":["set",["object",{"connection_count":"number","op_status_changed_at":"string","operational_status":"string"}]],"description":"Port specific operational data","description_kind":"plain","computed":true},"redundancy":{"type":["set",["object",{"enabled":"bool","group":"number","priority":"string"}]],"description":"Port redundancy information","description_kind":"plain","computed":true},"service_type":{"type":"string","description":"Port service type","description_kind":"plain","computed":true},"state":{"type":"string","description":"Port state","description_kind":"plain","computed":true},"type":{"type":"string","description":"Port type","description_kind":"plain","computed":true},"used_bandwidth":{"type":"number","description":"Port used bandwidth in Mbps","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned port identifier","description_kind":"plain","required":true}},"description":"Fabric V4 API compatible data resource that allow user to fetch port by uuid\n\n~\u003e **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)","description_kind":"plain"}},"equinix_fabric_ports":{"version":0,"block":{"attributes":{"data":{"type":["list",["object",{"account":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"available_bandwidth":"number","bandwidth":"number","change_log":["set",["object",{"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"}]],"description":"string","device":["set",["object",{"name":"string","redundancy":["set",["object",{"group":"string","priority":"string"}]]}]],"encapsulation":["set",["object",{"tag_protocol_id":"string","type":"string"}]],"href":"string","lag":["set",["object",{"enabled":"bool","id":"string","member_status":"string","name":"string"}]],"location":["set",["object",{"href":"string","ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"name":"string","operation":["set",["object",{"connection_count":"number","op_status_changed_at":"string","operational_status":"string"}]],"redundancy":["set",["object",{"enabled":"bool","group":"number","priority":"string"}]],"service_type":"string","state":"string","type":"string","used_bandwidth":"number","uuid":"string"}]],"description":"List of Ports","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"filters":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description":"Query Parameter to Get Ports By Name","description_kind":"plain","optional":true}},"description":"name","description_kind":"plain"}}},"description":"Fabric V4 API compatible data resource that allow user to fetch port by name\n\n~\u003e **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)","description_kind":"plain"}},"equinix_fabric_service_profile":{"version":0,"block":{"attributes":{"access_point_type_configs":{"type":["list",["object",{"allow_bandwidth_auto_approval":"bool","allow_bandwidth_upgrade":"bool","allow_custom_bandwidth":"bool","allow_remote_connections":"bool","api_config":["set",["object",{"allow_over_subscription":"bool","api_available":"bool","bandwidth_from_api":"bool","equinix_managed_port":"bool","equinix_managed_vlan":"bool","integration_id":"string","over_subscription_limit":"number"}]],"authentication_key":["set",["object",{"description":"string","label":"string","required":"bool"}]],"bandwidth_alert_threshold":"number","connection_label":"string","connection_redundancy_required":"bool","enable_auto_generate_service_key":"bool","link_protocol_config":["set",["object",{"encapsulation":"string","encapsulation_strategy":"string","reuse_vlan_s_tag":"bool"}]],"supported_bandwidths":["list","number"],"type":"string","uuid":"string"}]],"description":"Access point config information","description_kind":"plain","computed":true},"account":{"type":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string","ucm_id":"string"}]],"description":"Account","description_kind":"plain","computed":true},"allowed_emails":{"type":["list","string"],"description":"Array of contact emails","description_kind":"plain","computed":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures connection lifecycle change information","description_kind":"plain","computed":true},"custom_fields":{"type":["list",["object",{"capture_in_email":"bool","data_type":"string","description":"string","label":"string","options":["list","string"],"required":"bool"}]],"description":"Custom Fields","description_kind":"plain","computed":true},"description":{"type":"string","description":"User-provided service description","description_kind":"plain","computed":true},"href":{"type":"string","description":"Service Profile URI response attribute","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"marketing_info":{"type":["set",["object",{"logo":"string","process_step":["list",["object",{"description":"string","sub_title":"string","title":"string"}]],"promotion":"bool"}]],"description":"Marketing Info","description_kind":"plain","computed":true},"metros":{"type":["list",["object",{"code":"string","display_name":"string","ibxs":["list","string"],"in_trail":"bool","name":"string","seller_regions":["map","string"]}]],"description":"Access point config information","description_kind":"plain","computed":true},"name":{"type":"string","description":"Customer-assigned service profile name","description_kind":"plain","computed":true},"notifications":{"type":["list",["object",{"emails":["list","string"],"send_interval":"string","type":"string"}]],"description":"Preferences for notifications on connection configuration or status changes","description_kind":"plain","computed":true},"ports":{"type":["list",["object",{"cross_connect_id":"string","location":["set",["object",{"ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"seller_region":"string","seller_region_description":"string","type":"string","uuid":"string"}]],"description":"Ports","description_kind":"plain","computed":true},"project":{"type":["set",["object",{"href":"string","project_id":"string"}]],"description":"Project information","description_kind":"plain","computed":true},"self_profile":{"type":"bool","description":"Self Profile indicating if the profile is created for customer's self use","description_kind":"plain","computed":true},"state":{"type":"string","description":"Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"Tags attached to the connection","description_kind":"plain","computed":true},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix assigned service profile identifier","description_kind":"plain","required":true},"visibility":{"type":"string","description":"Service profile visibility - PUBLIC, PRIVATE","description_kind":"plain","computed":true}},"description":"Fabric V4 API compatible data resource that allow user to fetch Service Profile by UUID filter criteria\n\n~\u003e **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","description_kind":"plain"}},"equinix_fabric_service_profiles":{"version":0,"block":{"attributes":{"data":{"type":["list",["object",{"access_point_type_configs":["list",["object",{"allow_bandwidth_auto_approval":"bool","allow_bandwidth_upgrade":"bool","allow_custom_bandwidth":"bool","allow_remote_connections":"bool","api_config":["set",["object",{"allow_over_subscription":"bool","api_available":"bool","bandwidth_from_api":"bool","equinix_managed_port":"bool","equinix_managed_vlan":"bool","integration_id":"string","over_subscription_limit":"number"}]],"authentication_key":["set",["object",{"description":"string","label":"string","required":"bool"}]],"bandwidth_alert_threshold":"number","connection_label":"string","connection_redundancy_required":"bool","enable_auto_generate_service_key":"bool","link_protocol_config":["set",["object",{"encapsulation":"string","encapsulation_strategy":"string","reuse_vlan_s_tag":"bool"}]],"supported_bandwidths":["list","number"],"type":"string","uuid":"string"}]],"account":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string","ucm_id":"string"}]],"allowed_emails":["list","string"],"change_log":["set",["object",{"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"}]],"custom_fields":["list",["object",{"capture_in_email":"bool","data_type":"string","description":"string","label":"string","options":["list","string"],"required":"bool"}]],"description":"string","href":"string","marketing_info":["set",["object",{"logo":"string","process_step":["list",["object",{"description":"string","sub_title":"string","title":"string"}]],"promotion":"bool"}]],"metros":["list",["object",{"code":"string","display_name":"string","ibxs":["list","string"],"in_trail":"bool","name":"string","seller_regions":["map","string"]}]],"name":"string","notifications":["list",["object",{"emails":["list","string"],"send_interval":"string","type":"string"}]],"ports":["list",["object",{"cross_connect_id":"string","location":["set",["object",{"ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"seller_region":"string","seller_region_description":"string","type":"string","uuid":"string"}]],"project":["set",["object",{"href":"string","project_id":"string"}]],"self_profile":"bool","state":"string","tags":["set","string"],"type":"string","uuid":"string","visibility":"string"}]],"description":"List of Service Profiles","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"filter":{"nesting_mode":"set","block":{"attributes":{"operator":{"type":"string","description":"Possible operator to use on filters = - equal","description_kind":"plain","optional":true},"property":{"type":"string","description":"Search Criteria for Service Profile - /name, /uuid, /state, /metros/code, /visibility, /type","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"Values","description_kind":"plain","optional":true}},"description":"Service Profile Search Filter","description_kind":"plain"}},"sort":{"nesting_mode":"list","block":{"attributes":{"direction":{"type":"string","description":"Priority type- DESC, ASC","description_kind":"plain","optional":true},"property":{"type":"string","description":"Search operation sort criteria /name /state /changeLog/createdDateTime /changeLog/updatedDateTime","description_kind":"plain","optional":true}},"description":"Service Profile Sort criteria for Search Request response payload","description_kind":"plain"}}},"description":"Fabric V4 API compatible data resource that allow user to fetch Service Profile by name filter criteria\n\n~\u003e **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)","description_kind":"plain"}},"equinix_metal_connection":{"version":0,"block":{"attributes":{"connection_id":{"type":"string","description":"ID of the connection to lookup","description_kind":"plain","required":true},"description":{"type":"string","description":"Description of the connection resource","description_kind":"plain","computed":true},"facility":{"type":"string","description":"Facility which the connection is scoped to","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"Metro which the connection is scoped to","description_kind":"plain","computed":true},"mode":{"type":"string","description":"Connection mode - standard or tunnel","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the connection resource","description_kind":"plain","computed":true},"organization_id":{"type":"string","description":"ID of organization to which the connection is scoped to","description_kind":"plain","computed":true},"ports":{"type":["list",["object",{"id":"string","link_status":"string","name":"string","role":"string","speed":"number","status":"string","virtual_circuit_ids":["list","string"]}]],"description":"List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"ID of project to which the connection belongs","description_kind":"plain","computed":true},"redundancy":{"type":"string","description":"Connection redundancy - redundant or primary","description_kind":"plain","computed":true},"service_token_type":{"type":"string","description":"Only used with shared connection. Type of service token to use for the connection, a_side or z_side.","description_kind":"plain","computed":true},"service_tokens":{"type":["list",["object",{"expires_at":"string","id":"string","max_allowed_speed":"string","role":"string","state":"string","type":"string"}]],"description":"Only used with shared connection. List of service tokens required to continue the setup process with [equinix_ecx_l2_connection](https://registry.terraform.io/providers/equinix/equinix/latest/docs/resources/equinix_ecx_l2_connection) or from the [Equinix Fabric Portal](https://ecxfabric.equinix.com/dashboard)","description_kind":"plain","computed":true},"speed":{"type":"string","description":"Port speed. Possible values are 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps","description_kind":"plain","computed":true},"status":{"type":"string","description":"Status of the connection resource","description_kind":"plain","computed":true},"tags":{"type":["list","string"],"description":"Tags attached to the connection","description_kind":"plain","computed":true},"token":{"type":"string","description":"Only used with shared connection. Fabric Token required to continue the setup process with [equinix_ecx_l2_connection](https://registry.terraform.io/providers/equinix/equinix/latest/docs/resources/equinix_ecx_l2_connection) or from the [Equinix Fabric Portal](https://ecxfabric.equinix.com/dashboard)","description_kind":"plain","deprecated":true,"computed":true},"type":{"type":"string","description":"Connection type - dedicated or shared","description_kind":"plain","computed":true},"vlans":{"type":["list","number"],"description":"Attached vlans, only in shared connection.","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_device":{"version":0,"block":{"attributes":{"access_private_ipv4":{"type":"string","description":"The ipv4 private IP assigned to the device","description_kind":"plain","computed":true},"access_public_ipv4":{"type":"string","description":"The ipv4 management IP assigned to the device","description_kind":"plain","computed":true},"access_public_ipv6":{"type":"string","description":"The ipv6 management IP assigned to the device","description_kind":"plain","computed":true},"always_pxe":{"type":"bool","description_kind":"plain","computed":true},"billing_cycle":{"type":"string","description":"The billing cycle of the device (monthly or hourly)","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description string for the device","description_kind":"plain","computed":true},"device_id":{"type":"string","description":"Device ID","description_kind":"plain","optional":true,"computed":true},"facility":{"type":"string","description":"The facility where the device is deployed","description_kind":"plain","computed":true},"hardware_reservation_id":{"type":"string","description":"The id of hardware reservation which this device occupies","description_kind":"plain","computed":true},"hostname":{"type":"string","description":"The device name","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ipxe_script_url":{"type":"string","description_kind":"plain","computed":true},"metro":{"type":"string","description":"The metro where the device is deployed","description_kind":"plain","computed":true},"network":{"type":["list",["object",{"address":"string","cidr":"number","family":"number","gateway":"string","public":"bool"}]],"description":"The device's private and public IP (v4 and v6) network details. When a device is run without any special network configuration, it will have 3 networks: ublic IPv4 at equinix_metal_device.name.network.0, IPv6 at equinix_metal_device.name.network.1 and private IPv4 at equinix_metal_device.name.network.2. Elastic addresses then stack by type - an assigned public IPv4 will go after the management public IPv4 (to index 1), and will then shift the indices of the IPv6 and private IPv4. Assigned private IPv4 will go after the management private IPv4 (to the end of the network list).","description_kind":"plain","computed":true},"network_type":{"type":"string","description":"L2 network type of the device, one oflayer3, hybrid, layer2-individual, layer2-bonded","description_kind":"plain","computed":true},"operating_system":{"type":"string","description":"The operating system running on the device","description_kind":"plain","computed":true},"plan":{"type":"string","description":"The hardware config of the device","description_kind":"plain","computed":true},"ports":{"type":["list",["object",{"bonded":"bool","id":"string","mac":"string","name":"string","type":"string"}]],"description":"Ports assigned to the device","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"The id of the project in which the devices exists","description_kind":"plain","optional":true,"computed":true},"root_password":{"type":"string","description":"Root password to the server (if still available)","description_kind":"plain","computed":true,"sensitive":true},"ssh_key_ids":{"type":["list","string"],"description":"List of IDs of SSH keys deployed in the device, can be both user or project SSH keys","description_kind":"plain","computed":true},"state":{"type":"string","description":"The state of the device","description_kind":"plain","computed":true},"storage":{"type":"string","description_kind":"plain","computed":true},"tags":{"type":["list","string"],"description":"Tags attached to the device","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_device_bgp_neighbors":{"version":0,"block":{"attributes":{"bgp_neighbors":{"type":["list",["object",{"address_family":"number","customer_as":"number","customer_ip":"string","md5_enabled":"bool","md5_password":"string","multihop":"bool","peer_as":"number","peer_ips":["list","string"],"routes_in":["list",["object",{"exact":"bool","route":"string"}]],"routes_out":["list",["object",{"exact":"bool","route":"string"}]]}]],"description":"Array of BGP neighbor records","description_kind":"plain","computed":true},"device_id":{"type":"string","description":"UUID of BGP-enabled device whose neighbors to list","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"equinix_metal_facility":{"version":0,"block":{"attributes":{"code":{"type":"string","description":"The code of the Facility to match","description_kind":"plain","required":true},"features":{"type":["list","string"],"description":"The features of this Facility.","description_kind":"plain","computed":true},"features_required":{"type":["set","string"],"description":"Features which the facility needs to have.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"This facility's metro code.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of this Facility.","description_kind":"plain","computed":true}},"block_types":{"capacity":{"nesting_mode":"list","block":{"attributes":{"plan":{"type":"string","description":"Plan which has to be available in selected location","description_kind":"plain","required":true},"quantity":{"type":"number","description_kind":"plain","optional":true}},"description":"Optional capacity specification","description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_gateway":{"version":0,"block":{"attributes":{"gateway_id":{"type":"string","description":"UUID of the Metal Gateway to fetch","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_reservation_id":{"type":"string","description":"UUID of the IP Reservation to associate, must be in the same metro as the VLAN","description_kind":"plain","computed":true},"private_ipv4_subnet_size":{"type":"number","description":"Size of the private IPv4 subnet to create for this gateway, one of [8 16 32 64 128]","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"UUID of the Project where the Gateway is scoped to","description_kind":"plain","computed":true},"state":{"type":"string","description":"Status of the virtual circuit resource","description_kind":"plain","computed":true},"vlan_id":{"type":"string","description":"UUID of the VLAN to associate","description_kind":"plain","computed":true},"vrf_id":{"type":"string","description":"UUID of the VRF associated with the IP Reservation","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_hardware_reservation":{"version":0,"block":{"attributes":{"device_id":{"type":"string","description":"UUID of device occupying the reservation","description_kind":"plain","optional":true,"computed":true},"facility":{"type":"string","description":"Plan type for the reservation","description_kind":"plain","computed":true},"id":{"type":"string","description":"ID of the hardware reservation to look up","description_kind":"plain","optional":true,"computed":true},"plan":{"type":"string","description":"Plan type for the reservation","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"UUID of project this reservation is scoped to","description_kind":"plain","computed":true},"provisionable":{"type":"bool","description":"Flag indicating whether the reserved server is provisionable or not. Spare devices can't be provisioned unless they are activated first","description_kind":"plain","computed":true},"short_id":{"type":"string","description":"Reservation short ID","description_kind":"plain","computed":true},"spare":{"type":"bool","description":"Flag indicating whether the Hardware Reservation is a spare. Spare Hardware Reservations are used when a Hardware Reservations requires service from Metal Equinix","description_kind":"plain","computed":true},"switch_uuid":{"type":"string","description":"Switch short ID, can be used to determine if two devices are connected to the same switch","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_ip_block_ranges":{"version":0,"block":{"attributes":{"facility":{"type":"string","description":"Facility code filtering the IP blocks. Global IPv4 blocks will be listed anyway. If you omit this and metro, all the block from the project will be listed","description_kind":"plain","optional":true},"global_ipv4":{"type":["list","string"],"description":"List of CIDR expressions for Global IPv4 blocks in the project","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ipv6":{"type":["list","string"],"description":"List of CIDR expressions for IPv6 blocks in the project","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro code filtering the IP blocks. Global IPv4 blocks will be listed anyway. If you omit this and facility, all the block from the project will be listed","description_kind":"plain","optional":true},"private_ipv4":{"type":["list","string"],"description":"List of CIDR expressions for Private IPv4 blocks in the project","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"ID of the project from which to list the blocks","description_kind":"plain","required":true},"public_ipv4":{"type":["list","string"],"description":"List of CIDR expressions for Public IPv4 blocks in the project","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_metro":{"version":0,"block":{"attributes":{"code":{"type":"string","description":"The code of the Metro to match","description_kind":"plain","required":true},"country":{"type":"string","description":"The country of this Metro.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this Metro.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of this Metro.","description_kind":"plain","computed":true}},"block_types":{"capacity":{"nesting_mode":"list","block":{"attributes":{"plan":{"type":"string","description":"Plan which has to be available in selected location","description_kind":"plain","required":true},"quantity":{"type":"number","description_kind":"plain","optional":true}},"description":"Optional capacity specification","description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_operating_system":{"version":0,"block":{"attributes":{"distro":{"type":"string","description":"Name of the OS distribution","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name or part of the name of the distribution. Case insensitive","description_kind":"plain","optional":true},"provisionable_on":{"type":"string","description":"Plan name","description_kind":"plain","optional":true},"slug":{"type":"string","description":"Operating system slug (same as id)","description_kind":"plain","computed":true},"version":{"type":"string","description":"Version of the distribution","description_kind":"plain","optional":true}},"description_kind":"plain"}},"equinix_metal_organization":{"version":0,"block":{"attributes":{"address":{"type":["list",["object",{"address":"string","city":"string","country":"string","state":"string","zip_code":"string"}]],"description":"Business' address","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"logo":{"type":"string","description":"Logo URL","description_kind":"plain","computed":true},"name":{"type":"string","description":"The organization name","description_kind":"plain","optional":true,"computed":true},"organization_id":{"type":"string","description":"The UUID of the organization resource","description_kind":"plain","optional":true,"computed":true},"project_ids":{"type":["list","string"],"description":"UUIDs of project resources which belong to this organization","description_kind":"plain","computed":true},"twitter":{"type":"string","description":"Twitter handle","description_kind":"plain","computed":true},"website":{"type":"string","description":"Website link","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_plans":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"plans":{"type":["list",["object",{"available_in":["set","string"],"available_in_metros":["set","string"],"class":"string","deployment_types":["set","string"],"description":"string","id":"string","legacy":"bool","line":"string","name":"string","pricing_hour":"number","pricing_month":"number","slug":"string"}]],"description":"Sorted list of available server plans that match the specified filters","description_kind":"plain","computed":true}},"block_types":{"filter":{"nesting_mode":"set","block":{"attributes":{"all":{"type":"bool","description":"If is set to true, the values are joined with an AND, and the requests returns only the results that match all specified values","description_kind":"plain","optional":true},"attribute":{"type":"string","description":"The attribute used to filter. Filter attributes are case-sensitive","description_kind":"plain","required":true},"match_by":{"type":"string","description":"The type of comparison to apply. One of: in (default), re, substring, less_than, less_than_or_equal, greater_than, greater_than_or_equal","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"The filter values. Filter values are case-sensitive. If you specify multiple values for a filter, the values are joined with an OR by default, and the request returns all results that match any of the specified values","description_kind":"plain","required":true}},"description":"One or more attribute/values pairs on which to filter results","description_kind":"plain"}},"sort":{"nesting_mode":"list","block":{"attributes":{"attribute":{"type":"string","description":"The attribute used to sort the results. Sort attributes are case-sensitive","description_kind":"plain","required":true},"direction":{"type":"string","description":"Sort results in ascending or descending order. Strings are sorted in alphabetical order. One of: asc, desc","description_kind":"plain","optional":true}},"description":"One or more attribute/direction pairs on which to sort results. If multiple sorts are provided, they will be applied in order","description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_port":{"version":0,"block":{"attributes":{"bond_id":{"type":"string","description":"UUID of the bond port","description_kind":"plain","computed":true},"bond_name":{"type":"string","description":"Name of the bond port","description_kind":"plain","computed":true},"bonded":{"type":"bool","description":"Flag indicating whether the port is bonded","description_kind":"plain","computed":true},"device_id":{"type":"string","description":"Device UUID where to lookup the port","description_kind":"plain","optional":true},"disbond_supported":{"type":"bool","description":"Flag indicating whether the port can be removed from a bond","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"layer2":{"type":"bool","description":"Flag indicating whether the port is in layer2 (or layer3) mode","description_kind":"plain","computed":true},"mac":{"type":"string","description":"MAC address of the port","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the port to look up, e.g. bond0, eth1","description_kind":"plain","optional":true,"computed":true},"native_vlan_id":{"type":"string","description":"UUID of native VLAN of the port","description_kind":"plain","computed":true},"network_type":{"type":"string","description":"One of layer3, hybrid, hybrid-bonded, layer2-individual, layer2-bonded","description_kind":"plain","computed":true},"port_id":{"type":"string","description":"UUID of the port to lookup","description_kind":"plain","optional":true},"type":{"type":"string","description":"Port type","description_kind":"plain","computed":true},"vlan_ids":{"type":["list","string"],"description":"UUIDs of attached VLANs","description_kind":"plain","computed":true},"vxlan_ids":{"type":["list","number"],"description":"UUIDs of attached VLANs","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_precreated_ip_block":{"version":0,"block":{"attributes":{"address":{"type":"string","description_kind":"plain","computed":true},"address_family":{"type":"number","description":"4 or 6, depending on which block you are looking for.","description_kind":"plain","required":true},"cidr":{"type":"number","description":"Length of CIDR prefix of the block as integer","description_kind":"plain","computed":true},"cidr_notation":{"type":"string","description":"CIDR notation of the looked up block.","description_kind":"plain","computed":true},"facility":{"type":"string","description":"Facility of the searched block. (for non-global blocks).","description_kind":"plain","optional":true},"gateway":{"type":"string","description_kind":"plain","computed":true},"global":{"type":"bool","description":"Whether to look for global block. Default is false for backward compatibility.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"manageable":{"type":"bool","description_kind":"plain","computed":true},"management":{"type":"bool","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro of the searched block (for non-global blocks).","description_kind":"plain","optional":true},"netmask":{"type":"string","description":"Mask in decimal notation, e.g. 255.255.255.0","description_kind":"plain","computed":true},"network":{"type":"string","description":"Network IP address portion of the block specification","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"ID of the project where the searched block should be.","description_kind":"plain","required":true},"public":{"type":"bool","description":"Whether to look for public or private block.","description_kind":"plain","required":true},"quantity":{"type":"number","description_kind":"plain","computed":true},"type":{"type":"string","description_kind":"plain","computed":true},"vrf_id":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_project":{"version":0,"block":{"attributes":{"backend_transfer":{"type":"bool","description":"Whether Backend Transfer is enabled for this project","description_kind":"plain","computed":true},"bgp_config":{"type":["list",["object",{"asn":"number","deployment_type":"string","max_prefix":"number","md5":"string","status":"string"}]],"description":"Optional BGP settings. Refer to [Equinix Metal guide for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/)","description_kind":"plain","computed":true},"created":{"type":"string","description":"The timestamp for when the project was created","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name which is used to look up the project","description_kind":"plain","optional":true,"computed":true},"organization_id":{"type":"string","description":"The UUID of this project's parent organization","description_kind":"plain","computed":true},"payment_method_id":{"type":"string","description":"The UUID of payment method for this project","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"The UUID by which to look up the project","description_kind":"plain","optional":true,"computed":true},"updated":{"type":"string","description":"The timestamp for the last time the project was updated","description_kind":"plain","computed":true},"user_ids":{"type":["list","string"],"description":"List of UUIDs of user accounts which belong to this project","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_project_ssh_key":{"version":0,"block":{"attributes":{"created":{"type":"string","description_kind":"plain","computed":true},"fingerprint":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description":"The id of the SSH Key","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The label of the Equinix Metal SSH Key","description_kind":"plain","computed":true},"owner_id":{"type":"string","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"The Equinix Metal project id of the Equinix Metal SSH Key","description_kind":"plain","required":true},"public_key":{"type":"string","description":"The public SSH key that will be authorized for SSH access on Equinix Metal devices provisioned with this key","description_kind":"plain","computed":true},"search":{"type":"string","description":"The name, fingerprint, id, or public_key of the SSH Key to search for in the Equinix Metal project","description_kind":"plain","optional":true},"updated":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_reserved_ip_block":{"version":0,"block":{"attributes":{"address":{"type":"string","description_kind":"plain","computed":true},"address_family":{"type":"number","description":"4 or 6","description_kind":"plain","computed":true},"cidr":{"type":"number","description":"Length of CIDR prefix of the block as integer","description_kind":"plain","computed":true},"cidr_notation":{"type":"string","description":"CIDR notation of the looked up block","description_kind":"plain","computed":true},"facility":{"type":"string","description":"Facility of the block. (for non-global blocks)","description_kind":"plain","computed":true},"gateway":{"type":"string","description":"IP address of gateway for the block","description_kind":"plain","computed":true},"global":{"type":"bool","description":"Addresses from block are attachable in all locations","description_kind":"plain","computed":true},"id":{"type":"string","description":"ID of the block to look up","description_kind":"plain","optional":true,"computed":true},"ip_address":{"type":"string","description":"Find block containing this IP address in given project","description_kind":"plain","optional":true},"manageable":{"type":"bool","description_kind":"plain","computed":true},"management":{"type":"bool","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro of the block (for non-global blocks)","description_kind":"plain","computed":true},"netmask":{"type":"string","description":"Mask in decimal notation, e.g. 255.255.255.0","description_kind":"plain","computed":true},"network":{"type":"string","description":"Network IP address portion of the block specification","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"ID of the project where the searched block should be","description_kind":"plain","optional":true,"computed":true},"public":{"type":"bool","description":"Addresses from public block are routeable from the Internet","description_kind":"plain","computed":true},"quantity":{"type":"number","description_kind":"plain","computed":true},"type":{"type":"string","description":"Address type, one of public_ipv4, public_ipv6, private_ipv4, global_ipv4, and vrf","description_kind":"plain","computed":true},"vrf_id":{"type":"number","description":"VRF ID of the block when type=vrf","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_spot_market_price":{"version":0,"block":{"attributes":{"facility":{"type":"string","description":"Name of the facility","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"Name of the metro","description_kind":"plain","optional":true},"plan":{"type":"string","description":"Name of the plan","description_kind":"plain","required":true},"price":{"type":"number","description":"Current spot market price for given plan in given facility","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_spot_market_request":{"version":0,"block":{"attributes":{"device_ids":{"type":["list","string"],"description":"List of IDs of devices spawned by the referenced Spot Market Request","description_kind":"plain","computed":true},"devices_max":{"type":"number","description":"Maximum number devices to be created","description_kind":"plain","computed":true},"devices_min":{"type":"number","description":"Miniumum number devices to be created","description_kind":"plain","computed":true},"end_at":{"type":"string","description":"Date and time When the spot market request will be ended.","description_kind":"plain","computed":true},"facilities":{"type":["list","string"],"description":"Facility IDs where devices should be created","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"max_bid_price":{"type":"number","description":"Maximum price user is willing to pay per hour per device","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro where devices should be created.","description_kind":"plain","computed":true},"plan":{"type":"string","description":"The device plan slug.","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"Project ID","description_kind":"plain","computed":true},"request_id":{"type":"string","description":"The id of the Spot Market Request","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"default":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_virtual_circuit":{"version":0,"block":{"attributes":{"connection_id":{"type":"string","description":"UUID of Connection where the VC is scoped to","description_kind":"plain","computed":true},"customer_ip":{"type":"string","description":"The Customer IP address which the CSR switch will peer with. Will default to the other usable IP in the subnet.","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description of the virtual circuit","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"md5":{"type":"string","description":"The password that can be set for the VRF BGP peer","description_kind":"plain","computed":true,"sensitive":true},"metal_ip":{"type":"string","description":"The Metal IP address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the subnet.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the virtual circuit","description_kind":"plain","computed":true},"nni_vlan":{"type":"number","description":"Nni VLAN parameter, see https://metal.equinix.com/developers/docs/networking/fabric/","description_kind":"plain","computed":true},"nni_vnid":{"type":"number","description":"Nni VLAN ID parameter, see https://metal.equinix.com/developers/docs/networking/fabric/","description_kind":"plain","computed":true},"peer_asn":{"type":"number","description":"The BGP ASN of the peer. The same ASN may be the used across several VCs, but it cannot be the same as the local_asn of the VRF.","description_kind":"plain","computed":true},"port_id":{"type":"string","description":"UUID of the Connection Port where the VC is scoped to","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"ID of the projct to which the virtual circuit belongs","description_kind":"plain","computed":true},"speed":{"type":"string","description":"Description of the Virtual Circuit speed. This is for information purposes and is computed when the connection type is shared.","description_kind":"plain","computed":true},"status":{"type":"string","description":"Status of the virtual circuit","description_kind":"plain","computed":true},"subnet":{"type":"string","description":"A subnet from one of the IP blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /30 or /31.\n\t\t\t\t * For a /31 block, it will only have two IP addresses, which will be used for the metal_ip and customer_ip.\n\t\t\t\t * For a /30 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.","description_kind":"plain","computed":true},"tags":{"type":["list","string"],"description":"Tags attached to the virtual circuit","description_kind":"plain","computed":true},"virtual_circuit_id":{"type":"string","description":"ID of the virtual circuit to lookup","description_kind":"plain","required":true},"vlan_id":{"type":"string","description":"UUID of the associated VLAN","description_kind":"plain","computed":true},"vnid":{"type":"number","description":"VNID VLAN parameter, see https://metal.equinix.com/developers/docs/networking/fabric/","description_kind":"plain","computed":true},"vrf_id":{"type":"string","description":"UUID of the associated VRF","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_vlan":{"version":0,"block":{"attributes":{"assigned_devices_ids":{"type":["list","string"],"description":"List of device IDs to which this VLAN is assigned","description_kind":"plain","computed":true},"description":{"type":"string","description":"VLAN description text","description_kind":"plain","computed":true},"facility":{"type":"string","description":"Facility where the VLAN is deployed","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"Metro where the VLAN is deployed","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"ID of parent project of the VLAN. Use together with vxlan and metro or facility","description_kind":"plain","optional":true,"computed":true},"vlan_id":{"type":"string","description":"Metal UUID of the VLAN resource","description_kind":"plain","optional":true,"computed":true},"vxlan":{"type":"number","description":"VXLAN numner of the VLAN. Unique in a project and facility or metro. Use with project_id","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"equinix_metal_vrf":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the VRF","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_ranges":{"type":["set","string"],"description":"All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF.","description_kind":"plain","computed":true},"local_asn":{"type":"number","description":"The 4-byte ASN set on the VRF.","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro Code","description_kind":"plain","computed":true},"name":{"type":"string","description":"User-supplied name of the VRF, unique to the project","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"Project ID","description_kind":"plain","computed":true},"vrf_id":{"type":"string","description":"ID of the VRF to lookup","description_kind":"plain","required":true}},"description_kind":"plain"}},"equinix_network_account":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Account location metro cod","description_kind":"plain","required":true},"name":{"type":"string","description":"Account name for filtering","description_kind":"plain","optional":true,"computed":true},"number":{"type":"string","description":"Account unique number","description_kind":"plain","computed":true},"status":{"type":"string","description":"Account status for filtering. Possible values are Active, Processing, Submitted, Staged","description_kind":"plain","optional":true,"computed":true},"ucm_id":{"type":"string","description":"Account unique identifier","description_kind":"plain","computed":true}},"description":"Use this data source to get number and identifier of Equinix Network Edge billing account in a given metro location","description_kind":"plain"}},"equinix_network_device":{"version":0,"block":{"attributes":{"account_number":{"type":"string","description":"Device billing account number","description_kind":"plain","computed":true},"acl_template_id":{"type":"string","description":"Unique identifier of applied ACL template","description_kind":"plain","computed":true},"additional_bandwidth":{"type":"number","description":"Additional Internet bandwidth, in Mbps, that will be allocated to the device","description_kind":"plain","computed":true},"asn":{"type":"number","description":"Autonomous system number","description_kind":"plain","computed":true},"byol":{"type":"bool","description":"Boolean value that determines device licensing mode: bring your own license or subscription (default)","description_kind":"plain","computed":true},"cluster_details":{"type":["list",["object",{"cluster_id":"string","cluster_name":"string","node0":["list",["object",{"license_file_id":"string","license_token":"string","name":"string","uuid":"string","vendor_configuration":["list",["object",{"activation_key":"string","admin_password":"string","controller1":"string","controller_fqdn":"string","hostname":"string","root_password":"string"}]]}]],"node1":["list",["object",{"license_file_id":"string","license_token":"string","name":"string","uuid":"string","vendor_configuration":["list",["object",{"activation_key":"string","admin_password":"string","controller1":"string","controller_fqdn":"string","hostname":"string","root_password":"string"}]]}]],"num_of_nodes":"number"}]],"description":"An object that has the cluster details","description_kind":"plain","computed":true},"core_count":{"type":"number","description":"Number of CPU cores used by device","description_kind":"plain","computed":true},"hostname":{"type":"string","description":"Device hostname prefix","description_kind":"plain","computed":true},"ibx":{"type":"string","description":"Device location Equinix Business Exchange name","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interface":{"type":["list",["object",{"assigned_type":"string","id":"number","ip_address":"string","mac_address":"string","name":"string","operational_status":"string","status":"string","type":"string"}]],"description":"List of device interfaces","description_kind":"plain","computed":true},"interface_count":{"type":"number","description":"Number of network interfaces on a device. If not specified, default number for a given device type will be used","description_kind":"plain","computed":true},"license_file":{"type":"string","description":"Path to the license file that will be uploaded and applied on a device, applicable for some device types in BYOL licensing mode","description_kind":"plain","computed":true},"license_file_id":{"type":"string","description":"Unique identifier of applied license file","description_kind":"plain","computed":true},"license_status":{"type":"string","description":"Device license registration status","description_kind":"plain","computed":true},"license_token":{"type":"string","description":"License Token applicable for some device types in BYOL licensing mode","description_kind":"plain","computed":true},"metro_code":{"type":"string","description":"Device location metro code","description_kind":"plain","computed":true},"mgmt_acl_template_uuid":{"type":"string","description":"Unique identifier of applied MGMT ACL template","description_kind":"plain","computed":true},"name":{"type":"string","description":"Device name","description_kind":"plain","optional":true,"computed":true},"notifications":{"type":["set","string"],"description":"List of email addresses that will receive device status notifications","description_kind":"plain","computed":true},"order_reference":{"type":"string","description":"Name/number used to identify device order on the invoice","description_kind":"plain","computed":true},"package_code":{"type":"string","description":"Device software package code","description_kind":"plain","computed":true},"purchase_order_number":{"type":"string","description":"Purchase order number associated with a device order","description_kind":"plain","computed":true},"redundancy_type":{"type":"string","description":"Device redundancy type applicable for HA devices, either primary or secondary","description_kind":"plain","computed":true},"redundant_id":{"type":"string","description":"Unique identifier for a redundant device, applicable for HA device","description_kind":"plain","computed":true},"region":{"type":"string","description":"Device location region","description_kind":"plain","computed":true},"secondary_device":{"type":["list",["object",{"account_number":"string","acl_template_id":"string","additional_bandwidth":"number","asn":"number","hostname":"string","ibx":"string","interface":["list",["object",{"assigned_type":"string","id":"number","ip_address":"string","mac_address":"string","name":"string","operational_status":"string","status":"string","type":"string"}]],"license_file":"string","license_file_id":"string","license_status":"string","license_token":"string","metro_code":"string","mgmt_acl_template_uuid":"string","name":"string","notifications":["set","string"],"redundancy_type":"string","redundant_id":"string","region":"string","ssh_ip_address":"string","ssh_ip_fqdn":"string","ssh_key":["set",["object",{"key_name":"string","username":"string"}]],"status":"string","uuid":"string","vendor_configuration":["map","string"],"wan_interface_id":"string","zone_code":"string"}]],"description":"Definition of secondary device applicable for HA setup","description_kind":"plain","computed":true},"self_managed":{"type":"bool","description":"Boolean value that determines device management mode: self-managed or subscription (default)","description_kind":"plain","computed":true},"ssh_ip_address":{"type":"string","description":"IP address of SSH enabled interface on the device","description_kind":"plain","computed":true},"ssh_ip_fqdn":{"type":"string","description":"FQDN of SSH enabled interface on the device","description_kind":"plain","computed":true},"ssh_key":{"type":["set",["object",{"key_name":"string","username":"string"}]],"description":"Definition of SSH key that will be provisioned on a device","description_kind":"plain","computed":true},"status":{"type":"string","description":"Device provisioning status","description_kind":"plain","computed":true},"term_length":{"type":"number","description":"Device term length","description_kind":"plain","computed":true},"throughput":{"type":"number","description":"Device license throughput","description_kind":"plain","computed":true},"throughput_unit":{"type":"string","description":"Device license throughput unit (Mbps or Gbps)","description_kind":"plain","computed":true},"type_code":{"type":"string","description":"Device type code","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Device unique identifier","description_kind":"plain","optional":true,"computed":true},"valid_status_list":{"type":"string","description":"Comma Separated List of states to be considered valid when searching by name","description_kind":"plain","optional":true},"vendor_configuration":{"type":["map","string"],"description":"Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress)","description_kind":"plain","computed":true},"version":{"type":"string","description":"Device software software version","description_kind":"plain","computed":true},"wan_interface_id":{"type":"string","description":"device interface id picked for WAN","description_kind":"plain","computed":true},"zone_code":{"type":"string","description":"Device location zone code","description_kind":"plain","computed":true}},"description":"Use this data source to get details of Equinix Network Edge network device with a given Name or UUID","description_kind":"plain"}},"equinix_network_device_platform":{"version":0,"block":{"attributes":{"core_count":{"type":"number","description":"Number of CPU cores used to limit platform search results","description_kind":"plain","optional":true,"computed":true},"device_type":{"type":"string","description":"Device type code","description_kind":"plain","required":true},"flavor":{"type":"string","description":"Device platform flavor that determines number of CPU cores and memory. Supported values: small, medium, large, xlarge","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"license_options":{"type":["set","string"],"description":"List of device licensing options to limit platform search result. Supported values: BYOL (Bring Your Own License), Sub (license subscription)","description_kind":"plain","optional":true,"computed":true},"management_types":{"type":["set","string"],"description":"List of device management types to limit platform search results. Supported values: EQUINIX-CONFIGURED, SELF-CONFIGURED","description_kind":"plain","optional":true,"computed":true},"memory":{"type":"number","description":"The amount of memory provided by device platform","description_kind":"plain","computed":true},"memory_unit":{"type":"string","description":"Unit of memory provider by device platform","description_kind":"plain","computed":true},"packages":{"type":["set","string"],"description":"List of software package codes to limit platform search results","description_kind":"plain","optional":true,"computed":true}},"description":"Use this data source to get Equinix Network Edge device platform configuration details for a given device type","description_kind":"plain"}},"equinix_network_device_software":{"version":0,"block":{"attributes":{"date":{"type":"string","description":"Version release date","description_kind":"plain","computed":true},"device_type":{"type":"string","description":"Code of a device type","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_name":{"type":"string","description":"Software image name","description_kind":"plain","computed":true},"most_recent":{"type":"bool","description":"Boolean value to indicate that most recent version should be used, in case when more than one result is returned","description_kind":"plain","optional":true},"packages":{"type":["set","string"],"description":"Limits returned versions to those that are supported by given software package codes","description_kind":"plain","optional":true,"computed":true},"release_notes_link":{"type":"string","description":"Link to version release notes","description_kind":"plain","computed":true},"stable":{"type":"bool","description":"Boolean value to limit query results to stable versions only","description_kind":"plain","optional":true,"computed":true},"status":{"type":"string","description":"Version status","description_kind":"plain","computed":true},"version":{"type":"string","description":"Software version","description_kind":"plain","computed":true},"version_regex":{"type":"string","description":"A regex string to apply on returned versions and filter search results","description_kind":"plain","optional":true}},"description":"Use this data source to get Equinix Network Edge device software details for a given device type.","description_kind":"plain"}},"equinix_network_device_type":{"version":0,"block":{"attributes":{"category":{"type":"string","description":"Device type category, one of: Router, Firewall, SDWAN","description_kind":"plain","optional":true,"computed":true},"code":{"type":"string","description":"Device type short code, unique identifier of a network device type","description_kind":"plain","computed":true},"description":{"type":"string","description":"Device type textual description","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro_codes":{"type":["set","string"],"description":"List of metro codes where device type has to be available","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Device type name","description_kind":"plain","optional":true,"computed":true},"vendor":{"type":"string","description":"Device type vendor i.e. Cisco, Juniper Networks, VERSA Networks","description_kind":"plain","optional":true,"computed":true}},"description":"Use this data source to get Equinix Network Edge device type details","description_kind":"plain"}}}}}} +{"format_version":"1.0","provider_schemas":{"registry.terraform.io/equinix/equinix":{"provider":{"version":0,"block":{"attributes":{"auth_token":{"type":"string","description":"The Equinix Metal API auth key for API operations","description_kind":"plain","optional":true},"client_id":{"type":"string","description":"API Consumer Key available under My Apps section in developer portal","description_kind":"plain","optional":true},"client_secret":{"type":"string","description":"API Consumer secret available under My Apps section in developer portal","description_kind":"plain","optional":true},"endpoint":{"type":"string","description":"The Equinix API base URL to point out desired environment. Defaults to https://api.equinix.com","description_kind":"plain","optional":true},"max_retries":{"type":"number","description_kind":"plain","optional":true},"max_retry_wait_seconds":{"type":"number","description_kind":"plain","optional":true},"request_timeout":{"type":"number","description":"The duration of time, in seconds, that the Equinix Platform API Client should wait before canceling an API request. Defaults to 30","description_kind":"plain","optional":true},"response_max_page_size":{"type":"number","description":"The maximum number of records in a single response for REST queries that produce paginated responses","description_kind":"plain","optional":true},"token":{"type":"string","description":"API token from the developer sandbox","description_kind":"plain","optional":true}},"description_kind":"plain"}},"resource_schemas":{"equinix_ecx_l2_connection":{"version":0,"block":{"attributes":{"actions":{"type":["set",["object",{"message":"string","operation_id":"string","required_data":["set",["object",{"editable":"bool","key":"string","label":"string","validation_pattern":"string","value":"string"}]],"type":"string"}]],"description":"One or more pending actions to complete connection provisioning","description_kind":"plain","computed":true},"authorization_key":{"type":"string","description":"Text field used to authorize connection on the provider side. Value depends on a provider service profile used for connection","description_kind":"plain","optional":true,"computed":true},"device_interface_id":{"type":"number","description":"Identifier of network interface on a given device, used for a connection. If not specified then first available interface will be selected","description_kind":"plain","optional":true},"device_uuid":{"type":"string","description":"Unique identifier of the Network Edge virtual device from which the connection would originate","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores","description_kind":"plain","required":true},"named_tag":{"type":"string","description":"The type of peering to set up in case when connecting to Azure Express Route. One of PRIVATE, MICROSOFT, MANUAL, PUBLIC (MANUAL and PUBLIC are deprecated and not available for new connections)","description_kind":"plain","optional":true},"notifications":{"type":["set","string"],"description":"A list of email addresses used for sending connection update notifications","description_kind":"plain","required":true},"port_uuid":{"type":"string","description":"Unique identifier of the buyer's port from which the connection would originate","description_kind":"plain","optional":true,"computed":true},"profile_uuid":{"type":"string","description":"Unique identifier of the service provider's service profile","description_kind":"plain","optional":true,"computed":true},"provider_status":{"type":"string","description":"Connection provisioning status on service provider's side","description_kind":"plain","computed":true},"purchase_order_number":{"type":"string","description":"Connection's purchase order number to reflect on the invoice","description_kind":"plain","optional":true},"redundancy_group":{"type":"string","description":"Unique identifier of group containing a primary and secondary connection","description_kind":"plain","computed":true},"redundancy_type":{"type":"string","description":"Connection redundancy type, applicable for HA connections. Either primary or secondary","description_kind":"plain","computed":true},"redundant_uuid":{"type":"string","description":"Unique identifier of the redundant connection, applicable for HA connections","description_kind":"plain","computed":true},"seller_metro_code":{"type":"string","description":"The metro code that denotes the connection's remote side (z-side)","description_kind":"plain","optional":true,"computed":true},"seller_region":{"type":"string","description":"The region in which the seller port resides","description_kind":"plain","optional":true},"service_token":{"type":"string","description":"Unique Equinix Fabric key given by a provider that grants you authorization to enable connectivity from a shared multi-tenant port (a-side)","description_kind":"plain","optional":true},"speed":{"type":"number","description":"Speed/Bandwidth to be allocated to the connection","description_kind":"plain","required":true},"speed_unit":{"type":"string","description":"Unit of the speed/bandwidth to be allocated to the connection","description_kind":"plain","required":true},"status":{"type":"string","description":"Connection provisioning status on Equinix Fabric side","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Unique identifier of the connection","description_kind":"plain","computed":true},"vendor_token":{"type":"string","description":"The Equinix Fabric Token the connection was created with. Applicable if the connection was created with a ServiceToken (a-side) or ZSideServiceToken (z-side)","description_kind":"plain","computed":true},"vlan_ctag":{"type":"number","description":"C-Tag/Inner-Tag of the connection, a numeric character ranging from 2 - 4094","description_kind":"plain","optional":true},"vlan_stag":{"type":"number","description":"S-Tag/Outer-Tag of the connection, a numeric character ranging from 2 - 4094","description_kind":"plain","optional":true,"computed":true},"zside_port_uuid":{"type":"string","description":"Unique identifier of the port on the remote side (z-side)","description_kind":"plain","optional":true,"computed":true},"zside_service_token":{"type":"string","description":"Unique Equinix Fabric key given by a provider that grants you authorization to enable connectivity to a shared multi-tenant port (z-side)","description_kind":"plain","optional":true},"zside_vlan_ctag":{"type":"number","description":"C-Tag/Inner-Tag of the connection on the remote side (z-side)","description_kind":"plain","optional":true,"computed":true},"zside_vlan_stag":{"type":"number","description":"S-Tag/Outer-Tag of the connection on the remote side (z-side)","description_kind":"plain","optional":true,"computed":true}},"block_types":{"additional_info":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description":"Additional information key","description_kind":"plain","required":true},"value":{"type":"string","description":"Additional information value","description_kind":"plain","required":true}},"description":"One or more additional information key-value objects","description_kind":"plain"}},"secondary_connection":{"nesting_mode":"list","block":{"attributes":{"actions":{"type":["set",["object",{"message":"string","operation_id":"string","required_data":["set",["object",{"editable":"bool","key":"string","label":"string","validation_pattern":"string","value":"string"}]],"type":"string"}]],"description":"One or more pending actions to complete connection provisioning","description_kind":"plain","computed":true},"authorization_key":{"type":"string","description":"Text field used to authorize connection on the provider side. Value depends on a provider service profile used for connection","description_kind":"plain","optional":true,"computed":true},"device_interface_id":{"type":"number","description":"Identifier of network interface on a given device, used for a connection. If not specified then first available interface will be selected","description_kind":"plain","optional":true,"computed":true},"device_uuid":{"type":"string","description":"Unique identifier of the Network Edge virtual device from which the connection would originate","description_kind":"plain","optional":true},"name":{"type":"string","description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores","description_kind":"plain","required":true},"port_uuid":{"type":"string","description":"Unique identifier of the buyer's port from which the connection would originate","description_kind":"plain","optional":true,"computed":true},"profile_uuid":{"type":"string","description":"Unique identifier of the service provider's service profile","description_kind":"plain","optional":true,"computed":true},"provider_status":{"type":"string","description":"Connection provisioning status on service provider's side","description_kind":"plain","computed":true},"redundancy_group":{"type":"string","description":"Unique identifier of group containing a primary and secondary connection","description_kind":"plain","computed":true},"redundancy_type":{"type":"string","description":"Connection redundancy type, applicable for HA connections. Either primary or secondary","description_kind":"plain","computed":true},"redundant_uuid":{"type":"string","description":"Unique identifier of the redundant connection, applicable for HA connections","description_kind":"plain","deprecated":true,"computed":true},"seller_metro_code":{"type":"string","description":"The metro code that denotes the connection's remote side (z-side)","description_kind":"plain","optional":true,"computed":true},"seller_region":{"type":"string","description":"The region in which the seller port resides","description_kind":"plain","optional":true,"computed":true},"service_token":{"type":"string","description":"Unique Equinix Fabric key given by a provider that grants you authorization to enable connectivity from a shared multi-tenant port (a-side)","description_kind":"plain","optional":true},"speed":{"type":"number","description":"Speed/Bandwidth to be allocated to the connection","description_kind":"plain","optional":true,"computed":true},"speed_unit":{"type":"string","description":"Unit of the speed/bandwidth to be allocated to the connection","description_kind":"plain","optional":true,"computed":true},"status":{"type":"string","description":"Connection provisioning status on Equinix Fabric side","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Unique identifier of the connection","description_kind":"plain","computed":true},"vendor_token":{"type":"string","description":"The Equinix Fabric Token the connection was created with. Applicable if the connection was created with a ServiceToken (a-side) or ZSideServiceToken (z-side)","description_kind":"plain","computed":true},"vlan_ctag":{"type":"number","description":"C-Tag/Inner-Tag of the connection, a numeric character ranging from 2 - 4094","description_kind":"plain","optional":true},"vlan_stag":{"type":"number","description":"S-Tag/Outer-Tag of the connection, a numeric character ranging from 2 - 4094","description_kind":"plain","optional":true,"computed":true},"zside_port_uuid":{"type":"string","description":"Unique identifier of the port on the remote side (z-side)","description_kind":"plain","computed":true},"zside_vlan_ctag":{"type":"number","description":"C-Tag/Inner-Tag of the connection on the remote side (z-side)","description_kind":"plain","computed":true},"zside_vlan_stag":{"type":"number","description":"S-Tag/Outer-Tag of the connection on the remote side (z-side)","description_kind":"plain","computed":true}},"description":"Definition of secondary connection for redundant, HA connectivity","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource allows creation and management of Equinix Fabric\tlayer 2 connections","description_kind":"plain"}},"equinix_ecx_l2_connection_accepter":{"version":0,"block":{"attributes":{"access_key":{"type":"string","description":"Access Key used to accept connection on provider side","description_kind":"plain","optional":true,"computed":true,"sensitive":true},"aws_connection_id":{"type":"string","description":"Identifier of a hosted Direct Connect connection on AWS side, applicable for accepter resource with connections to AWS only","description_kind":"plain","computed":true},"aws_profile":{"type":"string","description":"AWS Profile Name for retrieving credentials from shared credentials file","description_kind":"plain","optional":true},"connection_id":{"type":"string","description":"Identifier of layer 2 connection that will be accepted","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"secret_key":{"type":"string","description":"Secret Key used to accept connection on provider side","description_kind":"plain","optional":true,"computed":true,"sensitive":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource is used to accept Equinix Fabric layer 2 connection on provider side","description_kind":"plain","deprecated":true}},"equinix_ecx_l2_serviceprofile":{"version":0,"block":{"attributes":{"api_integration":{"type":"bool","description":"Specifies the API integration ID that was provided to the customer during onboarding","description_kind":"plain","optional":true},"authkey_label":{"type":"string","description":"Name of the authentication key label to be used by the Authentication Key service","description_kind":"plain","optional":true},"bandwidth_alert_threshold":{"type":"number","description":"Specifies the port bandwidth threshold percentage. If the bandwidth limit is met or exceeded, an alert is sent to the seller","description_kind":"plain","optional":true},"bandwidth_threshold_notifications":{"type":["set","string"],"description":"A list of email addresses that will receive notifications about bandwidth thresholds","description_kind":"plain","required":true},"connection_name_label":{"type":"string","description":"Custom name used for calling a connections i.e. circuit. Defaults to Connection","description_kind":"plain","optional":true},"ctag_label":{"type":"string","description":"C-Tag/Inner-Tag label name for the connections","description_kind":"plain","optional":true},"description":{"type":"string","description":"Description of the service profile","description_kind":"plain","optional":true},"equinix_managed_port_vlan":{"type":"bool","description":"Boolean value that indicates whether the port and VLAN details are managed by Equinix","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"integration_id":{"type":"string","description":"Specifies the API integration ID that was provided to the customer during onboarding","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the service profile. An alpha-numeric 50 characters string which can include only hyphens and underscores","description_kind":"plain","required":true},"oversubscription":{"type":"string","description":"Oversubscription limit that will cause alerting. Default is 1x","description_kind":"plain","optional":true},"oversubscription_allowed":{"type":"bool","description":"Boolean value that determines if, regardless of the utilization, Equinix Fabric will continue to add connections to your links until we reach the oversubscription limit","description_kind":"plain","optional":true},"private":{"type":"bool","description":"Boolean value that indicates whether or not this is a private profile.","description_kind":"plain","optional":true},"private_user_emails":{"type":["set","string"],"description":"A list of email addresses associated to users that will be allowed to access this service profile. Applicable for private profiles","description_kind":"plain","optional":true},"profile_statuschange_notifications":{"type":["set","string"],"description":"A list of email addresses that will receive notifications about profile status changes","description_kind":"plain","required":true},"redundancy_required":{"type":"bool","description":"Boolean value that determines if yourconnections will require redundancy","description_kind":"plain","optional":true},"secondary_vlan_from_primary":{"type":"bool","description":"Indicates whether the VLAN ID of the secondary connection is the same as the primary connection","description_kind":"plain","optional":true},"servicekey_autogenerated":{"type":"bool","description":"Boolean value that indicates whether multiple connections can be created with the same authorization key","description_kind":"plain","optional":true},"speed_customization_allowed":{"type":"bool","description":"Boolean value that determines if customer is allowed to enter a custom connection speed","description_kind":"plain","optional":true},"speed_from_api":{"type":"bool","description":"Boolean valuta that determines if connection speed will be derived from an API call","description_kind":"plain","optional":true},"state":{"type":"string","description":"Service profile provisioning status","description_kind":"plain","computed":true},"tag_type":{"type":"string","description":"Specifies additional tagging information required by the seller profile for Dot1Q to QinQ translation","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Unique identifier of the service profile","description_kind":"plain","computed":true},"vc_statuschange_notifications":{"type":["set","string"],"description":"A list of email addresses that will receive notifications about connections approvals and rejections","description_kind":"plain","required":true}},"block_types":{"features":{"nesting_mode":"set","block":{"attributes":{"allow_remote_connections":{"type":"bool","description":"Indicates whether or not connections to this profile can be created from remote metro locations","description_kind":"plain","required":true},"test_profile":{"type":"bool","description":"Indicates whether or not this profile can be used for test connections","description_kind":"plain","deprecated":true,"optional":true}},"description":"Block of profile features configuration","description_kind":"plain"},"min_items":1,"max_items":1},"port":{"nesting_mode":"set","block":{"attributes":{"metro_code":{"type":"string","description":"Port location metro code","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Unique identifier of the port","description_kind":"plain","required":true}},"description":"One or more definitions of ports associated with the profile","description_kind":"plain"},"min_items":1},"speed_band":{"nesting_mode":"set","block":{"attributes":{"speed":{"type":"number","description":"Speed/bandwidth supported by given service profile","description_kind":"plain","required":true},"speed_unit":{"type":"string","description":"Unit of the speed/bandwidth supported by given service profile","description_kind":"plain","required":true}},"description":"One or more definitions of supported speed/bandwidth configurations","description_kind":"plain"}}},"description_kind":"plain"}},"equinix_fabric_cloud_router":{"version":0,"block":{"attributes":{"change_log":{"type":["set",["object",{"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"}]],"description":"Captures Fabric Cloud Router lifecycle change information","description_kind":"plain","computed":true},"description":{"type":"string","description":"Customer-provided Fabric Cloud Router description","description_kind":"plain","optional":true},"equinix_asn":{"type":"number","description":"Equinix ASN","description_kind":"plain","computed":true},"href":{"type":"string","description":"Fabric Cloud Router URI information","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Fabric Cloud Router name. An alpha-numeric 24 characters string which can include only hyphens and underscores","description_kind":"plain","required":true},"state":{"type":"string","description":"Fabric Cloud Router overall state","description_kind":"plain","computed":true},"type":{"type":"string","description":"Defines the FCR type like XF_ROUTER","description_kind":"plain","required":true}},"block_types":{"account":{"nesting_mode":"set","block":{"attributes":{"account_number":{"type":"number","description":"Account Number","description_kind":"plain","optional":true,"computed":true}},"description":"Customer account information that is associated with this Fabric Cloud Router","description_kind":"plain"},"max_items":1},"location":{"nesting_mode":"set","block":{"attributes":{"ibx":{"type":"string","description":"IBX Code","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Access point metro code","description_kind":"plain","optional":true,"computed":true},"metro_name":{"type":"string","description":"Access point metro name","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Access point region","description_kind":"plain","optional":true,"computed":true}},"description":"Fabric Cloud Router location","description_kind":"plain"},"min_items":1,"max_items":1},"notifications":{"nesting_mode":"list","block":{"attributes":{"emails":{"type":["list","string"],"description":"Array of contact emails","description_kind":"plain","required":true},"send_interval":{"type":"string","description":"Send interval","description_kind":"plain","optional":true},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS","description_kind":"plain","required":true}},"description":"Preferences for notifications on Fabric Cloud Router configuration or status changes","description_kind":"plain"},"min_items":1},"order":{"nesting_mode":"set","block":{"attributes":{"billing_tier":{"type":"string","description":"Billing tier for connection bandwidth","description_kind":"plain","optional":true},"order_id":{"type":"string","description":"Order Identification","description_kind":"plain","computed":true},"order_number":{"type":"string","description":"Order Reference Number","description_kind":"plain","computed":true},"purchase_order_number":{"type":"string","description":"Purchase order number","description_kind":"plain","optional":true}},"description":"Order information related to this Fabric Cloud Router","description_kind":"plain"},"max_items":1},"package":{"nesting_mode":"set","block":{"attributes":{"code":{"type":"string","description":"Fabric Cloud Router package code","description_kind":"plain","required":true}},"description":"Fabric Cloud Router location","description_kind":"plain"},"min_items":1,"max_items":1},"project":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource URL","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"Project Id","description_kind":"plain","optional":true,"computed":true}},"description":"Fabric Cloud Router project","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Cloud Router\n\n~\u003e **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)","description_kind":"plain"}},"equinix_fabric_connection":{"version":0,"block":{"attributes":{"account":{"type":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"description":"Customer account information that is associated with this connection","description_kind":"plain","computed":true},"additional_info":{"type":["list",["map","string"]],"description":"Connection additional information","description_kind":"plain","optional":true},"bandwidth":{"type":"number","description":"Connection bandwidth in Mbps","description_kind":"plain","required":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures connection lifecycle change information","description_kind":"plain","computed":true},"direction":{"type":"string","description":"Connection directionality from the requester point of view","description_kind":"plain","computed":true},"href":{"type":"string","description":"Connection URI information","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_remote":{"type":"bool","description":"Connection property derived from access point locations","description_kind":"plain","computed":true},"name":{"type":"string","description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores","description_kind":"plain","required":true},"operation":{"type":["set",["object",{"equinix_status":"string","errors":["list",["object",{"additional_info":["list",["object",{"property":"string","reason":"string"}]],"correlation_id":"string","details":"string","error_code":"string","error_message":"string","help":"string"}]],"provider_status":"string"}]],"description":"Connection type-specific operational data","description_kind":"plain","computed":true},"state":{"type":"string","description":"Connection overall state","description_kind":"plain","computed":true},"type":{"type":"string","description":"Defines the connection type like VG_VC, EVPL_VC, EPL_VC, EC_VC, IP_VC, IPWAN_VC,ACCESS_EPL_VC","description_kind":"plain","required":true}},"block_types":{"a_side":{"nesting_mode":"set","block":{"block_types":{"access_point":{"nesting_mode":"set","block":{"attributes":{"authentication_key":{"type":"string","description":"Authentication key for provider based connections","description_kind":"plain","optional":true},"peering_type":{"type":"string","description":"Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL","description_kind":"plain","optional":true},"provider_connection_id":{"type":"string","description":"Provider assigned Connection Id","description_kind":"plain","optional":true},"seller_region":{"type":"string","description":"Access point seller region","description_kind":"plain","optional":true},"type":{"type":"string","description":"Access point type - COLO, VD, VG, SP, IGW, SUBNET, CLOUD_ROUTER, NETWORK","description_kind":"plain","optional":true}},"block_types":{"account":{"nesting_mode":"set","block":{"attributes":{"account_name":{"type":"string","description":"Account Name","description_kind":"plain","computed":true},"account_number":{"type":"number","description":"Account Number","description_kind":"plain","computed":true},"global_cust_id":{"type":"string","description":"Global Customer organization identifier","description_kind":"plain","computed":true},"global_org_id":{"type":"string","description":"Global organization identifier","description_kind":"plain","computed":true},"global_organization_name":{"type":"string","description":"Global organization name","description_kind":"plain","computed":true},"org_id":{"type":"number","description":"Customer organization identifier","description_kind":"plain","computed":true},"organization_name":{"type":"string","description":"Customer organization name","description_kind":"plain","computed":true}},"description":"Account","description_kind":"plain"}},"gateway":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier","description_kind":"plain","optional":true}},"description":"Cloud Router access point information","description_kind":"plain","deprecated":true},"max_items":1},"interface":{"nesting_mode":"set","block":{"attributes":{"id":{"type":"string","description":"id","description_kind":"plain","computed":true},"type":{"type":"string","description":"Interface type","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned interface identifier","description_kind":"plain","optional":true}},"description":"Virtual device interface","description_kind":"plain"},"max_items":1},"link_protocol":{"nesting_mode":"set","block":{"attributes":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN","description_kind":"plain","optional":true},"vlan_c_tag":{"type":"number","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections","description_kind":"plain","optional":true,"computed":true},"vlan_s_tag":{"type":"number","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections","description_kind":"plain","optional":true,"computed":true},"vlan_tag":{"type":"number","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections","description_kind":"plain","optional":true,"computed":true}},"description":"Connection link protocol","description_kind":"plain"},"max_items":1},"location":{"nesting_mode":"set","block":{"attributes":{"ibx":{"type":"string","description":"IBX Code","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Access point metro code","description_kind":"plain","optional":true,"computed":true},"metro_name":{"type":"string","description":"Access point metro name","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Access point region","description_kind":"plain","optional":true,"computed":true}},"description":"Access point location","description_kind":"plain"},"max_items":1},"network":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned Network identifier","description_kind":"plain","optional":true}},"description":"network access point information","description_kind":"plain"},"max_items":1},"port":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"name":{"type":"string","description":"Port name","description_kind":"plain","computed":true},"redundancy":{"type":["set",["object",{"priority":"string"}]],"description":"Redundancy Information","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned Port identifier","description_kind":"plain","optional":true,"computed":true}},"description":"Port access point information","description_kind":"plain"},"max_items":1},"profile":{"nesting_mode":"set","block":{"attributes":{"access_point_type_configs":{"type":["list",["object",{"type":"string","uuid":"string"}]],"description":"Access point config information","description_kind":"plain","computed":true},"description":{"type":"string","description":"User-provided service description","description_kind":"plain","computed":true},"href":{"type":"string","description":"Service Profile URI response attribute","description_kind":"plain","computed":true},"name":{"type":"string","description":"Customer-assigned service profile name","description_kind":"plain","computed":true},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Equinix assigned service profile identifier","description_kind":"plain","required":true}},"description":"Service Profile","description_kind":"plain"},"max_items":1},"router":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier","description_kind":"plain","optional":true}},"description":"Cloud Router access point information","description_kind":"plain"},"max_items":1},"routing_protocols":{"nesting_mode":"list","block":{"attributes":{"state":{"type":"string","description":"Routing protocol instance state","description_kind":"plain","optional":true},"type":{"type":"string","description":"Routing Protocol type","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned Routing protocol identifier","description_kind":"plain","optional":true}},"description":"Access point routing protocols configuration","description_kind":"plain"}},"virtual_device":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"type":{"type":"string","description":"Virtual Device type","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier","description_kind":"plain","optional":true}},"description":"Virtual device","description_kind":"plain"},"max_items":1}},"description":"Point of access details","description_kind":"plain"},"max_items":1},"additional_info":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description":"Additional information key","description_kind":"plain","optional":true},"value":{"type":"string","description":"Additional information value","description_kind":"plain","optional":true}},"description":"Connection side additional information","description_kind":"plain"}},"service_token":{"nesting_mode":"set","block":{"attributes":{"description":{"type":"string","description":"Service token description","description_kind":"plain","computed":true},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context","description_kind":"plain","computed":true},"type":{"type":"string","description":"Token type - VC_TOKEN","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned service token identifier","description_kind":"plain","optional":true}},"description":"For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets","description_kind":"plain"},"max_items":1}},"description":"Requester or Customer side connection configuration object of the multi-segment connection","description_kind":"plain"},"min_items":1,"max_items":1},"notifications":{"nesting_mode":"list","block":{"attributes":{"emails":{"type":["list","string"],"description":"Array of contact emails","description_kind":"plain","required":true},"send_interval":{"type":"string","description":"Send interval","description_kind":"plain","optional":true},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS","description_kind":"plain","required":true}},"description":"Preferences for notifications on connection configuration or status changes","description_kind":"plain"},"min_items":1},"order":{"nesting_mode":"set","block":{"attributes":{"billing_tier":{"type":"string","description":"Billing tier for connection bandwidth","description_kind":"plain","optional":true},"order_id":{"type":"string","description":"Order Identification","description_kind":"plain","computed":true},"order_number":{"type":"string","description":"Order Reference Number","description_kind":"plain","computed":true},"purchase_order_number":{"type":"string","description":"Purchase order number","description_kind":"plain","optional":true}},"description":"Order related to this connection information","description_kind":"plain"},"max_items":1},"project":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource URL","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"Project Id","description_kind":"plain","computed":true}},"description":"Project information","description_kind":"plain"},"max_items":1},"redundancy":{"nesting_mode":"set","block":{"attributes":{"group":{"type":"string","description":"Redundancy group identifier","description_kind":"plain","optional":true,"computed":true},"priority":{"type":"string","description":"Priority type- PRIMARY, SECONDARY","description_kind":"plain","optional":true}},"description":"Redundancy Information","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"z_side":{"nesting_mode":"set","block":{"block_types":{"access_point":{"nesting_mode":"set","block":{"attributes":{"authentication_key":{"type":"string","description":"Authentication key for provider based connections","description_kind":"plain","optional":true},"peering_type":{"type":"string","description":"Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL","description_kind":"plain","optional":true},"provider_connection_id":{"type":"string","description":"Provider assigned Connection Id","description_kind":"plain","optional":true},"seller_region":{"type":"string","description":"Access point seller region","description_kind":"plain","optional":true},"type":{"type":"string","description":"Access point type - COLO, VD, VG, SP, IGW, SUBNET, CLOUD_ROUTER, NETWORK","description_kind":"plain","optional":true}},"block_types":{"account":{"nesting_mode":"set","block":{"attributes":{"account_name":{"type":"string","description":"Account Name","description_kind":"plain","computed":true},"account_number":{"type":"number","description":"Account Number","description_kind":"plain","computed":true},"global_cust_id":{"type":"string","description":"Global Customer organization identifier","description_kind":"plain","computed":true},"global_org_id":{"type":"string","description":"Global organization identifier","description_kind":"plain","computed":true},"global_organization_name":{"type":"string","description":"Global organization name","description_kind":"plain","computed":true},"org_id":{"type":"number","description":"Customer organization identifier","description_kind":"plain","computed":true},"organization_name":{"type":"string","description":"Customer organization name","description_kind":"plain","computed":true}},"description":"Account","description_kind":"plain"}},"gateway":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier","description_kind":"plain","optional":true}},"description":"Cloud Router access point information","description_kind":"plain","deprecated":true},"max_items":1},"interface":{"nesting_mode":"set","block":{"attributes":{"id":{"type":"string","description":"id","description_kind":"plain","computed":true},"type":{"type":"string","description":"Interface type","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned interface identifier","description_kind":"plain","optional":true}},"description":"Virtual device interface","description_kind":"plain"},"max_items":1},"link_protocol":{"nesting_mode":"set","block":{"attributes":{"type":{"type":"string","description":"Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN","description_kind":"plain","optional":true},"vlan_c_tag":{"type":"number","description":"Vlan Customer Tag information, vlanCTag value specified for QINQ connections","description_kind":"plain","optional":true,"computed":true},"vlan_s_tag":{"type":"number","description":"Vlan Provider Tag information, vlanSTag value specified for QINQ connections","description_kind":"plain","optional":true,"computed":true},"vlan_tag":{"type":"number","description":"Vlan Tag information, vlanTag value specified for DOT1Q connections","description_kind":"plain","optional":true,"computed":true}},"description":"Connection link protocol","description_kind":"plain"},"max_items":1},"location":{"nesting_mode":"set","block":{"attributes":{"ibx":{"type":"string","description":"IBX Code","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Access point metro code","description_kind":"plain","optional":true,"computed":true},"metro_name":{"type":"string","description":"Access point metro name","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Access point region","description_kind":"plain","optional":true,"computed":true}},"description":"Access point location","description_kind":"plain"},"max_items":1},"network":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned Network identifier","description_kind":"plain","optional":true}},"description":"network access point information","description_kind":"plain"},"max_items":1},"port":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"name":{"type":"string","description":"Port name","description_kind":"plain","computed":true},"redundancy":{"type":["set",["object",{"priority":"string"}]],"description":"Redundancy Information","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned Port identifier","description_kind":"plain","optional":true,"computed":true}},"description":"Port access point information","description_kind":"plain"},"max_items":1},"profile":{"nesting_mode":"set","block":{"attributes":{"access_point_type_configs":{"type":["list",["object",{"type":"string","uuid":"string"}]],"description":"Access point config information","description_kind":"plain","computed":true},"description":{"type":"string","description":"User-provided service description","description_kind":"plain","computed":true},"href":{"type":"string","description":"Service Profile URI response attribute","description_kind":"plain","computed":true},"name":{"type":"string","description":"Customer-assigned service profile name","description_kind":"plain","computed":true},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Equinix assigned service profile identifier","description_kind":"plain","required":true}},"description":"Service Profile","description_kind":"plain"},"max_items":1},"router":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned virtual gateway identifier","description_kind":"plain","optional":true}},"description":"Cloud Router access point information","description_kind":"plain"},"max_items":1},"routing_protocols":{"nesting_mode":"list","block":{"attributes":{"state":{"type":"string","description":"Routing protocol instance state","description_kind":"plain","optional":true},"type":{"type":"string","description":"Routing Protocol type","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned Routing protocol identifier","description_kind":"plain","optional":true}},"description":"Access point routing protocols configuration","description_kind":"plain"}},"virtual_device":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource Identifier","description_kind":"plain","computed":true},"type":{"type":"string","description":"Virtual Device type","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned Virtual Device identifier","description_kind":"plain","optional":true}},"description":"Virtual device","description_kind":"plain"},"max_items":1}},"description":"Point of access details","description_kind":"plain"},"max_items":1},"additional_info":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description":"Additional information key","description_kind":"plain","optional":true},"value":{"type":"string","description":"Additional information value","description_kind":"plain","optional":true}},"description":"Connection side additional information","description_kind":"plain"}},"service_token":{"nesting_mode":"set","block":{"attributes":{"description":{"type":"string","description":"Service token description","description_kind":"plain","computed":true},"href":{"type":"string","description":"An absolute URL that is the subject of the link's context","description_kind":"plain","computed":true},"type":{"type":"string","description":"Token type - VC_TOKEN","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned service token identifier","description_kind":"plain","optional":true}},"description":"For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets","description_kind":"plain"},"max_items":1}},"description":"Destination or Provider side connection configuration object of the multi-segment connection","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric connection\n\n~\u003e **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)","description_kind":"plain"}},"equinix_fabric_routing_protocol":{"version":0,"block":{"attributes":{"bgp_auth_key":{"type":"string","description":"BGP authorization key","description_kind":"plain","optional":true},"change":{"type":["set",["object",{"href":"string","type":"string","uuid":"string"}]],"description":"Routing Protocol configuration Changes","description_kind":"plain","computed":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures Routing Protocol lifecycle change information","description_kind":"plain","computed":true},"connection_uuid":{"type":"string","description":"Connection URI associated with Routing Protocol","description_kind":"plain","required":true},"customer_asn":{"type":"number","description":"Customer-provided ASN","description_kind":"plain","optional":true},"description":{"type":"string","description":"Customer-provided Fabric Routing Protocol description","description_kind":"plain","optional":true},"equinix_asn":{"type":"number","description":"Equinix ASN","description_kind":"plain","computed":true},"href":{"type":"string","description":"Routing Protocol URI information","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores","description_kind":"plain","optional":true},"operation":{"type":["set",["object",{"errors":["list",["object",{"additional_info":["list",["object",{"property":"string","reason":"string"}]],"correlation_id":"string","details":"string","error_code":"string","error_message":"string","help":"string"}]]}]],"description":"Routing Protocol type-specific operational data","description_kind":"plain","computed":true},"state":{"type":"string","description":"Routing Protocol overall state","description_kind":"plain","computed":true},"type":{"type":"string","description":"Defines the routing protocol type like BGP or DIRECT","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned routing protocol identifier","description_kind":"plain","optional":true,"computed":true}},"block_types":{"bfd":{"nesting_mode":"set","block":{"attributes":{"enabled":{"type":"bool","description":"Bidirectional Forwarding Detection enablement","description_kind":"plain","required":true},"interval":{"type":"string","description":"Interval range between the received BFD control packets","description_kind":"plain","optional":true}},"description":"Bidirectional Forwarding Detection","description_kind":"plain"}},"bgp_ipv4":{"nesting_mode":"set","block":{"attributes":{"customer_peer_ip":{"type":"string","description":"Customer side peering ip","description_kind":"plain","required":true},"enabled":{"type":"bool","description":"Admin status for the BGP session","description_kind":"plain","optional":true},"equinix_peer_ip":{"type":"string","description":"Equinix side peering ip","description_kind":"plain","computed":true}},"description":"Routing Protocol BGP IPv4","description_kind":"plain"}},"bgp_ipv6":{"nesting_mode":"set","block":{"attributes":{"customer_peer_ip":{"type":"string","description":"Customer side peering ip","description_kind":"plain","required":true},"enabled":{"type":"bool","description":"Admin status for the BGP session","description_kind":"plain","optional":true},"equinix_peer_ip":{"type":"string","description":"Equinix side peering ip","description_kind":"plain","computed":true}},"description":"Routing Protocol BGP IPv6","description_kind":"plain"}},"direct_ipv4":{"nesting_mode":"set","block":{"attributes":{"equinix_iface_ip":{"type":"string","description":"Equinix side Interface IP address","description_kind":"plain","required":true}},"description":"Routing Protocol Direct IPv4","description_kind":"plain"}},"direct_ipv6":{"nesting_mode":"set","block":{"attributes":{"equinix_iface_ip":{"type":"string","description":"Equinix side Interface IP address\n\n","description_kind":"plain","optional":true}},"description":"Routing Protocol Direct IPv6","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric connection\n\n~\u003e **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)","description_kind":"plain"}},"equinix_fabric_service_profile":{"version":0,"block":{"attributes":{"allowed_emails":{"type":["list","string"],"description":"Array of contact emails","description_kind":"plain","optional":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures connection lifecycle change information","description_kind":"plain","computed":true},"description":{"type":"string","description":"User-provided service description","description_kind":"plain","required":true},"href":{"type":"string","description":"Service Profile URI response attribute","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Customer-assigned service profile name","description_kind":"plain","required":true},"self_profile":{"type":"bool","description":"Self Profile","description_kind":"plain","optional":true},"state":{"type":"string","description":"Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"Tags attached to the connection","description_kind":"plain","optional":true},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Equinix assigned service profile identifier","description_kind":"plain","computed":true},"visibility":{"type":"string","description":"Service profile visibility - PUBLIC, PRIVATE","description_kind":"plain","optional":true}},"block_types":{"access_point_type_configs":{"nesting_mode":"list","block":{"attributes":{"allow_bandwidth_auto_approval":{"type":"bool","description":"Setting to enable or disable the ability of the buyer to change connection bandwidth without approval of the seller","description_kind":"plain","optional":true},"allow_bandwidth_upgrade":{"type":"bool","description":"Availability of a bandwidth upgrade. The default is false","description_kind":"plain","optional":true},"allow_custom_bandwidth":{"type":"bool","description":"Setting to enable or disable the ability of the buyer to customize the bandwidth","description_kind":"plain","optional":true},"allow_remote_connections":{"type":"bool","description":"Setting to allow or prohibit remote connections to the service profile","description_kind":"plain","optional":true},"bandwidth_alert_threshold":{"type":"number","description":"Percentage of port bandwidth at which an allocation alert is generated","description_kind":"plain","optional":true},"connection_label":{"type":"string","description":"Custom name for Connection","description_kind":"plain","optional":true},"connection_redundancy_required":{"type":"bool","description":"Mandate redundant connections","description_kind":"plain","optional":true},"enable_auto_generate_service_key":{"type":"bool","description":"Enable auto generate service key","description_kind":"plain","optional":true},"supported_bandwidths":{"type":["list","number"],"description":"Supported bandwidths","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of access point type config - VD, COLO","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Colo/Port Uuid","description_kind":"plain","computed":true}},"block_types":{"api_config":{"nesting_mode":"set","block":{"attributes":{"allow_over_subscription":{"type":"bool","description":"Setting showing that oversubscription support is available (true) or not (false). The default is false","description_kind":"plain","optional":true},"api_available":{"type":"bool","description":"Setting indicating whether the API is available (true) or not (false)","description_kind":"plain","optional":true},"bandwidth_from_api":{"type":"bool","description":"Bandwidth from api","description_kind":"plain","optional":true},"equinix_managed_port":{"type":"bool","description":"Setting indicating that the port is managed by Equinix (true) or not (false)","description_kind":"plain","optional":true},"equinix_managed_vlan":{"type":"bool","description":"Setting indicating that the VLAN is managed by Equinix (true) or not (false)","description_kind":"plain","optional":true},"integration_id":{"type":"string","description":"Integration id","description_kind":"plain","optional":true},"over_subscription_limit":{"type":"number","description":"A cap on over subscription","description_kind":"plain","optional":true}},"description":"Api configuration details","description_kind":"plain"},"max_items":1},"authentication_key":{"nesting_mode":"set","block":{"attributes":{"description":{"type":"string","description":"Description","description_kind":"plain","optional":true},"label":{"type":"string","description":"Label","description_kind":"plain","optional":true},"required":{"type":"bool","description":"Required","description_kind":"plain","optional":true}},"description":"Authentication key details","description_kind":"plain"},"max_items":1},"link_protocol_config":{"nesting_mode":"set","block":{"attributes":{"encapsulation":{"type":"string","description":"Port Encapsulation","description_kind":"plain","optional":true},"encapsulation_strategy":{"type":"string","description":"Encapsulation strategy","description_kind":"plain","optional":true},"reuse_vlan_s_tag":{"type":"bool","description":"Reuse vlan sTag","description_kind":"plain","optional":true}},"description":"Link protocol configuration details","description_kind":"plain"},"max_items":1}},"description":"Access point config information","description_kind":"plain"}},"account":{"nesting_mode":"set","block":{"attributes":{"account_name":{"type":"string","description":"Account Name","description_kind":"plain","optional":true},"account_number":{"type":"number","description":"Account Number","description_kind":"plain","optional":true},"global_cust_id":{"type":"string","description":"Global Customer organization identifier","description_kind":"plain","optional":true},"global_org_id":{"type":"string","description":"Global organization identifier","description_kind":"plain","optional":true},"global_organization_name":{"type":"string","description":"Global organization name","description_kind":"plain","optional":true},"org_id":{"type":"number","description":"Customer organization identifier","description_kind":"plain","optional":true},"organization_name":{"type":"string","description":"Customer organization name","description_kind":"plain","optional":true},"ucm_id":{"type":"string","description":"Enterprise datastore id","description_kind":"plain","optional":true}},"description":"Account","description_kind":"plain"},"max_items":1},"custom_fields":{"nesting_mode":"list","block":{"attributes":{"capture_in_email":{"type":"bool","description":"Required field","description_kind":"plain","optional":true},"data_type":{"type":"string","description":"Data type","description_kind":"plain","required":true},"description":{"type":"string","description":"Description","description_kind":"plain","optional":true},"label":{"type":"string","description":"Label","description_kind":"plain","required":true},"options":{"type":["list","string"],"description":"Options","description_kind":"plain","optional":true},"required":{"type":"bool","description":"Required field","description_kind":"plain","required":true}},"description":"Custom Fields","description_kind":"plain"}},"marketing_info":{"nesting_mode":"set","block":{"attributes":{"logo":{"type":"string","description":"Logo","description_kind":"plain","optional":true},"promotion":{"type":"bool","description":"Promotion","description_kind":"plain","optional":true}},"block_types":{"process_step":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Description","description_kind":"plain","optional":true},"sub_title":{"type":"string","description":"Sub Title","description_kind":"plain","optional":true},"title":{"type":"string","description":"Title","description_kind":"plain","optional":true}},"description":"Process Step","description_kind":"plain"}}},"description":"Marketing Info","description_kind":"plain"},"max_items":1},"metros":{"nesting_mode":"list","block":{"attributes":{"code":{"type":"string","description":"Metro Code - Example SV","description_kind":"plain","optional":true},"display_name":{"type":"string","description":"Display Name","description_kind":"plain","optional":true},"ibxs":{"type":["list","string"],"description":"IBX- Equinix International Business Exchange list","description_kind":"plain","optional":true},"in_trail":{"type":"bool","description":"In Trail","description_kind":"plain","optional":true},"name":{"type":"string","description":"Metro Name","description_kind":"plain","optional":true},"seller_regions":{"type":["map","string"],"description":"Seller Regions","description_kind":"plain","optional":true}},"description":"Access point config information","description_kind":"plain"}},"notifications":{"nesting_mode":"list","block":{"attributes":{"emails":{"type":["list","string"],"description":"Array of contact emails","description_kind":"plain","required":true},"send_interval":{"type":"string","description":"Send interval","description_kind":"plain","optional":true},"type":{"type":"string","description":"Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS","description_kind":"plain","required":true}},"description":"Preferences for notifications on connection configuration or status changes","description_kind":"plain"}},"ports":{"nesting_mode":"list","block":{"attributes":{"cross_connect_id":{"type":"string","description":"Cross Connect Id","description_kind":"plain","optional":true},"seller_region":{"type":"string","description":"Seller Region","description_kind":"plain","optional":true},"seller_region_description":{"type":"string","description":"Seller Region details","description_kind":"plain","optional":true},"type":{"type":"string","description":"Colo/Port Type","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Colo/Port Uuid","description_kind":"plain","required":true}},"block_types":{"location":{"nesting_mode":"set","block":{"attributes":{"ibx":{"type":"string","description":"IBX Code","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Access point metro code","description_kind":"plain","optional":true,"computed":true},"metro_name":{"type":"string","description":"Access point metro name","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Access point region","description_kind":"plain","optional":true,"computed":true}},"description":"Colo/Port Location","description_kind":"plain"},"max_items":1}},"description":"Ports","description_kind":"plain"}},"project":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource URL","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"Project Id","description_kind":"plain","computed":true}},"description":"Project information","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"virtual_devices":{"nesting_mode":"list","block":{"attributes":{"interface_uuid":{"type":"string","description":"Device Interface Uuid","description_kind":"plain","optional":true},"type":{"type":"string","description":"Virtual Device Type","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Virtual Device Uuid","description_kind":"plain","required":true}},"block_types":{"location":{"nesting_mode":"set","block":{"attributes":{"ibx":{"type":"string","description":"IBX Code","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Access point metro code","description_kind":"plain","optional":true,"computed":true},"metro_name":{"type":"string","description":"Access point metro name","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Access point region","description_kind":"plain","optional":true,"computed":true}},"description":"Device Location","description_kind":"plain"},"max_items":1}},"description":"Virtual Devices","description_kind":"plain"}}},"description":"Fabric V4 API compatible resource allows creation and management of Equinix Fabric Service Profile\n\n~\u003e **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)","description_kind":"plain"}},"equinix_metal_bgp_session":{"version":0,"block":{"attributes":{"address_family":{"type":"string","description":"ipv4 or ipv6","description_kind":"plain","required":true},"default_route":{"type":"bool","description":"Boolean flag to set the default route policy. False by default","description_kind":"plain","optional":true},"device_id":{"type":"string","description":"ID of device","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"status":{"type":"string","description":"Status of the session - up or down","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_connection":{"version":0,"block":{"attributes":{"contact_email":{"type":"string","description":"The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key","description_kind":"plain","optional":true,"computed":true},"description":{"type":"string","description":"Description of the connection resource","description_kind":"plain","optional":true},"facility":{"type":"string","description":"Facility where the connection will be created","description_kind":"plain","deprecated":true,"optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"Metro where the connection will be created","description_kind":"plain","optional":true,"computed":true},"mode":{"type":"string","description":"Mode for connections in IBX facilities with the dedicated type - standard or tunnel","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the connection resource","description_kind":"plain","required":true},"organization_id":{"type":"string","description":"ID of the organization responsible for the connection. Applicable with type \"dedicated\"","description_kind":"plain","optional":true,"computed":true},"ports":{"type":["list",["object",{"id":"string","link_status":"string","name":"string","role":"string","speed":"number","status":"string","virtual_circuit_ids":["list","string"]}]],"description":"List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"ID of the project where the connection is scoped to. Required with type \"shared\"","description_kind":"plain","optional":true},"redundancy":{"type":"string","description":"Connection redundancy - redundant or primary","description_kind":"plain","required":true},"service_token_type":{"type":"string","description":"Only used with shared connection. Type of service token to use for the connection, a_side or z_side","description_kind":"plain","optional":true},"service_tokens":{"type":["list",["object",{"expires_at":"string","id":"string","max_allowed_speed":"string","role":"string","state":"string","type":"string"}]],"description":"Only used with shared connection. List of service tokens required to continue the setup process with [equinix_ecx_l2_connection](https://registry.terraform.io/providers/equinix/equinix/latest/docs/resources/equinix_ecx_l2_connection) or from the [Equinix Fabric Portal](https://ecxfabric.equinix.com/dashboard)","description_kind":"plain","computed":true},"speed":{"type":"string","description":"Port speed. Required for a_side connections. Allowed values are 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps","description_kind":"plain","optional":true,"computed":true},"status":{"type":"string","description":"Status of the connection resource","description_kind":"plain","computed":true},"tags":{"type":["list","string"],"description":"Tags attached to the connection","description_kind":"plain","optional":true},"token":{"type":"string","description":"Only used with shared connection. Fabric Token required to continue the setup process with [equinix_ecx_l2_connection](https://registry.terraform.io/providers/equinix/equinix/latest/docs/resources/equinix_ecx_l2_connection) or from the [Equinix Fabric Portal](https://ecxfabric.equinix.com/dashboard)","description_kind":"plain","deprecated":true,"computed":true},"type":{"type":"string","description":"Connection type - dedicated or shared","description_kind":"plain","required":true},"vlans":{"type":["list","number"],"description":"Only used with shared connection. VLANs to attach. Pass one vlan for Primary/Single connection and two vlans for Redundant connection","description_kind":"plain","optional":true}},"description_kind":"plain"}},"equinix_metal_device":{"version":0,"block":{"attributes":{"access_private_ipv4":{"type":"string","description":"The ipv4 private IP assigned to the device","description_kind":"plain","computed":true},"access_public_ipv4":{"type":"string","description":"The ipv4 maintenance IP assigned to the device","description_kind":"plain","computed":true},"access_public_ipv6":{"type":"string","description":"The ipv6 maintenance IP assigned to the device","description_kind":"plain","computed":true},"always_pxe":{"type":"bool","description":"If true, a device with OS custom_ipxe will","description_kind":"plain","optional":true},"billing_cycle":{"type":"string","description":"monthly or hourly","description_kind":"plain","optional":true,"computed":true},"created":{"type":"string","description":"The timestamp for when the device was created","description_kind":"plain","computed":true},"custom_data":{"type":"string","description":"A string of the desired Custom Data for the device. By default, changing this attribute will cause the provider to destroy and recreate your device. If `reinstall` is specified or `behavior.allow_changes` includes `\"custom_data\"`, the device will be updated in-place instead of recreated.","description_kind":"plain","optional":true,"sensitive":true},"deployed_facility":{"type":"string","description":"The facility where the device is deployed","description_kind":"plain","deprecated":true,"computed":true},"deployed_hardware_reservation_id":{"type":"string","description":"ID of hardware reservation where this device was deployed. It is useful when using the next-available hardware reservation","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description string for the device","description_kind":"plain","optional":true},"facilities":{"type":["list","string"],"description":"List of facility codes with deployment preferences. Equinix Metal API will go through the list and will deploy your device to first facility with free capacity. List items must be facility codes or any (a wildcard). To find the facility code, visit [Facilities API docs](https://metal.equinix.com/developers/api/facilities/), set your API auth token in the top of the page and see JSON from the API response. Conflicts with metro","description_kind":"plain","deprecated":true,"optional":true},"force_detach_volumes":{"type":"bool","description":"Delete device even if it has volumes attached. Only applies for destroy action","description_kind":"plain","optional":true},"hardware_reservation_id":{"type":"string","description":"The UUID of the hardware reservation where you want this device deployed, or next-available if you want to pick your next available reservation automatically","description_kind":"plain","optional":true},"hostname":{"type":"string","description":"The device hostname used in deployments taking advantage of Layer3 DHCP or metadata service configuration.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ipxe_script_url":{"type":"string","description":"URL pointing to a hosted iPXE script. More","description_kind":"plain","optional":true},"locked":{"type":"bool","description":"Whether the device is locked","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro area for the new device. Conflicts with facilities","description_kind":"plain","optional":true},"network":{"type":["list",["object",{"address":"string","cidr":"number","family":"number","gateway":"string","public":"bool"}]],"description":"The device's private and public IP (v4 and v6) network details. When a device is run without any special network configuration, it will have 3 addresses: public ipv4, private ipv4 and ipv6","description_kind":"plain","computed":true},"network_type":{"type":"string","description":"Network type of a device, used in [Layer 2 networking](https://metal.equinix.com/developers/docs/networking/layer2/). Will be one of layer3, hybrid, hybrid-bonded, layer2-individual, layer2-bonded","description_kind":"plain","deprecated":true,"computed":true},"operating_system":{"type":"string","description":"The operating system slug. To find the slug, or visit [Operating Systems API docs](https://metal.equinix.com/developers/api/operatingsystems), set your API auth token in the top of the page and see JSON from the API response. By default, changing this attribute will cause your device to be deleted and recreated. If `reinstall` is enabled, the device will be updated in-place instead of recreated.","description_kind":"plain","required":true},"plan":{"type":"string","description":"The device plan slug. To find the plan slug, visit [Device plans API docs](https://metal.equinix.com/developers/api/plans), set your auth token in the top of the page and see JSON from the API response","description_kind":"plain","required":true},"ports":{"type":["list",["object",{"bonded":"bool","id":"string","mac":"string","name":"string","type":"string"}]],"description":"Ports assigned to the device","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"The ID of the project in which to create the device","description_kind":"plain","required":true},"project_ssh_key_ids":{"type":["list","string"],"description":"Array of IDs of the project SSH keys which should be added to the device. If you specify this array, only the listed project SSH keys (and any SSH keys for the users specified in user_ssh_key_ids) will be added. If no SSH keys are specified (both user_ssh_keys_ids and project_ssh_key_ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included. Project SSH keys can be created with the [equinix_metal_project_ssh_key](equinix_metal_project_ssh_key.md) resource","description_kind":"plain","optional":true},"root_password":{"type":"string","description":"Root password to the server (disabled after 24 hours)","description_kind":"plain","computed":true,"sensitive":true},"ssh_key_ids":{"type":["list","string"],"description":"List of IDs of SSH keys deployed in the device, can be both user and project SSH keys","description_kind":"plain","computed":true},"state":{"type":"string","description":"The status of the device","description_kind":"plain","computed":true},"storage":{"type":"string","description":"JSON for custom partitioning. Only usable on reserved hardware. More information in in the [Custom Partitioning and RAID](https://metal.equinix.com/developers/docs/servers/custom-partitioning-raid/) doc","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"Tags attached to the device","description_kind":"plain","optional":true},"termination_time":{"type":"string","description":"Timestamp for device termination. For example \"2021-09-03T16:32:00+03:00\". If you don't supply timezone info, timestamp is assumed to be in UTC.","description_kind":"plain","optional":true},"updated":{"type":"string","description":"The timestamp for the last time the device was updated","description_kind":"plain","computed":true},"user_data":{"type":"string","description":"A string of the desired User Data for the device. By default, changing this attribute will cause the provider to destroy and recreate your device. If `reinstall` is specified or `behavior.allow_changes` includes `\"user_data\"`, the device will be updated in-place instead of recreated.","description_kind":"plain","optional":true,"sensitive":true},"user_ssh_key_ids":{"type":["list","string"],"description":"Array of IDs of the users whose SSH keys should be added to the device. If you specify this array, only the listed users' SSH keys (and any project SSH keys specified in project_ssh_key_ids) will be added. If no SSH keys are specified (both user_ssh_keys_ids and project_ssh_key_ids are empty lists or omitted), all parent project keys, parent project members keys and organization members keys will be included. User SSH keys can be created with the [equinix_metal_ssh_key](equinix_metal_ssh_key.md) resource","description_kind":"plain","optional":true},"wait_for_reservation_deprovision":{"type":"bool","description":"Only used for devices in reserved hardware. If set, the deletion of this device will block until the hardware reservation is marked provisionable (about 4 minutes in August 2019)","description_kind":"plain","optional":true}},"block_types":{"behavior":{"nesting_mode":"list","block":{"attributes":{"allow_changes":{"type":["list","string"],"description":"List of attributes that are allowed to change without recreating the instance. Supported attributes: `custom_data`, `user_data`","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"ip_address":{"nesting_mode":"list","block":{"attributes":{"cidr":{"type":"number","description":"CIDR suffix for IP block assigned to this device","description_kind":"plain","optional":true},"reservation_ids":{"type":["list","string"],"description":"IDs of reservations to pick the blocks from","description_kind":"plain","optional":true},"type":{"type":"string","description":"one of public_ipv4,private_ipv4,public_ipv6","description_kind":"plain","required":true}},"description":"A list of IP address types for the device (structure is documented below)","description_kind":"plain"}},"reinstall":{"nesting_mode":"list","block":{"attributes":{"deprovision_fast":{"type":"bool","description":"Whether the OS disk should be filled with `00h` bytes before reinstall","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"Whether the device should be reinstalled instead of destroyed","description_kind":"plain","optional":true},"preserve_data":{"type":"bool","description":"Whether the non-OS disks should be kept or wiped during reinstall","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_device_network_type":{"version":0,"block":{"attributes":{"device_id":{"type":"string","description":"The ID of the device on which the network type should be set","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description":"Network type to set. Must be one of layer3, hybrid, hybrid-bonded, layer2-individual, layer2-bonded","description_kind":"plain","required":true}},"description_kind":"plain"}},"equinix_metal_gateway":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_reservation_id":{"type":"string","description":"UUID of the Public or VRF IP Reservation to associate, must be in the same metro as the VLAN","description_kind":"plain","optional":true},"private_ipv4_subnet_size":{"type":"number","description":"Size of the private IPv4 subnet to create for this gateway, one of [8 16 32 64 128]","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"UUID of the Project where the Gateway is scoped to","description_kind":"plain","required":true},"state":{"type":"string","description":"Status of the gateway resource","description_kind":"plain","computed":true},"vlan_id":{"type":"string","description":"UUID of the VLAN to associate","description_kind":"plain","required":true},"vrf_id":{"type":"string","description":"UUID of the VRF associated with the IP Reservation","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_ip_attachment":{"version":0,"block":{"attributes":{"address":{"type":"string","description_kind":"plain","computed":true},"address_family":{"type":"number","description":"Address family as integer (4 or 6)","description_kind":"plain","computed":true},"cidr":{"type":"number","description":"Length of CIDR prefix of the block as integer","description_kind":"plain","computed":true},"cidr_notation":{"type":"string","description_kind":"plain","required":true},"device_id":{"type":"string","description_kind":"plain","required":true},"gateway":{"type":"string","description_kind":"plain","computed":true},"global":{"type":"bool","description":"Flag indicating whether IP block is global, i.e. assignable in any location","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"manageable":{"type":"bool","description_kind":"plain","computed":true},"management":{"type":"bool","description_kind":"plain","computed":true},"netmask":{"type":"string","description":"Mask in decimal notation, e.g. 255.255.255.0","description_kind":"plain","computed":true},"network":{"type":"string","description":"Network IP address portion of the block specification","description_kind":"plain","computed":true},"public":{"type":"bool","description":"Flag indicating whether IP block is addressable from the Internet","description_kind":"plain","computed":true},"vrf_id":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_organization":{"version":0,"block":{"attributes":{"created":{"type":"string","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"logo":{"type":"string","description":"Logo URL","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the Organization","description_kind":"plain","required":true},"twitter":{"type":"string","description":"Twitter handle","description_kind":"plain","optional":true},"updated":{"type":"string","description_kind":"plain","computed":true},"website":{"type":"string","description":"Website link","description_kind":"plain","optional":true}},"block_types":{"address":{"nesting_mode":"list","block":{"attributes":{"address":{"type":"string","description":"Postal address","description_kind":"plain","required":true},"city":{"type":"string","description":"City name","description_kind":"plain","required":true},"country":{"type":"string","description":"Two letter country code (ISO 3166-1 alpha-2), e.g. US","description_kind":"plain","required":true},"state":{"type":"string","description":"State name","description_kind":"plain","optional":true},"zip_code":{"type":"string","description":"Zip Code","description_kind":"plain","required":true}},"description":"Address information block","description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"}},"equinix_metal_organization_member":{"version":0,"block":{"attributes":{"created":{"type":"string","description":"When the invitation was created (only known in the invitation stage)","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"invited_by":{"type":"string","description":"The user id of the user that sent the invitation (only known in the invitation stage)","description_kind":"plain","computed":true},"invitee":{"type":"string","description":"The email address of the user to invite","description_kind":"plain","required":true},"message":{"type":"string","description":"A message to the invitee (only used during the invitation stage)","description_kind":"plain","optional":true},"nonce":{"type":"string","description":"The nonce for the invitation (only known in the invitation stage)","description_kind":"plain","computed":true},"organization_id":{"type":"string","description":"The organization to invite the user to","description_kind":"plain","required":true},"projects_ids":{"type":["set","string"],"description":"Project IDs the member has access to within the organization. If the member is an 'owner', the projects list should be empty.","description_kind":"plain","required":true},"roles":{"type":["set","string"],"description":"Organization roles (owner, collaborator, limited_collaborator, billing)","description_kind":"plain","required":true},"state":{"type":"string","description":"The state of the membership ('invited' when an invitation is open, 'active' when the user is an organization member)","description_kind":"plain","computed":true},"updated":{"type":"string","description":"When the invitation was updated (only known in the invitation stage)","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_port":{"version":0,"block":{"attributes":{"bond_id":{"type":"string","description":"UUID of the bond port","description_kind":"plain","computed":true},"bond_name":{"type":"string","description":"Name of the bond port","description_kind":"plain","computed":true},"bonded":{"type":"bool","description":"Flag indicating whether the port should be bonded","description_kind":"plain","required":true},"disbond_supported":{"type":"bool","description":"Flag indicating whether the port can be removed from a bond","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"layer2":{"type":"bool","description":"Flag indicating whether the port is in layer2 (or layer3) mode. The `layer2` flag can be set only for bond ports.","description_kind":"plain","optional":true},"mac":{"type":"string","description":"MAC address of the port","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the port to look up, e.g. bond0, eth1","description_kind":"plain","computed":true},"native_vlan_id":{"type":"string","description":"UUID of native VLAN of the port","description_kind":"plain","optional":true},"network_type":{"type":"string","description":"One of layer2-bonded, layer2-individual, layer3, hybrid and hybrid-bonded. This attribute is only set on bond ports.","description_kind":"plain","computed":true},"port_id":{"type":"string","description":"UUID of the port to lookup","description_kind":"plain","required":true},"reset_on_delete":{"type":"bool","description":"Behavioral setting to reset the port to default settings (layer3 bonded mode without any vlan attached) before delete/destroy","description_kind":"plain","optional":true},"type":{"type":"string","description":"Port type","description_kind":"plain","computed":true},"vlan_ids":{"type":["set","string"],"description":"UUIDs VLANs to attach. To avoid jitter, use the UUID and not the VXLAN","description_kind":"plain","optional":true,"computed":true},"vxlan_ids":{"type":["set","number"],"description":"VLAN VXLAN ids to attach (example: [1000])","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_port_vlan_attachment":{"version":0,"block":{"attributes":{"device_id":{"type":"string","description":"ID of device to be assigned to the VLAN","description_kind":"plain","required":true},"force_bond":{"type":"bool","description":"Add port back to the bond when this resource is removed. Default is false","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"native":{"type":"bool","description":"Mark this VLAN a native VLAN on the port. This can be used only if this assignment assigns second or further VLAN to the port. To ensure that this attachment is not first on a port, you can use depends_on pointing to another equinix_metal_port_vlan_attachment, just like in the layer2-individual example above","description_kind":"plain","optional":true},"port_id":{"type":"string","description":"UUID of device port","description_kind":"plain","computed":true},"port_name":{"type":"string","description":"Name of network port to be assigned to the VLAN","description_kind":"plain","required":true},"vlan_id":{"type":"string","description":"UUID of VLAN API resource","description_kind":"plain","computed":true},"vlan_vnid":{"type":"number","description":"VXLAN Network Identifier, integer","description_kind":"plain","required":true}},"description_kind":"plain"}},"equinix_metal_project":{"version":0,"block":{"attributes":{"backend_transfer":{"type":"bool","description":"Enable or disable [Backend Transfer](https://metal.equinix.com/developers/docs/networking/backend-transfer/), default is false","description_kind":"plain","optional":true},"created":{"type":"string","description":"The timestamp for when the project was created","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the project. The maximum length is 80 characters.","description_kind":"plain","required":true},"organization_id":{"type":"string","description":"The UUID of organization under which you want to create the project. If you leave it out, the project will be create under your the default organization of your account","description_kind":"plain","optional":true,"computed":true},"payment_method_id":{"type":"string","description":"The UUID of payment method for this project. The payment method and the project need to belong to the same organization (passed with organization_id, or default)","description_kind":"plain","optional":true,"computed":true},"updated":{"type":"string","description":"The timestamp for the last time the project was updated","description_kind":"plain","computed":true}},"block_types":{"bgp_config":{"nesting_mode":"list","block":{"attributes":{"asn":{"type":"number","description":"Autonomous System Number for local BGP deployment","description_kind":"plain","required":true},"deployment_type":{"type":"string","description":"\"local\" or \"global\", the local is likely to be usable immediately, the global will need to be review by Equinix Metal engineers","description_kind":"plain","required":true},"max_prefix":{"type":"number","description":"The maximum number of route filters allowed per server","description_kind":"plain","computed":true},"md5":{"type":"string","description":"Password for BGP session in plaintext (not a checksum)","description_kind":"plain","optional":true,"sensitive":true},"status":{"type":"string","description":"Status of BGP configuration in the project","description_kind":"plain","computed":true}},"description":"Optional BGP settings. Refer to [Equinix Metal guide for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/)","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"equinix_metal_project_api_key":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description string for the API key","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"UUID of project which the new API key is scoped to","description_kind":"plain","required":true},"read_only":{"type":"bool","description":"Flag indicating whether the API key shoud be read-only","description_kind":"plain","required":true},"token":{"type":"string","description":"API token for API clients","description_kind":"plain","computed":true,"sensitive":true}},"description_kind":"plain"}},"equinix_metal_project_ssh_key":{"version":0,"block":{"attributes":{"created":{"type":"string","description":"The timestamp for when the SSH key was created","description_kind":"plain","computed":true},"fingerprint":{"type":"string","description":"The fingerprint of the SSH key","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the SSH key for identification","description_kind":"plain","required":true},"owner_id":{"type":"string","description":"The UUID of the Equinix Metal API User who owns this key","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"The ID of parent project","description_kind":"plain","required":true},"public_key":{"type":"string","description":"The public key. If this is a file, it","description_kind":"plain","required":true},"updated":{"type":"string","description":"The timestamp for the last time the SSH key was updated","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_reserved_ip_block":{"version":0,"block":{"attributes":{"address":{"type":"string","description_kind":"plain","computed":true},"address_family":{"type":"number","description":"Address family as integer (4 or 6)","description_kind":"plain","computed":true},"cidr":{"type":"number","description":"the size of the network to reserve from an existing vrf ip_range. `cidr` can only be specified with `vrf_id`. Minimum range is 22-29, with 30-31 supported and necessary for virtual-circuits","description_kind":"plain","optional":true,"computed":true},"cidr_notation":{"type":"string","description_kind":"plain","computed":true},"custom_data":{"type":"string","description":"Custom Data is an arbitrary object (submitted in Terraform as serialized JSON) to assign to the IP Reservation. This may be helpful for self-managed IPAM. The object must be valid JSON.","description_kind":"plain","optional":true},"description":{"type":"string","description":"Arbitrary description","description_kind":"plain","optional":true},"facility":{"type":"string","description":"Facility where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with metro","description_kind":"plain","optional":true},"gateway":{"type":"string","description_kind":"plain","computed":true},"global":{"type":"bool","description":"Flag indicating whether IP block is global, i.e. assignable in any location","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"manageable":{"type":"bool","description_kind":"plain","computed":true},"management":{"type":"bool","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro where to allocate the public IP address block, makes sense only for type==public_ipv4, must be empty for type==global_ipv4, conflicts with facility","description_kind":"plain","optional":true},"netmask":{"type":"string","description":"Mask in decimal notation, e.g. 255.255.255.0","description_kind":"plain","computed":true},"network":{"type":"string","description":"an unreserved network address from an existing vrf ip_range. `network` can only be specified with vrf_id","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"The metal project ID where to allocate the address block","description_kind":"plain","required":true},"public":{"type":"bool","description":"Flag indicating whether IP block is addressable from the Internet","description_kind":"plain","computed":true},"quantity":{"type":"number","description":"The number of allocated /32 addresses, a power of 2","description_kind":"plain","optional":true,"computed":true},"tags":{"type":["set","string"],"description":"Tags attached to the reserved block","description_kind":"plain","optional":true},"type":{"type":"string","description":"Either global_ipv4, public_ipv4, or vrf. Defaults to public_ipv4.","description_kind":"plain","optional":true},"vrf_id":{"type":"string","description":"VRF ID for type=vrf reservations","description_kind":"plain","optional":true},"wait_for_state":{"type":"string","description":"Wait for the IP reservation block to reach a desired state on resource creation. One of: `pending`, `created`. The `created` state is default and recommended if the addresses are needed within the configuration. An error will be returned if a timeout or the `denied` state is encountered.","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_spot_market_request":{"version":0,"block":{"attributes":{"devices_max":{"type":"number","description":"Maximum number devices to be created","description_kind":"plain","required":true},"devices_min":{"type":"number","description":"Miniumum number devices to be created","description_kind":"plain","required":true},"facilities":{"type":["list","string"],"description":"Facility IDs where devices should be created","description_kind":"plain","deprecated":true,"optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"max_bid_price":{"type":"number","description":"Maximum price user is willing to pay per hour per device","description_kind":"plain","required":true},"metro":{"type":"string","description":"Metro where devices should be created","description_kind":"plain","optional":true},"project_id":{"type":"string","description":"Project ID","description_kind":"plain","required":true},"wait_for_devices":{"type":"bool","description":"On resource creation - wait until all desired devices are active, on resource destruction - wait until devices are removed","description_kind":"plain","optional":true}},"block_types":{"instance_parameters":{"nesting_mode":"list","block":{"attributes":{"always_pxe":{"type":"bool","description_kind":"plain","optional":true},"billing_cycle":{"type":"string","description_kind":"plain","required":true},"customdata":{"type":"string","description_kind":"plain","optional":true},"description":{"type":"string","description_kind":"plain","optional":true},"features":{"type":["list","string"],"description_kind":"plain","optional":true},"hostname":{"type":"string","description_kind":"plain","required":true},"ipxe_script_url":{"type":"string","description_kind":"plain","optional":true},"locked":{"type":"bool","description_kind":"plain","optional":true},"operating_system":{"type":"string","description_kind":"plain","required":true},"plan":{"type":"string","description_kind":"plain","required":true},"project_ssh_keys":{"type":["list","string"],"description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description_kind":"plain","optional":true},"termination_time":{"type":"string","description_kind":"plain","computed":true},"termintation_time":{"type":"string","description_kind":"plain","deprecated":true,"computed":true},"user_ssh_keys":{"type":["list","string"],"description_kind":"plain","optional":true},"userdata":{"type":"string","description_kind":"plain","optional":true}},"description":"Parameters for devices provisioned from this request. You can find the parameter description from the [equinix_metal_device doc](device.md)","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_ssh_key":{"version":0,"block":{"attributes":{"created":{"type":"string","description":"The timestamp for when the SSH key was created","description_kind":"plain","computed":true},"fingerprint":{"type":"string","description":"The fingerprint of the SSH key","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the SSH key for identification","description_kind":"plain","required":true},"owner_id":{"type":"string","description":"The UUID of the Equinix Metal API User who owns this key","description_kind":"plain","computed":true},"public_key":{"type":"string","description":"The public key. If this is a file, it","description_kind":"plain","required":true},"updated":{"type":"string","description":"The timestamp for the last time the SSH key was updated","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_user_api_key":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description string for the API key","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"read_only":{"type":"bool","description":"Flag indicating whether the API key shoud be read-only","description_kind":"plain","required":true},"token":{"type":"string","description":"API token for API clients","description_kind":"plain","computed":true,"sensitive":true},"user_id":{"type":"string","description":"UUID of user owning this key","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_virtual_circuit":{"version":0,"block":{"attributes":{"connection_id":{"type":"string","description":"UUID of Connection where the VC is scoped to","description_kind":"plain","required":true},"customer_ip":{"type":"string","description":"The Customer IP address which the CSR switch will peer with. Will default to the other usable IP in the subnet.","description_kind":"plain","optional":true},"description":{"type":"string","description":"Description of the Virtual Circuit resource","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"md5":{"type":"string","description":"The password that can be set for the VRF BGP peer","description_kind":"plain","optional":true,"sensitive":true},"metal_ip":{"type":"string","description":"The Metal IP address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the subnet.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the Virtual Circuit resource","description_kind":"plain","optional":true},"nni_vlan":{"type":"number","description":"Equinix Metal network-to-network VLAN ID (optional when the connection has mode=tunnel)","description_kind":"plain","optional":true},"nni_vnid":{"type":"number","description":"Nni VLAN ID parameter, see https://metal.equinix.com/developers/docs/networking/fabric/","description_kind":"plain","computed":true},"peer_asn":{"type":"number","description":"The BGP ASN of the peer. The same ASN may be the used across several VCs, but it cannot be the same as the local_asn of the VRF.","description_kind":"plain","optional":true},"port_id":{"type":"string","description":"UUID of the Connection Port where the VC is scoped to","description_kind":"plain","required":true},"project_id":{"type":"string","description":"UUID of the Project where the VC is scoped to","description_kind":"plain","required":true},"speed":{"type":"string","description":"Description of the Virtual Circuit speed. This is for information purposes and is computed when the connection type is shared.","description_kind":"plain","optional":true,"computed":true},"status":{"type":"string","description":"Status of the virtual circuit resource","description_kind":"plain","computed":true},"subnet":{"type":"string","description":"A subnet from one of the IP blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /30 or /31.\n\t\t\t\t * For a /31 block, it will only have two IP addresses, which will be used for the metal_ip and customer_ip.\n\t\t\t\t * For a /30 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"Tags attached to the virtual circuit","description_kind":"plain","optional":true},"vlan_id":{"type":"string","description":"UUID of the VLAN to associate","description_kind":"plain","optional":true},"vnid":{"type":"number","description":"VNID VLAN parameter, see https://metal.equinix.com/developers/docs/networking/fabric/","description_kind":"plain","computed":true},"vrf_id":{"type":"string","description":"UUID of the VRF to associate","description_kind":"plain","optional":true}},"description_kind":"plain"}},"equinix_metal_vlan":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description string","description_kind":"plain","optional":true},"facility":{"type":"string","description":"Facility where to create the VLAN","description_kind":"plain","deprecated":true,"optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"Metro in which to create the VLAN","description_kind":"plain","optional":true},"project_id":{"type":"string","description":"ID of parent project","description_kind":"plain","required":true},"vxlan":{"type":"number","description":"VLAN ID, must be unique in metro","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"equinix_metal_vrf":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the VRF","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_ranges":{"type":["set","string"],"description":"All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF.","description_kind":"plain","optional":true},"local_asn":{"type":"number","description":"The 4-byte ASN set on the VRF.","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"Metro Code","description_kind":"plain","required":true},"name":{"type":"string","description":"User-supplied name of the VRF, unique to the project","description_kind":"plain","required":true},"project_id":{"type":"string","description":"Project ID","description_kind":"plain","required":true}},"description_kind":"plain"}},"equinix_network_acl_template":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"ACL template description, up to 200 characters","description_kind":"plain","optional":true},"device_acl_status":{"type":"string","description":"Status of ACL template provisioning process on a device, where template was applied","description_kind":"plain","computed":true},"device_details":{"type":["list",["object",{"acl_status":"string","name":"string","uuid":"string"}]],"description":"Device Details to which ACL template is assigned to. ","description_kind":"plain","computed":true},"device_id":{"type":"string","description":"Identifier of a network device where template was applied","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"ACL template location metro code","description_kind":"plain","deprecated":true,"optional":true},"name":{"type":"string","description":"ACL template name","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Unique identifier of ACL template resource","description_kind":"plain","computed":true}},"block_types":{"inbound_rule":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Inbound rule description, up to 200 characters","description_kind":"plain","optional":true},"dst_port":{"type":"string","description":"Inbound traffic destination ports. Either up to 10, comma separated ports or port range or any word","description_kind":"plain","required":true},"protocol":{"type":"string","description":"Inbound traffic protocol. One of: `IP`, `TCP`, `UDP`","description_kind":"plain","required":true},"sequence_number":{"type":"number","description":"Inbound rule sequence number","description_kind":"plain","computed":true},"source_type":{"type":"string","description":"Type of traffic source used in a given inbound rule","description_kind":"plain","deprecated":true,"computed":true},"src_port":{"type":"string","description":"Inbound traffic source ports. Either up to 10, comma separated ports or port range or any word","description_kind":"plain","required":true},"subnet":{"type":"string","description":"Inbound traffic source IP subnet in CIDR format","description_kind":"plain","optional":true},"subnets":{"type":["list","string"],"description":"Inbound traffic source IP subnets in CIDR format","description_kind":"plain","deprecated":true,"optional":true}},"description":"One or more rules to specify allowed inbound traffic. Rules are ordered, matching traffic rule stops processing subsequent ones.","description_kind":"plain"},"min_items":1}},"description":"Resource allows creation and management of Equinix Network Edge device Access Control List templates","description_kind":"plain"}},"equinix_network_bgp":{"version":0,"block":{"attributes":{"authentication_key":{"type":"string","description":"Shared key used for BGP peer authentication","description_kind":"plain","optional":true,"sensitive":true},"connection_id":{"type":"string","description":"Identifier of a connection established between network device and remote service provider that will be used for peering","description_kind":"plain","required":true},"device_id":{"type":"string","description":"Unique identifier of a network device that is a local peer in a given BGP peering configuration","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"local_asn":{"type":"number","description":"Local ASN number","description_kind":"plain","required":true},"local_ip_address":{"type":"string","description":"IP address in CIDR format of a local device","description_kind":"plain","required":true},"provisioning_status":{"type":"string","description":"BGP peering configuration provisioning status","description_kind":"plain","computed":true},"remote_asn":{"type":"number","description":"Remote ASN number","description_kind":"plain","required":true},"remote_ip_address":{"type":"string","description":"IP address of remote peer","description_kind":"plain","required":true},"state":{"type":"string","description":"BGP peer state","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"BGP peering configuration unique identifier","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource allows creation and management of Equinix Network Edge BGP peering configurations","description_kind":"plain"}},"equinix_network_device":{"version":0,"block":{"attributes":{"account_number":{"type":"string","description":"Device billing account number","description_kind":"plain","required":true},"acl_template_id":{"type":"string","description":"Unique identifier of applied ACL template","description_kind":"plain","optional":true},"additional_bandwidth":{"type":"number","description":"Additional Internet bandwidth, in Mbps, that will be allocated to the device","description_kind":"plain","optional":true,"computed":true},"asn":{"type":"number","description":"Autonomous system number","description_kind":"plain","computed":true},"byol":{"type":"bool","description":"Boolean value that determines device licensing mode: bring your own license or subscription (default)","description_kind":"plain","optional":true},"cloud_init_file_id":{"type":"string","description":"Unique identifier of applied cloud init file","description_kind":"plain","optional":true},"connectivity":{"type":"string","description":"Parameter to identify internet access for device. Supported Values: INTERNET-ACCESS(default) or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT","description_kind":"plain","optional":true},"core_count":{"type":"number","description":"Number of CPU cores used by device","description_kind":"plain","required":true},"hostname":{"type":"string","description":"Device hostname prefix","description_kind":"plain","optional":true,"computed":true},"ibx":{"type":"string","description":"Device location Equinix Business Exchange name","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interface":{"type":["list",["object",{"assigned_type":"string","id":"number","ip_address":"string","mac_address":"string","name":"string","operational_status":"string","status":"string","type":"string"}]],"description":"List of device interfaces","description_kind":"plain","computed":true},"interface_count":{"type":"number","description":"Number of network interfaces on a device. If not specified, default number for a given device type will be used","description_kind":"plain","optional":true,"computed":true},"license_file":{"type":"string","description":"Path to the license file that will be uploaded and applied on a device, applicable for some device types in BYOL licensing mode","description_kind":"plain","optional":true},"license_file_id":{"type":"string","description":"Unique identifier of applied license file","description_kind":"plain","optional":true,"computed":true},"license_status":{"type":"string","description":"Device license registration status","description_kind":"plain","computed":true},"license_token":{"type":"string","description":"License Token applicable for some device types in BYOL licensing mode","description_kind":"plain","optional":true},"metro_code":{"type":"string","description":"Device location metro code","description_kind":"plain","required":true},"mgmt_acl_template_uuid":{"type":"string","description":"Unique identifier of applied MGMT ACL template","description_kind":"plain","optional":true},"name":{"type":"string","description":"Device name","description_kind":"plain","required":true},"notifications":{"type":["set","string"],"description":"List of email addresses that will receive device status notifications","description_kind":"plain","required":true},"order_reference":{"type":"string","description":"Name/number used to identify device order on the invoice","description_kind":"plain","optional":true},"package_code":{"type":"string","description":"Device software package code","description_kind":"plain","required":true},"purchase_order_number":{"type":"string","description":"Purchase order number associated with a device order","description_kind":"plain","optional":true},"redundancy_type":{"type":"string","description":"Device redundancy type applicable for HA devices, either primary or secondary","description_kind":"plain","computed":true},"redundant_id":{"type":"string","description":"Unique identifier for a redundant device, applicable for HA device","description_kind":"plain","computed":true},"region":{"type":"string","description":"Device location region","description_kind":"plain","computed":true},"self_managed":{"type":"bool","description":"Boolean value that determines device management mode: self-managed or subscription (default)","description_kind":"plain","optional":true},"ssh_ip_address":{"type":"string","description":"IP address of SSH enabled interface on the device","description_kind":"plain","computed":true},"ssh_ip_fqdn":{"type":"string","description":"FQDN of SSH enabled interface on the device","description_kind":"plain","computed":true},"status":{"type":"string","description":"Device provisioning status","description_kind":"plain","computed":true},"term_length":{"type":"number","description":"Device term length","description_kind":"plain","required":true},"throughput":{"type":"number","description":"Device license throughput","description_kind":"plain","optional":true},"throughput_unit":{"type":"string","description":"Device license throughput unit (Mbps or Gbps)","description_kind":"plain","optional":true},"type_code":{"type":"string","description":"Device type code","description_kind":"plain","required":true},"uuid":{"type":"string","description":"Device unique identifier","description_kind":"plain","computed":true},"vendor_configuration":{"type":["map","string"],"description":"Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress)","description_kind":"plain","optional":true,"computed":true},"version":{"type":"string","description":"Device software software version","description_kind":"plain","required":true},"wan_interface_id":{"type":"string","description":"device interface id picked for WAN","description_kind":"plain","optional":true},"zone_code":{"type":"string","description":"Device location zone code","description_kind":"plain","computed":true}},"block_types":{"cluster_details":{"nesting_mode":"list","block":{"attributes":{"cluster_id":{"type":"string","description":"The id of the cluster","description_kind":"plain","computed":true},"cluster_name":{"type":"string","description":"The name of the cluster device","description_kind":"plain","required":true},"num_of_nodes":{"type":"number","description":"The number of nodes in the cluster","description_kind":"plain","computed":true}},"block_types":{"node0":{"nesting_mode":"list","block":{"attributes":{"license_file_id":{"type":"string","description":"License file id. This is necessary for Fortinet and Juniper clusters","description_kind":"plain","optional":true},"license_token":{"type":"string","description":"License token. This is necessary for Palo Alto clusters","description_kind":"plain","optional":true,"sensitive":true},"name":{"type":"string","description":"The name of the node","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"The unique id of the node","description_kind":"plain","computed":true}},"block_types":{"vendor_configuration":{"nesting_mode":"list","block":{"attributes":{"activation_key":{"type":"string","description":"Activation key. This is required for Velocloud clusters","description_kind":"plain","optional":true,"sensitive":true},"admin_password":{"type":"string","description":"The administrative password of the device. You can use it to log in to the console. This field is not available for all device types","description_kind":"plain","optional":true,"computed":true,"sensitive":true},"controller1":{"type":"string","description":"System IP Address. Mandatory for the Fortinet SDWAN cluster device","description_kind":"plain","optional":true},"controller_fqdn":{"type":"string","description":"Controller fqdn. This is required for Velocloud clusters","description_kind":"plain","optional":true},"hostname":{"type":"string","description":"Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters","description_kind":"plain","optional":true},"root_password":{"type":"string","description":"The CLI password of the device. This field is relevant only for the Velocloud SDWAN cluster","description_kind":"plain","optional":true,"sensitive":true}},"description":"An object that has fields relevant to the vendor of the cluster device","description_kind":"plain"},"max_items":1}},"description":"An object that has node0 details","description_kind":"plain"},"min_items":1,"max_items":1},"node1":{"nesting_mode":"list","block":{"attributes":{"license_file_id":{"type":"string","description":"License file id. This is necessary for Fortinet and Juniper clusters","description_kind":"plain","optional":true},"license_token":{"type":"string","description":"License token. This is necessary for Palo Alto clusters","description_kind":"plain","optional":true,"sensitive":true},"name":{"type":"string","description":"The name of the node","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"The unique id of the node","description_kind":"plain","computed":true}},"block_types":{"vendor_configuration":{"nesting_mode":"list","block":{"attributes":{"activation_key":{"type":"string","description":"Activation key. This is required for Velocloud clusters","description_kind":"plain","optional":true,"sensitive":true},"admin_password":{"type":"string","description":"The administrative password of the device. You can use it to log in to the console. This field is not available for all device types","description_kind":"plain","optional":true,"computed":true,"sensitive":true},"controller1":{"type":"string","description":"System IP Address. Mandatory for the Fortinet SDWAN cluster device","description_kind":"plain","optional":true},"controller_fqdn":{"type":"string","description":"Controller fqdn. This is required for Velocloud clusters","description_kind":"plain","optional":true},"hostname":{"type":"string","description":"Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters","description_kind":"plain","optional":true},"root_password":{"type":"string","description":"The CLI password of the device. This field is relevant only for the Velocloud SDWAN cluster","description_kind":"plain","optional":true,"sensitive":true}},"description":"An object that has fields relevant to the vendor of the cluster device","description_kind":"plain"},"max_items":1}},"description":"An object that has node1 details","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"An object that has the cluster details","description_kind":"plain"},"max_items":1},"secondary_device":{"nesting_mode":"list","block":{"attributes":{"account_number":{"type":"string","description":"Device billing account number","description_kind":"plain","required":true},"acl_template_id":{"type":"string","description":"Unique identifier of applied ACL template","description_kind":"plain","optional":true},"additional_bandwidth":{"type":"number","description":"Additional Internet bandwidth, in Mbps, that will be allocated to the device","description_kind":"plain","optional":true,"computed":true},"asn":{"type":"number","description":"Autonomous system number","description_kind":"plain","computed":true},"cloud_init_file_id":{"type":"string","description":"Unique identifier of applied cloud init file","description_kind":"plain","optional":true},"hostname":{"type":"string","description":"Device hostname prefix","description_kind":"plain","optional":true},"ibx":{"type":"string","description":"Device location Equinix Business Exchange name","description_kind":"plain","computed":true},"interface":{"type":["list",["object",{"assigned_type":"string","id":"number","ip_address":"string","mac_address":"string","name":"string","operational_status":"string","status":"string","type":"string"}]],"description":"List of device interfaces","description_kind":"plain","computed":true},"license_file":{"type":"string","description":"Path to the license file that will be uploaded and applied on a device, applicable for some device types in BYOL licensing mode","description_kind":"plain","optional":true},"license_file_id":{"type":"string","description":"Unique identifier of applied license file","description_kind":"plain","optional":true,"computed":true},"license_status":{"type":"string","description":"Device license registration status","description_kind":"plain","computed":true},"license_token":{"type":"string","description":"License Token applicable for some device types in BYOL licensing mode","description_kind":"plain","optional":true},"metro_code":{"type":"string","description":"Device location metro code","description_kind":"plain","required":true},"mgmt_acl_template_uuid":{"type":"string","description":"Unique identifier of applied MGMT ACL template","description_kind":"plain","optional":true},"name":{"type":"string","description":"Device name","description_kind":"plain","required":true},"notifications":{"type":["set","string"],"description":"List of email addresses that will receive device status notifications","description_kind":"plain","required":true},"redundancy_type":{"type":"string","description":"Device redundancy type applicable for HA devices, either primary or secondary","description_kind":"plain","computed":true},"redundant_id":{"type":"string","description":"Unique identifier for a redundant device, applicable for HA device","description_kind":"plain","computed":true},"region":{"type":"string","description":"Device location region","description_kind":"plain","computed":true},"ssh_ip_address":{"type":"string","description":"IP address of SSH enabled interface on the device","description_kind":"plain","computed":true},"ssh_ip_fqdn":{"type":"string","description":"FQDN of SSH enabled interface on the device","description_kind":"plain","computed":true},"status":{"type":"string","description":"Device provisioning status","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Device unique identifier","description_kind":"plain","computed":true},"vendor_configuration":{"type":["map","string"],"description":"Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress)","description_kind":"plain","optional":true,"computed":true},"wan_interface_id":{"type":"string","description":"device interface id picked for WAN","description_kind":"plain","optional":true},"zone_code":{"type":"string","description":"Device location zone code","description_kind":"plain","computed":true}},"block_types":{"ssh_key":{"nesting_mode":"set","block":{"attributes":{"key_name":{"type":"string","description":"Reference by name to previously provisioned public SSH key","description_kind":"plain","required":true},"username":{"type":"string","description":"Username associated with given key","description_kind":"plain","required":true}},"description":"Definition of SSH key that will be provisioned on a device","description_kind":"plain"},"max_items":1}},"description":"Definition of secondary device applicable for HA setup","description_kind":"plain"},"max_items":1},"ssh_key":{"nesting_mode":"set","block":{"attributes":{"key_name":{"type":"string","description":"Reference by name to previously provisioned public SSH key","description_kind":"plain","required":true},"username":{"type":"string","description":"Username associated with given key","description_kind":"plain","required":true}},"description":"Definition of SSH key that will be provisioned on a device","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource allows creation and management of Equinix Network Edge virtual devices","description_kind":"plain"}},"equinix_network_device_link":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"name","description_kind":"plain","required":true},"status":{"type":"string","description":"Device link provisioning status","description_kind":"plain","computed":true},"subnet":{"type":"string","description":"subnet","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Device link unique identifier","description_kind":"plain","computed":true}},"block_types":{"device":{"nesting_mode":"set","block":{"attributes":{"asn":{"type":"number","description":"Device ASN number","description_kind":"plain","optional":true},"id":{"type":"string","description":"Device identifier","description_kind":"plain","required":true},"interface_id":{"type":"number","description":"Device network interface identifier to use for device link connection","description_kind":"plain","optional":true},"ip_address":{"type":"string","description":"Assigned IP address from device link subnet","description_kind":"plain","computed":true},"status":{"type":"string","description":"Device link connection provisioning status","description_kind":"plain","computed":true}},"description_kind":"plain"},"min_items":2},"link":{"nesting_mode":"set","block":{"attributes":{"account_number":{"type":"string","description":"Billing account number to be used for connection charges","description_kind":"plain","required":true},"dst_metro_code":{"type":"string","description":"Connection destination metro code","description_kind":"plain","required":true},"dst_zone_code":{"type":"string","description":"Connection destination zone code","description_kind":"plain","deprecated":true,"optional":true},"src_metro_code":{"type":"string","description":"Connection source metro code","description_kind":"plain","required":true},"src_zone_code":{"type":"string","description":"Connection source zone code","description_kind":"plain","deprecated":true,"optional":true},"throughput":{"type":"string","description":"Connection throughput","description_kind":"plain","required":true},"throughput_unit":{"type":"string","description":"Connection throughput unit","description_kind":"plain","required":true}},"description":"link","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource allows creation and management of Equinix Network Edge device links","description_kind":"plain"}},"equinix_network_file":{"version":0,"block":{"attributes":{"byol":{"type":"bool","description":"Boolean value that determines device licensing mode: bring your own license or subscription","description_kind":"plain","required":true},"content":{"type":"string","description":"Uploaded file content, expected to be a UTF-8 encoded string","description_kind":"plain","required":true,"sensitive":true},"device_type_code":{"type":"string","description":"Device type code","description_kind":"plain","required":true},"file_name":{"type":"string","description":"File name","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"File upload location metro code","description_kind":"plain","required":true},"process_type":{"type":"string","description":"File process type (LICENSE or CLOUD_INIT)","description_kind":"plain","required":true},"self_managed":{"type":"bool","description":"Boolean value that determines device management mode: self-managed or equinix-managed","description_kind":"plain","required":true},"status":{"type":"string","description":"File upload status","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Unique identifier of file resource","description_kind":"plain","computed":true}},"description":"Resource allows creation and management of Equinix Network Edge device files","description_kind":"plain"}},"equinix_network_ssh_key":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of SSH key used for identification","description_kind":"plain","required":true},"public_key":{"type":"string","description":"The SSH public key. If this is a file, it can be read using the file interpolation function","description_kind":"plain","required":true},"type":{"type":"string","description":"The type of SSH key: RSA (default) or DSA","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"The unique identifier of the key","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource allows creation and management of Equinix Network Edge SSH keys","description_kind":"plain"}},"equinix_network_ssh_user":{"version":0,"block":{"attributes":{"device_ids":{"type":["set","string"],"description":"list of device identifiers to which user will have access","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"password":{"type":"string","description":"SSH user password","description_kind":"plain","required":true,"sensitive":true},"username":{"type":"string","description":"SSH user login name","description_kind":"plain","required":true},"uuid":{"type":"string","description":"SSH user unique identifier","description_kind":"plain","computed":true}},"description":"Resource allows creation and management of Equinix Network Edge SSH users","description_kind":"plain"}}},"data_source_schemas":{"equinix_ecx_l2_sellerprofile":{"version":0,"block":{"attributes":{"additional_info":{"type":["set",["object",{"captured_in_email":"bool","data_type":"string","description":"string","mandatory":"bool","name":"string"}]],"description":"One or more specifications of additional buyer information attributes that can be provided in connection definition that uses given seller profile","description_kind":"plain","computed":true},"description":{"type":"string","description":"Seller Profile text description","description_kind":"plain","computed":true},"encapsulation":{"type":"string","description":"Seller profile's encapsulation (either Dot1q or QinQ)","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":["set",["object",{"code":"string","ibxes":["set","string"],"name":"string","regions":["map","string"]}]],"description":"One or more specifications of metro locations supported by seller profile","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the seller profile","description_kind":"plain","optional":true,"computed":true},"organization_global_name":{"type":"string","description":"Name of seller's global organization","description_kind":"plain","optional":true,"computed":true},"organization_name":{"type":"string","description":"Name of seller's organization","description_kind":"plain","optional":true,"computed":true},"redundancy_required":{"type":"bool","description":"Boolean that indicate if seller requires connections to be redundant","description_kind":"plain","computed":true},"speed_band":{"type":["set",["object",{"speed":"number","speed_unit":"string"}]],"description":"One or more specifications of speed/bandwidth supported by given seller profile","description_kind":"plain","computed":true},"speed_customization_allowed":{"type":"bool","description":"Boolean that indicates if seller allows customer to enter a custom connection speed","description_kind":"plain","computed":true},"speed_from_api":{"type":"bool","description":"Boolean that indicates if seller is deriving connection speed from an API call","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Unique identifier of the seller profile","description_kind":"plain","computed":true}},"description":"Use this data source to get details of Equinix Fabric layer 2 seller profile with a given name and / or organization","description_kind":"plain"}},"equinix_ecx_l2_sellerprofiles":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro_codes":{"type":["set","string"],"description":"List of metro codes of locations that should be served by resulting profiles","description_kind":"plain","optional":true},"name_regex":{"type":"string","description":"A regex string to apply on returned seller profile names and filter search results","description_kind":"plain","optional":true},"organization_global_name":{"type":"string","description":"Name of seller's global organization","description_kind":"plain","optional":true},"organization_name":{"type":"string","description":"Name of seller's organization","description_kind":"plain","optional":true},"profiles":{"type":["list",["object",{"additional_info":["set",["object",{"captured_in_email":"bool","data_type":"string","description":"string","mandatory":"bool","name":"string"}]],"description":"string","encapsulation":"string","metro":["set",["object",{"code":"string","ibxes":["set","string"],"name":"string","regions":["map","string"]}]],"name":"string","organization_global_name":"string","organization_name":"string","redundancy_required":"bool","speed_band":["set",["object",{"speed":"number","speed_unit":"string"}]],"speed_customization_allowed":"bool","speed_from_api":"bool","uuid":"string"}]],"description":"Resulting list of profiles that match filtering criteria","description_kind":"plain","computed":true},"speed_bands":{"type":["set","string"],"description":"List of speed bands that should be supported by resulting profiles","description_kind":"plain","optional":true}},"description":"Use this data source to get list of Equinix Fabric layer 2 seller profiles","description_kind":"plain"}},"equinix_ecx_port":{"version":0,"block":{"attributes":{"bandwidth":{"type":"string","description":"Port Bandwidth in bytes","description_kind":"plain","computed":true},"buyout":{"type":"bool","description":"Boolean value that indicates whether the port supports unlimited connections.","description_kind":"plain","computed":true},"encapsulation":{"type":"string","description":"The VLAN encapsulation of the port (Dot1q or QinQ)","description_kind":"plain","computed":true},"ibx":{"type":"string","description":"Port location Equinix Business Exchange (IBX)","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Port location metro code","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the port","description_kind":"plain","required":true},"priority":{"type":"string","description":"The priority of the device (primary / secondary) where the port resides","description_kind":"plain","computed":true},"region":{"type":"string","description":"Port location region","description_kind":"plain","computed":true},"status":{"type":"string","description":"Port status that indicates whether a port has been assigned or is ready for connection","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Unique identifier of the por","description_kind":"plain","computed":true}},"description":"Use this data source to get details of Equinix Fabric port with a given name","description_kind":"plain"}},"equinix_fabric_cloud_router":{"version":0,"block":{"attributes":{"account":{"type":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"description":"Customer account information that is associated with this Fabric Cloud Router","description_kind":"plain","computed":true},"bgp_ipv4_routes_count":{"type":"number","description_kind":"plain","computed":true},"bgp_ipv6_routes_count":{"type":"number","description_kind":"plain","computed":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures Fabric Cloud Router lifecycle change information","description_kind":"plain","computed":true},"connections_count":{"type":"number","description_kind":"plain","computed":true},"description":{"type":"string","description":"Customer-provided Fabric Cloud Router description","description_kind":"plain","computed":true},"equinix_asn":{"type":"number","description":"Equinix ASN","description_kind":"plain","computed":true},"href":{"type":"string","description":"Fabric Cloud Router URI information","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":["set",["object",{"href":"string","ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"description":"Fabric Cloud Router location","description_kind":"plain","computed":true},"name":{"type":"string","description":"Fabric Cloud Router name. An alpha-numeric 24 characters string which can include only hyphens and underscores","description_kind":"plain","computed":true},"notifications":{"type":["list",["object",{"emails":["list","string"],"send_interval":"string","type":"string"}]],"description":"Preferences for notifications on Fabric Cloud Router configuration or status changes","description_kind":"plain","computed":true},"order":{"type":["set",["object",{"billing_tier":"string","order_id":"string","order_number":"string","purchase_order_number":"string"}]],"description":"Order information related to this Fabric Cloud Router","description_kind":"plain","computed":true},"package":{"type":["set",["object",{"code":"string"}]],"description":"Fabric Cloud Router package information","description_kind":"plain","computed":true},"state":{"type":"string","description":"Fabric Cloud Router overall state","description_kind":"plain","computed":true},"type":{"type":"string","description":"Defines the Fabric Cloud Router type like XF_GATEWAY","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned Fabric Cloud Router identifier","description_kind":"plain","optional":true}},"block_types":{"project":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource URL","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"Project Id","description_kind":"plain","computed":true}},"description":"Project information","description_kind":"plain"}}},"description":"Fabric V4 API compatible data resource that allow user to fetch Fabric Cloud Router for a given UUID\n\n~\u003e **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)","description_kind":"plain"}},"equinix_fabric_connection":{"version":0,"block":{"attributes":{"a_side":{"type":["set",["object",{"access_point":["set",["object",{"account":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"authentication_key":"string","gateway":["set",["object",{"href":"string","state":"string","uuid":"string"}]],"interface":["set",["object",{"id":"string","type":"string","uuid":"string"}]],"link_protocol":["set",["object",{"type":"string","vlan_c_tag":"number","vlan_s_tag":"number","vlan_tag":"number"}]],"location":["set",["object",{"href":"string","ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"peering_type":"string","port":["set",["object",{"href":"string","name":"string","redundancy":["set",["object",{"priority":"string"}]],"uuid":"string"}]],"profile":["set",["object",{"access_point_type_configs":["list",["object",{"allow_bandwidth_auto_approval":"bool","allow_bandwidth_upgrade":"bool","allow_custom_bandwidth":"bool","allow_remote_connections":"bool","api_config":["set",["object",{"allow_over_subscription":"bool","api_available":"bool","bandwidth_from_api":"bool","equinix_managed_port":"bool","equinix_managed_vlan":"bool","integration_id":"string","over_subscription_limit":"number"}]],"authentication_key":["set",["object",{"description":"string","label":"string","required":"bool"}]],"bandwidth_alert_threshold":"number","connection_label":"string","connection_redundancy_required":"bool","enable_auto_generate_service_key":"bool","link_protocol_config":["set",["object",{"encapsulation":"string","encapsulation_strategy":"string","reuse_vlan_s_tag":"bool"}]],"supported_bandwidths":["list","number"],"type":"string","uuid":"string"}]],"description":"string","href":"string","name":"string","type":"string","uuid":"string"}]],"provider_connection_id":"string","router":["set",["object",{"href":"string","state":"string","uuid":"string"}]],"seller_region":"string","type":"string","virtual_device":["set",["object",{"href":"string","type":"string","uuid":"string"}]]}]],"service_token":["set",["object",{"description":"string","href":"string","type":"string","uuid":"string"}]]}]],"description":"Requester or Customer side connection configuration object of the multi-segment connection","description_kind":"plain","computed":true},"account":{"type":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"description":"Customer account information that is associated with this connection","description_kind":"plain","computed":true},"additional_info":{"type":["list",["object",{"key":"string","value":"string"}]],"description":"Connection additional information","description_kind":"plain","computed":true},"bandwidth":{"type":"number","description":"Connection bandwidth in Mbps","description_kind":"plain","computed":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures connection lifecycle change information","description_kind":"plain","computed":true},"description":{"type":"string","description":"Customer-provided connection description","description_kind":"plain","computed":true},"direction":{"type":"string","description":"Connection directionality from the requester point of view","description_kind":"plain","computed":true},"href":{"type":"string","description":"Connection URI information","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_remote":{"type":"bool","description":"Connection property derived from access point locations","description_kind":"plain","computed":true},"name":{"type":"string","description":"Connection name. An alpha-numeric 24 characters string which can include only hyphens and underscores","description_kind":"plain","computed":true},"notifications":{"type":["list",["object",{"emails":["list","string"],"send_interval":"string","type":"string"}]],"description":"Preferences for notifications on connection configuration or status changes","description_kind":"plain","computed":true},"operation":{"type":["set",["object",{"equinix_status":"string","errors":["list",["object",{"additional_info":["list",["object",{"property":"string","reason":"string"}]],"correlation_id":"string","details":"string","error_code":"string","error_message":"string","help":"string"}]],"provider_status":"string"}]],"description":"Connection specific operational data","description_kind":"plain","computed":true},"order":{"type":["set",["object",{"billing_tier":"string","order_id":"string","order_number":"string","purchase_order_number":"string"}]],"description":"Order related to this connection information","description_kind":"plain","computed":true},"redundancy":{"type":["set",["object",{"group":"string","priority":"string"}]],"description":"Redundancy Information","description_kind":"plain","computed":true},"state":{"type":"string","description":"Connection overall state","description_kind":"plain","computed":true},"type":{"type":"string","description":"Defines the connection type like VG_VC, EVPL_VC, EPL_VC, EC_VC, IP_VC, IPWAN_VC, ACCESS_EPL_VC","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned connection identifier","description_kind":"plain","optional":true},"z_side":{"type":["set",["object",{"access_point":["set",["object",{"account":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"authentication_key":"string","gateway":["set",["object",{"href":"string","state":"string","uuid":"string"}]],"interface":["set",["object",{"id":"string","type":"string","uuid":"string"}]],"link_protocol":["set",["object",{"type":"string","vlan_c_tag":"number","vlan_s_tag":"number","vlan_tag":"number"}]],"location":["set",["object",{"href":"string","ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"peering_type":"string","port":["set",["object",{"href":"string","name":"string","redundancy":["set",["object",{"priority":"string"}]],"uuid":"string"}]],"profile":["set",["object",{"access_point_type_configs":["list",["object",{"allow_bandwidth_auto_approval":"bool","allow_bandwidth_upgrade":"bool","allow_custom_bandwidth":"bool","allow_remote_connections":"bool","api_config":["set",["object",{"allow_over_subscription":"bool","api_available":"bool","bandwidth_from_api":"bool","equinix_managed_port":"bool","equinix_managed_vlan":"bool","integration_id":"string","over_subscription_limit":"number"}]],"authentication_key":["set",["object",{"description":"string","label":"string","required":"bool"}]],"bandwidth_alert_threshold":"number","connection_label":"string","connection_redundancy_required":"bool","enable_auto_generate_service_key":"bool","link_protocol_config":["set",["object",{"encapsulation":"string","encapsulation_strategy":"string","reuse_vlan_s_tag":"bool"}]],"supported_bandwidths":["list","number"],"type":"string","uuid":"string"}]],"description":"string","href":"string","name":"string","type":"string","uuid":"string"}]],"provider_connection_id":"string","router":["set",["object",{"href":"string","state":"string","uuid":"string"}]],"seller_region":"string","type":"string","virtual_device":["set",["object",{"href":"string","type":"string","uuid":"string"}]]}]],"service_token":["set",["object",{"description":"string","href":"string","type":"string","uuid":"string"}]]}]],"description":"Destination or Provider side connection configuration object of the multi-segment connection","description_kind":"plain","computed":true}},"block_types":{"project":{"nesting_mode":"set","block":{"attributes":{"href":{"type":"string","description":"Unique Resource URL","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"Project Id","description_kind":"plain","computed":true}},"description":"Project information","description_kind":"plain"}}},"description":"Fabric V4 API compatible data resource that allow user to fetch connection for a given UUID\n\n~\u003e **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)","description_kind":"plain"}},"equinix_fabric_port":{"version":0,"block":{"attributes":{"account":{"type":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"description":"Customer account information that is associated with this port","description_kind":"plain","computed":true},"available_bandwidth":{"type":"number","description":"Port available bandwidth in Mbps","description_kind":"plain","computed":true},"bandwidth":{"type":"number","description":"Port bandwidth in Mbps","description_kind":"plain","computed":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures port lifecycle change information","description_kind":"plain","computed":true},"description":{"type":"string","description":"Port description","description_kind":"plain","computed":true},"device":{"type":["set",["object",{"name":"string","redundancy":["set",["object",{"group":"string","priority":"string"}]]}]],"description":"Port device","description_kind":"plain","computed":true},"encapsulation":{"type":["set",["object",{"tag_protocol_id":"string","type":"string"}]],"description":"Port encapsulation protocol","description_kind":"plain","computed":true},"href":{"type":"string","description":"Port URI information","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"lag_enabled":{"type":"bool","description":"Port Lag","description_kind":"plain","computed":true},"location":{"type":["set",["object",{"href":"string","ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"description":"Port location information","description_kind":"plain","computed":true},"name":{"type":"string","description":"Port name","description_kind":"plain","computed":true},"operation":{"type":["set",["object",{"connection_count":"number","op_status_changed_at":"string","operational_status":"string"}]],"description":"Port specific operational data","description_kind":"plain","computed":true},"redundancy":{"type":["set",["object",{"enabled":"bool","group":"string","priority":"string"}]],"description":"Port redundancy information","description_kind":"plain","computed":true},"service_type":{"type":"string","description":"Port service type","description_kind":"plain","computed":true},"state":{"type":"string","description":"Port state","description_kind":"plain","computed":true},"type":{"type":"string","description":"Port type","description_kind":"plain","computed":true},"used_bandwidth":{"type":"number","description":"Port used bandwidth in Mbps","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix-assigned port identifier","description_kind":"plain","required":true}},"description":"Fabric V4 API compatible data resource that allow user to fetch port by uuid\n\n~\u003e **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)","description_kind":"plain"}},"equinix_fabric_ports":{"version":0,"block":{"attributes":{"data":{"type":["list",["object",{"account":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string"}]],"available_bandwidth":"number","bandwidth":"number","change_log":["set",["object",{"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"}]],"description":"string","device":["set",["object",{"name":"string","redundancy":["set",["object",{"group":"string","priority":"string"}]]}]],"encapsulation":["set",["object",{"tag_protocol_id":"string","type":"string"}]],"href":"string","lag_enabled":"bool","location":["set",["object",{"href":"string","ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"name":"string","operation":["set",["object",{"connection_count":"number","op_status_changed_at":"string","operational_status":"string"}]],"redundancy":["set",["object",{"enabled":"bool","group":"string","priority":"string"}]],"service_type":"string","state":"string","type":"string","used_bandwidth":"number","uuid":"string"}]],"description":"List of Ports","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"filters":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description":"Query Parameter to Get Ports By Name","description_kind":"plain","optional":true}},"description":"name","description_kind":"plain"}}},"description":"Fabric V4 API compatible data resource that allow user to fetch port by name\n\n~\u003e **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)","description_kind":"plain"}},"equinix_fabric_routing_protocol":{"version":0,"block":{"attributes":{"bgp_auth_key":{"type":"string","description":"BGP authorization key","description_kind":"plain","optional":true},"change":{"type":["set",["object",{"href":"string","type":"string","uuid":"string"}]],"description":"Routing Protocol configuration Changes","description_kind":"plain","computed":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures Routing Protocol lifecycle change information","description_kind":"plain","computed":true},"connection_uuid":{"type":"string","description":"Connection URI associated with Routing Protocol","description_kind":"plain","required":true},"customer_asn":{"type":"number","description":"Customer-provided ASN","description_kind":"plain","optional":true},"description":{"type":"string","description":"Customer-provided Fabric Routing Protocol description","description_kind":"plain","optional":true},"equinix_asn":{"type":"number","description":"Equinix ASN","description_kind":"plain","computed":true},"href":{"type":"string","description":"Routing Protocol URI information","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores","description_kind":"plain","optional":true},"operation":{"type":["set",["object",{"errors":["list",["object",{"additional_info":["list",["object",{"property":"string","reason":"string"}]],"correlation_id":"string","details":"string","error_code":"string","error_message":"string","help":"string"}]]}]],"description":"Routing Protocol type-specific operational data","description_kind":"plain","computed":true},"state":{"type":"string","description":"Routing Protocol overall state","description_kind":"plain","computed":true},"type":{"type":"string","description":"Defines the routing protocol type like BGP or DIRECT","description_kind":"plain","optional":true},"uuid":{"type":"string","description":"Equinix-assigned routing protocol identifier","description_kind":"plain","optional":true,"computed":true}},"block_types":{"bfd":{"nesting_mode":"set","block":{"attributes":{"enabled":{"type":"bool","description":"Bidirectional Forwarding Detection enablement","description_kind":"plain","required":true},"interval":{"type":"string","description":"Interval range between the received BFD control packets","description_kind":"plain","optional":true}},"description":"Bidirectional Forwarding Detection","description_kind":"plain"}},"bgp_ipv4":{"nesting_mode":"set","block":{"attributes":{"customer_peer_ip":{"type":"string","description":"Customer side peering ip","description_kind":"plain","required":true},"enabled":{"type":"bool","description":"Admin status for the BGP session","description_kind":"plain","optional":true},"equinix_peer_ip":{"type":"string","description":"Equinix side peering ip","description_kind":"plain","computed":true}},"description":"Routing Protocol BGP IPv4","description_kind":"plain"}},"bgp_ipv6":{"nesting_mode":"set","block":{"attributes":{"customer_peer_ip":{"type":"string","description":"Customer side peering ip","description_kind":"plain","required":true},"enabled":{"type":"bool","description":"Admin status for the BGP session","description_kind":"plain","optional":true},"equinix_peer_ip":{"type":"string","description":"Equinix side peering ip","description_kind":"plain","computed":true}},"description":"Routing Protocol BGP IPv6","description_kind":"plain"}},"direct_ipv4":{"nesting_mode":"set","block":{"attributes":{"equinix_iface_ip":{"type":"string","description":"Equinix side Interface IP address","description_kind":"plain","required":true}},"description":"Routing Protocol Direct IPv4","description_kind":"plain"}},"direct_ipv6":{"nesting_mode":"set","block":{"attributes":{"equinix_iface_ip":{"type":"string","description":"Equinix side Interface IP address\n\n","description_kind":"plain","optional":true}},"description":"Routing Protocol Direct IPv6","description_kind":"plain"}}},"description":"Fabric V4 API compatible data resource that allow user to fetch routing protocol for a given UUID\n\n~\u003e **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)","description_kind":"plain"}},"equinix_fabric_service_profile":{"version":0,"block":{"attributes":{"access_point_type_configs":{"type":["list",["object",{"allow_bandwidth_auto_approval":"bool","allow_bandwidth_upgrade":"bool","allow_custom_bandwidth":"bool","allow_remote_connections":"bool","api_config":["set",["object",{"allow_over_subscription":"bool","api_available":"bool","bandwidth_from_api":"bool","equinix_managed_port":"bool","equinix_managed_vlan":"bool","integration_id":"string","over_subscription_limit":"number"}]],"authentication_key":["set",["object",{"description":"string","label":"string","required":"bool"}]],"bandwidth_alert_threshold":"number","connection_label":"string","connection_redundancy_required":"bool","enable_auto_generate_service_key":"bool","link_protocol_config":["set",["object",{"encapsulation":"string","encapsulation_strategy":"string","reuse_vlan_s_tag":"bool"}]],"supported_bandwidths":["list","number"],"type":"string","uuid":"string"}]],"description":"Access point config information","description_kind":"plain","computed":true},"account":{"type":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string","ucm_id":"string"}]],"description":"Account","description_kind":"plain","computed":true},"allowed_emails":{"type":["list","string"],"description":"Array of contact emails","description_kind":"plain","computed":true},"change_log":{"type":["set",["object",{"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"}]],"description":"Captures connection lifecycle change information","description_kind":"plain","computed":true},"custom_fields":{"type":["list",["object",{"capture_in_email":"bool","data_type":"string","description":"string","label":"string","options":["list","string"],"required":"bool"}]],"description":"Custom Fields","description_kind":"plain","computed":true},"description":{"type":"string","description":"User-provided service description","description_kind":"plain","computed":true},"href":{"type":"string","description":"Service Profile URI response attribute","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"marketing_info":{"type":["set",["object",{"logo":"string","process_step":["list",["object",{"description":"string","sub_title":"string","title":"string"}]],"promotion":"bool"}]],"description":"Marketing Info","description_kind":"plain","computed":true},"metros":{"type":["list",["object",{"code":"string","display_name":"string","ibxs":["list","string"],"in_trail":"bool","name":"string","seller_regions":["map","string"]}]],"description":"Access point config information","description_kind":"plain","computed":true},"name":{"type":"string","description":"Customer-assigned service profile name","description_kind":"plain","computed":true},"notifications":{"type":["list",["object",{"emails":["list","string"],"send_interval":"string","type":"string"}]],"description":"Preferences for notifications on connection configuration or status changes","description_kind":"plain","computed":true},"ports":{"type":["list",["object",{"cross_connect_id":"string","location":["set",["object",{"ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"seller_region":"string","seller_region_description":"string","type":"string","uuid":"string"}]],"description":"Ports","description_kind":"plain","computed":true},"project":{"type":["set",["object",{"href":"string","project_id":"string"}]],"description":"Project information","description_kind":"plain","computed":true},"self_profile":{"type":"bool","description":"Self Profile indicating if the profile is created for customer's self use","description_kind":"plain","computed":true},"state":{"type":"string","description":"Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"Tags attached to the connection","description_kind":"plain","computed":true},"type":{"type":"string","description":"Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Equinix assigned service profile identifier","description_kind":"plain","required":true},"visibility":{"type":"string","description":"Service profile visibility - PUBLIC, PRIVATE","description_kind":"plain","computed":true}},"description":"Fabric V4 API compatible data resource that allow user to fetch Service Profile by UUID filter criteria\n\n~\u003e **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","description_kind":"plain"}},"equinix_fabric_service_profiles":{"version":0,"block":{"attributes":{"data":{"type":["list",["object",{"access_point_type_configs":["list",["object",{"allow_bandwidth_auto_approval":"bool","allow_bandwidth_upgrade":"bool","allow_custom_bandwidth":"bool","allow_remote_connections":"bool","api_config":["set",["object",{"allow_over_subscription":"bool","api_available":"bool","bandwidth_from_api":"bool","equinix_managed_port":"bool","equinix_managed_vlan":"bool","integration_id":"string","over_subscription_limit":"number"}]],"authentication_key":["set",["object",{"description":"string","label":"string","required":"bool"}]],"bandwidth_alert_threshold":"number","connection_label":"string","connection_redundancy_required":"bool","enable_auto_generate_service_key":"bool","link_protocol_config":["set",["object",{"encapsulation":"string","encapsulation_strategy":"string","reuse_vlan_s_tag":"bool"}]],"supported_bandwidths":["list","number"],"type":"string","uuid":"string"}]],"account":["set",["object",{"account_name":"string","account_number":"number","global_cust_id":"string","global_org_id":"string","global_organization_name":"string","org_id":"number","organization_name":"string","ucm_id":"string"}]],"allowed_emails":["list","string"],"change_log":["set",["object",{"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"}]],"custom_fields":["list",["object",{"capture_in_email":"bool","data_type":"string","description":"string","label":"string","options":["list","string"],"required":"bool"}]],"description":"string","href":"string","marketing_info":["set",["object",{"logo":"string","process_step":["list",["object",{"description":"string","sub_title":"string","title":"string"}]],"promotion":"bool"}]],"metros":["list",["object",{"code":"string","display_name":"string","ibxs":["list","string"],"in_trail":"bool","name":"string","seller_regions":["map","string"]}]],"name":"string","notifications":["list",["object",{"emails":["list","string"],"send_interval":"string","type":"string"}]],"ports":["list",["object",{"cross_connect_id":"string","location":["set",["object",{"ibx":"string","metro_code":"string","metro_name":"string","region":"string"}]],"seller_region":"string","seller_region_description":"string","type":"string","uuid":"string"}]],"project":["set",["object",{"href":"string","project_id":"string"}]],"self_profile":"bool","state":"string","tags":["set","string"],"type":"string","uuid":"string","visibility":"string"}]],"description":"List of Service Profiles","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"view_point":{"type":"string","description":"flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide","description_kind":"plain","optional":true}},"block_types":{"filter":{"nesting_mode":"set","block":{"attributes":{"operator":{"type":"string","description":"Possible operator to use on filters = - equal","description_kind":"plain","optional":true},"property":{"type":"string","description":"Search Criteria for Service Profile - /name, /uuid, /state, /metros/code, /visibility, /type","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"Values","description_kind":"plain","optional":true}},"description":"Service Profile Search Filter","description_kind":"plain"},"max_items":1},"sort":{"nesting_mode":"list","block":{"attributes":{"direction":{"type":"string","description":"Priority type- DESC, ASC","description_kind":"plain","optional":true},"property":{"type":"string","description":"Search operation sort criteria /name /state /changeLog/createdDateTime /changeLog/updatedDateTime","description_kind":"plain","optional":true}},"description":"Service Profile Sort criteria for Search Request response payload","description_kind":"plain"}}},"description":"Fabric V4 API compatible data resource that allow user to fetch Service Profile by name filter criteria\n\n~\u003e **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)","description_kind":"plain"}},"equinix_metal_connection":{"version":0,"block":{"attributes":{"connection_id":{"type":"string","description":"ID of the connection to lookup","description_kind":"plain","required":true},"contact_email":{"type":"string","description":"The preferred email used for communication and notifications about the Equinix Fabric interconnection","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description of the connection resource","description_kind":"plain","computed":true},"facility":{"type":"string","description":"Facility which the connection is scoped to","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"Metro which the connection is scoped to","description_kind":"plain","computed":true},"mode":{"type":"string","description":"Connection mode - standard or tunnel","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the connection resource","description_kind":"plain","computed":true},"organization_id":{"type":"string","description":"ID of organization to which the connection is scoped to","description_kind":"plain","computed":true},"ports":{"type":["list",["object",{"id":"string","link_status":"string","name":"string","role":"string","speed":"number","status":"string","virtual_circuit_ids":["list","string"]}]],"description":"List of connection ports - primary (`ports[0]`) and secondary (`ports[1]`)","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"ID of project to which the connection belongs","description_kind":"plain","computed":true},"redundancy":{"type":"string","description":"Connection redundancy - redundant or primary","description_kind":"plain","computed":true},"service_token_type":{"type":"string","description":"Only used with shared connection. Type of service token to use for the connection, a_side or z_side","description_kind":"plain","computed":true},"service_tokens":{"type":["list",["object",{"expires_at":"string","id":"string","max_allowed_speed":"string","role":"string","state":"string","type":"string"}]],"description":"Only used with shared connection. List of service tokens required to continue the setup process with [equinix_ecx_l2_connection](https://registry.terraform.io/providers/equinix/equinix/latest/docs/resources/equinix_ecx_l2_connection) or from the [Equinix Fabric Portal](https://ecxfabric.equinix.com/dashboard)","description_kind":"plain","computed":true},"speed":{"type":"string","description":"Port speed. Possible values are 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps","description_kind":"plain","computed":true},"status":{"type":"string","description":"Status of the connection resource","description_kind":"plain","computed":true},"tags":{"type":["list","string"],"description":"Tags attached to the connection","description_kind":"plain","computed":true},"token":{"type":"string","description":"Only used with shared connection. Fabric Token required to continue the setup process with [equinix_ecx_l2_connection](https://registry.terraform.io/providers/equinix/equinix/latest/docs/resources/equinix_ecx_l2_connection) or from the [Equinix Fabric Portal](https://ecxfabric.equinix.com/dashboard)","description_kind":"plain","deprecated":true,"computed":true},"type":{"type":"string","description":"Connection type - dedicated or shared","description_kind":"plain","computed":true},"vlans":{"type":["list","number"],"description":"Attached vlans, only in shared connection","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_device":{"version":0,"block":{"attributes":{"access_private_ipv4":{"type":"string","description":"The ipv4 private IP assigned to the device","description_kind":"plain","computed":true},"access_public_ipv4":{"type":"string","description":"The ipv4 management IP assigned to the device","description_kind":"plain","computed":true},"access_public_ipv6":{"type":"string","description":"The ipv6 management IP assigned to the device","description_kind":"plain","computed":true},"always_pxe":{"type":"bool","description_kind":"plain","computed":true},"billing_cycle":{"type":"string","description":"The billing cycle of the device (monthly or hourly)","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description string for the device","description_kind":"plain","computed":true},"device_id":{"type":"string","description":"Device ID","description_kind":"plain","optional":true,"computed":true},"facility":{"type":"string","description":"The facility where the device is deployed","description_kind":"plain","deprecated":true,"computed":true},"hardware_reservation_id":{"type":"string","description":"The id of hardware reservation which this device occupies","description_kind":"plain","computed":true},"hostname":{"type":"string","description":"The device name","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ipxe_script_url":{"type":"string","description_kind":"plain","computed":true},"metro":{"type":"string","description":"The metro where the device is deployed","description_kind":"plain","computed":true},"network":{"type":["list",["object",{"address":"string","cidr":"number","family":"number","gateway":"string","public":"bool"}]],"description":"The device's private and public IP (v4 and v6) network details. When a device is run without any special network configuration, it will have 3 networks: ublic IPv4 at equinix_metal_device.name.network.0, IPv6 at equinix_metal_device.name.network.1 and private IPv4 at equinix_metal_device.name.network.2. Elastic addresses then stack by type - an assigned public IPv4 will go after the management public IPv4 (to index 1), and will then shift the indices of the IPv6 and private IPv4. Assigned private IPv4 will go after the management private IPv4 (to the end of the network list).","description_kind":"plain","computed":true},"network_type":{"type":"string","description":"L2 network type of the device, one oflayer3, hybrid, layer2-individual, layer2-bonded","description_kind":"plain","computed":true},"operating_system":{"type":"string","description":"The operating system running on the device","description_kind":"plain","computed":true},"plan":{"type":"string","description":"The hardware config of the device","description_kind":"plain","computed":true},"ports":{"type":["list",["object",{"bonded":"bool","id":"string","mac":"string","name":"string","type":"string"}]],"description":"Ports assigned to the device","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"The id of the project in which the devices exists","description_kind":"plain","optional":true,"computed":true},"root_password":{"type":"string","description":"Root password to the server (if still available)","description_kind":"plain","computed":true,"sensitive":true},"ssh_key_ids":{"type":["list","string"],"description":"List of IDs of SSH keys deployed in the device, can be both user or project SSH keys","description_kind":"plain","computed":true},"state":{"type":"string","description":"The state of the device","description_kind":"plain","computed":true},"storage":{"type":"string","description_kind":"plain","computed":true},"tags":{"type":["list","string"],"description":"Tags attached to the device","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_device_bgp_neighbors":{"version":0,"block":{"attributes":{"bgp_neighbors":{"type":["list",["object",{"address_family":"number","customer_as":"number","customer_ip":"string","md5_enabled":"bool","md5_password":"string","multihop":"bool","peer_as":"number","peer_ips":["list","string"],"routes_in":["list",["object",{"exact":"bool","route":"string"}]],"routes_out":["list",["object",{"exact":"bool","route":"string"}]]}]],"description":"Array of BGP neighbor records","description_kind":"plain","computed":true},"device_id":{"type":"string","description":"UUID of BGP-enabled device whose neighbors to list","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"equinix_metal_devices":{"version":0,"block":{"attributes":{"devices":{"type":["list",["object",{"access_private_ipv4":"string","access_public_ipv4":"string","access_public_ipv6":"string","always_pxe":"bool","billing_cycle":"string","description":"string","device_id":"string","facility":"string","hardware_reservation_id":"string","hostname":"string","ipxe_script_url":"string","metro":"string","network":["list",["object",{"address":"string","cidr":"number","family":"number","gateway":"string","public":"bool"}]],"network_type":"string","operating_system":"string","plan":"string","ports":["list",["object",{"bonded":"bool","id":"string","mac":"string","name":"string","type":"string"}]],"project_id":"string","root_password":"string","ssh_key_ids":["list","string"],"state":"string","storage":"string","tags":["list","string"]}]],"description":"List of devices that match specified filters","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"organization_id":{"type":"string","description":"The id of the organization to query for devices","description_kind":"plain","optional":true},"project_id":{"type":"string","description":"The id of the project to query for devices","description_kind":"plain","optional":true},"search":{"type":"string","description":"Search string to filter devices by hostname, description, short_id, reservation short_id, tags, plan name, plan slug, facility code, facility name, operating system name, operating system slug, IP addresses.","description_kind":"plain","optional":true}},"block_types":{"filter":{"nesting_mode":"set","block":{"attributes":{"all":{"type":"bool","description":"If is set to true, the values are joined with an AND, and the requests returns only the results that match all specified values","description_kind":"plain","optional":true},"attribute":{"type":"string","description":"The attribute used to filter. Filter attributes are case-sensitive","description_kind":"plain","required":true},"match_by":{"type":"string","description":"The type of comparison to apply. One of: in (default), re, substring, less_than, less_than_or_equal, greater_than, greater_than_or_equal","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"The filter values. Filter values are case-sensitive. If you specify multiple values for a filter, the values are joined with an OR by default, and the request returns all results that match any of the specified values","description_kind":"plain","required":true}},"description":"One or more attribute/values pairs on which to filter results","description_kind":"plain"}},"sort":{"nesting_mode":"list","block":{"attributes":{"attribute":{"type":"string","description":"The attribute used to sort the results. Sort attributes are case-sensitive","description_kind":"plain","required":true},"direction":{"type":"string","description":"Sort results in ascending or descending order. Strings are sorted in alphabetical order. One of: asc, desc","description_kind":"plain","optional":true}},"description":"One or more attribute/direction pairs on which to sort results. If multiple sorts are provided, they will be applied in order","description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_facility":{"version":0,"block":{"attributes":{"code":{"type":"string","description":"The code of the Facility to match","description_kind":"plain","required":true},"features":{"type":["list","string"],"description":"The features of this Facility","description_kind":"plain","computed":true},"features_required":{"type":["set","string"],"description":"Features which the facility needs to have","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"This facility's metro code","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of this Facility","description_kind":"plain","computed":true}},"block_types":{"capacity":{"nesting_mode":"list","block":{"attributes":{"plan":{"type":"string","description":"Plan which has to be available in selected location","description_kind":"plain","required":true},"quantity":{"type":"number","description_kind":"plain","optional":true}},"description":"Optional list of capacity specifications by plan","description_kind":"plain"}}},"description_kind":"plain","deprecated":true}},"equinix_metal_gateway":{"version":0,"block":{"attributes":{"gateway_id":{"type":"string","description":"UUID of the Metal Gateway to fetch","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_reservation_id":{"type":"string","description":"UUID of the IP Reservation to associate, must be in the same metro as the VLAN","description_kind":"plain","computed":true},"private_ipv4_subnet_size":{"type":"number","description":"Size of the private IPv4 subnet to create for this gateway, one of [8 16 32 64 128]","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"UUID of the Project where the Gateway is scoped to","description_kind":"plain","computed":true},"state":{"type":"string","description":"Status of the virtual circuit resource","description_kind":"plain","computed":true},"vlan_id":{"type":"string","description":"UUID of the VLAN to associate","description_kind":"plain","computed":true},"vrf_id":{"type":"string","description":"UUID of the VRF associated with the IP Reservation","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_hardware_reservation":{"version":0,"block":{"attributes":{"device_id":{"type":"string","description":"UUID of device occupying the reservation","description_kind":"plain","optional":true,"computed":true},"facility":{"type":"string","description":"Facility for the reservation","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description":"ID of the hardware reservation to look up","description_kind":"plain","optional":true,"computed":true},"plan":{"type":"string","description":"Plan type for the reservation","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"UUID of project this reservation is scoped to","description_kind":"plain","computed":true},"provisionable":{"type":"bool","description":"Flag indicating whether the reserved server is provisionable or not. Spare devices can't be provisioned unless they are activated first","description_kind":"plain","computed":true},"short_id":{"type":"string","description":"Reservation short ID","description_kind":"plain","computed":true},"spare":{"type":"bool","description":"Flag indicating whether the Hardware Reservation is a spare. Spare Hardware Reservations are used when a Hardware Reservations requires service from Metal Equinix","description_kind":"plain","computed":true},"switch_uuid":{"type":"string","description":"Switch short ID, can be used to determine if two devices are connected to the same switch","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_ip_block_ranges":{"version":0,"block":{"attributes":{"facility":{"type":"string","description":"Facility code filtering the IP blocks. Global IPv4 blocks will be listed anyway. If you omit this and metro, all the block from the project will be listed","description_kind":"plain","deprecated":true,"optional":true},"global_ipv4":{"type":["list","string"],"description":"List of CIDR expressions for Global IPv4 blocks in the project","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ipv6":{"type":["list","string"],"description":"List of CIDR expressions for IPv6 blocks in the project","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro code filtering the IP blocks. Global IPv4 blocks will be listed anyway. If you omit this and facility, all the block from the project will be listed","description_kind":"plain","optional":true},"private_ipv4":{"type":["list","string"],"description":"List of CIDR expressions for Private IPv4 blocks in the project","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"ID of the project from which to list the blocks","description_kind":"plain","required":true},"public_ipv4":{"type":["list","string"],"description":"List of CIDR expressions for Public IPv4 blocks in the project","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_metro":{"version":0,"block":{"attributes":{"code":{"type":"string","description":"The code of the Metro to match","description_kind":"plain","required":true},"country":{"type":"string","description":"The country of this Metro","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this Metro","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of this Metro","description_kind":"plain","computed":true}},"block_types":{"capacity":{"nesting_mode":"list","block":{"attributes":{"plan":{"type":"string","description":"Plan which has to be available in selected location","description_kind":"plain","required":true},"quantity":{"type":"number","description_kind":"plain","optional":true}},"description":"Optional list of capacity specifications by plan","description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_operating_system":{"version":0,"block":{"attributes":{"distro":{"type":"string","description":"Name of the OS distribution","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name or part of the name of the distribution. Case insensitive","description_kind":"plain","optional":true},"provisionable_on":{"type":"string","description":"Plan name","description_kind":"plain","optional":true},"slug":{"type":"string","description":"Operating system slug (same as id)","description_kind":"plain","computed":true},"version":{"type":"string","description":"Version of the distribution","description_kind":"plain","optional":true}},"description_kind":"plain"}},"equinix_metal_organization":{"version":0,"block":{"attributes":{"address":{"type":["list",["object",{"address":"string","city":"string","country":"string","state":"string","zip_code":"string"}]],"description":"Business' address","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"logo":{"type":"string","description":"Logo URL","description_kind":"plain","computed":true},"name":{"type":"string","description":"The organization name","description_kind":"plain","optional":true,"computed":true},"organization_id":{"type":"string","description":"The UUID of the organization resource","description_kind":"plain","optional":true,"computed":true},"project_ids":{"type":["list","string"],"description":"UUIDs of project resources which belong to this organization","description_kind":"plain","computed":true},"twitter":{"type":"string","description":"Twitter handle","description_kind":"plain","computed":true},"website":{"type":"string","description":"Website link","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_plans":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"plans":{"type":["list",["object",{"available_in":["set","string"],"available_in_metros":["set","string"],"class":"string","deployment_types":["set","string"],"description":"string","id":"string","legacy":"bool","line":"string","name":"string","pricing_hour":"number","pricing_month":"number","slug":"string"}]],"description":"Sorted list of available server plans that match the specified filters","description_kind":"plain","computed":true}},"block_types":{"filter":{"nesting_mode":"set","block":{"attributes":{"all":{"type":"bool","description":"If is set to true, the values are joined with an AND, and the requests returns only the results that match all specified values","description_kind":"plain","optional":true},"attribute":{"type":"string","description":"The attribute used to filter. Filter attributes are case-sensitive","description_kind":"plain","required":true},"match_by":{"type":"string","description":"The type of comparison to apply. One of: in (default), re, substring, less_than, less_than_or_equal, greater_than, greater_than_or_equal","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"The filter values. Filter values are case-sensitive. If you specify multiple values for a filter, the values are joined with an OR by default, and the request returns all results that match any of the specified values","description_kind":"plain","required":true}},"description":"One or more attribute/values pairs on which to filter results","description_kind":"plain"}},"sort":{"nesting_mode":"list","block":{"attributes":{"attribute":{"type":"string","description":"The attribute used to sort the results. Sort attributes are case-sensitive","description_kind":"plain","required":true},"direction":{"type":"string","description":"Sort results in ascending or descending order. Strings are sorted in alphabetical order. One of: asc, desc","description_kind":"plain","optional":true}},"description":"One or more attribute/direction pairs on which to sort results. If multiple sorts are provided, they will be applied in order","description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_port":{"version":0,"block":{"attributes":{"bond_id":{"type":"string","description":"UUID of the bond port","description_kind":"plain","computed":true},"bond_name":{"type":"string","description":"Name of the bond port","description_kind":"plain","computed":true},"bonded":{"type":"bool","description":"Flag indicating whether the port is bonded","description_kind":"plain","computed":true},"device_id":{"type":"string","description":"Device UUID where to lookup the port","description_kind":"plain","optional":true},"disbond_supported":{"type":"bool","description":"Flag indicating whether the port can be removed from a bond","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"layer2":{"type":"bool","description":"Flag indicating whether the port is in layer2 (or layer3) mode","description_kind":"plain","computed":true},"mac":{"type":"string","description":"MAC address of the port","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the port to look up, e.g. bond0, eth1","description_kind":"plain","optional":true,"computed":true},"native_vlan_id":{"type":"string","description":"UUID of native VLAN of the port","description_kind":"plain","computed":true},"network_type":{"type":"string","description":"One of layer3, hybrid, hybrid-bonded, layer2-individual, layer2-bonded","description_kind":"plain","computed":true},"port_id":{"type":"string","description":"UUID of the port to lookup","description_kind":"plain","optional":true},"type":{"type":"string","description":"Port type","description_kind":"plain","computed":true},"vlan_ids":{"type":["list","string"],"description":"UUIDs of attached VLANs","description_kind":"plain","computed":true},"vxlan_ids":{"type":["list","number"],"description":"UUIDs of attached VLANs","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_precreated_ip_block":{"version":0,"block":{"attributes":{"address":{"type":"string","description_kind":"plain","computed":true},"address_family":{"type":"number","description":"4 or 6, depending on which block you are looking for.","description_kind":"plain","required":true},"cidr":{"type":"number","description":"Length of CIDR prefix of the block as integer","description_kind":"plain","computed":true},"cidr_notation":{"type":"string","description":"CIDR notation of the looked up block.","description_kind":"plain","computed":true},"facility":{"type":"string","description":"Facility of the searched block. (for non-global blocks).","description_kind":"plain","optional":true},"gateway":{"type":"string","description_kind":"plain","computed":true},"global":{"type":"bool","description":"Whether to look for global block. Default is false for backward compatibility.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"manageable":{"type":"bool","description_kind":"plain","computed":true},"management":{"type":"bool","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro of the searched block (for non-global blocks).","description_kind":"plain","optional":true},"netmask":{"type":"string","description":"Mask in decimal notation, e.g. 255.255.255.0","description_kind":"plain","computed":true},"network":{"type":"string","description":"Network IP address portion of the block specification","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"ID of the project where the searched block should be.","description_kind":"plain","required":true},"public":{"type":"bool","description":"Whether to look for public or private block.","description_kind":"plain","required":true},"quantity":{"type":"number","description_kind":"plain","computed":true},"type":{"type":"string","description_kind":"plain","computed":true},"vrf_id":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_project":{"version":0,"block":{"attributes":{"backend_transfer":{"type":"bool","description":"Whether Backend Transfer is enabled for this project","description_kind":"plain","computed":true},"bgp_config":{"type":["list",["object",{"asn":"number","deployment_type":"string","max_prefix":"number","md5":"string","status":"string"}]],"description":"Optional BGP settings. Refer to [Equinix Metal guide for BGP](https://metal.equinix.com/developers/docs/networking/local-global-bgp/)","description_kind":"plain","computed":true},"created":{"type":"string","description":"The timestamp for when the project was created","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name which is used to look up the project","description_kind":"plain","optional":true,"computed":true},"organization_id":{"type":"string","description":"The UUID of this project's parent organization","description_kind":"plain","computed":true},"payment_method_id":{"type":"string","description":"The UUID of payment method for this project","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"The UUID by which to look up the project","description_kind":"plain","optional":true,"computed":true},"updated":{"type":"string","description":"The timestamp for the last time the project was updated","description_kind":"plain","computed":true},"user_ids":{"type":["list","string"],"description":"List of UUIDs of user accounts which belong to this project","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_project_ssh_key":{"version":0,"block":{"attributes":{"created":{"type":"string","description_kind":"plain","computed":true},"fingerprint":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description":"The id of the SSH Key","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The label of the Equinix Metal SSH Key","description_kind":"plain","computed":true},"owner_id":{"type":"string","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"The Equinix Metal project id of the Equinix Metal SSH Key","description_kind":"plain","required":true},"public_key":{"type":"string","description":"The public SSH key that will be authorized for SSH access on Equinix Metal devices provisioned with this key","description_kind":"plain","computed":true},"search":{"type":"string","description":"The name, fingerprint, id, or public_key of the SSH Key to search for in the Equinix Metal project","description_kind":"plain","optional":true},"updated":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_reserved_ip_block":{"version":0,"block":{"attributes":{"address":{"type":"string","description_kind":"plain","computed":true},"address_family":{"type":"number","description":"4 or 6","description_kind":"plain","computed":true},"cidr":{"type":"number","description":"Length of CIDR prefix of the block as integer","description_kind":"plain","computed":true},"cidr_notation":{"type":"string","description":"CIDR notation of the looked up block","description_kind":"plain","computed":true},"facility":{"type":"string","description":"Facility of the block. (for non-global blocks)","description_kind":"plain","deprecated":true,"computed":true},"gateway":{"type":"string","description":"IP address of gateway for the block","description_kind":"plain","computed":true},"global":{"type":"bool","description":"Addresses from block are attachable in all locations","description_kind":"plain","computed":true},"id":{"type":"string","description":"ID of the block to look up","description_kind":"plain","optional":true,"computed":true},"ip_address":{"type":"string","description":"Find block containing this IP address in given project","description_kind":"plain","optional":true},"manageable":{"type":"bool","description_kind":"plain","computed":true},"management":{"type":"bool","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro of the block (for non-global blocks)","description_kind":"plain","computed":true},"netmask":{"type":"string","description":"Mask in decimal notation, e.g. 255.255.255.0","description_kind":"plain","computed":true},"network":{"type":"string","description":"Network IP address portion of the block specification","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"ID of the project where the searched block should be","description_kind":"plain","optional":true,"computed":true},"public":{"type":"bool","description":"Addresses from public block are routeable from the Internet","description_kind":"plain","computed":true},"quantity":{"type":"number","description_kind":"plain","computed":true},"type":{"type":"string","description":"Address type, one of public_ipv4, public_ipv6, private_ipv4, global_ipv4, and vrf","description_kind":"plain","computed":true},"vrf_id":{"type":"number","description":"VRF ID of the block when type=vrf","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_spot_market_price":{"version":0,"block":{"attributes":{"facility":{"type":"string","description":"Name of the facility","description_kind":"plain","deprecated":true,"optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"Name of the metro","description_kind":"plain","optional":true},"plan":{"type":"string","description":"Name of the plan","description_kind":"plain","required":true},"price":{"type":"number","description":"Current spot market price for given plan in given facility","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_spot_market_request":{"version":0,"block":{"attributes":{"device_ids":{"type":["list","string"],"description":"List of IDs of devices spawned by the referenced Spot Market Request","description_kind":"plain","computed":true},"devices_max":{"type":"number","description":"Maximum number devices to be created","description_kind":"plain","computed":true},"devices_min":{"type":"number","description":"Miniumum number devices to be created","description_kind":"plain","computed":true},"end_at":{"type":"string","description":"Date and time When the spot market request will be ended.","description_kind":"plain","computed":true},"facilities":{"type":["list","string"],"description":"Facility IDs where devices should be created","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"max_bid_price":{"type":"number","description":"Maximum price user is willing to pay per hour per device","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro where devices should be created.","description_kind":"plain","computed":true},"plan":{"type":"string","description":"The device plan slug.","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"Project ID","description_kind":"plain","computed":true},"request_id":{"type":"string","description":"The id of the Spot Market Request","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"default":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"equinix_metal_virtual_circuit":{"version":0,"block":{"attributes":{"connection_id":{"type":"string","description":"UUID of Connection where the VC is scoped to","description_kind":"plain","computed":true},"customer_ip":{"type":"string","description":"The Customer IP address which the CSR switch will peer with. Will default to the other usable IP in the subnet.","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description of the virtual circuit","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"md5":{"type":"string","description":"The password that can be set for the VRF BGP peer","description_kind":"plain","computed":true,"sensitive":true},"metal_ip":{"type":"string","description":"The Metal IP address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the subnet.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the virtual circuit","description_kind":"plain","computed":true},"nni_vlan":{"type":"number","description":"Nni VLAN parameter, see https://metal.equinix.com/developers/docs/networking/fabric/","description_kind":"plain","computed":true},"nni_vnid":{"type":"number","description":"Nni VLAN ID parameter, see https://metal.equinix.com/developers/docs/networking/fabric/","description_kind":"plain","computed":true},"peer_asn":{"type":"number","description":"The BGP ASN of the peer. The same ASN may be the used across several VCs, but it cannot be the same as the local_asn of the VRF.","description_kind":"plain","computed":true},"port_id":{"type":"string","description":"UUID of the Connection Port where the VC is scoped to","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"ID of the projct to which the virtual circuit belongs","description_kind":"plain","computed":true},"speed":{"type":"string","description":"Description of the Virtual Circuit speed. This is for information purposes and is computed when the connection type is shared.","description_kind":"plain","computed":true},"status":{"type":"string","description":"Status of the virtual circuit","description_kind":"plain","computed":true},"subnet":{"type":"string","description":"A subnet from one of the IP blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /30 or /31.\n\t\t\t\t * For a /31 block, it will only have two IP addresses, which will be used for the metal_ip and customer_ip.\n\t\t\t\t * For a /30 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.","description_kind":"plain","computed":true},"tags":{"type":["list","string"],"description":"Tags attached to the virtual circuit","description_kind":"plain","computed":true},"virtual_circuit_id":{"type":"string","description":"ID of the virtual circuit to lookup","description_kind":"plain","required":true},"vlan_id":{"type":"string","description":"UUID of the associated VLAN","description_kind":"plain","computed":true},"vnid":{"type":"number","description":"VNID VLAN parameter, see https://metal.equinix.com/developers/docs/networking/fabric/","description_kind":"plain","computed":true},"vrf_id":{"type":"string","description":"UUID of the associated VRF","description_kind":"plain","computed":true}},"description_kind":"plain"}},"equinix_metal_vlan":{"version":0,"block":{"attributes":{"assigned_devices_ids":{"type":["list","string"],"description":"List of device IDs to which this VLAN is assigned","description_kind":"plain","computed":true},"description":{"type":"string","description":"VLAN description text","description_kind":"plain","computed":true},"facility":{"type":"string","description":"Facility where the VLAN is deployed","description_kind":"plain","deprecated":true,"optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro":{"type":"string","description":"Metro where the VLAN is deployed","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"ID of parent project of the VLAN. Use together with vxlan and metro or facility","description_kind":"plain","optional":true,"computed":true},"vlan_id":{"type":"string","description":"Metal UUID of the VLAN resource","description_kind":"plain","optional":true,"computed":true},"vxlan":{"type":"number","description":"VXLAN numner of the VLAN. Unique in a project and facility or metro. Use with project_id","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"equinix_metal_vrf":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the VRF","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_ranges":{"type":["set","string"],"description":"All IPv4 and IPv6 Ranges that will be available to BGP Peers. IPv4 addresses must be /8 or smaller with a minimum size of /29. IPv6 must be /56 or smaller with a minimum size of /64. Ranges must not overlap other ranges within the VRF.","description_kind":"plain","computed":true},"local_asn":{"type":"number","description":"The 4-byte ASN set on the VRF.","description_kind":"plain","computed":true},"metro":{"type":"string","description":"Metro Code","description_kind":"plain","computed":true},"name":{"type":"string","description":"User-supplied name of the VRF, unique to the project","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"Project ID","description_kind":"plain","computed":true},"vrf_id":{"type":"string","description":"ID of the VRF to lookup","description_kind":"plain","required":true}},"description_kind":"plain"}},"equinix_network_account":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro_code":{"type":"string","description":"Account location metro cod","description_kind":"plain","required":true},"name":{"type":"string","description":"Account name for filtering","description_kind":"plain","optional":true,"computed":true},"number":{"type":"string","description":"Account unique number","description_kind":"plain","computed":true},"status":{"type":"string","description":"Account status for filtering. Possible values are Active, Processing, Submitted, Staged","description_kind":"plain","optional":true,"computed":true},"ucm_id":{"type":"string","description":"Account unique identifier","description_kind":"plain","computed":true}},"description":"Use this data source to get number and identifier of Equinix Network Edge billing account in a given metro location","description_kind":"plain"}},"equinix_network_device":{"version":0,"block":{"attributes":{"account_number":{"type":"string","description":"Device billing account number","description_kind":"plain","computed":true},"acl_template_id":{"type":"string","description":"Unique identifier of applied ACL template","description_kind":"plain","computed":true},"additional_bandwidth":{"type":"number","description":"Additional Internet bandwidth, in Mbps, that will be allocated to the device","description_kind":"plain","computed":true},"asn":{"type":"number","description":"Autonomous system number","description_kind":"plain","computed":true},"byol":{"type":"bool","description":"Boolean value that determines device licensing mode: bring your own license or subscription (default)","description_kind":"plain","computed":true},"cluster_details":{"type":["list",["object",{"cluster_id":"string","cluster_name":"string","node0":["list",["object",{"license_file_id":"string","license_token":"string","name":"string","uuid":"string","vendor_configuration":["list",["object",{"activation_key":"string","admin_password":"string","controller1":"string","controller_fqdn":"string","hostname":"string","root_password":"string"}]]}]],"node1":["list",["object",{"license_file_id":"string","license_token":"string","name":"string","uuid":"string","vendor_configuration":["list",["object",{"activation_key":"string","admin_password":"string","controller1":"string","controller_fqdn":"string","hostname":"string","root_password":"string"}]]}]],"num_of_nodes":"number"}]],"description":"An object that has the cluster details","description_kind":"plain","computed":true},"connectivity":{"type":"string","description":"Parameter to identify internet access for device. Supported Values: INTERNET-ACCESS(default) or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT","description_kind":"plain","computed":true},"core_count":{"type":"number","description":"Number of CPU cores used by device","description_kind":"plain","computed":true},"hostname":{"type":"string","description":"Device hostname prefix","description_kind":"plain","computed":true},"ibx":{"type":"string","description":"Device location Equinix Business Exchange name","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interface":{"type":["list",["object",{"assigned_type":"string","id":"number","ip_address":"string","mac_address":"string","name":"string","operational_status":"string","status":"string","type":"string"}]],"description":"List of device interfaces","description_kind":"plain","computed":true},"interface_count":{"type":"number","description":"Number of network interfaces on a device. If not specified, default number for a given device type will be used","description_kind":"plain","computed":true},"license_file":{"type":"string","description":"Path to the license file that will be uploaded and applied on a device, applicable for some device types in BYOL licensing mode","description_kind":"plain","computed":true},"license_file_id":{"type":"string","description":"Unique identifier of applied license file","description_kind":"plain","computed":true},"license_status":{"type":"string","description":"Device license registration status","description_kind":"plain","computed":true},"license_token":{"type":"string","description":"License Token applicable for some device types in BYOL licensing mode","description_kind":"plain","computed":true},"metro_code":{"type":"string","description":"Device location metro code","description_kind":"plain","computed":true},"mgmt_acl_template_uuid":{"type":"string","description":"Unique identifier of applied MGMT ACL template","description_kind":"plain","computed":true},"name":{"type":"string","description":"Device name","description_kind":"plain","optional":true,"computed":true},"notifications":{"type":["set","string"],"description":"List of email addresses that will receive device status notifications","description_kind":"plain","computed":true},"order_reference":{"type":"string","description":"Name/number used to identify device order on the invoice","description_kind":"plain","computed":true},"package_code":{"type":"string","description":"Device software package code","description_kind":"plain","computed":true},"purchase_order_number":{"type":"string","description":"Purchase order number associated with a device order","description_kind":"plain","computed":true},"redundancy_type":{"type":"string","description":"Device redundancy type applicable for HA devices, either primary or secondary","description_kind":"plain","computed":true},"redundant_id":{"type":"string","description":"Unique identifier for a redundant device, applicable for HA device","description_kind":"plain","computed":true},"region":{"type":"string","description":"Device location region","description_kind":"plain","computed":true},"secondary_device":{"type":["list",["object",{"account_number":"string","acl_template_id":"string","additional_bandwidth":"number","asn":"number","cloud_init_file_id":"string","hostname":"string","ibx":"string","interface":["list",["object",{"assigned_type":"string","id":"number","ip_address":"string","mac_address":"string","name":"string","operational_status":"string","status":"string","type":"string"}]],"license_file":"string","license_file_id":"string","license_status":"string","license_token":"string","metro_code":"string","mgmt_acl_template_uuid":"string","name":"string","notifications":["set","string"],"redundancy_type":"string","redundant_id":"string","region":"string","ssh_ip_address":"string","ssh_ip_fqdn":"string","ssh_key":["set",["object",{"key_name":"string","username":"string"}]],"status":"string","uuid":"string","vendor_configuration":["map","string"],"wan_interface_id":"string","zone_code":"string"}]],"description":"Definition of secondary device applicable for HA setup","description_kind":"plain","computed":true},"self_managed":{"type":"bool","description":"Boolean value that determines device management mode: self-managed or subscription (default)","description_kind":"plain","computed":true},"ssh_ip_address":{"type":"string","description":"IP address of SSH enabled interface on the device","description_kind":"plain","computed":true},"ssh_ip_fqdn":{"type":"string","description":"FQDN of SSH enabled interface on the device","description_kind":"plain","computed":true},"ssh_key":{"type":["set",["object",{"key_name":"string","username":"string"}]],"description":"Definition of SSH key that will be provisioned on a device","description_kind":"plain","computed":true},"status":{"type":"string","description":"Device provisioning status","description_kind":"plain","computed":true},"term_length":{"type":"number","description":"Device term length","description_kind":"plain","computed":true},"throughput":{"type":"number","description":"Device license throughput","description_kind":"plain","computed":true},"throughput_unit":{"type":"string","description":"Device license throughput unit (Mbps or Gbps)","description_kind":"plain","computed":true},"type_code":{"type":"string","description":"Device type code","description_kind":"plain","computed":true},"uuid":{"type":"string","description":"Device unique identifier","description_kind":"plain","optional":true,"computed":true},"valid_status_list":{"type":"string","description":"Comma Separated List of states to be considered valid when searching by name","description_kind":"plain","optional":true},"vendor_configuration":{"type":["map","string"],"description":"Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress)","description_kind":"plain","computed":true},"version":{"type":"string","description":"Device software software version","description_kind":"plain","computed":true},"wan_interface_id":{"type":"string","description":"device interface id picked for WAN","description_kind":"plain","computed":true},"zone_code":{"type":"string","description":"Device location zone code","description_kind":"plain","computed":true}},"description":"Use this data source to get details of Equinix Network Edge network device with a given Name or UUID","description_kind":"plain"}},"equinix_network_device_platform":{"version":0,"block":{"attributes":{"core_count":{"type":"number","description":"Number of CPU cores used to limit platform search results","description_kind":"plain","optional":true,"computed":true},"device_type":{"type":"string","description":"Device type code","description_kind":"plain","required":true},"flavor":{"type":"string","description":"Device platform flavor that determines number of CPU cores and memory. Supported values: small, medium, large, xlarge","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"license_options":{"type":["set","string"],"description":"List of device licensing options to limit platform search result. Supported values: BYOL (Bring Your Own License), Sub (license subscription)","description_kind":"plain","optional":true,"computed":true},"management_types":{"type":["set","string"],"description":"List of device management types to limit platform search results. Supported values: EQUINIX-CONFIGURED, SELF-CONFIGURED","description_kind":"plain","optional":true,"computed":true},"memory":{"type":"number","description":"The amount of memory provided by device platform","description_kind":"plain","computed":true},"memory_unit":{"type":"string","description":"Unit of memory provider by device platform","description_kind":"plain","computed":true},"packages":{"type":["set","string"],"description":"List of software package codes to limit platform search results","description_kind":"plain","optional":true,"computed":true}},"description":"Use this data source to get Equinix Network Edge device platform configuration details for a given device type","description_kind":"plain"}},"equinix_network_device_software":{"version":0,"block":{"attributes":{"date":{"type":"string","description":"Version release date","description_kind":"plain","computed":true},"device_type":{"type":"string","description":"Code of a device type","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_name":{"type":"string","description":"Software image name","description_kind":"plain","computed":true},"most_recent":{"type":"bool","description":"Boolean value to indicate that most recent version should be used, in case when more than one result is returned","description_kind":"plain","optional":true},"packages":{"type":["set","string"],"description":"Limits returned versions to those that are supported by given software package codes","description_kind":"plain","optional":true,"computed":true},"release_notes_link":{"type":"string","description":"Link to version release notes","description_kind":"plain","computed":true},"stable":{"type":"bool","description":"Boolean value to limit query results to stable versions only","description_kind":"plain","optional":true,"computed":true},"status":{"type":"string","description":"Version status","description_kind":"plain","computed":true},"version":{"type":"string","description":"Software version","description_kind":"plain","computed":true},"version_regex":{"type":"string","description":"A regex string to apply on returned versions and filter search results","description_kind":"plain","optional":true}},"description":"Use this data source to get Equinix Network Edge device software details for a given device type.","description_kind":"plain"}},"equinix_network_device_type":{"version":0,"block":{"attributes":{"category":{"type":"string","description":"Device type category, one of: Router, Firewall, SDWAN","description_kind":"plain","optional":true,"computed":true},"code":{"type":"string","description":"Device type short code, unique identifier of a network device type","description_kind":"plain","computed":true},"description":{"type":"string","description":"Device type textual description","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metro_codes":{"type":["set","string"],"description":"List of metro codes where device type has to be available","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Device type name","description_kind":"plain","optional":true,"computed":true},"vendor":{"type":"string","description":"Device type vendor i.e. Cisco, Juniper Networks, VERSA Networks","description_kind":"plain","optional":true,"computed":true}},"description":"Use this data source to get Equinix Network Edge device type details","description_kind":"plain"}}}}}} diff --git a/examples-generated/metal/bgpsession.yaml b/examples-generated/metal/bgpsession.yaml index dd1abff..bb551a1 100644 --- a/examples-generated/metal/bgpsession.yaml +++ b/examples-generated/metal/bgpsession.yaml @@ -26,9 +26,9 @@ metadata: spec: forProvider: billingCycle: hourly - facilities: - - ny5 hostname: terraform-test-bgp-sesh + metro: + - ny operatingSystem: ubuntu_20_04 plan: c3.small.x86 projectIdSelector: @@ -47,7 +47,7 @@ metadata: name: addr spec: forProvider: - facility: ny5 + metro: ny projectIdSelector: matchLabels: testing.upbound.io/example-name: example diff --git a/examples-generated/metal/connection.yaml b/examples-generated/metal/connection.yaml index c0b6418..4223eea 100644 --- a/examples-generated/metal/connection.yaml +++ b/examples-generated/metal/connection.yaml @@ -8,6 +8,7 @@ metadata: name: example spec: forProvider: + contactEmail: username@example.com metro: sv name: tf-metal-to-azure projectIdSelector: diff --git a/examples-generated/metal/ipattachment.yaml b/examples-generated/metal/ipattachment.yaml index 10d99df..16d5854 100644 --- a/examples-generated/metal/ipattachment.yaml +++ b/examples-generated/metal/ipattachment.yaml @@ -26,7 +26,7 @@ metadata: name: myblock spec: forProvider: - facility: ny5 + metro: ny projectIdSelector: matchLabels: testing.upbound.io/example-name: example diff --git a/examples-generated/metal/portvlanattachment.yaml b/examples-generated/metal/portvlanattachment.yaml deleted file mode 100644 index 8f56358..0000000 --- a/examples-generated/metal/portvlanattachment.yaml +++ /dev/null @@ -1,58 +0,0 @@ -apiVersion: metal.equinix.jet.crossplane.io/v1alpha1 -kind: PortVlanAttachment -metadata: - annotations: - meta.upbound.io/example-id: metal/v1alpha1/portvlanattachment - labels: - testing.upbound.io/example-name: test - name: test -spec: - forProvider: - deviceIdSelector: - matchLabels: - testing.upbound.io/example-name: test - portName: eth1 - vlanVnid: ${equinix_metal_vlan.test.vxlan} - ---- - -apiVersion: metal.equinix.jet.crossplane.io/v1alpha1 -kind: Device -metadata: - annotations: - meta.upbound.io/example-id: metal/v1alpha1/portvlanattachment - labels: - testing.upbound.io/example-name: test - name: test -spec: - forProvider: - billingCycle: hourly - facilities: - - ny5 - hostname: test - operatingSystem: ubuntu_20_04 - plan: c3.small.x86 - projectIdSelector: - matchLabels: - testing.upbound.io/example-name: example - ---- - -apiVersion: metal.equinix.jet.crossplane.io/v1alpha1 -kind: Vlan -metadata: - annotations: - meta.upbound.io/example-id: metal/v1alpha1/portvlanattachment - labels: - testing.upbound.io/example-name: test - name: test -spec: - forProvider: - description: VLAN in New Jersey - facility: ny5 - projectIdSelector: - matchLabels: - testing.upbound.io/example-name: example - ---- - diff --git a/examples-generated/metal/projectsshkey.yaml b/examples-generated/metal/projectsshkey.yaml index 4908498..5f21022 100644 --- a/examples-generated/metal/projectsshkey.yaml +++ b/examples-generated/metal/projectsshkey.yaml @@ -28,9 +28,8 @@ metadata: spec: forProvider: billingCycle: hourly - facilities: - - ny5 hostname: test + metro: ny operatingSystem: ubuntu_20_04 plan: c3.medium.x86 projectIdSelector: diff --git a/examples-generated/metal/reservedipblock.yaml b/examples-generated/metal/reservedipblock.yaml index 2a68a49..35bb406 100644 --- a/examples-generated/metal/reservedipblock.yaml +++ b/examples-generated/metal/reservedipblock.yaml @@ -8,7 +8,7 @@ metadata: name: two-elastic-addresses spec: forProvider: - facility: sv15 + metro: sv projectIdSelector: matchLabels: testing.upbound.io/example-name: example diff --git a/examples-generated/metal/spotmarketrequest.yaml b/examples-generated/metal/spotmarketrequest.yaml index 0adee38..00d748a 100644 --- a/examples-generated/metal/spotmarketrequest.yaml +++ b/examples-generated/metal/spotmarketrequest.yaml @@ -10,14 +10,13 @@ spec: forProvider: devicesMax: 1 devicesMin: 1 - facilities: - - ny5 instanceParameters: - billingCycle: hourly hostname: testspot operatingSystem: ubuntu_20_04 plan: c3.small.x86 maxBidPrice: 0.03 + metro: ny projectIdSelector: matchLabels: testing.upbound.io/example-name: example diff --git a/examples-generated/metal/vlan.yaml b/examples-generated/metal/vlan.yaml index c46e920..35a0f5b 100644 --- a/examples-generated/metal/vlan.yaml +++ b/examples-generated/metal/vlan.yaml @@ -9,10 +9,11 @@ metadata: spec: forProvider: description: VLAN in New Jersey - facility: sv15 + metro: sv projectIdSelector: matchLabels: testing.upbound.io/example-name: example + vxlan: 1040 --- diff --git a/examples-generated/network/device.yaml b/examples-generated/network/device.yaml index 9469bb2..540ddc2 100644 --- a/examples-generated/network/device.yaml +++ b/examples-generated/network/device.yaml @@ -10,6 +10,7 @@ spec: forProvider: accountNumber: ${data.equinix_network_account.dc.number} byol: false + connectivity: INTERNET-ACCESS coreCount: 2 hostname: csr1000v-p metroCode: ${data.equinix_network_account.dc.metro_code} @@ -28,7 +29,7 @@ spec: - john@equinix.com - marry@equinix.com selfManaged: false - termLength: 6 + termLength: 12 throughput: 500 throughputUnit: Mbps typeCode: CSR1000V diff --git a/examples-generated/network/sshkey.yaml b/examples-generated/network/sshkey.yaml index d570720..64aeac2 100644 --- a/examples-generated/network/sshkey.yaml +++ b/examples-generated/network/sshkey.yaml @@ -10,6 +10,7 @@ spec: forProvider: name: johnKent publicKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDpXGdxljAyPp9vH97436U171cX + type: RSA --- diff --git a/internal/controller/fabric/cloudrouter/zz_controller.go b/internal/controller/fabric/cloudrouter/zz_controller.go new file mode 100755 index 0000000..3b12206 --- /dev/null +++ b/internal/controller/fabric/cloudrouter/zz_controller.go @@ -0,0 +1,63 @@ +/* +Copyright 2021 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package cloudrouter + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/upbound/upjet/pkg/controller" + "github.com/upbound/upjet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/fabric/v1alpha1" +) + +// Setup adds a controller that reconciles CloudRouter managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.CloudRouter_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.CloudRouter_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_fabric_cloud_router"], + tjcontroller.WithCallbackProvider(tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.CloudRouter_GroupVersionKind))), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.CloudRouter{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/fabric/routingprotocol/zz_controller.go b/internal/controller/fabric/routingprotocol/zz_controller.go new file mode 100755 index 0000000..c72fc6f --- /dev/null +++ b/internal/controller/fabric/routingprotocol/zz_controller.go @@ -0,0 +1,63 @@ +/* +Copyright 2021 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package routingprotocol + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/upbound/upjet/pkg/controller" + "github.com/upbound/upjet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-jet-equinix/apis/fabric/v1alpha1" +) + +// Setup adds a controller that reconciles RoutingProtocol managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.RoutingProtocol_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.RoutingProtocol_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["equinix_fabric_routing_protocol"], + tjcontroller.WithCallbackProvider(tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.RoutingProtocol_GroupVersionKind))), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3*time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.RoutingProtocol{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/zz_setup.go b/internal/controller/zz_setup.go index a031904..a10fd7a 100755 --- a/internal/controller/zz_setup.go +++ b/internal/controller/zz_setup.go @@ -12,7 +12,9 @@ import ( l2connection "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/ecx/l2connection" l2connectionaccepter "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/ecx/l2connectionaccepter" l2serviceprofile "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/ecx/l2serviceprofile" + cloudrouter "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/fabric/cloudrouter" connection "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/fabric/connection" + routingprotocol "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/fabric/routingprotocol" serviceprofile "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/fabric/serviceprofile" bgpsession "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/bgpsession" connectionmetal "github.com/crossplane-contrib/provider-jet-equinix/internal/controller/metal/connection" @@ -51,7 +53,9 @@ func Setup(mgr ctrl.Manager, o controller.Options) error { l2connection.Setup, l2connectionaccepter.Setup, l2serviceprofile.Setup, + cloudrouter.Setup, connection.Setup, + routingprotocol.Setup, serviceprofile.Setup, bgpsession.Setup, connectionmetal.Setup, diff --git a/package/crds/fabric.equinix.jet.crossplane.io_cloudrouters.yaml b/package/crds/fabric.equinix.jet.crossplane.io_cloudrouters.yaml new file mode 100644 index 0000000..876d8f9 --- /dev/null +++ b/package/crds/fabric.equinix.jet.crossplane.io_cloudrouters.yaml @@ -0,0 +1,444 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: cloudrouters.fabric.equinix.jet.crossplane.io +spec: + group: fabric.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinix + kind: CloudRouter + listKind: CloudRouterList + plural: cloudrouters + singular: cloudrouter + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: CloudRouter is the Schema for the CloudRouters API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: CloudRouterSpec defines the desired state of CloudRouter + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + account: + description: Customer account information that is associated with + this Fabric Cloud Router + items: + properties: + accountNumber: + description: Account Number + type: number + type: object + type: array + description: + description: Customer-provided Fabric Cloud Router description + type: string + location: + description: Fabric Cloud Router location + items: + properties: + ibx: + description: IBX Code + type: string + metroCode: + description: Access point metro code + type: string + metroName: + description: Access point metro name + type: string + region: + description: Access point region + type: string + type: object + type: array + name: + description: Fabric Cloud Router name. An alpha-numeric 24 characters + string which can include only hyphens and underscores + type: string + notifications: + description: Preferences for notifications on Fabric Cloud Router + configuration or status changes + items: + properties: + emails: + description: Array of contact emails + items: + type: string + type: array + sendInterval: + description: Send interval + type: string + type: + description: Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, + NOTIFICATIONS + type: string + required: + - emails + - type + type: object + type: array + order: + description: Order information related to this Fabric Cloud Router + items: + properties: + billingTier: + description: Billing tier for connection bandwidth + type: string + purchaseOrderNumber: + description: Purchase order number + type: string + type: object + type: array + package: + description: Fabric Cloud Router location + items: + properties: + code: + description: Fabric Cloud Router package code + type: string + required: + - code + type: object + type: array + project: + description: Fabric Cloud Router project + items: + properties: + href: + description: Unique Resource URL + type: string + projectId: + description: Project Id + type: string + type: object + type: array + type: + description: Defines the FCR type like XF_ROUTER + type: string + required: + - location + - name + - notifications + - package + - type + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: CloudRouterStatus defines the observed state of CloudRouter. + properties: + atProvider: + properties: + changeLog: + description: Captures Fabric Cloud Router lifecycle change information + items: + properties: + createdBy: + type: string + createdByEmail: + type: string + createdByFullName: + type: string + createdDateTime: + type: string + deletedBy: + type: string + deletedByEmail: + type: string + deletedByFullName: + type: string + deletedDateTime: + type: string + updatedBy: + type: string + updatedByEmail: + type: string + updatedByFullName: + type: string + updatedDateTime: + type: string + type: object + type: array + equinixAsn: + description: Equinix ASN + type: number + href: + description: Fabric Cloud Router URI information + type: string + id: + type: string + order: + description: Order information related to this Fabric Cloud Router + items: + properties: + orderId: + description: Order Identification + type: string + orderNumber: + description: Order Reference Number + type: string + type: object + type: array + state: + description: Fabric Cloud Router overall state + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/fabric.equinix.jet.crossplane.io_connections.yaml b/package/crds/fabric.equinix.jet.crossplane.io_connections.yaml index a88b67e..485f308 100644 --- a/package/crds/fabric.equinix.jet.crossplane.io_connections.yaml +++ b/package/crds/fabric.equinix.jet.crossplane.io_connections.yaml @@ -72,12 +72,17 @@ spec: description: Point of access details items: properties: + account: + description: Account + items: + type: object + type: array authenticationKey: description: Authentication key for provider based connections type: string gateway: - description: Gateway access point information + description: Cloud Router access point information items: properties: uuid: @@ -138,6 +143,15 @@ spec: type: string type: object type: array + network: + description: network access point information + items: + properties: + uuid: + description: Equinix-assigned Network identifier + type: string + type: object + type: array peeringType: description: Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL @@ -171,6 +185,16 @@ spec: providerConnectionId: description: Provider assigned Connection Id type: string + router: + description: Cloud Router access point information + items: + properties: + uuid: + description: Equinix-assigned virtual gateway + identifier + type: string + type: object + type: array routingProtocols: description: Access point routing protocols configuration items: @@ -192,7 +216,7 @@ spec: type: string type: description: Access point type - COLO, VD, VG, SP, - IGW, SUBNET, GW + IGW, SUBNET, CLOUD_ROUTER, NETWORK type: string virtualDevice: description: Virtual device @@ -242,13 +266,8 @@ spec: additionalInfo: description: Connection additional information items: - properties: - key: - description: Additional information key - type: string - value: - description: Additional information value - type: string + additionalProperties: + type: string type: object type: array bandwidth: @@ -301,6 +320,9 @@ spec: description: Redundancy Information items: properties: + group: + description: Redundancy group identifier + type: string priority: description: Priority type- PRIMARY, SECONDARY type: string @@ -308,7 +330,7 @@ spec: type: array type: description: Defines the connection type like VG_VC, EVPL_VC, - EPL_VC, EC_VC, GW_VC, ACCESS_EPL_VC + EPL_VC, EC_VC, IP_VC, IPWAN_VC,ACCESS_EPL_VC type: string zSide: description: Destination or Provider side connection configuration @@ -319,12 +341,17 @@ spec: description: Point of access details items: properties: + account: + description: Account + items: + type: object + type: array authenticationKey: description: Authentication key for provider based connections type: string gateway: - description: Gateway access point information + description: Cloud Router access point information items: properties: uuid: @@ -385,6 +412,15 @@ spec: type: string type: object type: array + network: + description: network access point information + items: + properties: + uuid: + description: Equinix-assigned Network identifier + type: string + type: object + type: array peeringType: description: Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL @@ -418,6 +454,16 @@ spec: providerConnectionId: description: Provider assigned Connection Id type: string + router: + description: Cloud Router access point information + items: + properties: + uuid: + description: Equinix-assigned virtual gateway + identifier + type: string + type: object + type: array routingProtocols: description: Access point routing protocols configuration items: @@ -439,7 +485,7 @@ spec: type: string type: description: Access point type - COLO, VD, VG, SP, - IGW, SUBNET, GW + IGW, SUBNET, CLOUD_ROUTER, NETWORK type: string virtualDevice: description: Virtual device @@ -684,23 +730,30 @@ spec: items: properties: accountName: + description: Account Name type: string accountNumber: + description: Account Number type: number globalCustId: + description: Global Customer organization identifier type: string globalOrgId: + description: Global organization identifier type: string globalOrganizationName: + description: Global organization name type: string orgId: + description: Customer organization identifier type: number organizationName: + description: Customer organization name type: string type: object type: array gateway: - description: Gateway access point information + description: Cloud Router access point information items: properties: href: @@ -717,6 +770,15 @@ spec: type: string type: object type: array + network: + description: network access point information + items: + properties: + href: + description: Unique Resource Identifier + type: string + type: object + type: array port: description: Port access point information items: @@ -763,6 +825,15 @@ spec: type: string type: object type: array + router: + description: Cloud Router access point information + items: + properties: + href: + description: Unique Resource Identifier + type: string + type: object + type: array virtualDevice: description: Virtual device items: @@ -914,15 +985,6 @@ spec: type: string type: object type: array - redundancy: - description: Redundancy Information - items: - properties: - group: - description: Redundancy group identifier - type: string - type: object - type: array state: description: Connection overall state type: string @@ -940,23 +1002,30 @@ spec: items: properties: accountName: + description: Account Name type: string accountNumber: + description: Account Number type: number globalCustId: + description: Global Customer organization identifier type: string globalOrgId: + description: Global organization identifier type: string globalOrganizationName: + description: Global organization name type: string orgId: + description: Customer organization identifier type: number organizationName: + description: Customer organization name type: string type: object type: array gateway: - description: Gateway access point information + description: Cloud Router access point information items: properties: href: @@ -973,6 +1042,15 @@ spec: type: string type: object type: array + network: + description: network access point information + items: + properties: + href: + description: Unique Resource Identifier + type: string + type: object + type: array port: description: Port access point information items: @@ -1019,6 +1097,15 @@ spec: type: string type: object type: array + router: + description: Cloud Router access point information + items: + properties: + href: + description: Unique Resource Identifier + type: string + type: object + type: array virtualDevice: description: Virtual device items: diff --git a/package/crds/fabric.equinix.jet.crossplane.io_routingprotocols.yaml b/package/crds/fabric.equinix.jet.crossplane.io_routingprotocols.yaml new file mode 100644 index 0000000..0c371c2 --- /dev/null +++ b/package/crds/fabric.equinix.jet.crossplane.io_routingprotocols.yaml @@ -0,0 +1,479 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: routingprotocols.fabric.equinix.jet.crossplane.io +spec: + group: fabric.equinix.jet.crossplane.io + names: + categories: + - crossplane + - managed + - equinix + kind: RoutingProtocol + listKind: RoutingProtocolList + plural: routingprotocols + singular: routingprotocol + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: RoutingProtocol is the Schema for the RoutingProtocols API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: RoutingProtocolSpec defines the desired state of RoutingProtocol + properties: + deletionPolicy: + default: Delete + description: DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + bfd: + description: Bidirectional Forwarding Detection + items: + properties: + enabled: + description: Bidirectional Forwarding Detection enablement + type: boolean + interval: + description: Interval range between the received BFD control + packets + type: string + required: + - enabled + type: object + type: array + bgpAuthKey: + description: BGP authorization key + type: string + bgpIpv4: + description: Routing Protocol BGP IPv4 + items: + properties: + customerPeerIp: + description: Customer side peering ip + type: string + enabled: + description: Admin status for the BGP session + type: boolean + required: + - customerPeerIp + type: object + type: array + bgpIpv6: + description: Routing Protocol BGP IPv6 + items: + properties: + customerPeerIp: + description: Customer side peering ip + type: string + enabled: + description: Admin status for the BGP session + type: boolean + required: + - customerPeerIp + type: object + type: array + connectionUuid: + description: Connection URI associated with Routing Protocol + type: string + customerAsn: + description: Customer-provided ASN + type: number + description: + description: Customer-provided Fabric Routing Protocol description + type: string + directIpv4: + description: Routing Protocol Direct IPv4 + items: + properties: + equinixIfaceIp: + description: Equinix side Interface IP address + type: string + required: + - equinixIfaceIp + type: object + type: array + directIpv6: + description: Routing Protocol Direct IPv6 + items: + properties: + equinixIfaceIp: + description: Equinix side Interface IP address + type: string + type: object + type: array + name: + description: Routing Protocol name. An alpha-numeric 24 characters + string which can include only hyphens and underscores + type: string + type: + description: Defines the routing protocol type like BGP or DIRECT + type: string + uuid: + description: Equinix-assigned routing protocol identifier + type: string + required: + - connectionUuid + type: object + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: RoutingProtocolStatus defines the observed state of RoutingProtocol. + properties: + atProvider: + properties: + bgpIpv4: + description: Routing Protocol BGP IPv4 + items: + properties: + equinixPeerIp: + description: Equinix side peering ip + type: string + type: object + type: array + bgpIpv6: + description: Routing Protocol BGP IPv6 + items: + properties: + equinixPeerIp: + description: Equinix side peering ip + type: string + type: object + type: array + change: + description: Routing Protocol configuration Changes + items: + properties: + href: + type: string + type: + type: string + uuid: + type: string + type: object + type: array + changeLog: + description: Captures Routing Protocol lifecycle change information + items: + properties: + createdBy: + type: string + createdByEmail: + type: string + createdByFullName: + type: string + createdDateTime: + type: string + deletedBy: + type: string + deletedByEmail: + type: string + deletedByFullName: + type: string + deletedDateTime: + type: string + updatedBy: + type: string + updatedByEmail: + type: string + updatedByFullName: + type: string + updatedDateTime: + type: string + type: object + type: array + equinixAsn: + description: Equinix ASN + type: number + href: + description: Routing Protocol URI information + type: string + id: + type: string + operation: + description: Routing Protocol type-specific operational data + items: + properties: + errors: + items: + properties: + additionalInfo: + items: + properties: + property: + type: string + reason: + type: string + type: object + type: array + correlationId: + type: string + details: + type: string + errorCode: + type: string + errorMessage: + type: string + help: + type: string + type: object + type: array + type: object + type: array + state: + description: Routing Protocol overall state + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/metal.equinix.jet.crossplane.io_connections.yaml b/package/crds/metal.equinix.jet.crossplane.io_connections.yaml index 659bba2..b994d4b 100644 --- a/package/crds/metal.equinix.jet.crossplane.io_connections.yaml +++ b/package/crds/metal.equinix.jet.crossplane.io_connections.yaml @@ -63,13 +63,24 @@ spec: type: string forProvider: properties: + contactEmail: + description: The preferred email used for communication and notifications + about the Equinix Fabric interconnection. Required when using + a Project API key. Optional and defaults to the primary user + email address when using a User API key. The preferred email + used for communication and notifications about the Equinix Fabric + interconnection. Required when using a Project API key. Optional + and defaults to the primary user email address when using a + User API key + type: string description: description: Description for the connection resource. Description of the connection resource type: string facility: - description: Facility where the connection will be created. Facility - where the connection will be created + description: (Deprecated) Facility where the connection will be + created. Use metro instead; read the facility to metro migration + guide Facility where the connection will be created type: string metro: description: Metro where the connection will be created. Metro @@ -251,8 +262,9 @@ spec: type: string speed: description: Connection speed - one of 50Mbps, 200Mbps, 500Mbps, - 1Gbps, 2Gbps, 5Gbps, 10Gbps. Port speed. Allowed values are - 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps + 1Gbps, 2Gbps, 5Gbps, 10Gbps. Port speed. Required for a_side + connections. Allowed values are 50Mbps, 200Mbps, 500Mbps, 1Gbps, + 2Gbps, 5Gbps, 10Gbps type: string tags: description: String list of tags. Tags attached to the connection @@ -275,7 +287,6 @@ spec: required: - name - redundancy - - speed - type type: object providerConfigRef: diff --git a/package/crds/metal.equinix.jet.crossplane.io_devices.yaml b/package/crds/metal.equinix.jet.crossplane.io_devices.yaml index 842711a..36ee70c 100644 --- a/package/crds/metal.equinix.jet.crossplane.io_devices.yaml +++ b/package/crds/metal.equinix.jet.crossplane.io_devices.yaml @@ -119,17 +119,18 @@ spec: device type: string facilities: - description: List of facility codes with deployment preferences. - Equinix Metal API will go through the list and will deploy your - device to first facility with free capacity. List items must - be facility codes or any (a wildcard). To find the facility - code, visit Facilities API docs, set your API auth token in - the top of the page and see JSON from the API response. Conflicts - with metro. List of facility codes with deployment preferences. - Equinix Metal API will go through the list and will deploy your - device to first facility with free capacity. List items must - be facility codes or any (a wildcard). To find the facility - code, visit [Facilities API docs](https://metal.equinix.com/developers/api/facilities/), + description: (Deprecated) List of facility codes with deployment + preferences. Equinix Metal API will go through the list and + will deploy your device to first facility with free capacity. + List items must be facility codes or any (a wildcard). To find + the facility code, visit Facilities API docs, set your API auth + token in the top of the page and see JSON from the API response. + Conflicts with metro. Use metro instead; read the facility + to metro migration guide List of facility codes with deployment + preferences. Equinix Metal API will go through the list and + will deploy your device to first facility with free capacity. + List items must be facility codes or any (a wildcard). To find + the facility code, visit [Facilities API docs](https://metal.equinix.com/developers/api/facilities/), set your API auth token in the top of the page and see JSON from the API response. Conflicts with metro items: @@ -299,16 +300,21 @@ spec: type: object projectSshKeyIds: description: Array of IDs of the project SSH keys which should - be added to the device. If you omit this, SSH keys of all the - members of the parent project will be added to the device. If - you specify this array, only the listed project SSH keys will - be added. Project SSH keys can be created with the equinix_metal_project_ssh_key + be added to the device. If you specify this array, only the + listed project SSH keys (and any SSH keys for the users specified + in user_ssh_key_ids) will be added. If no SSH keys are specified + (both user_ssh_keys_ids and project_ssh_key_ids are empty lists + or omitted), all parent project keys, parent project members + keys and organization members keys will be included. Project + SSH keys can be created with the equinix_metal_project_ssh_key resource. Array of IDs of the project SSH keys which should - be added to the device. If you omit this, SSH keys of all the - members of the parent project will be added to the device. If - you specify this array, only the listed project SSH keys (and - any user_ssh_key_ids) will be added. Project SSH keys can be - created with the [equinix_metal_project_ssh_key](equinix_metal_project_ssh_key.md) + be added to the device. If you specify this array, only the + listed project SSH keys (and any SSH keys for the users specified + in user_ssh_key_ids) will be added. If no SSH keys are specified + (both user_ssh_keys_ids and project_ssh_key_ids are empty lists + or omitted), all parent project keys, parent project members + keys and organization members keys will be included. Project + SSH keys can be created with the [equinix_metal_project_ssh_key](equinix_metal_project_ssh_key.md) resource items: type: string @@ -387,16 +393,21 @@ spec: - namespace type: object userSshKeyIds: - description: Array of IDs of the user SSH keys which should be - added to the device. If you omit this, SSH keys of all the members - of the parent project will be added to the device. If you specify - this array, only the listed user SSH keys (and any project_ssh_key_ids) - will be added. User SSH keys can be created with the equinix_metal_ssh_key - resource Array of IDs of the user SSH keys which should be added - to the device. If you omit this, SSH keys of all the members - of the parent project will be added to the device. If you specify - this array, only the listed user SSH keys (and any project_ssh_key_ids) - will be added. User SSH keys can be created with the [equinix_metal_ssh_key](equinix_metal_ssh_key.md) + description: Array of IDs of the users whose SSH keys should be + added to the device. If you specify this array, only the listed + users' SSH keys (and any project SSH keys specified in project_ssh_key_ids) + will be added. If no SSH keys are specified (both user_ssh_keys_ids + and project_ssh_key_ids are empty lists or omitted), all parent + project keys, parent project members keys and organization members + keys will be included. User SSH keys can be created with the + equinix_metal_ssh_key resource. Array of IDs of the users whose + SSH keys should be added to the device. If you specify this + array, only the listed users' SSH keys (and any project SSH + keys specified in project_ssh_key_ids) will be added. If no + SSH keys are specified (both user_ssh_keys_ids and project_ssh_key_ids + are empty lists or omitted), all parent project keys, parent + project members keys and organization members keys will be included. + User SSH keys can be created with the [equinix_metal_ssh_key](equinix_metal_ssh_key.md) resource items: type: string @@ -606,8 +617,9 @@ spec: timestamp for when the device was created type: string deployedFacility: - description: The facility where the device is deployed. The facility - where the device is deployed + description: (Deprecated) The facility where the device is deployed. + Use metro instead; read the facility to metro migration guide + The facility where the device is deployed type: string deployedHardwareReservationId: description: ID of hardware reservation where this device was diff --git a/package/crds/metal.equinix.jet.crossplane.io_ipattachments.yaml b/package/crds/metal.equinix.jet.crossplane.io_ipattachments.yaml index f77f1ce..6d242e3 100644 --- a/package/crds/metal.equinix.jet.crossplane.io_ipattachments.yaml +++ b/package/crds/metal.equinix.jet.crossplane.io_ipattachments.yaml @@ -65,7 +65,7 @@ spec: properties: cidrNotation: description: CIDR notation of subnet from block reserved in the - same project and facility as the device. + same project and metro as the device. type: string deviceId: description: ID of device to which to assign the subnet. diff --git a/package/crds/metal.equinix.jet.crossplane.io_portvlanattachments.yaml b/package/crds/metal.equinix.jet.crossplane.io_portvlanattachments.yaml index c645718..4882e2d 100644 --- a/package/crds/metal.equinix.jet.crossplane.io_portvlanattachments.yaml +++ b/package/crds/metal.equinix.jet.crossplane.io_portvlanattachments.yaml @@ -36,7 +36,7 @@ spec: schema: openAPIV3Schema: description: PortVlanAttachment is the Schema for the PortVlanAttachments - API. + API. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -65,8 +65,7 @@ spec: forProvider: properties: deviceId: - description: ID of device to be assigned to the VLAN. ID of device - to be assigned to the VLAN + description: ID of device to be assigned to the VLAN type: string deviceIdRef: description: Reference to a Device to populate deviceId. @@ -143,28 +142,20 @@ spec: type: object forceBond: description: Add port back to the bond when this resource is removed. - Default is false. Add port back to the bond when this resource - is removed. Default is false + Default is false type: boolean native: description: Mark this VLAN a native VLAN on the port. This can be used only if this assignment assigns second or further VLAN to the port. To ensure that this attachment is not first on a port, you can use depends_on pointing to another equinix_metal_port_vlan_attachment, - just like in the layer2-individual example above. Mark this - VLAN a native VLAN on the port. This can be used only if this - assignment assigns second or further VLAN to the port. To ensure - that this attachment is not first on a port, you can use depends_on - pointing to another equinix_metal_port_vlan_attachment, just - like in the layer2-individual example above + just like in the layer2-individual example above type: boolean portName: - description: Name of network port to be assigned to the VLAN. - Name of network port to be assigned to the VLAN + description: Name of network port to be assigned to the VLAN type: string vlanVnid: - description: VXLAN Network Identifier. VXLAN Network Identifier, - integer + description: VXLAN Network Identifier, integer type: number required: - portName @@ -347,13 +338,12 @@ spec: atProvider: properties: id: - description: UUID of device port used in the assignment. type: string portId: - description: UUID of device port. UUID of device port + description: UUID of device port type: string vlanId: - description: UUID of VLAN API resource. UUID of VLAN API resource + description: UUID of VLAN API resource type: string type: object conditions: diff --git a/package/crds/metal.equinix.jet.crossplane.io_projects.yaml b/package/crds/metal.equinix.jet.crossplane.io_projects.yaml index 94993ae..c9727c5 100644 --- a/package/crds/metal.equinix.jet.crossplane.io_projects.yaml +++ b/package/crds/metal.equinix.jet.crossplane.io_projects.yaml @@ -79,8 +79,8 @@ spec: Autonomous System Number for local BGP deployment type: number deploymentType: - description: private or public, the private is likely to - be usable immediately, the public will need to be reviewed + description: local or global, the local is likely to be + usable immediately, the global will need to be reviewed by Equinix Metal engineers. "local" or "global", the local is likely to be usable immediately, the global will need to be review by Equinix Metal engineers @@ -110,12 +110,14 @@ spec: type: object type: array name: - description: The name of the project. The name of the project + description: The name of the project. The maximum length is 80 + characters The name of the project. The maximum length is 80 + characters. type: string organizationId: description: The UUID of organization under which you want to create the project. If you leave it out, the project will be - create under your the default organization of your account. + created under your the default organization of your account. The UUID of organization under which you want to create the project. If you leave it out, the project will be create under your the default organization of your account diff --git a/package/crds/metal.equinix.jet.crossplane.io_reservedipblocks.yaml b/package/crds/metal.equinix.jet.crossplane.io_reservedipblocks.yaml index 869ed8f..36ac6c7 100644 --- a/package/crds/metal.equinix.jet.crossplane.io_reservedipblocks.yaml +++ b/package/crds/metal.equinix.jet.crossplane.io_reservedipblocks.yaml @@ -82,12 +82,13 @@ spec: description: Arbitrary description. Arbitrary description type: string facility: - description: Facility where to allocate the public IP address - block, makes sense only if type is public_ipv4 and must be empty - if type is global_ipv4. Conflicts with metro. Facility where - to allocate the public IP address block, makes sense only for - type==public_ipv4, must be empty for type==global_ipv4, conflicts - with metro + description: (Deprecated) Facility where to allocate the public + IP address block, makes sense only if type is public_ipv4 and + must be empty if type is global_ipv4. Conflicts with metro. + Use metro instead; read the facility to metro migration guide + Facility where to allocate the public IP address block, makes + sense only for type==public_ipv4, must be empty for type==global_ipv4, + conflicts with metro type: string metro: description: Metro where to allocate the public IP address block, @@ -474,7 +475,7 @@ spec: type: string global: description: Boolean flag whether addresses from a block are global - (i.e. can be assigned in any facility). Flag indicating whether + (i.e. can be assigned in any metro). Flag indicating whether IP block is global, i.e. assignable in any location type: boolean id: diff --git a/package/crds/metal.equinix.jet.crossplane.io_spotmarketrequests.yaml b/package/crds/metal.equinix.jet.crossplane.io_spotmarketrequests.yaml index 433a2e2..51f6529 100644 --- a/package/crds/metal.equinix.jet.crossplane.io_spotmarketrequests.yaml +++ b/package/crds/metal.equinix.jet.crossplane.io_spotmarketrequests.yaml @@ -72,15 +72,16 @@ spec: devices to be created type: number facilities: - description: Facility IDs where devices should be created. Facility - IDs where devices should be created + description: (Deprecated) Facility IDs where devices should be + created. Use metro instead; read the facility to metro migration + guide Facility IDs where devices should be created items: type: string type: array instanceParameters: description: 'Key/Value pairs of parameters for devices provisioned from this request. Valid keys are: billing_cycle, plan, operating_system, - hostname, termintation_time, always_pxe, description, features, + hostname, termination_time, always_pxe, description, features, locked, project_ssh_keys, user_ssh_keys, userdata, customdata, ipxe_script_url, tags. You can find each parameter description in equinix_metal_device docs. Parameters for devices provisioned @@ -411,7 +412,7 @@ spec: instanceParameters: description: 'Key/Value pairs of parameters for devices provisioned from this request. Valid keys are: billing_cycle, plan, operating_system, - hostname, termintation_time, always_pxe, description, features, + hostname, termination_time, always_pxe, description, features, locked, project_ssh_keys, user_ssh_keys, userdata, customdata, ipxe_script_url, tags. You can find each parameter description in equinix_metal_device docs. Parameters for devices provisioned @@ -419,6 +420,8 @@ spec: the [equinix_metal_device doc](device.md)' items: properties: + terminationTime: + type: string termintationTime: type: string type: object diff --git a/package/crds/metal.equinix.jet.crossplane.io_vlans.yaml b/package/crds/metal.equinix.jet.crossplane.io_vlans.yaml index da47316..72dbcec 100644 --- a/package/crds/metal.equinix.jet.crossplane.io_vlans.yaml +++ b/package/crds/metal.equinix.jet.crossplane.io_vlans.yaml @@ -67,10 +67,13 @@ spec: description: Description string. Description string type: string facility: - description: Facility where to create the VLAN. Facility where - to create the VLAN + description: (Deprecated) Facility where to create the VLAN. Use + metro instead; read the facility to metro migration guide Facility + where to create the VLAN type: string metro: + description: Metro in which to create the VLAN Metro in which + to create the VLAN type: string projectId: description: ID of parent project. ID of parent project diff --git a/package/crds/network.equinix.jet.crossplane.io_devices.yaml b/package/crds/network.equinix.jet.crossplane.io_devices.yaml index 89e676b..747c195 100644 --- a/package/crds/network.equinix.jet.crossplane.io_devices.yaml +++ b/package/crds/network.equinix.jet.crossplane.io_devices.yaml @@ -346,6 +346,13 @@ spec: - node1 type: object type: array + connectivity: + description: 'Device accessibility (INTERNET-ACCESS or PRIVATE + or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default + will be INTERNET-ACCESS Parameter to identify internet access + for device. Supported Values: INTERNET-ACCESS(default) or PRIVATE + or INTERNET-ACCESS-WITH-PRVT-MGMT' + type: string coreCount: description: Number of CPU cores used by device. Number of CPU cores used by device diff --git a/package/crds/network.equinix.jet.crossplane.io_sshkeys.yaml b/package/crds/network.equinix.jet.crossplane.io_sshkeys.yaml index 5734ca6..5ea7ab8 100644 --- a/package/crds/network.equinix.jet.crossplane.io_sshkeys.yaml +++ b/package/crds/network.equinix.jet.crossplane.io_sshkeys.yaml @@ -73,6 +73,10 @@ spec: If this is a file, it can be read using the file interpolation function type: string + type: + description: 'The type of SSH key: RSA (default) or DSA. The type + of SSH key: RSA (default) or DSA' + type: string required: - name - publicKey