modified meter and group enum from leaf to typedef.
[controller.git] / opendaylight / md-sal / model / model-flow-base / src / main / yang / meter-types.yang
1 module opendaylight-meter-types {
2     namespace "urn:opendaylight:meter:types";
3     prefix meter;
4
5     import ietf-inet-types {prefix inet; revision-date "2010-09-24";}
6     import ietf-yang-types {prefix yang; revision-date "2010-09-24";}
7
8
9     revision "2013-09-18" {
10         description "Initial revision of meter service";
11     }
12
13     typedef meter-id {
14             type uint32;
15     }
16     
17     // field types
18     identity meter-flags {
19         description "Base identity for match Fields";
20     }
21     
22     typedef meter-flags {        
23         type bits {
24             bit meter-kbps;
25             bit meter-pktps;
26             bit meter-burst;
27             bit meter-stats;
28         }        
29     }
30     
31     typedef meter-band-type {
32         type bits {
33             bit ofpmbt-drop;
34             bit ofpmbt-dscp-remark;
35             bit ofpmbt-experimenter;               
36         }
37     }
38     
39     grouping band-type {
40         choice band-type {
41             case drop {
42                 leaf rate {
43                     type uint32;
44                 }
45                 
46                 leaf burst-size {
47                     type uint32;
48                 }
49             }
50
51             case dscp-remark {
52                 leaf rate {
53                     type uint32;
54                 }
55                 
56                 leaf burst-size {
57                     type uint32;
58                 }
59                 
60                 leaf perc_level {
61                     type uint8;
62                 }
63             }
64             
65             case experimenter {
66                 leaf rate {
67                     type uint32;
68                 }
69                 
70                 leaf burst-size {
71                     type uint32;
72                 }
73                 
74                 leaf experimenter {
75                     type uint32;
76                 }
77             }
78         }
79     }
80     
81     grouping meter {
82         
83         leaf flags {
84            type meter-flags;        
85         }
86         
87         leaf meter-id {
88             type meter-id;
89         }
90         
91         leaf install {
92             type boolean; 
93         }
94         leaf meter-name {
95             type string;
96         }
97         
98         leaf container-name {
99             type string; 
100         }
101         
102         container meter-band-headers {
103             list meter-band-header {
104                 key "order";
105                 leaf order {
106                     type int32;
107                 }
108                 
109                 container meter-band-types {
110                     leaf flags {
111                         type meter-band-type;
112                     }
113                 }
114             
115                 leaf rate {
116                     type uint32;
117                 }
118         
119                 leaf burst-size {
120                     type uint32;
121                 }
122                 uses band-type;
123             }
124         }
125     }
126     
127     grouping meter-statistics {
128             
129         leaf meter-id {
130             type int32;
131         }
132         
133         leaf flow-count {
134             type yang:counter32;
135         }
136         
137         leaf packet-in-count {
138             type yang:counter64;
139         } 
140         
141         leaf byte-in-count {
142             type yang:counter64;
143         }
144
145         container duration {
146             leaf second {
147                 type yang:counter32;
148             }
149             leaf nanosecond {
150                 type yang:counter32;
151             }
152         }
153         
154         container meter-band-stats {
155             list band-stat {
156                 key "order";
157                 leaf order {
158                     type int32;
159                 }
160             
161                 leaf packet-band-count {
162                     type yang:counter64;
163                 } 
164         
165                 leaf byte-band-count {
166                     type yang:counter64;
167                 }
168             }       
169         }
170     }
171
172     grouping meter-features {
173                             
174         leaf max_meter {
175             type yang:counter32;
176         }
177            
178         leaf band_types {
179             type yang:counter32;
180         }
181         
182         leaf capabilities {
183             type yang:counter32;
184         }
185         
186         leaf max_bands {
187             type uint8;
188         }
189         
190         leaf max_color {
191             type uint8;
192         }
193     }
194
195     grouping meter-stats-config-request {
196         list meter-stats {
197             key "meter-id";         
198             
199             leaf meter-id {
200                 type int32;
201             }           
202         }
203     }
204     
205     grouping meter-statistics-reply {
206         list meter-stats {
207             key "meter-stats-order";
208             leaf meter-stats-order {
209                 type int32;
210             }
211             uses meter-statistics;
212         }
213     }
214     
215     grouping meter-config-stats-reply {
216         list meter-config-stats {
217             key "meter-config-order";
218             leaf meter-config-order {
219                 type int32;
220             }
221             
222             uses meter;
223         } 
224     }
225     
226     grouping meter-features-reply {
227         uses meter-features;
228     }
229     
230 }