Network Edge devices
Virtual routers, firewalls and SD-WAN gateways on Equinix-operated hardware: catalog, device create, redundancy and licences.
Scope#
Network Edge runs virtual network functions (routers, firewalls, SD-WAN gateways, load balancers) from third-party vendors on Equinix-operated hardware in a metro. A device attaches to Fabric like a port does, so it can be the A-side or Z-side of a virtual connection. Customers use it in metros where they have no colocation, and equally alongside a cage or cabinet in the same metro or IBX, for functions that do not justify buying, shipping and maintaining hardware. The SDK covers the 66 endpoints of network-edgev1 1.0.0.
| Accessor | Resource |
|---|---|
devices() | Virtual devices, device types, interfaces, images, ACLs, reboot, RMA, license files |
deviceLinks() | Device link groups between devices |
bgpPeerings() | BGP peering over a Fabric connection |
vpns() | IPsec VPN from a device |
aclTemplates() | ACL templates |
publicKeys() | SSH public keys |
backups() | Configuration backups and restore feasibility |
setup() | Accounts, metros, agreements, pricing, order summary, file upload |
| Page | Covers |
|---|---|
| Devices (this page) | Catalog, device create, redundancy, licences |
| Connectivity | Fabric connections from a device, BGP peering, device links |
| Operations | Backups, restore feasibility, history, response shapes |
Worked example: network functions walkthrough.
Catalog and prerequisites#
import com.eqixiac.equinix.core.enums.MetroCode;
import com.eqixiac.equinix.networkedge.model.Account;
import com.eqixiac.equinix.networkedge.model.DeviceType;
for (DeviceType type : networkEdge.devices().listDeviceTypes()) {
System.out.println(type.getDeviceTypeCode() + " " + type.getVendor() + " " + type.getName());
}
for (Account account : networkEdge.setup().listAccounts(MetroCode.DC)) {
System.out.println(account.getAccountNumber() + " " + account.getAccountName());
}A device type lists the valid combinations of core count, software package, version, license mode and throughput, and the service rejects a create with a combination that the type does not list.
Device create#
import com.eqixiac.equinix.core.enums.BandwidthUnit;
import com.eqixiac.equinix.networkedge.enums.DeviceManagementType;
import com.eqixiac.equinix.networkedge.enums.LicenseType;
import com.eqixiac.equinix.networkedge.model.Device;
Device router = networkEdge.devices().define("c8000v-dc-01")
.withDeviceTypeCode("C8000V")
.withMetroCode(MetroCode.DC)
.withAccountNumber("123456")
.withDeviceManagementType(DeviceManagementType.SELF_CONFIGURED)
.withLicenseMode(LicenseType.SUB)
.withPackageCode("network-essentials")
.withVersion("17.06.01a")
.withCore(4)
.withThroughput(500)
.withThroughputUnit(BandwidthUnit.MBPS)
.withInterfaceCount(10)
.withNewSSHUser("netops", "change-me-at-first-login")
.withAclTemplateUuid("acl-template-uuid")
.withNotification("noc@example.com")
.agreeToOrderTerms()
.create();
System.out.println(router.getUuid() + " " + router.getStatus());The package code, version and core count in the block are examples for one device type at one point in time. listDeviceTypes() returns the current values.
saveAsDraft()stores the device as a draft instead of ordering it.withSecondary(name)turns the builder into a redundant pair.withDiverseFromDeviceUuid(...)asks for placement on different hardware from an existing device.withLicenseFileId(...)andwithLicenseToken(...)supply a bring-your-own license.postLicenseFile(metro, deviceTypeCode, licenseType, path)uploads the file asmultipart/form-data, the only content type the specification accepts.- SSH users are set on the device at creation, because the API has no separate SSH user resource.
Network Edge defines no dry run for a device create, which places a billable order. setup().getPricing(...) and setup().getOrderSummary(...) return the price and the order summary document before the order is placed.