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 "2013-07-15";}
7 import ietf-yang-types {prefix yang; revision-date "2013-07-15";}
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";}
14 import opendaylight-multipart-types { prefix multipart; revision-date "2017-01-12"; }
16 description "Flow Capable Node extensions to the Inventory model";
18 revision "2013-08-19" {
19 description "added descriptions";
22 identity feature-capability {
25 identity flow-feature-capability-flow-stats {
26 description "Flow statistics";
27 base feature-capability;
30 identity flow-feature-capability-table-stats {
31 description "Table statistics";
32 base feature-capability;
35 identity flow-feature-capability-port-stats {
36 description "Port statistics";
37 base feature-capability;
40 identity flow-feature-capability-stp {
41 description "802.1d spanning tree";
42 base feature-capability;
45 identity flow-feature-capability-reserved {
46 description "Reserved, must be zero";
47 base feature-capability;
50 identity flow-feature-capability-ip-reasm {
51 description "Can reassemble IP fragments";
52 base feature-capability;
55 identity flow-feature-capability-queue-stats {
56 description "Queue statistics";
57 base feature-capability;
60 identity flow-feature-capability-arp-match-ip {
61 description "Match IP addresses in ARP pkts";
62 base feature-capability;
65 identity flow-feature-capability-group-stats {
66 description "Group statistics";
67 base feature-capability;
70 identity flow-feature-capability-port-blocked {
71 description "Switch will block looping ports";
72 base feature-capability;
76 description "Features supported by openflow device.";
78 type inv:support-type;
85 description "id for the specific queue";
88 container properties {
99 description "MD-SAL identifier of openflow flow. ";
104 description "Openflow table structure. Here flows are contained.";
121 // BE-RECON: Modification for including stale-flow for Reconciliation
135 description "Openflow meter list.";
140 // BE-RECON: Modification for including stale-flow for Reconciliation
147 grouping ip-address-grouping {
148 description "Additional ip address info referring to device interface which connects to controller";
150 description "IP address of a flow capable node.";
151 type inet:ip-address;
155 grouping port-number-grouping {
157 description "Port number of a flow capable node.";
158 type inet:port-number;
181 description "Openflow node structure = device";
184 uses table:table-features;
187 uses ip-address-grouping;
188 uses port-number-grouping;
190 container supported-match-types {
195 type string; // FIXME: Add identity
201 container supported-instructions {
202 list instruction-type {
206 type string; // FIXME: Add identity
211 container supported-actions {
217 type string; // FIXME: Add identity
222 container switch-features {
232 leaf-list capabilities {
234 base feature-capability;
241 grouping flow-node-connector {
242 description "Wrapper of openflow port. TODO::simplify/rename";
243 uses port:flow-capable-port;
246 grouping snapshot-gathering-status-grouping {
247 description "Basic info about snapshot gathering - timestamps of begin, end.";
249 container snapshot-gathering-status-start {
250 description "gathering start mark";
252 type yang:date-and-time;
256 container snapshot-gathering-status-end {
257 description "gathering end mark + result";
259 type yang:date-and-time;
267 augment "/inv:nodes/inv:node" {
268 ext:augment-identifier "flow-capable-node";
269 description "Top attach point of openflow node into node inventory tree.";
273 augment "/inv:nodes/inv:node/inv:node-connector" {
274 ext:augment-identifier "flow-capable-node-connector";
275 description "Openflow port into inventory tree.";
276 uses flow-node-connector;
279 augment "/inv:node-updated" {
280 ext:augment-identifier "flow-capable-node-updated";
281 description "Openflow node into node notification.";
285 augment "/inv:node-updated/inv:node-connector" {
286 //ext:identical-augment "flow-capable-node-connector";
287 ext:augment-identifier "flow-capable-node-connector-update-fields";
288 description "Openflow port into node notification.";
289 uses flow-node-connector;
292 augment "/inv:node-connector-updated" {
293 ext:augment-identifier "flow-capable-node-connector-updated";
294 description "Openflow port into node-connector notification.";
295 uses flow-node-connector;
298 augment "/inv:nodes/inv:node/table" {
299 ext:augment-identifier "flow-hash-id-mapping";
300 description "Flow is identified by match and priority on device. So Operational/DS
301 has to simulate that behavior and contract between FlowId and match+priority
302 identification should represent Flow hashCode. Flow has to contain only
303 match priority and flowCookie for create a hashCode";
304 list flow-hash-id-map {
315 augment "/inv:nodes/inv:node" {
316 ext:augment-identifier "flow-capable-statistics-gathering-status";
317 description "Placeholder for timestamp of device status snapshot.
318 This is contructed by asynchronous process.";
319 uses snapshot-gathering-status-grouping;
322 augment "/multipart:multipart-reply/multipart:multipart-reply-body" {
323 case multipart-reply-desc {