Sal Models for meter table.
[controller.git] / opendaylight / sal / yang-prototype / sal / model / model-flow-base / src / main / yang / meter-types.yang
diff --git a/opendaylight/sal/yang-prototype/sal/model/model-flow-base/src/main/yang/meter-types.yang b/opendaylight/sal/yang-prototype/sal/model/model-flow-base/src/main/yang/meter-types.yang
new file mode 100644 (file)
index 0000000..cf309f1
--- /dev/null
@@ -0,0 +1,213 @@
+module opendaylight-meter-types {
+    namespace "urn:opendaylight:meter:types";
+    prefix meter;
+
+    import ietf-inet-types {prefix inet;}
+    import ietf-yang-types {prefix yang;}
+
+
+    revision "2013-09-18" {
+        description "Initial revision of meter service";
+    }
+
+    typedef meter-ref {
+            type instance-identifier;
+    }
+    
+    grouping meter-flags {
+        leaf flags {
+            type enumeration {
+                enum meter-kbps;
+                enum meter_pktps;
+                enum meter_burst;
+                enum meter_stats;
+            }
+        }
+    }
+    
+    grouping meter-band-type {
+        leaf flags {
+            type enumeration {
+                enum ofpmbt-drop;
+                enum ofpmbt-dscp-remark;
+                enum ofpmbt-experimenter;               
+            }
+        }
+    }
+    
+    grouping band-type {
+        choice band-type {
+            case drop {
+                leaf rate {
+                    type uint32;
+                }
+                
+                leaf burst-size {
+                    type uint32;
+                }
+            }
+
+            case dscp-remark {
+                leaf rate {
+                    type uint32;
+                }
+                
+                leaf burst-size {
+                    type uint32;
+                }
+                
+                leaf perc_level {
+                    type uint8;
+                }
+            }
+            
+            case experimenter {
+                leaf rate {
+                    type uint32;
+                }
+                
+                leaf burst-size {
+                    type uint32;
+                }
+                
+                leaf experimenter {
+                    type uint32;
+                }
+            }
+        }
+    }
+    
+    grouping meter {
+        
+        uses meter-flags;        
+        
+        leaf meter-id {
+            type meter-ref;
+        }
+        
+        container meter-band-headers {
+            list meter-band-header {
+                key "order";
+                leaf order {
+                    type int32;
+                }
+                
+                container meter-band-types {
+                    uses meter-band-type;
+                }
+            
+                leaf burst-size {
+                    type uint32;
+                }
+                uses band-type;
+            }
+        }
+    }
+    
+    grouping meter-stats-config-request {
+        list meter-stats {
+            key "meter-id";         
+            
+            leaf meter-id {
+                type int32;
+            }           
+        }
+    }
+    
+    grouping meter-statistics {
+            
+        leaf meter-id {
+            type int32;
+        }
+        
+        leaf flow-count {
+            type yang:counter32;
+        }
+        
+        leaf packet-in-count {
+            type yang:counter64;
+        } 
+        
+        leaf byte-in-count {
+            type yang:counter64;
+        }
+
+        container duration {
+            leaf second {
+                type yang:counter32;
+            }
+            leaf nanosecond {
+                type yang:counter32;
+            }
+        }
+        
+        container meter-band-stats {
+            list band-stat {
+                key "order";
+                leaf order {
+                    type int32;
+                }
+            
+                leaf packet-band-count {
+                    type yang:counter64;
+                } 
+        
+                leaf byte-band-count {
+                    type yang:counter64;
+                }
+            }       
+        }
+    }
+
+    grouping meter-statistics-reply {
+        list meter-stats {
+            key "meter-stats-order";
+            leaf meter-stats-order {
+                type int32;
+            }
+            uses meter-statistics;
+        }
+    }
+    
+    grouping meter-config-stats {
+        list meter-config-stats {
+            key "meter-config-order";
+            
+            leaf meter-config-order {
+                type int32;
+            }
+            
+            uses meter;
+        } 
+    }
+    
+    grouping meter-features {
+        list meter-features {
+            key "meter-feature-order";
+            
+            leaf meter-feature-order {
+                type yang:counter32;
+            }          
+            
+            leaf max_meter {
+                type yang:counter32;
+            }
+            
+            leaf band_types {
+                type yang:counter32;
+            }
+            
+            leaf capabilities {
+                type yang:counter32;
+            }
+            
+            leaf max_bands {
+                type uint8;
+            }
+            
+            leaf max_color {
+                type uint8;
+            }
+        }
+    }    
+}
\ No newline at end of file