Merge "Test of conversing of yang + xml files to json 2."
[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 burst-size {
111                     type uint32;
112                 }
113                 uses band-type;
114             }
115         }
116     }
117     
118     grouping meter-stats-config-request {
119         list meter-stats {
120             key "meter-id";         
121             
122             leaf meter-id {
123                 type int32;
124             }           
125         }
126     }
127     
128     grouping meter-statistics {
129             
130         leaf meter-id {
131             type int32;
132         }
133         
134         leaf flow-count {
135             type yang:counter32;
136         }
137         
138         leaf packet-in-count {
139             type yang:counter64;
140         } 
141         
142         leaf byte-in-count {
143             type yang:counter64;
144         }
145
146         container duration {
147             leaf second {
148                 type yang:counter32;
149             }
150             leaf nanosecond {
151                 type yang:counter32;
152             }
153         }
154         
155         container meter-band-stats {
156             list band-stat {
157                 key "order";
158                 leaf order {
159                     type int32;
160                 }
161             
162                 leaf packet-band-count {
163                     type yang:counter64;
164                 } 
165         
166                 leaf byte-band-count {
167                     type yang:counter64;
168                 }
169             }       
170         }
171     }
172
173     grouping meter-statistics-reply {
174         list meter-stats {
175             key "meter-stats-order";
176             leaf meter-stats-order {
177                 type int32;
178             }
179             uses meter-statistics;
180         }
181     }
182     
183     grouping meter-config-stats {
184         list meter-config-stats {
185             key "meter-config-order";
186             
187             leaf meter-config-order {
188                 type int32;
189             }
190             
191             uses meter;
192         } 
193     }
194     
195     grouping meter-features {
196         list meter-features {
197             key "meter-feature-order";
198             
199             leaf meter-feature-order {
200                 type yang:counter32;
201             }          
202             
203             leaf max_meter {
204                 type yang:counter32;
205             }
206             
207             leaf band_types {
208                 type yang:counter32;
209             }
210             
211             leaf capabilities {
212                 type yang:counter32;
213             }
214             
215             leaf max_bands {
216                 type uint8;
217             }
218             
219             leaf max_color {
220                 type uint8;
221             }
222         }
223     }    
224 }