0548890a00bcd87637d564002c7754780fa6821c
[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     typedef meter-flags {        
18         type bits {
19             bit meter-kbps;
20             bit meter-pktps;
21             bit meter-burst;
22             bit meter-stats;
23         }        
24     }
25     
26     identity meter-capability {
27         description "Base identity for all the supported meter capabilities/flags";
28     }
29     identity meter-kbps {
30         base meter-capability;
31         description "Rate value in kb/s (kilo-bit per second)";
32     } 
33     identity meter-pktps {
34         base meter-capability;
35         description "Rate value in packet/sec.";
36     } 
37     identity meter-burst {
38         base meter-capability;
39         description "Do burst size.";
40     } 
41     identity meter-stats {
42         base meter-capability;
43         description "Collect statistics.";
44     } 
45     
46     typedef meter-band-type {
47         type bits {
48             bit ofpmbt-drop;
49             bit ofpmbt-dscp-remark;
50             bit ofpmbt-experimenter;               
51         }
52     }
53     
54     identity meter-band {
55         description "Base identity for all the band type available";
56     }
57     identity meter-band-drop {
58         base meter-band;
59         description "Drop packet";
60     }
61     identity meter-band-dscp-remark {
62         base meter-band;
63         description "Remark DSCP in the IP header";
64     }
65     identity meter-band-experimenter {
66         base meter-band;
67         description "Experimenter meter band";
68     }
69
70     grouping band-type {
71         choice band-type {
72             case drop {
73                 leaf rate {
74                     type uint32;
75                 }
76                 
77                 leaf burst-size {
78                     type uint32;
79                 }
80             }
81
82             case dscp-remark {
83                 leaf rate {
84                     type uint32;
85                 }
86                 
87                 leaf burst-size {
88                     type uint32;
89                 }
90                 
91                 leaf perc_level {
92                     type uint8;
93                 }
94             }
95             
96             case experimenter {
97                 leaf rate {
98                     type uint32;
99                 }
100                 
101                 leaf burst-size {
102                     type uint32;
103                 }
104                 
105                 leaf experimenter {
106                     type uint32;
107                 }
108             }
109         }
110     }
111     
112     grouping meter {
113         
114         leaf flags {
115            type meter-flags;        
116         }
117         
118         leaf meter-id {
119             type meter-id;
120         }
121         
122         leaf install {
123             type boolean; 
124         }
125         leaf meter-name {
126             type string;
127         }
128         
129         leaf container-name {
130             type string; 
131         }
132         
133         container meter-band-headers {
134             list meter-band-header {
135                 key "order";
136                 leaf order {
137                     type int32;
138                 }
139                 
140                 container meter-band-types {
141                     leaf flags {
142                         type meter-band-type;
143                     }
144                 }
145             
146                 leaf rate {
147                     type uint32;
148                 }
149         
150                 leaf burst-size {
151                     type uint32;
152                 }
153                 uses band-type;
154             }
155         }
156     }
157     
158     grouping meter-statistics {
159             
160         leaf meter-id {
161             type int32;
162         }
163         
164         leaf flow-count {
165             type yang:counter32;
166         }
167         
168         leaf packet-in-count {
169             type yang:counter64;
170         } 
171         
172         leaf byte-in-count {
173             type yang:counter64;
174         }
175
176         container duration {
177             leaf second {
178                 type yang:counter32;
179             }
180             leaf nanosecond {
181                 type yang:counter32;
182             }
183         }
184         
185         container meter-band-stats {
186             list band-stat {
187                 key "order";
188                 leaf order {
189                     type int32;
190                 }
191             
192                 leaf packet-band-count {
193                     type yang:counter64;
194                 } 
195         
196                 leaf byte-band-count {
197                     type yang:counter64;
198                 }
199             }       
200         }
201     }
202
203     grouping meter-features {
204                             
205         leaf max_meter {
206             type yang:counter32;
207         }
208            
209         leaf-list meter-band-supported {
210                 type identityref {
211                         base meter-band;
212                 }
213                 }
214         
215         leaf-list meter-capabilities-supported {
216                 type identityref {
217                         base meter-capability;
218                 }
219                 }
220         
221         leaf max_bands {
222             type uint8;
223         }
224         
225         leaf max_color {
226             type uint8;
227         }
228     }
229
230     grouping meter-stats-config-request {
231         list meter-stats {
232             key "meter-id";         
233             
234             leaf meter-id {
235                 type int32;
236             }           
237         }
238     }
239     
240     grouping meter-statistics-reply {
241         list meter-stats {
242             key "meter-stats-order";
243             leaf meter-stats-order {
244                 type int32;
245             }
246             uses meter-statistics;
247         }
248     }
249     
250     grouping meter-config-stats-reply {
251         list meter-config-stats {
252             key "meter-config-order";
253             leaf meter-config-order {
254                 type int32;
255             }
256             
257             uses meter;
258         } 
259     }
260     
261     grouping meter-features-reply {
262         uses meter-features;
263     }
264     
265 }