blob: b79eef12779e254aefbe1fcc1ca2f5da0618332f [file] [log] [blame]
module ietf-voltha {
namespace "urn:opencord:params:xml:ns:voltha:ietf-voltha";
prefix voltha;
import ietf-openflow_13 { prefix openflow_13 ; }
import ietf-adapter { prefix adapter ; }
import ietf-health { prefix health ; }
import ietf-common { prefix common ; }
import ietf-device { prefix device ; }
import ietf-logical_device { prefix logical_device ; }
import ietf-empty { prefix empty ; }
organization "CORD";
contact
" Any name";
description
"";
revision "2016-11-15" {
description "Initial revision.";
reference "reference";
}
grouping DeviceGroup {
description
"";
leaf id {
type string;
description
"";
}
list logical_devices {
key "id";
uses logical_device:LogicalDevice;
description
"";
}
list devices {
key "id";
uses device:Device;
description
"";
}
}
grouping DeviceGroups {
description
"";
list items {
key "id";
uses DeviceGroup;
description
"";
}
}
grouping VolthaInstance {
description
"Top-level (root) node for a Voltha Instance";
leaf instance_id {
type string;
description
"";
}
leaf version {
type string;
description
"";
}
leaf log_level {
type common:LogLevel;
description
"";
}
container health {
uses health:HealthStatus;
description
"";
}
list adapters {
key "id";
uses adapter:Adapter;
description
"";
}
list logical_devices {
key "id";
uses logical_device:LogicalDevice;
description
"";
}
list devices {
key "id";
uses device:Device;
description
"";
}
list device_types {
key "id";
uses device:DeviceType;
description
"";
}
list device_groups {
key "id";
uses DeviceGroup;
description
"";
}
}
grouping VolthaInstances {
description
"";
list items {
key "items";
leaf items {
type string;
description
"";
}
description
"";
}
}
grouping Voltha {
description
"Voltha representing the entire Voltha cluster";
leaf version {
type string;
description
"";
}
leaf log_level {
type common:LogLevel;
description
"";
}
list instances {
key "instance_id";
uses VolthaInstance;
description
"";
}
list adapters {
key "id";
uses adapter:Adapter;
description
"";
}
list logical_devices {
key "id";
uses logical_device:LogicalDevice;
description
"";
}
list devices {
key "id";
uses device:Device;
description
"";
}
list device_groups {
key "id";
uses DeviceGroup;
description
"";
}
}
/* Cluster-wide Voltha APIs
These APIs are potentially dispatched to the leader of the Voltha cluster,
to a specific Voltha instance which owns the given device or logical device." */
rpc VolthaGlobalService-GetVoltha {
description
"Get high level information on the Voltha cluster";
input {
uses empty:Empty;
}
output {
uses Voltha;
}
}
rpc VolthaGlobalService-ListVolthaInstances {
description
"List all Voltha cluster instances";
input {
uses empty:Empty;
}
output {
uses VolthaInstances;
}
}
rpc VolthaGlobalService-GetVolthaInstance {
description
"Get details on a Voltha cluster instance";
input {
uses common:ID;
}
output {
uses VolthaInstance;
}
}
rpc VolthaGlobalService-ListLogicalDevices {
description
"List all logical devices managed by the Voltha cluster";
input {
uses empty:Empty;
}
output {
uses logical_device:LogicalDevices;
}
}
rpc VolthaGlobalService-GetLogicalDevice {
description
"Get additional information on a given logical device";
input {
uses common:ID;
}
output {
uses logical_device:LogicalDevice;
}
}
rpc VolthaGlobalService-ListLogicalDevicePorts {
description
"List ports of a logical device";
input {
uses common:ID;
}
output {
uses logical_device:LogicalPorts;
}
}
rpc VolthaGlobalService-ListLogicalDeviceFlows {
description
"List all flows of a logical device";
input {
uses common:ID;
}
output {
uses openflow_13:Flows;
}
}
rpc VolthaGlobalService-UpdateLogicalDeviceFlowTable {
description
"Update flow table for logical device";
input {
uses openflow_13:FlowTableUpdate;
}
output {
uses empty:Empty;
}
}
rpc VolthaGlobalService-ListLogicalDeviceFlowGroups {
description
"List all flow groups of a logical device";
input {
uses common:ID;
}
output {
uses openflow_13:FlowGroups;
}
}
rpc VolthaGlobalService-UpdateLogicalDeviceFlowGroupTable {
description
"Update group table for device";
input {
uses openflow_13:FlowGroupTableUpdate;
}
output {
uses empty:Empty;
}
}
rpc VolthaGlobalService-ListDevices {
description
"List all physical devices controlled by the Voltha cluster";
input {
uses empty:Empty;
}
output {
uses device:Devices;
}
}
rpc VolthaGlobalService-GetDevice {
description
"Get more information on a given physical device";
input {
uses common:ID;
}
output {
uses device:Device;
}
}
rpc VolthaGlobalService-CreateDevice {
description
"Pre-provision a new physical device";
input {
uses device:Device;
}
output {
uses device:Device;
}
}
rpc VolthaGlobalService-ActivateDevice {
description
"Activate a pre-provisioned device";
input {
uses common:ID;
}
output {
uses empty:Empty;
}
}
rpc VolthaGlobalService-ListDevicePorts {
description
"List ports of a device";
input {
uses common:ID;
}
output {
uses device:Ports;
}
}
rpc VolthaGlobalService-ListDeviceFlows {
description
"List all flows of a device";
input {
uses common:ID;
}
output {
uses openflow_13:Flows;
}
}
rpc VolthaGlobalService-ListDeviceFlowGroups {
description
"List all flow groups of a device";
input {
uses common:ID;
}
output {
uses openflow_13:FlowGroups;
}
}
rpc VolthaGlobalService-ListDeviceTypes {
description
"List device types known to Voltha";
input {
uses empty:Empty;
}
output {
uses device:DeviceTypes;
}
}
rpc VolthaGlobalService-GetDeviceType {
description
"Get additional information on a device type";
input {
uses common:ID;
}
output {
uses device:DeviceType;
}
}
rpc VolthaGlobalService-ListDeviceGroups {
description
"List all device sharding groups";
input {
uses empty:Empty;
}
output {
uses DeviceGroups;
}
}
rpc VolthaGlobalService-GetDeviceGroup {
description
"Get additional information on a device group";
input {
uses common:ID;
}
output {
uses DeviceGroup;
}
}
/* Per-instance APIs
These APIs are always served locally by the Voltha instance on which the
call is made." */
rpc VolthaLocalService-GetVolthaInstance {
description
"Get information on this Voltha instance";
input {
uses empty:Empty;
}
output {
uses VolthaInstance;
}
}
rpc VolthaLocalService-GetHealth {
description
"Get the health state of the Voltha instance";
input {
uses empty:Empty;
}
output {
uses health:HealthStatus;
}
}
rpc VolthaLocalService-ListAdapters {
description
"List all active adapters (plugins) in this Voltha instance";
input {
uses empty:Empty;
}
output {
uses adapter:Adapters;
}
}
rpc VolthaLocalService-ListLogicalDevices {
description
"List all logical devices managed by this Voltha instance";
input {
uses empty:Empty;
}
output {
uses logical_device:LogicalDevices;
}
}
rpc VolthaLocalService-GetLogicalDevice {
description
"Get additional information on given logical device";
input {
uses common:ID;
}
output {
uses logical_device:LogicalDevice;
}
}
rpc VolthaLocalService-ListLogicalDevicePorts {
description
"List ports of a logical device";
input {
uses common:ID;
}
output {
uses logical_device:LogicalPorts;
}
}
rpc VolthaLocalService-ListLogicalDeviceFlows {
description
"List all flows of a logical device";
input {
uses common:ID;
}
output {
uses openflow_13:Flows;
}
}
rpc VolthaLocalService-UpdateLogicalDeviceFlowTable {
description
"Update flow table for logical device";
input {
uses openflow_13:FlowTableUpdate;
}
output {
uses empty:Empty;
}
}
rpc VolthaLocalService-ListLogicalDeviceFlowGroups {
description
"List all flow groups of a logical device";
input {
uses common:ID;
}
output {
uses openflow_13:FlowGroups;
}
}
rpc VolthaLocalService-UpdateLogicalDeviceFlowGroupTable {
description
"Update group table for logical device";
input {
uses openflow_13:FlowGroupTableUpdate;
}
output {
uses empty:Empty;
}
}
rpc VolthaLocalService-ListDevices {
description
"List all physical devices managed by this Voltha instance";
input {
uses empty:Empty;
}
output {
uses device:Devices;
}
}
rpc VolthaLocalService-GetDevice {
description
"Get additional information on this device";
input {
uses common:ID;
}
output {
uses device:Device;
}
}
rpc VolthaLocalService-CreateDevice {
description
"Pre-provision a new physical device";
input {
uses device:Device;
}
output {
uses device:Device;
}
}
rpc VolthaLocalService-ActivateDevice {
description
"Activate a pre-provisioned device";
input {
uses common:ID;
}
output {
uses empty:Empty;
}
}
rpc VolthaLocalService-ListDevicePorts {
description
"List ports of a device";
input {
uses common:ID;
}
output {
uses device:Ports;
}
}
rpc VolthaLocalService-ListDeviceFlows {
description
"List all flows of a device";
input {
uses common:ID;
}
output {
uses openflow_13:Flows;
}
}
rpc VolthaLocalService-ListDeviceFlowGroups {
description
"List all flow groups of a device";
input {
uses common:ID;
}
output {
uses openflow_13:FlowGroups;
}
}
rpc VolthaLocalService-ListDeviceTypes {
description
"List device types know to Voltha instance";
input {
uses empty:Empty;
}
output {
uses device:DeviceTypes;
}
}
rpc VolthaLocalService-GetDeviceType {
description
"Get additional information on given device type";
input {
uses common:ID;
}
output {
uses device:DeviceType;
}
}
rpc VolthaLocalService-ListDeviceGroups {
description
"List device sharding groups managed by this Voltha instance";
input {
uses empty:Empty;
}
output {
uses DeviceGroups;
}
}
rpc VolthaLocalService-GetDeviceGroup {
description
"Get more information on given device shard";
input {
uses common:ID;
}
output {
uses DeviceGroup;
}
}
rpc VolthaLocalService-StreamPacketsOut {
description
"Stream control packets to the dataplane
This does not have an HTTP representation";
input {
uses openflow_13:PacketOut;
}
output {
uses empty:Empty;
}
}
rpc VolthaLocalService-ReceivePacketsIn {
description
"Receive control packet stream
This does not have an HTTP representation";
input {
uses empty:Empty;
}
output {
uses openflow_13:PacketIn;
}
}
}