1 module flow-node-inventory {
2 namespace "urn:opendaylight:flow:inventory";
5 import yang-ext {prefix ext; revision-date "2013-07-09";}
6 import ietf-inet-types {prefix inet; revision-date "2010-09-24";}
7 import ietf-yang-types {prefix yang; revision-date "2010-09-24";}
8 import opendaylight-port-types {prefix port;revision-date "2013-09-25";}
9 import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
10 import opendaylight-table-types {prefix table;revision-date "2013-10-26";}
11 import opendaylight-flow-types {prefix flow;revision-date "2013-10-26";}
12 import opendaylight-group-types {prefix group;revision-date "2013-10-18";}
13 import opendaylight-meter-types {prefix meter;revision-date "2013-09-18";}
15 description "Flow Capable Node extensions to the Inventory model";
17 revision "2013-08-19" {
18 description "added descriptions";
21 identity feature-capability {
24 identity flow-feature-capability-flow-stats {
25 description "Flow statistics";
26 base feature-capability;
29 identity flow-feature-capability-table-stats {
30 description "Table statistics";
31 base feature-capability;
34 identity flow-feature-capability-port-stats {
35 description "Port statistics";
36 base feature-capability;
39 identity flow-feature-capability-stp {
40 description "802.1d spanning tree";
41 base feature-capability;
44 identity flow-feature-capability-reserved {
45 description "Reserved, must be zero";
46 base feature-capability;
49 identity flow-feature-capability-ip-reasm {
50 description "Can reassemble IP fragments";
51 base feature-capability;
54 identity flow-feature-capability-queue-stats {
55 description "Queue statistics";
56 base feature-capability;
59 identity flow-feature-capability-arp-match-ip {
60 description "Match IP addresses in ARP pkts";
61 base feature-capability;
64 identity flow-feature-capability-group-stats {
65 description "Group statistics";
66 base feature-capability;
69 identity flow-feature-capability-port-blocked {
70 description "Switch will block looping ports";
71 base feature-capability;
75 description "Features supported by openflow device.";
77 type inv:support-type;
84 description "id for the specific queue";
87 container properties {
98 description "MD-SAL identifier of openflow flow. ";
103 description "Openflow table structure. Here flows are contained.";
120 // BE-RECON: Modification for including stale-flow for Reconciliation
134 description "Openflow meter list.";
139 // BE-RECON: Modification for including stale-flow for Reconciliation
146 grouping ip-address-grouping {
147 description "Additional ip address info referring to device interface which connects to controller";
149 description "IP address of a flow capable node.";
150 type inet:ip-address;
154 grouping port-number-grouping {
156 description "Port number of a flow capable node.";
157 type inet:port-number;
162 description "Openflow node structure = device";
180 uses table:table-features;
183 uses ip-address-grouping;
184 uses port-number-grouping;
186 container supported-match-types {
191 type string; // FIXME: Add identity
197 container supported-instructions {
198 list instruction-type {
202 type string; // FIXME: Add identity
207 container supported-actions {
213 type string; // FIXME: Add identity
218 container switch-features {
228 leaf-list capabilities {
230 base feature-capability;
237 grouping flow-node-connector {
238 description "Wrapper of openflow port. TODO::simplify/rename";
239 uses port:flow-capable-port;
242 grouping snapshot-gathering-status-grouping {
243 description "Basic info about snapshot gathering - timestamps of begin, end.";
245 container snapshot-gathering-status-start {
246 description "gathering start mark";
248 type yang:date-and-time;
252 container snapshot-gathering-status-end {
253 description "gathering end mark + result";
255 type yang:date-and-time;
263 augment "/inv:nodes/inv:node" {
264 ext:augment-identifier "flow-capable-node";
265 description "Top attach point of openflow node into node inventory tree.";
269 augment "/inv:nodes/inv:node/inv:node-connector" {
270 ext:augment-identifier "flow-capable-node-connector";
271 description "Openflow port into inventory tree.";
272 uses flow-node-connector;
275 augment "/inv:node-updated" {
276 ext:augment-identifier "flow-capable-node-updated";
277 description "Openflow node into node notification.";
281 augment "/inv:node-updated/inv:node-connector" {
282 //ext:identical-augment "flow-capable-node-connector";
283 ext:augment-identifier "flow-capable-node-connector-update-fields";
284 description "Openflow port into node notification.";
285 uses flow-node-connector;
288 augment "/inv:node-connector-updated" {
289 ext:augment-identifier "flow-capable-node-connector-updated";
290 description "Openflow port into node-connector notification.";
291 uses flow-node-connector;
294 augment "/inv:nodes/inv:node/table" {
295 ext:augment-identifier "flow-hash-id-mapping";
296 description "Flow is identified by match and priority on device. So Operational/DS
297 has to simulate that behavior and contract between FlowId and match+priority
298 identification should represent Flow hashCode. Flow has to contain only
299 match priority and flowCookie for create a hashCode";
300 list flow-hash-id-map {
311 augment "/inv:nodes/inv:node" {
312 ext:augment-identifier "flow-capable-statistics-gathering-status";
313 description "Placeholder for timestamp of device status snapshot.
314 This is contructed by asynchronous process.";
315 uses snapshot-gathering-status-grouping;