Download OpenAPI specification:Download
InfraGraph or infrastructure graph defines a model-driven, vendor-neutral, standard
interface for capturing a system of systems suitable for use in co-designing AI/HPC solutions.
This model allows for defining physical infrastructure as a logical system of systems using graph like terminology. In addition to defining a logical graph, an unlimited number of different physical characteristics can be associated with logical endpoints.
node (vertex) is the fundamental unit or entity within an infrastructure graph; represented as a endpoint with the following syntax:switch.0.asic.0 and switch.0.port.0edge is a combination of two nodes (endpoints) in a graph such as (switch.0.asic.0, switch.0.port.0)path is a sequence of edges that allows for traversal through the graph such as [server.0.xpu.0, server.0.nic.0, switch.0.port.0, switch.0.asic.0]Contributions to the API and models schema can be made in the following ways:
Given an infrastructure object this API method will create a fully qualified infrastructure graph and validate it.
Creating a fully qualified infrastructure graph requires the following steps:
| name | string^[\sa-zA-Z0-9-_()><\[\]]+$ The name of the infrastructure. Globally unique name of an object. It also serves as the primary key for arrays of objects. |
| description | string A detailed description of the infrastructure. |
Array of objects (Device) An inventory of devices and components. | |
Array of objects (Link) An inventory of the links present in the infrastructure edges. | |
Array of objects (Instance) An inventory of the device instances present in the infrastructure edges. | |
Array of objects (Infrastructure.Edge) An array of edge objects used to connect instance devices and components to other instance devices and components. These edge objects are used to form a fully qualified qualified graph. |
{- "name": "string",
- "description": "string",
- "devices": [
- {
- "name": "string",
- "description": "string",
- "components": [
- {
- "name": "string",
- "description": "string",
- "count": 0,
- "choice": "custom",
- "custom": {
- "type": "string"
}, - "device": { },
- "cpu": { },
- "xpu": { },
- "nic": { },
- "memory": { },
- "port": { },
- "switch": { }
}
], - "links": [
- {
- "name": "string",
- "description": "string",
- "physical": {
- "bandwidth": {
- "choice": "gigabits_per_second",
- "gigabits_per_second": 0,
- "gigabytes_per_second": 0,
- "gigatransfers_per_second": 0
}, - "latency": {
- "choice": "ms",
- "ms": 0,
- "us": 0,
- "ns": 0
}
}
}
], - "edges": [
- {
- "ep1": {
- "device": "string",
- "component": "string"
}, - "ep2": {
- "device": "string",
- "component": "string"
}, - "scheme": "one2one",
- "link": "string"
}
]
}
], - "links": [
- {
- "name": "string",
- "description": "string",
- "physical": {
- "bandwidth": {
- "choice": "gigabits_per_second",
- "gigabits_per_second": 0,
- "gigabytes_per_second": 0,
- "gigatransfers_per_second": 0
}, - "latency": {
- "choice": "ms",
- "ms": 0,
- "us": 0,
- "ns": 0
}
}
}
], - "instances": [
- {
- "name": "string",
- "description": "string",
- "device": "string",
- "count": 0
}
], - "edges": [
- {
- "ep1": {
- "instance": "string",
- "component": "string"
}, - "ep2": {
- "instance": "string",
- "component": "string"
}, - "scheme": "one2one",
- "link": "string"
}
]
}{- "warnings": [
- "string"
]
}This will return the current graph.
| format | string Value: "networkx" The format that the graph will be returned in. |
{- "format": "networkx"
}{- "choice": "networkx",
- "networkx": "string"
}Extend the current graph created by the set_graph API.
rank=0| choice | string Enum: "nodes" "edges" Select whether to annotate nodes or edges.. |
Array of objects (Annotation.Node) List of node annotations to apply when the choice is set to nodes. | |
Array of objects (Annotation.Edge) List of edge annotations to apply when the choice is set to edges. |
{- "choice": "nodes",
- "nodes": [
- {
- "name": "string",
- "attribute": "string",
- "value": "string"
}
], - "edges": [
- {
- "ep1": "string",
- "ep2": "string",
- "attribute": "string",
- "value": "string"
}
]
}{- "warnings": [
- "string"
]
}Query the current fully expanded graph using a declarative query syntax.
XPU or NIC| choice | string Enum: "node_filters" "shortest_path_filters" Type of filters specified in this query request. |
Array of objects (QueryNodeFilter) List of filters to match nodes. | |
Array of objects (QueryShortestPathFilter) Under Review: Proposal to abstract the shortest path interface to the graph. Add shortest path filters to retrive the shortest path between source and destination nodes |
{- "choice": "node_filters",
- "node_filters": [
- {
- "name": "string",
- "choice": "attribute_filter",
- "attribute_filter": {
- "name": "string",
- "operator": "eq",
- "value": "string",
- "logic": "and"
}, - "id_filter": {
- "operator": "eq",
- "value": "string",
- "logic": "and"
}
}
], - "shortest_path_filters": [
- {
- "name": "string",
- "source": "string",
- "destination": "string"
}
]
}{- "choice": "node_matches",
- "node_matches": [
- {
- "id": "string",
- "attributes": [
- {
- "name": "string",
- "value": "string"
}
]
}
], - "shortest_path_matches": [
- {
- "name": "string",
- "nodes": [
- "string"
]
}
]
}