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