| |
| 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; |
| |
| } |
| } |
| |
| |
| } |