ONEx API

Documentation Powered by ReDoc

# ONEx API (0.0.1)

Download OpenAPI specification:Download

URL: https://github.com/onex/models/issues License: MIT

The Open Network Experiments API and Data Models

# Configuration

## set_config

Sets the ONEx configuration.

##### Request Body schema: application/json

| Array of objects (Host)
| object (Fabric)
| object (Dataflow)
| object (Chaos) Configuration of chaos experiments
| object (Insights) Configuration of insights providing methods
| Array of objects (L1SettingsProfile) A list of Layer 1 settings profiles

### Responses

https://{hostname}:{port}/{basePath}/config

### Request samples

- Payload

Content type
application/json
`
{

- "hosts":
  [
  - {
    - "name": "string",
    - "address": "string",
    - "prefix": 24,
    - "l1_profile_name": "string",
    - "annotations": "string"
    }
  ],
- "fabric":
  {
  - "choice": "clos",
  - "clos":
    {
    - "spine":
      {
      - "count": 1,
      - "downlink_ecmp_mode": "random_spray",
      - "qos_profile_name": "string",
      - "annotations": "string"
      },
    - "pods":
      [
      - {
        - "count": 1,
        - "pod_profile_name": "string",
        - "annotations": "string"
        }
      ],
    - "host_links":
      [
      - {
        - "host_name": "string",
        - "host_type": "external",
        - "front_panel_port": 0,
        - "choice": "tor",
        - "spine": 1,
        - "pod":
          {
          - "pod_index": 1,
          - "switch_index": 1
          },
        - "tor":
          {
          - "pod_index": 1,
          - "switch_index": 1
          },
        - "annotations": "string"
        }
      ],
    - "pod_profiles":
      [
      - {
        - "name": "string",
        - "pod_switch":
          {
          - "count": 1,
          - "uplink_ecmp_mode": "random_spray",
          - "downlink_ecmp_mode": "random_spray",
          - "qos_profile_name": "string",
          - "annotations": "string"
          },
        - "tors":
          [
          - {
            - "count": 1,
            - "tor_profile_name": "string",
            - "annotations": "string"
            }
          ],
        - "pod_to_spine_oversubscription": "string",
        - "annotations": "string"
        }
      ],
    - "tor_profiles":
      [
      - {
        - "name": "string",
        - "tor_mode": "layer2",
        - "uplink_ecmp_mode": "random_spray",
        - "qos_profile_name": "string",
        - "tor_to_pod_oversubscription":
          {
          - "ratio": "string",
          - "mode": "use_host_capacity",
          - "host_capacity": 1
          },
        - "annotations": "string"
        }
      ],
    - "parallel_fabric_count": 1,
    - "annotations": "string"
    },
  - "qos_profiles":
    [
    - {
      - "name": "string",
      - "ingress_admission":
        {
        - "reserved_buffer_bytes": 0,
        - "shared_buffer_bytes": 0,
        - "priority_list":
          [
          - "0"
          ]
        },
      - "scheduler":
        {
        - "scheduler_mode": "strict_priority",
        - "weight_list":
          [
          - 0
          ]
        },
      - "packet_classification":
        {
        - "map_dscp_to_traffic_class":
          {
          - "property1": "string",
          - "property2": "string"
          },
        - "map_traffic_class_to_queue":
          {
          - "property1": "string",
          - "property2": "string"
          }
        },
      - "wred":
        {
        - "queue_list":
          [
          - 0
          ],
        - "ecn_marking_enabled": false,
        - "min_threshold_bytes": 1,
        - "max_threshold_bytes": 2,
        - "max_probability_percent": 100
        },
      - "pfc":
        {
        - "enabled": false,
        - "priority_list":
          [
          - 0
          ],
        - "headroom_buffer_bytes": 0,
        - "resume_threshold_bytes": 0
        },
      - "annotations": "string"
      }
    ]
  },
- "dataflow":
  {
  - "host_management":
    [
    - {
      - "host_name": "string",
      - "nic_rx_buffer": 0,
      - "nic_tx_buffer": 0,
      - "nic_speed": 0,
      - "management_address": "string",
      - "nic_name": "string"
      }
    ],
  - "workload":
    [
    - {
      - "name": "string",
      - "choice": "scatter",
      - "scatter":
        {
        - "sources":
          [
          - "string"
          ],
        - "destinations":
          [
          - "string"
          ],
        - "flow_profile_name": "string"
        },
      - "gather":
        {
        - "sources":
          [
          - "string"
          ],
        - "destinations":
          [
          - "string"
          ],
        - "flow_profile_name": "string"
        },
      - "loop":
        {
        - "iterations": 0,
        - "children":
          [
          - { }
          ]
        },
      - "compute":
        {
        - "nodes":
          [
          - "string"
          ],
        - "choice": "simulated",
        - "simulated":
          {
          - "duration": 0
          }
        },
      - "all_reduce":
        {
        - "nodes":
          [
          - "string"
          ],
        - "flow_profile_name": "string",
        - "type": "ring"
        },
      - "broadcast":
        {
        - "sources":
          [
          - "string"
          ],
        - "destinations":
          [
          - "string"
          ],
        - "flow_profile_name": "string"
        },
      - "all_to_all":
        {
        - "nodes":
          [
          - "string"
          ],
        - "flow_profile_name": "string"
        }
      }
    ],
  - "flow_profiles":
    [
    - {
      - "name": "string",
      - "data_size": 0,
      - "l2_protocol_choice": "ethernet",
      - "ethernet":
        {
        - "mtu": 1500
        },
      - "l4_protocol_choice": "tcp",
      - "ip":
        {
        - "dscp": 0
        },
      - "tcp":
        {
        - "congestion_algorithm": "cubic",
        - "initcwnd": 0,
        - "send_buf": 0,
        - "receive_buf": 0,
        - "delayed_ack": 0,
        - "selective_ack": true,
        - "min_rto": 0,
        - "mss": 1500,
        - "ecn": true,
        - "enable_timestamp": true,
        - "destination_port":
          {
          - "choice": "single_value",
          - "single_value":
            {
            - "value": 1
            },
          - "range":
            {
            - "start_value": 1,
            - "increment": 1
            }
          },
        - "source_port":
          {
          - "choice": "single_value",
          - "single_value":
            {
            - "value": 1
            },
          - "range":
            {
            - "start_value": 1,
            - "increment": 1
            }
          }
        },
      - "udp": { }
      }
    ]
  },
- "chaos":
  {
  - "background_traffic":
    {
    - "flows":
      [
      - {
        - "name": "string",
        - "injection_port": "string",
        - "choice": "stateless",
        - "stateless":
          {
          - "rate": 0,
          - "transmission_mode": "continuous",
          - "packet":
            {
            - "src_address": "string",
            - "dst_address": "string",
            - "src_port": 1024,
            - "dst_port": 1024,
            - "size": 1000,
            - "l4_protocol": "tcp",
            - "ds_field":
              {
              - "dscp": 0,
              - "ecn": 0
              }
            },
          - "burst":
            {
            - "transmit_duration": 0,
            - "transmit_gap": 0,
            - "unit": "ms"
            }
          },
        - "annotations": "string"
        }
      ]
    },
  - "drop_frames":
    [
    - {
      - "name": "string",
      - "link": "string",
      - "mode": "percentage_time",
      - "percentage": 5,
      - "interval": 1,
      - "annotations": "string"
      }
    ]
  },
- "insights":
  {
  - "port_mirroring":
    [
    - {
      - "name": "string",
      - "source_port": "string",
      - "destination_port": 0,
      - "mirror_type": "ingress_frames",
      - "annotations": "string"
      }
    ]
  },
- "layer1_profiles":
  [
  - {
    - "name": "string",
    - "link_speed": "speed_100_gbps",
    - "choice": "autonegotiation",
    - "autonegotiation":
      {
      - "advertise_fec": true
      },
    - "manual":
      {
      - "fec_mode": "reed_solomon"
      },
    - "annotations": "string"
    }
  ]

}`

### Response samples

- 200
- 400
- 500

Content type
application/json
`
{

- "warnings":
  [
  - {
    - "message": "string",
    - "code": 0,
    - "detail": "string"
    }
  ]

}`

## get_config

Gets the ONEx configuration.

### Responses

https://{hostname}:{port}/{basePath}/config

### Response samples

- 200
- 400
- 500

Content type
application/json
`
{

- "hosts":
  [
  - {
    - "name": "string",
    - "address": "string",
    - "prefix": 24,
    - "l1_profile_name": "string",
    - "annotations": "string"
    }
  ],
- "fabric":
  {
  - "choice": "clos",
  - "clos":
    {
    - "spine":
      {
      - "count": 1,
      - "downlink_ecmp_mode": "random_spray",
      - "qos_profile_name": "string",
      - "annotations": "string"
      },
    - "pods":
      [
      - {
        - "count": 1,
        - "pod_profile_name": "string",
        - "annotations": "string"
        }
      ],
    - "host_links":
      [
      - {
        - "host_name": "string",
        - "host_type": "external",
        - "front_panel_port": 0,
        - "choice": "tor",
        - "spine": 1,
        - "pod":
          {
          - "pod_index": 1,
          - "switch_index": 1
          },
        - "tor":
          {
          - "pod_index": 1,
          - "switch_index": 1
          },
        - "annotations": "string"
        }
      ],
    - "pod_profiles":
      [
      - {
        - "name": "string",
        - "pod_switch":
          {
          - "count": 1,
          - "uplink_ecmp_mode": "random_spray",
          - "downlink_ecmp_mode": "random_spray",
          - "qos_profile_name": "string",
          - "annotations": "string"
          },
        - "tors":
          [
          - {
            - "count": 1,
            - "tor_profile_name": "string",
            - "annotations": "string"
            }
          ],
        - "pod_to_spine_oversubscription": "string",
        - "annotations": "string"
        }
      ],
    - "tor_profiles":
      [
      - {
        - "name": "string",
        - "tor_mode": "layer2",
        - "uplink_ecmp_mode": "random_spray",
        - "qos_profile_name": "string",
        - "tor_to_pod_oversubscription":
          {
          - "ratio": "string",
          - "mode": "use_host_capacity",
          - "host_capacity": 1
          },
        - "annotations": "string"
        }
      ],
    - "parallel_fabric_count": 1,
    - "annotations": "string"
    },
  - "qos_profiles":
    [
    - {
      - "name": "string",
      - "ingress_admission":
        {
        - "reserved_buffer_bytes": 0,
        - "shared_buffer_bytes": 0,
        - "priority_list":
          [
          - "0"
          ]
        },
      - "scheduler":
        {
        - "scheduler_mode": "strict_priority",
        - "weight_list":
          [
          - 0
          ]
        },
      - "packet_classification":
        {
        - "map_dscp_to_traffic_class":
          {
          - "property1": "string",
          - "property2": "string"
          },
        - "map_traffic_class_to_queue":
          {
          - "property1": "string",
          - "property2": "string"
          }
        },
      - "wred":
        {
        - "queue_list":
          [
          - 0
          ],
        - "ecn_marking_enabled": false,
        - "min_threshold_bytes": 1,
        - "max_threshold_bytes": 2,
        - "max_probability_percent": 100
        },
      - "pfc":
        {
        - "enabled": false,
        - "priority_list":
          [
          - 0
          ],
        - "headroom_buffer_bytes": 0,
        - "resume_threshold_bytes": 0
        },
      - "annotations": "string"
      }
    ]
  },
- "dataflow":
  {
  - "host_management":
    [
    - {
      - "host_name": "string",
      - "nic_rx_buffer": 0,
      - "nic_tx_buffer": 0,
      - "nic_speed": 0,
      - "management_address": "string",
      - "nic_name": "string"
      }
    ],
  - "workload":
    [
    - {
      - "name": "string",
      - "choice": "scatter",
      - "scatter":
        {
        - "sources":
          [
          - "string"
          ],
        - "destinations":
          [
          - "string"
          ],
        - "flow_profile_name": "string"
        },
      - "gather":
        {
        - "sources":
          [
          - "string"
          ],
        - "destinations":
          [
          - "string"
          ],
        - "flow_profile_name": "string"
        },
      - "loop":
        {
        - "iterations": 0,
        - "children":
          [
          - { }
          ]
        },
      - "compute":
        {
        - "nodes":
          [
          - "string"
          ],
        - "choice": "simulated",
        - "simulated":
          {
          - "duration": 0
          }
        },
      - "all_reduce":
        {
        - "nodes":
          [
          - "string"
          ],
        - "flow_profile_name": "string",
        - "type": "ring"
        },
      - "broadcast":
        {
        - "sources":
          [
          - "string"
          ],
        - "destinations":
          [
          - "string"
          ],
        - "flow_profile_name": "string"
        },
      - "all_to_all":
        {
        - "nodes":
          [
          - "string"
          ],
        - "flow_profile_name": "string"
        }
      }
    ],
  - "flow_profiles":
    [
    - {
      - "name": "string",
      - "data_size": 0,
      - "l2_protocol_choice": "ethernet",
      - "ethernet":
        {
        - "mtu": 1500
        },
      - "l4_protocol_choice": "tcp",
      - "ip":
        {
        - "dscp": 0
        },
      - "tcp":
        {
        - "congestion_algorithm": "cubic",
        - "initcwnd": 0,
        - "send_buf": 0,
        - "receive_buf": 0,
        - "delayed_ack": 0,
        - "selective_ack": true,
        - "min_rto": 0,
        - "mss": 1500,
        - "ecn": true,
        - "enable_timestamp": true,
        - "destination_port":
          {
          - "choice": "single_value",
          - "single_value":
            {
            - "value": 1
            },
          - "range":
            {
            - "start_value": 1,
            - "increment": 1
            }
          },
        - "source_port":
          {
          - "choice": "single_value",
          - "single_value":
            {
            - "value": 1
            },
          - "range":
            {
            - "start_value": 1,
            - "increment": 1
            }
          }
        },
      - "udp": { }
      }
    ]
  },
- "chaos":
  {
  - "background_traffic":
    {
    - "flows":
      [
      - {
        - "name": "string",
        - "injection_port": "string",
        - "choice": "stateless",
        - "stateless":
          {
          - "rate": 0,
          - "transmission_mode": "continuous",
          - "packet":
            {
            - "src_address": "string",
            - "dst_address": "string",
            - "src_port": 1024,
            - "dst_port": 1024,
            - "size": 1000,
            - "l4_protocol": "tcp",
            - "ds_field":
              {
              - "dscp": 0,
              - "ecn": 0
              }
            },
          - "burst":
            {
            - "transmit_duration": 0,
            - "transmit_gap": 0,
            - "unit": "ms"
            }
          },
        - "annotations": "string"
        }
      ]
    },
  - "drop_frames":
    [
    - {
      - "name": "string",
      - "link": "string",
      - "mode": "percentage_time",
      - "percentage": 5,
      - "interval": 1,
      - "annotations": "string"
      }
    ]
  },
- "insights":
  {
  - "port_mirroring":
    [
    - {
      - "name": "string",
      - "source_port": "string",
      - "destination_port": 0,
      - "mirror_type": "ingress_frames",
      - "annotations": "string"
      }
    ]
  },
- "layer1_profiles":
  [
  - {
    - "name": "string",
    - "link_speed": "speed_100_gbps",
    - "choice": "autonegotiation",
    - "autonegotiation":
      {
      - "advertise_fec": true
      },
    - "manual":
      {
      - "fec_mode": "reed_solomon"
      },
    - "annotations": "string"
    }
  ]

}`

# State

## set_state

Updates the state of ONEx configured experiment(s).

##### Request Body schema: application/json

| object (State.Chaos)

### Responses

https://{hostname}:{port}/{basePath}/state

### Request samples

- Payload

Content type
application/json
`
{

- "chaos":
  {
  - "drop_frames":
    [
    - {
      - "config_names":
        [
        - "string"
        ],
      - "state": "started"
      }
    ],
  - "background_traffic":
    [
    - {
      - "flow_names":
        [
        - "string"
        ],
      - "state": "started"
      }
    ]
  }

}`

### Response samples

- 200
- 400
- 500

Content type
application/json
`
{

- "warnings":
  [
  - {
    - "message": "string",
    - "code": 0,
    - "detail": "string"
    }
  ]

}`

## get_state

Gets the state of ONEx configured experiments.

### Responses

https://{hostname}:{port}/{basePath}/state

### Response samples

- 200
- 400
- 500

Content type
application/json
`
{

- "chaos":
  {
  - "drop_frames":
    [
    - {
      - "config_names":
        [
        - "string"
        ],
      - "state": "started"
      }
    ],
  - "background_traffic":
    [
    - {
      - "flow_names":
        [
        - "string"
        ],
      - "state": "started"
      }
    ]
  }

}`

# Metrics

## get_metrics

Gets the requested fabric metrics.

##### Request Body schema: application/json

| object (PortMetrics.Request)

### Responses

https://{hostname}:{port}/{basePath}/fabric/metrics/operations/query

### Request samples

- Payload

Content type
application/json
`
{

- "port_metrics":
  {
  - "choice": "port_names",
  - "port_names":
    [
    - "string"
    ],
  - "front_panel_ports":
    [
    - 0
    ],
  - "select_metrics":
    [
    - "link_status"
    ],
  - "from_cache": false
  }

}`

### Response samples

- 200
- 400
- 500

Content type
application/json
`
{

- "port_metrics":
  {
  - "timestamp": 0,
  - "metrics":
    [
    - {
      - "port_name": "string",
      - "meta":
        {
        - "front_panel_port": 0,
        - "tx_switch": "string",
        - "rx_switch": "string",
        - "connected_to": "string",
        - "link_name": "string",
        - "annotations": "string"
        },
      - "metrics":
        {
        - "link_status": "link_up",
        - "frames_transmitted_all": 0,
        - "frames_transmitted_multicast": 0,
        - "frames_transmitted_unicast": 0,
        - "frames_transmitted_broadcast": 0,
        - "frames_transmitted_length_64": 0,
        - "frames_transmitted_length_65_127": 0,
        - "frames_transmitted_length_128_255": 0,
        - "frames_transmitted_length_256_511": 0,
        - "frames_transmitted_length_512_1023": 0,
        - "frames_transmitted_length_1024_1518": 0,
        - "frames_transmitted_length_1519_2047": 0,
        - "frames_transmitted_length_2048_4095": 0,
        - "bytes_transmitted_all": 0,
        - "frames_transmitted_ecn_marked": 0,
        - "frames_transmitted_priority_pause": 0,
        - "frames_transmitted_pause": 0,
        - "frames_received_all": 0,
        - "frames_received_multicast": 0,
        - "frames_received_unicast": 0,
        - "frames_received_broadcast": 0,
        - "frames_received_length_64": 0,
        - "frames_received_length_65_127": 0,
        - "frames_received_length_128_255": 0,
        - "frames_received_length_256_511": 0,
        - "frames_received_length_512_1023": 0,
        - "frames_received_length_1024_1518": 0,
        - "frames_received_length_1519_2047": 0,
        - "frames_received_length_2048_4095": 0,
        - "bytes_received_all": 0,
        - "frames_received_errors": 0,
        - "frames_received_pause": 0,
        - "frames_received_priority_pause": 0,
        - "frames_dropped_egress": 0,
        - "frames_dropped_ingress": 0,
        - "per_egress_queue_metrics":
          [
          - {
            - "queue_number": 0,
            - "egress_buffer_reserved_usage_current": 0,
            - "egress_buffer_total_usage_peak": 0,
            - "multicast_buffer_total_usage_peak": 0
            }
          ],
        - "per_priority_group_metrics":
          [
          - {
            - "priority_group": 0,
            - "ingress_buffer_reserved_usage_current": 0,
            - "ingress_buffer_shared_usage_peak": 0
            }
          ],
        - "flow_counter_metrics":
          {
          - "per_background_traffic_flow":
            [
            - {
              - "flow_name": "string",
              - "frames_transmitted": 0
              }
            ]
          }
        }
      }
    ]
  }

}`

## clear_metrics

Clear the metrics.

### Responses

https://{hostname}:{port}/{basePath}/fabric/metrics/operations/clear

### Response samples

- 400
- 500

Content type
application/json
`
{

- "errors":
  [
  - {
    - "message": "string",
    - "code": 0,
    - "detail": "string"
    }
  ]

}`