Facilities (deprecated)¶
In May of 2023 Equinix Metal™ is deprecating facility-specific API endpoints and support. All location-related concepts, including provisioning of devices and other infrastructure, is moving to the Metro level.
Starting on May 30th, 2023:
- The API returns response headers containing deprecation and sunset messages to requests sent to facilities endpoints or requests using facilities in their parameters.
- New Organizations (those created after May 30th) will not have access to facilities endpoints or be able to use facilities in their request parameters.
Use of the facilities-specific endpoints and request parameters will be permanently disabled for all users in late 2023.
Finding General Metro Information¶
With the deprecation of Facilities endpoints, responses to the following CLI and API requests will return response headers containing deprecation information. Please update any scripts or automation that uses these endpoints to query for Metros instead.
- The
metal facilities get
command. - The
/facilities
endpoint. - The
/projects/{id}/facilities
endpoint. - The
/organizations/{id}/facilities
endpoint.
Use the following commands and endpoints for Metros instead.
- The
metal metros get
command. - The
/locations/metros
endpoint. - The
/locations/metros/{id}
endpoint.
Note - all Metros are visible to all Organizations and Projects.
Provisioning¶
With the deprecation of Facilities endpoints, responses to the following CLI and API requests will return response headers containing deprecation information. Please update any scripts or automation that uses these endpoints to provision using Metros instead.
When you use the metal device create
command, use the --metro
or -m
parameter to specify the Metro instead of a facility.
metal device create -p $METAL_PROJECT_ID -P <plan> -m <metro> -H <hostname> -O <operating_system>
When you send the provisioning POST
request projects/{id}/devices
endpoint, use the "metro"
field with the metro_code
where you want the server to live instead of specifying a Facility.
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/devices" \
-d '{
"metro": "<metro_code>",
"plan": "<server_type>",
"operating_system": "<os_code>"
}'
Note: "metro"
only takes a string type. "facilities
" used to take a string or an array of strings.
Using Metros in Place of Facilities¶
Similar to provisioning on-demand servers, other deployment options and platform features that previously supported provisioning in specific facilities will return response headers indicating their deprecation.
Please update your scripts or automation to use Metros in place of facilities in the CLI or API.
Be aware, the use of the "facilities"
parameter is mutually exclusive to the "metros"
parameter; it is not possible to use both.
Capacity Queries¶
With the deprecation of Facilities endpoints, responses to the following CLI and API requests will return response headers containing deprecation information. Please update any scripts or automation that uses these endpoints to query for Metro capacity instead.
- The
metal capacity
command when used with a Facility instead of a Metro. - The
metal capacity check
command when used with a Facility instead of a Metro. - The
/capacity
endpoint.
Which Metro or Facility is my Server in?¶
Responses for servers and other infrastructure that contain a "facilities"
object will continue to return it. For infrastructure that is provisioned on the Metro-level, the "facilities"
object may be empty.
All responses contain a "metro"
object, to identify which metro it is provisioned in.
You can still find out which Facility your server is in, however, you should know that facility-level diversity does not provide high-availability or redundancy guarantees. To set up and configure high-availability you should aim for a multi-metro architecture.
Use the metal device
command, and specify that you want a JSON response using the output flag -o
.
metal device get -i <device_id> -o json
Send a GET
request to the devices/{id}
endpoint.
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' https://api.equinix.com/metal/v1/devices/{id}
Both the CLI and API returns a response that includes a "facility"
object. Sample Response:
{
"id": "0dd71771-143e-4964-87d2-7e6f0348253a",
...
"facility": {
"id": "917e9941-8323-487f-8688-2b0b11baacd4",
"name": "Silicon Valley",
"code": "sv15",
"features": [
"baremetal",
"backend_transfer",
"layer_2",
"global_ipv4",
"ibx"
],
"address": {
...
}
},
"metro": {
"id": "2991b022-b8c4-497e-8db7-5a407c3a209b",
"name": "Silicon Valley",
"code": "sv",
"country": "US"
}
},
...
}