eqixiacEquinix Infrastructure as Code

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.

AccessorResource
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
PageCovers
Devices (this page)Catalog, device create, redundancy, licences
ConnectivityFabric connections from a device, BGP peering, device links
OperationsBackups, restore feasibility, history, response shapes

Worked example: network functions walkthrough.

Catalog and prerequisites#

Java
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#

Java
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(...) and withLicenseToken(...) supply a bring-your-own license. postLicenseFile(metro, deviceTypeCode, licenseType, path) uploads the file as multipart/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.