Remove plugin dependencies
[ovsdb.git] / openstack / net-virt-providers / src / main / java / org / opendaylight / ovsdb / openstack / netvirt / providers / Activator.java
1 /*
2  * Copyright (C) 2013 Red Hat, Inc.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Authors : Madhu Venugopal, Brent Salisbury, Dave Tucker
9  */
10
11 package org.opendaylight.ovsdb.openstack.netvirt.providers;
12
13 import org.apache.felix.dm.DependencyActivatorBase;
14 import org.apache.felix.dm.DependencyManager;
15 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
16 import org.opendaylight.ovsdb.openstack.netvirt.api.ArpProvider;
17 import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
18 import org.opendaylight.ovsdb.openstack.netvirt.api.ClassifierProvider;
19 import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
20 import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
21 import org.opendaylight.ovsdb.openstack.netvirt.api.EgressAclProvider;
22 import org.opendaylight.ovsdb.openstack.netvirt.api.InboundNatProvider;
23 import org.opendaylight.ovsdb.openstack.netvirt.api.IngressAclProvider;
24 import org.opendaylight.ovsdb.openstack.netvirt.api.L2ForwardingProvider;
25 import org.opendaylight.ovsdb.openstack.netvirt.api.L3ForwardingProvider;
26 import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
27 import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProvider;
28 import org.opendaylight.ovsdb.openstack.netvirt.api.OutboundNatProvider;
29 import org.opendaylight.ovsdb.openstack.netvirt.api.RoutingProvider;
30 import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
31 import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
32 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
33 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.MdsalConsumer;
34 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.MdsalConsumerImpl;
35 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.OF13Provider;
36 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
37 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestratorImpl;
38 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
39 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.ArpResponderService;
40 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.ClassifierService;
41 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.EgressAclService;
42 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.InboundNatService;
43 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.IngressAclService;
44 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.L2ForwardingService;
45 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.L2RewriteService;
46 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.L3ForwardingService;
47 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.LoadBalancerService;
48 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.OutboundNatService;
49 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.RoutingService;
50
51 import org.osgi.framework.BundleContext;
52
53 import java.util.Dictionary;
54 import java.util.Hashtable;
55
56 /**
57  * OSGi Bundle Activator for the Neutron providers
58  */
59 public class Activator extends DependencyActivatorBase {
60
61     @Override
62     public void init(BundleContext context, DependencyManager manager) throws Exception {
63
64         manager.add(createComponent()
65                 .setInterface(MdsalConsumer.class.getName(), null)
66                 .setImplementation(MdsalConsumerImpl.class)
67                 .add(createServiceDependency().setService(BindingAwareBroker.class).setRequired(true)));
68
69         Dictionary<String, Object> props1 = new Hashtable<>();
70         props1.put(Constants.SOUTHBOUND_PROTOCOL_PROPERTY, "ovsdb");
71         props1.put(Constants.OPENFLOW_VERSION_PROPERTY, Constants.OPENFLOW13);
72
73         manager.add(createComponent()
74                 .setInterface(NetworkingProvider.class.getName(), props1)
75                 .setImplementation(OF13Provider.class)
76                 .add(createServiceDependency().setService(ConfigurationService.class).setRequired(true))
77                 .add(createServiceDependency().setService(BridgeConfigurationManager.class).setRequired(true))
78                 .add(createServiceDependency().setService(TenantNetworkManager.class).setRequired(true))
79                 .add(createServiceDependency().setService(SecurityServicesManager.class).setRequired(true))
80                 .add(createServiceDependency().setService(org.opendaylight.ovsdb.openstack.netvirt.impl.MdsalConsumerImpl.class).setRequired(true))
81                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true))
82                 .add(createServiceDependency().setService(ClassifierProvider.class).setRequired(true))
83                 .add(createServiceDependency().setService(IngressAclProvider.class).setRequired(true))
84                 .add(createServiceDependency().setService(EgressAclProvider.class).setRequired(true))
85                 .add(createServiceDependency().setService(L2ForwardingProvider.class).setRequired(true)));
86
87         manager.add(createComponent()
88                 .setInterface(PipelineOrchestrator.class.getName(), null)
89                 .setImplementation(PipelineOrchestratorImpl.class)
90                 .add(createServiceDependency().setService(AbstractServiceInstance.class)
91                         .setCallbacks("registerService", "unregisterService"))
92                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
93
94         Dictionary<String, Object> props2 = new Hashtable<>();
95         props2.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.CLASSIFIER);
96         props2.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
97
98         manager.add(createComponent()
99                 .setInterface(new String[]{AbstractServiceInstance.class.getName(), ClassifierProvider.class.getName()},
100                         props2)
101                 .setImplementation(ClassifierService.class)
102                 .add(createServiceDependency().setService(org.opendaylight.ovsdb.openstack.netvirt.impl.MdsalConsumerImpl.class).setRequired(true))
103                 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
104                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
105
106         Dictionary<String, Object> props3 = new Hashtable<>();
107         props3.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.ARP_RESPONDER);
108         props3.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
109
110         manager.add(createComponent()
111                 .setInterface(new String[]{AbstractServiceInstance.class.getName(), ArpProvider.class.getName()},
112                         props3)
113                 .setImplementation(ArpResponderService.class)
114                 .add(createServiceDependency().setService(org.opendaylight.ovsdb.openstack.netvirt.impl.MdsalConsumerImpl.class).setRequired(true))
115                 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
116                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
117
118         Dictionary<String, Object> props4 = new Hashtable<>();
119         props4.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.INBOUND_NAT);
120         props4.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
121
122         manager.add(createComponent()
123                 .setInterface(new String[]{AbstractServiceInstance.class.getName(),
124                         InboundNatProvider.class.getName()}, props4)
125                 .setImplementation(InboundNatService.class)
126                 .add(createServiceDependency().setService(org.opendaylight.ovsdb.openstack.netvirt.impl.MdsalConsumerImpl.class).setRequired(true))
127                 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
128                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
129
130         Dictionary<String, Object> props5 = new Hashtable<>();
131         props5.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.INGRESS_ACL);
132         props5.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
133
134         manager.add(createComponent()
135                 .setInterface(new String[]{AbstractServiceInstance.class.getName(), IngressAclProvider.class.getName()},
136                         props5)
137                 .setImplementation(IngressAclService.class)
138                 .add(createServiceDependency().setService(org.opendaylight.ovsdb.openstack.netvirt.impl.MdsalConsumerImpl.class).setRequired(true))
139                 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
140                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
141
142         Dictionary<String, Object> props6 = new Hashtable<>();
143         props6.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.LOAD_BALANCER);
144         props6.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
145
146         manager.add(createComponent()
147                 .setInterface(new String[]{AbstractServiceInstance.class.getName(),
148                         LoadBalancerProvider.class.getName()}, props6)
149                 .setImplementation(LoadBalancerService.class)
150                 .add(createServiceDependency().setService(org.opendaylight.ovsdb.openstack.netvirt.impl.MdsalConsumerImpl.class).setRequired(true))
151                 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
152                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
153
154         Dictionary<String, Object> props7 = new Hashtable<>();
155         props7.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.ROUTING);
156         props7.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
157
158         manager.add(createComponent()
159                 .setInterface(new String[]{AbstractServiceInstance.class.getName(), RoutingProvider.class.getName()},
160                         props7)
161                 .setImplementation(RoutingService.class)
162                 .add(createServiceDependency().setService(org.opendaylight.ovsdb.openstack.netvirt.impl.MdsalConsumerImpl.class).setRequired(true))
163                 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
164                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
165
166         Dictionary<String, Object> props8 = new Hashtable<>();
167         props8.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.L3_FORWARDING);
168         props8.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
169
170         manager.add(createComponent()
171                 .setInterface(new String[]{AbstractServiceInstance.class.getName(),
172                         L3ForwardingProvider.class.getName()}, props8)
173                 .setImplementation(L3ForwardingService.class)
174                 .add(createServiceDependency().setService(org.opendaylight.ovsdb.openstack.netvirt.impl.MdsalConsumerImpl.class).setRequired(true))
175                 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
176                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
177
178         Dictionary<String, Object> props9 = new Hashtable<>();
179         props9.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.L2_REWRITE);
180         props9.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
181
182         manager.add(createComponent()
183                 .setInterface(AbstractServiceInstance.class.getName(), props9)
184                 .setImplementation(L2RewriteService.class)
185                 .add(createServiceDependency().setService(org.opendaylight.ovsdb.openstack.netvirt.impl.MdsalConsumerImpl.class).setRequired(true))
186                 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
187                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
188
189         Dictionary<String, Object> props10 = new Hashtable<>();
190         props10.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.L2_FORWARDING);
191         props10.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
192
193         manager.add(createComponent()
194                 .setInterface(new String[]{AbstractServiceInstance.class.getName(),
195                                 L2ForwardingProvider.class.getName()},
196                         props10)
197                 .setImplementation(L2ForwardingService.class)
198                 .add(createServiceDependency().setService(org.opendaylight.ovsdb.openstack.netvirt.impl.MdsalConsumerImpl.class).setRequired(true))
199                 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
200                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
201
202         Dictionary<String, Object> props11 = new Hashtable<>();
203         props11.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.EGRESS_ACL);
204         props11.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
205
206         manager.add(createComponent()
207                 .setInterface(new String[]{AbstractServiceInstance.class.getName(), EgressAclProvider.class.getName()},
208                         props11)
209                 .setImplementation(EgressAclService.class)
210                 .add(createServiceDependency().setService(org.opendaylight.ovsdb.openstack.netvirt.impl.MdsalConsumerImpl.class).setRequired(true))
211                 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
212                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
213
214         Dictionary<String, Object> props12 = new Hashtable<>();
215         props12.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.OUTBOUND_NAT);
216         props12.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
217
218         manager.add(createComponent()
219                 .setInterface(new String[]{AbstractServiceInstance.class.getName(),
220                                 OutboundNatProvider.class.getName()},
221                         props12)
222                 .setImplementation(OutboundNatService.class)
223                 .add(createServiceDependency().setService(org.opendaylight.ovsdb.openstack.netvirt.impl.MdsalConsumerImpl.class).setRequired(true))
224                 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
225                 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
226     }
227
228     @Override
229     public void destroy(BundleContext context, DependencyManager manager) throws Exception {
230     }
231 }