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;
}
}
- grouping flow-capable-node-capabilities {
- container tables {
- leaf support-state {
- type inv:support-type;
+ typedef flow-id {
+ type inet:uri;
+ }
+
+ 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