BUG-9223:Remove hardcoded value of lldp interval
[openflowplugin.git] / model / model-flow-service / src / main / yang / sal-flow.yang
1 module sal-flow {
2     namespace "urn:opendaylight:flow:service";
3     prefix flow;
4
5     import yang-ext {prefix ext; revision-date "2013-07-09";}
6     import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
7     import opendaylight-flow-types {prefix types;revision-date "2013-10-26";}
8     import opendaylight-group-types {prefix group-type;revision-date "2013-10-18";}
9     import opendaylight-meter-types {prefix meter-type;revision-date "2013-09-18";}
10     import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
11     import flow-errors {prefix error; revision-date "2013-11-16";}
12
13     description "Openflow flow management.";
14
15     revision "2013-08-19" {
16         description "Initial revision of flow service";
17     }
18
19     typedef flow-table-ref {
20         description "Openflow table identifier";
21         type instance-identifier;
22     }
23     
24     grouping node-flow-removed {
25         description "Flow removed message structure.";
26         leaf node {
27             // TODO:: replace with inv:node-context-ref
28             ext:context-reference "inv:node-context";
29             type inv:node-ref;
30         }
31         leaf flow-table {
32             type flow-table-ref;
33         }
34         uses types:flow-mod-removed;
35     }
36     
37     grouping node-flow {
38         description "Top openflow flow structure suitable for rpc input (contains node-context).";
39         uses "inv:node-context-ref";
40
41         leaf flow-table {
42             type flow-table-ref;
43         }
44         uses types:flow;
45     }
46
47     grouping base-node-error-notification {
48         description "Openflow error message general structure.";
49         status deprecated;
50         leaf node {
51             ext:context-reference "inv:node-context";
52                 type inv:node-ref;
53         }
54     }
55
56     grouping node-error-reference {
57         description "Error message binding - to which source type the error belongs.";
58         choice object-reference {
59             case flow-ref{
60                 leaf flow-ref {
61                         type types:flow-ref;
62                 }
63             }
64             case group-ref{
65                 leaf group-ref {
66                     type group-type:group-ref;
67                 }
68             }
69             case meter-ref{
70                 leaf meter-ref {
71                     type meter-type:meter-ref;
72                 }
73             }
74         }
75     }
76
77     grouping flow-update {
78         description "DataStore aware flow update structure suitable for rpc input (contains node-context).";
79         uses "inv:node-context-ref";
80
81         container original-flow {
82             uses types:flow;
83         }
84         container updated-flow {
85             uses types:flow;
86         }
87     }
88
89     rpc add-flow {
90         description "Adding flow to openflow device.";
91         input {
92             uses tr:transaction-metadata;
93             leaf flow-ref {
94                 type types:flow-ref;
95             }
96             uses node-flow;            
97         }
98         output {
99             uses tr:transaction-aware;
100         }
101     }
102
103     rpc remove-flow {
104         description "Removing flow from openflow device.";
105         input {
106             uses tr:transaction-metadata;
107             leaf flow-ref {
108                 type types:flow-ref;
109             }
110             uses node-flow;            
111         }
112         output {
113             uses tr:transaction-aware;
114         }
115     }
116
117     rpc update-flow {
118         description "Updating flow on openflow device.";
119         input {
120             uses tr:transaction-metadata;
121             leaf flow-ref {
122                 type types:flow-ref;
123             }
124             uses flow-update;           
125         }
126         output {
127             uses tr:transaction-aware;
128         }
129     }
130
131     notification flow-added {
132         status deprecated;
133
134         uses tr:transaction-metadata;
135         leaf flow-ref {
136             type types:flow-ref;
137         }
138         uses node-flow;
139         uses tr:transaction-aware;
140     }
141
142     notification flow-updated {
143         status deprecated;
144
145         uses tr:transaction-metadata;
146         leaf flow-ref {
147             type types:flow-ref;
148         }
149         uses node-flow;
150         uses tr:transaction-aware;        
151     }
152
153     notification flow-removed {
154         status deprecated;
155
156         uses tr:transaction-metadata;
157         leaf flow-ref {
158             type types:flow-ref;
159         }
160         leaf reason {
161             type types:removed-flow-reason;
162         }
163         uses node-flow;
164         uses tr:transaction-aware;
165     }
166     
167     notification switch-flow-removed {
168         status deprecated;
169
170         uses node-flow-removed;
171     }
172     
173     notification node-error-notification {
174         status deprecated;
175
176         uses error:error-message;
177         uses tr:transaction-aware;
178         uses tr:transaction-metadata;
179         uses node-error-reference;
180         uses base-node-error-notification;
181     }
182     
183     notification node-experimenter-error-notification {
184         status deprecated;
185
186         uses error:experimenter-error-message;
187         uses tr:transaction-aware;
188     }
189 }