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