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