eqixiacEquinix Infrastructure as Code

IBX SmartView

Environmental readings, power events, system alerts, streaming subscriptions and the asset hierarchy of a data center.

Scope#

IBX SmartView exposes the facility data of an IBX for the cages of an account: temperature and humidity per sensor, power draw and power events, facility alerts, and the hierarchy that links a cage to the infrastructure that feeds it.

AccessorAPICovers
environmentals()dcim/v3Sensor readings
powerEvents()dcim/v3Power events and power alert configurations
systemAlerts()dcim/v3Facility system alerts
streamingSubscriptions()dcim/v3Push delivery to AWS IoT, Azure Event Hub, a webhook or a REST endpoint
hierarchy(), smartViewAssets()v1Location and power hierarchy, asset details, affected assets, tag points
legacyEnvironmentals(), legacyPower()v1The earlier environmental and power APIs

Environmental readings#

Java
import com.eqixiac.equinix.ibxsmartview.model.SensorReading;

for (SensorReading reading : smartView.environmentals().list("DC6")) {
    System.out.println(reading.getSensorId() + " zone " + reading.getZoneId()
        + " temperature " + reading.getTemperature() + " humidity " + reading.getHumidity());
}

Power events and alerts#

Java
import com.eqixiac.equinix.ibxsmartview.model.PowerEvent;
import com.eqixiac.equinix.ibxsmartview.model.SystemAlert;

for (PowerEvent event : smartView.powerEvents().search(List.of("DC6", "DC11"), null, null, 0, 50)) {
    System.out.println(event.getEventType() + " " + event.getStatus() + " " + event.getConditionType()
        + " trigger " + event.getTriggerValue() + " current " + event.getCurrentValue());
}

for (SystemAlert alert : smartView.systemAlerts().search("ACTIVE", null, null, 0, 50)) {
    System.out.println(alert);
}

The arguments of powerEvents().search are the IBX list, a status list, a search text, the offset and the limit. defineAlertConfiguration() creates a power alert with thresholds. pauseAlertConfiguration, resumeAlertConfiguration and deleteAlertConfiguration manage it.

Streaming subscriptions#

A streaming subscription pushes readings and alerts to a channel, which removes the need for a monitoring system to poll the read APIs.

Java
import com.eqixiac.equinix.ibxsmartview.enums.ChannelType;
import com.eqixiac.equinix.ibxsmartview.model.StreamingSubscription;
import com.eqixiac.equinix.ibxsmartview.model.implementation.Channel;
import com.eqixiac.equinix.ibxsmartview.model.implementation.EnvironmentalMessageType;
import com.eqixiac.equinix.ibxsmartview.model.implementation.MessageType;
import com.eqixiac.equinix.ibxsmartview.model.implementation.WebhookChannelConfiguration;

StreamingSubscription subscription = smartView.streamingSubscriptions().define()
    .withChannel(Channel.builder()
        .channelType(ChannelType.WEBHOOK)
        .webhookChannelConfiguration(WebhookChannelConfiguration.builder()
            .url("https://telemetry.example.com/equinix/smartview").build())
        .build())
    .withMessageType(MessageType.builder()
        .environmental(List.of(EnvironmentalMessageType.builder()
            .accountNumber(accountNo).ibx(List.of("DC6", "DC11")).build()))
        .build())
    .create();

smartView.streamingSubscriptions().getSubscriptionData(subscription.getId());
subscription.delete();

The message types select what is delivered: environmental readings, metered power, power events and system alerts, each scoped to an account and a list of IBXs.

Hierarchy and assets#

The v1 calls require the account number, and the service answers HTTP 400 without it. The asset calls also require the IBX and the asset classification, and the SDK rejects a call with any of the three missing before it is sent.

Java
import com.eqixiac.equinix.ibxsmartview.model.implementation.HierarchyNode;

List<HierarchyNode> locations = smartView.hierarchy().getLocationHierarchy(accountNo, "DC6");
smartView.hierarchy().getPowerHierarchy(accountNo, "DC6");
smartView.smartViewAssets().getAffectedAssets(accountNo, "DC6", "Electrical", "DC6.UPS-1A");

getAffectedAssets returns the cages and cabinets that depend on a piece of infrastructure, which during a power event identifies the affected part of the facility. The classification and asset identifier in the block are illustrative, and smartViewAssets().list(...) returns the values that exist for an account.

Use with the other domains#

  • A power event can be compared with the open trouble tickets from the Customer Portal for the same IBX.
  • Readings can be delivered to the same sink as Fabric stream subscriptions.
  • The MCP tools ibx_get_environmentals and ibx_list_power_events make the two reads available to an agent (MCP server).