2 * Copyright (C) 2013 Red Hat, Inc.
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
8 * Authors : Madhu Venugopal, Brent Salisbury, Dave Tucker
11 package org.opendaylight.ovsdb.openstack.netvirt.providers;
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.*;
17 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
18 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.MdsalConsumer;
19 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.MdsalConsumerImpl;
20 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.OF13Provider;
21 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
22 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestratorImpl;
23 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
24 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.ArpResponderService;
25 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.ClassifierService;
26 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.EgressAclService;
27 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.InboundNatService;
28 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.IngressAclService;
29 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.L2ForwardingService;
30 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.L2RewriteService;
31 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.L3ForwardingService;
32 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.LoadBalancerService;
33 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.OutboundNatService;
34 import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.RoutingService;
36 import org.osgi.framework.BundleContext;
38 import java.util.Dictionary;
39 import java.util.Hashtable;
42 * OSGi Bundle Activator for the Neutron providers
44 public class Activator extends DependencyActivatorBase {
47 public void init(BundleContext context, DependencyManager manager) throws Exception {
49 manager.add(createComponent()
50 .setInterface(MdsalConsumer.class.getName(), null)
51 .setImplementation(MdsalConsumerImpl.class)
52 .add(createServiceDependency().setService(BindingAwareBroker.class).setRequired(true)));
54 Dictionary<String, Object> props1 = new Hashtable<>();
55 props1.put(Constants.SOUTHBOUND_PROTOCOL_PROPERTY, "ovsdb");
56 props1.put(Constants.OPENFLOW_VERSION_PROPERTY, Constants.OPENFLOW13);
58 manager.add(createComponent()
59 .setInterface(NetworkingProvider.class.getName(), props1)
60 .setImplementation(OF13Provider.class)
61 .add(createServiceDependency().setService(ConfigurationService.class).setRequired(true))
62 //.add(createServiceDependency().setService(BridgeConfigurationManager.class).setRequired(true))
63 //.add(createServiceDependency().setService(TenantNetworkManager.class).setRequired(true)));
64 //.add(createServiceDependency().setService(SecurityServicesManager.class).setRequired(true))
65 //.add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
66 //.add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true))
67 .add(createServiceDependency().setService(ClassifierProvider.class).setRequired(true))
68 .add(createServiceDependency().setService(IngressAclProvider.class).setRequired(true))
69 ////.add(createServiceDependency().setService(EgressAclProvider.class).setRequired(true))
70 .add(createServiceDependency().setService(L2ForwardingProvider.class).setRequired(true)));
72 manager.add(createComponent()
73 .setInterface(new String[]{PipelineOrchestrator.class.getName(),
74 NodeCacheListener.class.getName()}, null)
75 .setImplementation(PipelineOrchestratorImpl.class)
76 .add(createServiceDependency().setService(AbstractServiceInstance.class)
77 .setCallbacks("registerService", "unregisterService"))
78 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true))
79 .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true)));
81 Dictionary<String, Object> props2 = new Hashtable<>();
82 props2.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.CLASSIFIER);
83 props2.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
85 manager.add(createComponent()
86 .setInterface(new String[]{AbstractServiceInstance.class.getName(),
87 ClassifierProvider.class.getName()},props2)
88 .setImplementation(ClassifierService.class)
89 .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
90 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
91 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
93 Dictionary<String, Object> props3 = new Hashtable<>();
94 props3.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.ARP_RESPONDER);
95 props3.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
97 manager.add(createComponent()
98 .setInterface(new String[]{AbstractServiceInstance.class.getName(), ArpProvider.class.getName()},
100 .setImplementation(ArpResponderService.class)
101 .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
102 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
103 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
105 Dictionary<String, Object> props4 = new Hashtable<>();
106 props4.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.INBOUND_NAT);
107 props4.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
109 manager.add(createComponent()
110 .setInterface(new String[]{AbstractServiceInstance.class.getName(),
111 InboundNatProvider.class.getName()}, props4)
112 .setImplementation(InboundNatService.class)
113 .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
114 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
115 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
117 Dictionary<String, Object> props5 = new Hashtable<>();
118 props5.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.INGRESS_ACL);
119 props5.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
121 manager.add(createComponent()
122 .setInterface(new String[]{AbstractServiceInstance.class.getName(), IngressAclProvider.class.getName()},
124 .setImplementation(IngressAclService.class)
125 .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
126 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
127 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
129 Dictionary<String, Object> props6 = new Hashtable<>();
130 props6.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.LOAD_BALANCER);
131 props6.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
133 manager.add(createComponent()
134 .setInterface(new String[] {AbstractServiceInstance.class.getName(),
135 LoadBalancerProvider.class.getName()}, props6)
136 .setImplementation(LoadBalancerService.class)
137 .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
138 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
139 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
141 Dictionary<String, Object> props7 = new Hashtable<>();
142 props7.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.ROUTING);
143 props7.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
145 manager.add(createComponent()
146 .setInterface(new String[] {AbstractServiceInstance.class.getName(), RoutingProvider.class.getName()},
148 .setImplementation(RoutingService.class)
149 .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
150 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
151 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
153 Dictionary<String, Object> props8 = new Hashtable<>();
154 props8.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.L3_FORWARDING);
155 props8.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
157 manager.add(createComponent()
158 .setInterface(new String[] {AbstractServiceInstance.class.getName(),
159 L3ForwardingProvider.class.getName()}, props8)
160 .setImplementation(L3ForwardingService.class)
161 .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
162 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
163 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
165 Dictionary<String, Object> props9 = new Hashtable<>();
166 props9.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.L2_REWRITE);
167 props9.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
169 manager.add(createComponent()
170 .setInterface(AbstractServiceInstance.class.getName(), props9)
171 .setImplementation(L2RewriteService.class)
172 .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
173 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
174 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
176 Dictionary<String, Object> props10 = new Hashtable<>();
177 props10.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.L2_FORWARDING);
178 props10.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
180 manager.add(createComponent()
181 .setInterface(new String[] {AbstractServiceInstance.class.getName(),
182 L2ForwardingProvider.class.getName()},
184 .setImplementation(L2ForwardingService.class)
185 .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
186 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
187 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
189 Dictionary<String, Object> props11 = new Hashtable<>();
190 props11.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.EGRESS_ACL);
191 props11.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
193 manager.add(createComponent()
194 .setInterface(new String[]{AbstractServiceInstance.class.getName(), EgressAclProvider.class.getName()},
196 .setImplementation(EgressAclService.class)
197 .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
198 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
199 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
201 Dictionary<String, Object> props12 = new Hashtable<>();
202 props12.put(AbstractServiceInstance.SERVICE_PROPERTY, Service.OUTBOUND_NAT);
203 props12.put(Constants.PROVIDER_NAME_PROPERTY, OF13Provider.NAME);
205 manager.add(createComponent()
206 .setInterface(new String[]{AbstractServiceInstance.class.getName(),
207 OutboundNatProvider.class.getName()}, props12)
208 .setImplementation(OutboundNatService.class)
209 .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
210 .add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
211 .add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
215 public void destroy(BundleContext context, DependencyManager manager) throws Exception {