b62f59699cb9af7122a6e82146b333bda4abf0d8
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / yang / opendaylight-binding-broker-impl.yang
1 module opendaylight-sal-binding-broker-impl {
2     yang-version 1;
3     namespace "urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl";
4     prefix "binding-impl";
5
6     import config { prefix config; revision-date 2013-04-05; }
7     import opendaylight-md-sal-binding {prefix sal;}
8     import opendaylight-md-sal-dom {prefix dom;}
9     import opendaylight-md-sal-common {prefix common;}
10
11     description
12         "Service definition for Binding Aware MD-SAL.";
13
14     revision "2013-10-28" {
15         description
16             "Initial revision";
17     }
18
19     identity binding-dom-mapping-service {
20         base config:service-type;
21         config:java-class "org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec";
22     }
23
24     /* FIXME: move to opendaylight-md-sal-binding (cannot be there due to Class name confict with old implementation)*/
25     identity binding-new-notification-service {
26         base config:service-type;
27         config:java-class "org.opendaylight.controller.md.sal.binding.api.NotificationService";
28     }
29
30     /* TODO: move to opendaylight-md-sal-binding (cannot be there due to Class name confict with old implementation)*/
31     identity binding-new-notification-publish-service {
32         base config:service-type;
33         config:java-class "org.opendaylight.controller.md.sal.binding.api.NotificationPublishService";
34     }
35
36     identity binding-broker-impl {
37         base config:module-type;
38         config:provided-service sal:binding-broker-osgi-registry;
39         config:provided-service sal:binding-rpc-registry;
40         config:java-name-prefix BindingBrokerImpl;
41     }
42
43     identity binding-data-compatible-broker {
44         base config:module-type;
45         config:provided-service sal:binding-data-broker;
46         config:provided-service sal:binding-data-consumer-broker;
47         config:java-name-prefix ForwardedCompatibleDataBrokerImpl;
48     }
49
50     identity binding-forwarded-data-broker {
51         base config:module-type;
52         config:provided-service sal:binding-async-data-broker;
53         config:java-name-prefix BindingAsyncDataBrokerImpl;
54     }
55
56     identity binding-rpc-broker {
57         base config:module-type;
58         config:provided-service sal:binding-rpc-registry;
59         config:java-name-prefix RpcBrokerImpl;
60     }
61
62     identity binding-notification-broker {
63         base config:module-type;
64         config:provided-service sal:binding-notification-service;
65         config:provided-service sal:binding-notification-subscription-service;
66         config:java-name-prefix NotificationBrokerImpl;
67     }
68
69     identity runtime-generated-mapping {
70         base config:module-type;
71         config:provided-service binding-dom-mapping-service;
72         config:java-name-prefix RuntimeMapping;
73     }
74
75     identity binding-notification-adapter {
76         base config:module-type;
77         config:provided-service binding-new-notification-service;
78         config:java-name-prefix BindingNotificationAdapter;
79     }
80
81     identity binding-notification-publish-adapter {
82         base config:module-type;
83         config:provided-service binding-new-notification-publish-service;
84         config:java-name-prefix BindingNotificationPublishAdapter;
85     }
86
87     grouping dom-forwarding-component {
88         container dom-async-broker {
89                 uses config:service-ref {
90                     refine type {
91                         mandatory true;
92                         config:required-identity dom:dom-broker-osgi-registry;
93                     }
94                 }
95             }
96
97         container binding-mapping-service {
98             uses config:service-ref {
99                 refine type {
100                     mandatory true;
101                     config:required-identity binding-dom-mapping-service;
102                 }
103             }
104         }
105     }
106
107     augment "/config:modules/config:module/config:configuration" {
108         case binding-broker-impl {
109             when "/config:modules/config:module/config:type = 'binding-broker-impl'";
110
111             /*
112             container rpc-registry {
113                 uses config:service-ref {
114                     refine type {
115                         mandatory true;
116                         config:required-identity sal:binding-rpc-registry;
117                     }
118                 }
119             }*/
120             container binding-broker-impl {
121                 uses dom-forwarding-component;
122     
123                 container data-broker {
124                     uses config:service-ref {
125                         refine type {
126                             mandatory false;
127                             config:required-identity sal:binding-data-broker;
128                         }
129                     }
130                 }
131     
132                 container notification-service {
133                     uses config:service-ref {
134                         refine type {
135                             mandatory true;
136                             config:required-identity sal:binding-notification-service;
137                         }
138                     }
139                 }
140     
141                 container root-data-broker {
142                     uses config:service-ref {
143                         refine type {
144                             mandatory false;
145                             config:required-identity sal:binding-async-data-broker;
146                         }
147                     }
148                 }
149             }
150         }
151     }
152
153     augment "/config:modules/config:module/config:configuration" {
154         case binding-data-compatible-broker {
155             when "/config:modules/config:module/config:type = 'binding-data-compatible-broker'";
156
157             container binding-data-compatible-broker {
158                 container data-broker {
159                     uses config:service-ref {
160                         refine type {
161                             mandatory false;
162                             config:required-identity sal:binding-async-data-broker;
163                         }
164                     }
165                 }
166             }
167         }
168     }
169
170     augment "/config:modules/config:module/config:configuration" {
171         case binding-forwarded-data-broker {
172             when "/config:modules/config:module/config:type = 'binding-forwarded-data-broker'";
173             container binding-forwarded-data-broker {
174                 container dom-async-broker {
175                     uses config:service-ref {
176                         refine type {
177                             mandatory true;
178                             config:required-identity dom:dom-async-data-broker;
179                         }
180                     }
181                 }
182
183                 container binding-mapping-service {
184                     uses config:service-ref {
185                         refine type {
186                             mandatory true;
187                             config:required-identity binding-dom-mapping-service;
188                         }
189                     }
190                 }
191
192                 container schema-service {
193                     uses config:service-ref {
194                         refine type {
195                             mandatory false;
196                             config:required-identity dom:schema-service;
197                         }
198                     }
199                 }
200             }
201         }
202     }
203
204
205     augment "/config:modules/config:module/config:state" {
206         case runtime-generated-mapping {
207             when "/config:modules/config:module/config:type = 'runtime-generated-mapping'";
208         }
209     }
210
211     augment "/config:modules/config:module/config:state" {
212         case binding-rpc-broker {
213             when "/config:modules/config:module/config:type = 'binding-rpc-broker'";
214             uses common:rpc-state;
215         }
216     }
217
218     augment "/config:modules/config:module/config:state" {
219         case binding-notification-broker {
220             when "/config:modules/config:module/config:type = 'binding-notification-broker'";
221             uses common:notification-state;
222         }
223     }
224
225     augment "/config:modules/config:module/config:configuration" {
226         case binding-notification-adapter {
227             when "/config:modules/config:module/config:type = 'binding-notification-adapter'";
228             container binding-notification-adapter {
229                 uses dom-forwarding-component;
230             }
231         }
232     }
233
234     augment "/config:modules/config:module/config:configuration" {
235         case binding-notification-publish-adapter {
236             when "/config:modules/config:module/config:type = 'binding-notification-publish-adapter'";
237             container binding-notification-publish-adapter {
238                 uses dom-forwarding-component;
239             }
240         }
241     }
242 }