Bug 2578 - Added Binding Adapters for new Notification Broker
[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
121             container data-broker {
122                 uses config:service-ref {
123                     refine type {
124                         mandatory false;
125                         config:required-identity sal:binding-data-broker;
126                     }
127                 }
128             }
129
130             container notification-service {
131                 uses config:service-ref {
132                     refine type {
133                         mandatory true;
134                         config:required-identity sal:binding-notification-service;
135                     }
136                 }
137             }
138
139             container root-data-broker {
140                 uses config:service-ref {
141                     refine type {
142                         mandatory false;
143                         config:required-identity sal:binding-async-data-broker;
144                     }
145                 }
146             }
147         }
148     }
149
150     augment "/config:modules/config:module/config:configuration" {
151         case binding-data-compatible-broker {
152             when "/config:modules/config:module/config:type = 'binding-data-compatible-broker'";
153
154             uses dom-forwarding-component;
155         }
156     }
157
158     augment "/config:modules/config:module/config:configuration" {
159         case binding-forwarded-data-broker {
160             when "/config:modules/config:module/config:type = 'binding-forwarded-data-broker'";
161             container binding-forwarded-data-broker {
162                 container dom-async-broker {
163                     uses config:service-ref {
164                         refine type {
165                             mandatory true;
166                             config:required-identity dom:dom-async-data-broker;
167                         }
168                     }
169                 }
170
171                 container binding-mapping-service {
172                     uses config:service-ref {
173                         refine type {
174                             mandatory true;
175                             config:required-identity binding-dom-mapping-service;
176                         }
177                     }
178                 }
179
180                 container schema-service {
181                     uses config:service-ref {
182                         refine type {
183                             mandatory false;
184                             config:required-identity dom:schema-service;
185                         }
186                     }
187                 }
188             }
189         }
190     }
191
192
193     augment "/config:modules/config:module/config:state" {
194         case runtime-generated-mapping {
195             when "/config:modules/config:module/config:type = 'runtime-generated-mapping'";
196         }
197     }
198
199     augment "/config:modules/config:module/config:state" {
200         case binding-rpc-broker {
201             when "/config:modules/config:module/config:type = 'binding-rpc-broker'";
202             uses common:rpc-state;
203         }
204     }
205
206     augment "/config:modules/config:module/config:state" {
207         case binding-notification-broker {
208             when "/config:modules/config:module/config:type = 'binding-notification-broker'";
209             uses common:notification-state;
210         }
211     }
212
213     augment "/config:modules/config:module/config:configuration" {
214         case binding-notification-adapter {
215             when "/config:modules/config:module/config:type = 'binding-notification-adapter'";
216             container binding-notification-adapter {
217                 uses dom-forwarding-component;
218             }
219         }
220     }
221
222     augment "/config:modules/config:module/config:configuration" {
223         case binding-notification-publish-adapter {
224             when "/config:modules/config:module/config:type = 'binding-notification-publish-adapter'";
225             container binding-notification-publish-adapter {
226                 uses dom-forwarding-component;
227             }
228         }
229     }
230 }