Changed model versions to dependencies
[controller.git] / opendaylight / md-sal / 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 flow-capable-transaction {prefix tr;}
9     import flow-errors {prefix error;}
10
11     revision "2013-08-19" {
12         description "Initial revision of flow service";
13     }
14
15     typedef flow-table-ref {
16         type instance-identifier;
17     }
18     
19     grouping node-flow-removed {
20         leaf node {
21             ext:context-reference "inv:node-context";
22             type inv:node-ref;
23         }
24         leaf flow-table {
25             type flow-table-ref;
26         }
27         uses types:flow-mod-removed;
28     }
29     
30     grouping node-flow {
31         uses "inv:node-context-ref";
32
33         leaf flow-table {
34             type flow-table-ref;
35         }
36         uses types:flow;
37     }
38
39     /** Base configuration structure **/
40     grouping flow-update {
41         uses "inv:node-context-ref";
42
43         container original-flow {
44             uses types:flow;
45         }
46         container updated-flow {
47             uses types:flow;
48         }
49     }
50
51     rpc add-flow {
52         input {
53             uses tr:transaction-metadata;
54             leaf flow-ref {
55                 type types:flow-ref;
56             }
57             uses node-flow;            
58         }
59         output {
60             uses tr:transaction-aware;
61         }
62     }
63
64     rpc remove-flow {
65         input {
66             uses tr:transaction-metadata;
67             leaf flow-ref {
68                 type types:flow-ref;
69             }
70             uses node-flow;            
71         }
72         output {
73             uses tr:transaction-aware;
74         }
75     }
76
77     rpc update-flow {
78         input {
79             uses tr:transaction-metadata;
80             leaf flow-ref {
81                 type types:flow-ref;
82             }
83             uses flow-update;           
84         }
85         output {
86             uses tr:transaction-aware;
87         }
88     }
89
90     notification flow-added {
91         uses tr:transaction-metadata;
92         leaf flow-ref {
93             type types:flow-ref;
94         }
95         uses node-flow;
96         uses tr:transaction-aware;
97     }
98
99     notification flow-updated {
100         uses tr:transaction-metadata;
101         leaf flow-ref {
102             type types:flow-ref;
103         }
104         uses node-flow;
105         uses tr:transaction-aware;        
106     }
107
108     notification flow-removed {
109         uses tr:transaction-metadata;
110         leaf flow-ref {
111             type types:flow-ref;
112         }
113         uses node-flow;
114         uses tr:transaction-aware;
115     }
116     
117     notification switch-flow-removed {
118         uses node-flow-removed;
119     }
120     
121     notification node-error-notification {
122         uses error:error-message;
123         uses tr:transaction-aware;
124         uses tr:transaction-metadata;
125     }
126     
127     notification node-experimenter-error-notification {
128         uses error:experimenter-error-message;
129         uses tr:transaction-aware;
130     }
131 }