blob: 0a37cf332d733e95ef662079d57655d1acd0ab7c [file] [log] [blame]
module ietf-device {
namespace "urn:opencord:params:xml:ns:voltha:ietf-device";
prefix device;
import ietf-openflow_13 { prefix openflow_13 ; }
import ietf-common { prefix common ; }
import ietf-any { prefix any ; }
organization "CORD";
contact
" Any name";
description
"";
revision "2016-11-15" {
description "Initial revision.";
reference "reference";
}
grouping DeviceType {
description
"A Device Type";
leaf id {
type string;
description
"Unique name for the device type";
}
leaf adapter {
type string;
description
"Name of the adapter that handles device type";
}
leaf accepts_bulk_flow_update {
type boolean;
description
"Capabilitities";
}
leaf accepts_add_remove_flow_updates {
type boolean;
description
"";
}
}
grouping DeviceTypes {
description
"A plurality of device types";
list items {
key "id";
uses DeviceType;
description
"";
}
}
grouping Port {
description
"";
leaf port_no {
type uint32;
description
"Device-unique port number";
}
leaf label {
type string;
description
"Arbitrary port label";
}
leaf type {
type PortType;
description
"Type of port";
}
leaf admin_state {
type common:AdminState;
description
"";
}
leaf oper_status {
type common:OperStatus;
description
"";
}
leaf device_id {
type string;
description
"Unique .id of device that owns this port";
}
typedef PortType {
type enumeration {
enum UNKNOWN {
description "";
}
enum ETHERNET_NNI {
description "";
}
enum ETHERNET_UNI {
description "";
}
enum PON_OLT {
description "";
}
enum PON_ONU {
description "";
}
}
description
"";
}
grouping PeerPort {
description
"";
leaf device_id {
type string;
description
"";
}
leaf port_no {
type uint32;
description
"";
}
}
}
grouping Ports {
description
"";
list items {
key "port_no";
uses Port;
description
"";
}
}
grouping Device {
description
"A Physical Device instance";
leaf id {
type string;
description
"Voltha's device identifier";
}
leaf type {
type string;
description
"Device type, refers to one of the registered device types";
}
leaf root {
type boolean;
description
"Is this device a root device. Each logical switch has one root
device that is associated with the logical flow switch.";
}
leaf parent_id {
type string;
description
"Parent device id, in the device tree (for a root device, the parent_id
is the logical_device.id)";
}
leaf parent_port_no {
type uint32;
description
"";
}
leaf vendor {
type string;
description
"Vendor, version, serial number, etc.";
}
leaf model {
type string;
description
"";
}
leaf hardware_version {
type string;
description
"";
}
leaf firmware_version {
type string;
description
"";
}
leaf software_version {
type string;
description
"";
}
leaf serial_number {
type string;
description
"";
}
leaf adapter {
type string;
description
"Addapter that takes care of device";
}
leaf vlan {
type uint32;
description
"Device contact on vlan (if 0, no vlan)";
}
leaf mac_address {
type string;
description
"Device contact MAC address (format: xx:xx:xx:xx:xx:xx )";
}
leaf ipv4_address {
type string;
description
"Device contact IPv4 address (format: a.b.c.d or can use hostname too)";
}
leaf ipv6_address {
type string;
description
"Device contact IPv6 address using the canonical string form
( xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx )";
}
leaf admin_state {
type common:AdminState;
description
"";
}
leaf oper_status {
type common:OperStatus;
description
"";
}
leaf connect_status {
type common:ConnectStatus;
description
"";
}
container custom {
uses any:Any;
description
"Device type specific attributes
TODO additional common attribute here";
}
list ports {
key "port_no";
uses Port;
description
"";
}
container flows {
uses openflow_13:Flows;
description
"";
}
container flow_groups {
uses openflow_13:FlowGroups;
description
"";
}
grouping ProxyAddress {
description
"";
leaf device_id {
type string;
description
"Which device to use as proxy to this device";
}
leaf channel_id {
type uint32;
description
"Sub-address within proxy device";
}
}
}
grouping Devices {
description
"";
list items {
key "id";
uses Device;
description
"";
}
}
}