X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fmodel%2Fmodel-flow-service%2Fsrc%2Fmain%2Fyang%2Fflow-node-inventory.yang;h=e55c50fb29612f2511adef62063a25b0468575cd;hb=1ff9939abc7a4072b07df6b79516fe344b1b42e3;hp=80a4ccf0878de6bd5a9b2775377fc7ec133e5162;hpb=84d9bf62ad4291a3baba3a747cf77e81bb2d3aeb;p=controller.git diff --git a/opendaylight/md-sal/model/model-flow-service/src/main/yang/flow-node-inventory.yang b/opendaylight/md-sal/model/model-flow-service/src/main/yang/flow-node-inventory.yang index 80a4ccf087..e55c50fb29 100644 --- a/opendaylight/md-sal/model/model-flow-service/src/main/yang/flow-node-inventory.yang +++ b/opendaylight/md-sal/model/model-flow-service/src/main/yang/flow-node-inventory.yang @@ -2,16 +2,79 @@ module flow-node-inventory { namespace "urn:opendaylight:flow:inventory"; prefix flownode; - import yang-ext {prefix ext;} - import ietf-inet-types {prefix inet;} - import ietf-yang-types {prefix yang;} - import opendaylight-inventory {prefix inv;} + import yang-ext {prefix ext; revision-date "2013-07-09";} + import ietf-inet-types {prefix inet; revision-date "2010-09-24";} + import ietf-yang-types {prefix yang; revision-date "2010-09-24";} + import opendaylight-port-types {prefix port;revision-date "2013-09-25";} + import opendaylight-inventory {prefix inv;revision-date "2013-08-19";} + import opendaylight-table-types {prefix table;revision-date "2013-10-26";} + import opendaylight-flow-types {prefix flow;revision-date "2013-10-26";} + import opendaylight-group-types {prefix group;revision-date "2013-10-18";} + import opendaylight-meter-types {prefix meter;revision-date "2013-09-18";} revision "2013-08-19" { - description "Flow Capable Node extensions to the nventory model"; + description "Flow Capable Node extensions to the Inventory model"; } + identity feature-capability { + } + + identity flow-feature-capability-flow-stats { + description "Flow statistics"; + base feature-capability; + } + + identity flow-feature-capability-table-stats { + description "Table statistics"; + base feature-capability; + } + + identity flow-feature-capability-port-stats { + description "Port statistics"; + base feature-capability; + } + + identity flow-feature-capability-stp { + description "802.1d spanning tree"; + base feature-capability; + } + + identity flow-feature-capability-reserved { + description "Reserved, must be zero"; + base feature-capability; + } + + identity flow-feature-capability-ip-reasm { + description "Can reassemble IP fragments"; + base feature-capability; + } + + identity flow-feature-capability-queue-stats { + description "Queue statistics"; + base feature-capability; + } + + identity flow-feature-capability-arp-match-ip { + description "Match IP addresses in ARP pkts"; + base feature-capability; + } + + identity flow-feature-capability-group-stats { + description "Group statistics"; + base feature-capability; + } + + identity flow-feature-capability-port-blocked { + description "Switch will block looping ports"; + base feature-capability; + } + grouping feature { + leaf support-state { + type inv:support-type; + } + } + grouping queue { leaf queue-id { type uint32; @@ -28,68 +91,140 @@ module flow-node-inventory { } } - grouping flow-capable-node-capabilities { - container tables { - leaf support-state { - type inv:support-type; + typedef flow-id { + type uint32; // Note: This doesn't really belong here, and not sure if unint32 is right + } + + grouping tables { + list table { + key "id"; + + leaf id { + type uint8; + } + + uses table:table-features; + + list flow { + key "id"; + + leaf id { + type flow-id; + } + + uses flow:flow; } - } - - container group-tables { - + } + + grouping meters { + list meter { + key "meter-id"; + uses meter:meter; } + } + + + grouping flow-node { + + leaf manufacturer { + type string; + } + leaf hardware { + type string; + } + leaf software { + type string; + } + leaf serial-number { + type string; + } + leaf description { + type string; + } + + uses tables; + uses group:groups; + uses meters; + // TODO: ports container supported-match-types { list match-type { + uses feature; leaf match { type string; // FIXME: Add identity } - leaf support-state { - type inv:support-type; - } + } } container supported-instructions { list instruction-type { + uses feature; leaf instruction { type string; // FIXME: Add identity } - - leaf support-state { - type inv:support-type; - } } } container supported-actions { list action-type { + uses feature; + leaf action { type string; // FIXME: Add identity } - - leaf support-state { - type inv:support-type; + } + } + + container switch-features { + + leaf max_buffers { + type uint32; + } + + leaf max_tables { + type uint8; + } + + leaf-list capabilities { + type identityref { + base feature-capability; } } + } } - grouping flow-capable-node-connector { - + grouping flow-node-connector { + + uses port:flow-capable-port; } - notification node-capabilities-updated { - uses flow-capable-node-capabilities; + augment "/inv:nodes/inv:node" { + ext:augment-identifier "flow-capable-node"; + uses flow-node; } - notification node-connector-capabilities-updated { - uses flow-capable-node-connector; + augment "/inv:nodes/inv:node/inv:node-connector" { + ext:augment-identifier "flow-capable-node-connector"; + uses flow-node-connector; } - augment "/inv:nodes/inv:node" { - augment-identifier "flow-capable-node"; - uses flow-capable-node-capabilities; + augment "/inv:node-updated" { + ext:augment-identifier "flow-capable-node-updated"; + uses flow-node; + } + + augment "/inv:node-updated/inv:node-connector" { + //ext:identical-augment "flow-capable-node-connector"; + ext:augment-identifier "flow-capable-node-connector-update-fields"; + uses flow-node-connector; + } + + augment "/inv:node-connector-updated" { + ext:augment-identifier "flow-capable-node-connector-updated"; + uses flow-node-connector; } + } \ No newline at end of file