BUG-2613: Migrating Openflow Specific models from controller project to openflowplugi...
[openflowplugin.git] / model / model-flow-statistics / src / main / yang / opendaylight-flow-statistics.yang
diff --git a/model/model-flow-statistics/src/main/yang/opendaylight-flow-statistics.yang b/model/model-flow-statistics/src/main/yang/opendaylight-flow-statistics.yang
new file mode 100644 (file)
index 0000000..f7a0652
--- /dev/null
@@ -0,0 +1,148 @@
+module opendaylight-flow-statistics {
+    namespace "urn:opendaylight:flow:statistics";
+    prefix flowstat;
+
+    import yang-ext {prefix ext; revision-date "2013-07-09";}
+    import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
+    import opendaylight-flow-types {prefix flow-types;revision-date "2013-10-26";}
+    import opendaylight-statistics-types {prefix stat-types;revision-date "2013-09-25";}
+    import opendaylight-table-types {prefix table-types;revision-date "2013-10-26";}
+    import flow-node-inventory {prefix flow-node;revision-date "2013-08-19";}
+    import flow-capable-transaction {prefix tr;}
+    import ietf-inet-types {prefix inet; revision-date "2010-09-24";}
+
+
+    revision "2013-08-19" {
+        description "Initial revision of flow statistics service";
+    }
+
+    //Augment flow statistics data to the flow-capable-node->table->flow
+    augment "/inv:nodes/inv:node/flow-node:table/flow-node:flow" {
+        ext:augment-identifier "flow-statistics-data";
+        uses flow-statistics;
+    }
+
+    grouping flow-statistics {
+        container flow-statistics {
+            //config "false";
+            uses stat-types:generic-statistics;
+        }
+    }
+
+    typedef flow-id {
+        description "flow id";
+        type inet:uri;
+    }
+
+    grouping flow-and-statistics-map-list {
+        description "List of flow and statistics map";
+        list flow-and-statistics-map-list {
+            key "flow-id";
+            leaf flow-id {
+                type flow-id;
+            }
+            uses flow-and-statistics-map;
+        }
+    }
+
+    grouping flow-and-statistics-map{
+        description "Mapping between flow and its statistics";
+        uses flow-types:flow;
+        uses stat-types:generic-statistics;
+    }
+
+    // RPC calls to fetch flow statistics
+    rpc get-all-flows-statistics-from-all-flow-tables {
+        description "Fetch statistics of all the flow present in all the flow tables of the switch";
+        input {
+            uses inv:node-context-ref;
+        }
+        output {
+            uses flow-and-statistics-map-list;
+            uses tr:transaction-aware;
+        }
+
+    }
+
+    rpc get-all-flow-statistics-from-flow-table {
+        description "Fetch statistics of all the flow present in the specific flow table of the switch";
+        input {
+            uses inv:node-context-ref;
+            leaf table-id {
+                type table-types:table-id;
+            }
+        }
+        output {
+            uses flow-and-statistics-map-list;
+            uses tr:transaction-aware;
+        }
+    }
+
+    rpc get-flow-statistics-from-flow-table {
+        description "Fetch statistics of the specific flow present in the specific flow table of the switch";
+        input {
+            uses inv:node-context-ref;
+            uses flow-types:flow;
+        }
+        output {
+            uses flow-and-statistics-map-list;
+            uses tr:transaction-aware;
+        }
+    }
+
+    notification flows-statistics-update {
+        description "Flows statistics sent by switch";
+        leaf moreReplies {
+            type boolean;
+        }
+        uses inv:node;
+        uses flow-and-statistics-map-list;
+        uses tr:transaction-aware;
+    }
+
+    //Models for aggregate flow statistics collection
+    augment "/inv:nodes/inv:node/flow-node:table" {
+        ext:augment-identifier "aggregate-flow-statistics-data";
+        uses aggregate-flow-statistics;
+    }
+
+    grouping aggregate-flow-statistics {
+        container aggregate-flow-statistics {
+            //config "false";
+            uses stat-types:aggregate-flow-statistics;
+        }
+    }
+
+    // RPC calls to fetch aggregate flow statistics
+    rpc get-aggregate-flow-statistics-from-flow-table-for-all-flows {
+        description "Fetch aggregate statistics for all the flows present in the specific flow table of the switch";
+        input {
+            uses inv:node-context-ref;
+            leaf table-id {
+                type table-types:table-id;
+            }
+        }
+        output {
+            uses stat-types:aggregate-flow-statistics;
+            uses tr:transaction-aware;
+        }
+    }
+    rpc get-aggregate-flow-statistics-from-flow-table-for-given-match {
+        description "Fetch aggregate statistics for all the flow matches to the given match from the given table of the switch";
+        input {
+            uses inv:node-context-ref;
+            uses flow-types:flow;
+        }
+        output {
+            uses stat-types:aggregate-flow-statistics;
+            uses tr:transaction-aware;
+        }
+    }
+
+    notification aggregate-flow-statistics-update {
+        description "Aggregate flow statistics for a table, sent by switch";
+        uses inv:node;
+        uses stat-types:aggregate-flow-statistics;
+        uses tr:multipart-transaction-aware;
+    }
+}