Merge "Added meter, action, group, flow models, mask and transactions support."
[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     grouping meter-flags {
18         leaf flags {
19             type bits {
20                 bit meter-kbps;
21                 bit meter-pktps;
22                 bit meter-burst;
23                 bit meter-stats;
24             }
25         }
26     }
27     
28     grouping meter-band-type {
29         leaf flags {
30             type bits {
31                 bit ofpmbt-drop;
32                 bit ofpmbt-dscp-remark;
33                 bit ofpmbt-experimenter;               
34             }
35         }
36     }
37     
38     grouping band-type {
39         choice band-type {
40             case drop {
41                 leaf rate {
42                     type uint32;
43                 }
44                 
45                 leaf burst-size {
46                     type uint32;
47                 }
48             }
49
50             case dscp-remark {
51                 leaf rate {
52                     type uint32;
53                 }
54                 
55                 leaf burst-size {
56                     type uint32;
57                 }
58                 
59                 leaf perc_level {
60                     type uint8;
61                 }
62             }
63             
64             case experimenter {
65                 leaf rate {
66                     type uint32;
67                 }
68                 
69                 leaf burst-size {
70                     type uint32;
71                 }
72                 
73                 leaf experimenter {
74                     type uint32;
75                 }
76             }
77         }
78     }
79     
80     grouping meter {
81         
82         uses meter-flags;        
83         
84         leaf meter-id {
85             type meter-id;
86         }
87         
88         leaf install {
89             type boolean; 
90         }
91         leaf meter-name {
92             type string;
93         }
94         
95         leaf container-name {
96             type string; 
97         }
98         
99         container meter-band-headers {
100             list meter-band-header {
101                 key "order";
102                 leaf order {
103                     type int32;
104                 }
105                 
106                 container meter-band-types {
107                     uses meter-band-type;
108                 }
109             
110                 leaf rate {
111                     type uint32;
112                 }
113         
114                 leaf burst-size {
115                     type uint32;
116                 }
117                 uses band-type;
118             }
119         }
120     }
121     
122     grouping meter-stats-config-request {
123         list meter-stats {
124             key "meter-id";         
125             
126             leaf meter-id {
127                 type int32;
128             }           
129         }
130     }
131     
132     grouping meter-statistics {
133             
134         leaf meter-id {
135             type int32;
136         }
137         
138         leaf flow-count {
139             type yang:counter32;
140         }
141         
142         leaf packet-in-count {
143             type yang:counter64;
144         } 
145         
146         leaf byte-in-count {
147             type yang:counter64;
148         }
149
150         container duration {
151             leaf second {
152                 type yang:counter32;
153             }
154             leaf nanosecond {
155                 type yang:counter32;
156             }
157         }
158         
159         container meter-band-stats {
160             list band-stat {
161                 key "order";
162                 leaf order {
163                     type int32;
164                 }
165             
166                 leaf packet-band-count {
167                     type yang:counter64;
168                 } 
169         
170                 leaf byte-band-count {
171                     type yang:counter64;
172                 }
173             }       
174         }
175     }
176
177     grouping meter-statistics-reply {
178         list meter-stats {
179             key "meter-stats-order";
180             leaf meter-stats-order {
181                 type int32;
182             }
183             uses meter-statistics;
184         }
185     }
186     
187     grouping meter-config-stats {
188         list meter-config-stats {
189             key "meter-config-order";
190             
191             leaf meter-config-order {
192                 type int32;
193             }
194             
195             uses meter;
196         } 
197     }
198     
199     grouping meter-features {
200         list meter-features {
201             key "meter-feature-order";
202             
203             leaf meter-feature-order {
204                 type yang:counter32;
205             }          
206             
207             leaf max_meter {
208                 type yang:counter32;
209             }
210             
211             leaf band_types {
212                 type yang:counter32;
213             }
214             
215             leaf capabilities {
216                 type yang:counter32;
217             }
218             
219             leaf max_bands {
220                 type uint8;
221             }
222             
223             leaf max_color {
224                 type uint8;
225             }
226         }
227     }    
228 }