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
11 package org.opendaylight.ovsdb.neutron;
13 import org.apache.felix.dm.Component;
14 import org.opendaylight.controller.containermanager.IContainerManager;
15 import org.opendaylight.controller.forwardingrulesmanager.IForwardingRulesManager;
16 import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkAware;
17 import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkCRUD;
18 import org.opendaylight.controller.networkconfig.neutron.INeutronPortAware;
19 import org.opendaylight.controller.networkconfig.neutron.INeutronPortCRUD;
20 import org.opendaylight.controller.networkconfig.neutron.INeutronSubnetAware;
21 import org.opendaylight.controller.networkconfig.neutron.INeutronSubnetCRUD;
22 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
23 import org.opendaylight.controller.sal.core.ComponentActivatorAbstractBase;
24 import org.opendaylight.controller.switchmanager.IInventoryListener;
25 import org.opendaylight.ovsdb.plugin.IConnectionServiceInternal;
26 import org.opendaylight.ovsdb.plugin.OVSDBConfigService;
27 import org.opendaylight.ovsdb.plugin.OVSDBInventoryListener;
30 * OSGi bundle activator for the OVSDB Neutron Interface.
32 public class Activator extends ComponentActivatorAbstractBase {
34 * Function called when the activator starts just after some
35 * initializations are done by the
36 * ComponentActivatorAbstractBase.
43 * Function called when the activator stops just before the
44 * cleanup done by ComponentActivatorAbstractBase.
48 public void destroy() {
52 * Function that is used to communicate to dependency manager the
53 * list of known implementations for services inside a container.
55 * @return An array containing all the CLASS objects that will be
56 * instantiated in order to get an fully working implementation
60 public Object[] getImplementations() {
61 Object[] res = {NetworkHandler.class,
64 SouthboundHandler.class,
70 * Function that is called when configuration of the dependencies
73 * @param c dependency manager Component object, used for
74 * configuring the dependencies exported and imported
75 * @param imp Implementation class that is being configured,
76 * needed as long as the same routine can configure multiple
78 * @param containerName The containerName being configured, this allow
79 * also optional per-container different behavior if needed, usually
80 * should not be the case though.
83 public void configureInstance(Component c, Object imp,
84 String containerName) {
85 if (imp.equals(NetworkHandler.class)) {
86 c.setInterface(INeutronNetworkAware.class.getName(), null);
89 if (imp.equals(SubnetHandler.class)) {
90 c.setInterface(INeutronSubnetAware.class.getName(), null);
93 if (imp.equals(PortHandler.class)) {
94 c.setInterface(INeutronPortAware.class.getName(), null);
97 if (imp.equals(SouthboundHandler.class)) {
98 c.setInterface(new String[] {OVSDBInventoryListener.class.getName(), IInventoryListener.class.getName()}, null);
101 if (imp.equals(MDSALConsumer.class)) {
102 c.setInterface(IMDSALConsumer.class.getName(), null);
104 c.add(createServiceDependency().
105 setService(OVSDBConfigService.class).
106 setCallbacks("setOVSDBConfigService", "unsetOVSDBConfigService").
109 c.add(createServiceDependency().
110 setService(IConnectionServiceInternal.class).
111 setCallbacks("setConnectionService", "unsetConnectionService").
114 // Create service dependencies.
115 c.add(createServiceDependency().
116 setService(IContainerManager.class).
117 setCallbacks("setContainerManager", "unsetContainerManager").
120 c.add(createServiceDependency().
121 setService(IForwardingRulesManager.class).
122 setCallbacks("setForwardingRulesManager", "unsetForwardingRulesManager").
125 c.add(createServiceDependency()
126 .setService(BindingAwareBroker.class)
127 .setCallbacks("setBindingAwareBroker", "unsetBindingAwareBroker")
130 c.add(createServiceDependency().
131 setService(INeutronNetworkCRUD.class).
132 setCallbacks("setNeutronNetworkCRUD", "unsetNeutronNetworkCRUD").
134 c.add(createServiceDependency().
135 setService(INeutronSubnetCRUD.class).
136 setCallbacks("setNeutronSubnetCRUD", "unsetNeutronSubnetCRUD").
138 c.add(createServiceDependency().
139 setService(INeutronPortCRUD.class).
140 setCallbacks("setNeutronPortCRUD", "unsetNeutronPortCRUD").