Removed the ovsdb subdirectory properly in lieu of the upcoming rebase with master
[netvirt.git] / neutron / src / main / java / org / opendaylight / ovsdb / neutron / 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
9  */
10
11 package org.opendaylight.ovsdb.neutron;
12
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;
28
29 /**
30  * OSGi bundle activator for the OVSDB Neutron Interface.
31  */
32 public class Activator extends ComponentActivatorAbstractBase {
33     /**
34      * Function called when the activator starts just after some
35      * initializations are done by the
36      * ComponentActivatorAbstractBase.
37      */
38     @Override
39     public void init() {
40     }
41
42     /**
43      * Function called when the activator stops just before the
44      * cleanup done by ComponentActivatorAbstractBase.
45      *
46      */
47     @Override
48     public void destroy() {
49     }
50
51     /**
52      * Function that is used to communicate to dependency manager the
53      * list of known implementations for services inside a container.
54      *
55      * @return An array containing all the CLASS objects that will be
56      * instantiated in order to get an fully working implementation
57      * Object
58      */
59     @Override
60     public Object[] getImplementations() {
61         Object[] res = {NetworkHandler.class,
62                         SubnetHandler.class,
63                         PortHandler.class,
64                         SouthboundHandler.class,
65                         MDSALConsumer.class};
66         return res;
67     }
68
69     /**
70      * Function that is called when configuration of the dependencies
71      * is required.
72      *
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
77      * implementations
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.
81      */
82     @Override
83     public void configureInstance(Component c, Object imp,
84                                   String containerName) {
85         if (imp.equals(NetworkHandler.class)) {
86             c.setInterface(INeutronNetworkAware.class.getName(), null);
87         }
88
89         if (imp.equals(SubnetHandler.class)) {
90             c.setInterface(INeutronSubnetAware.class.getName(), null);
91         }
92
93         if (imp.equals(PortHandler.class)) {
94             c.setInterface(INeutronPortAware.class.getName(), null);
95         }
96
97         if (imp.equals(SouthboundHandler.class)) {
98             c.setInterface(new String[] {OVSDBInventoryListener.class.getName(), IInventoryListener.class.getName()}, null);
99         }
100
101         if (imp.equals(MDSALConsumer.class)) {
102             c.setInterface(IMDSALConsumer.class.getName(), null);
103         }
104         c.add(createServiceDependency().
105                 setService(OVSDBConfigService.class).
106                 setCallbacks("setOVSDBConfigService", "unsetOVSDBConfigService").
107                 setRequired(true));
108
109         c.add(createServiceDependency().
110                 setService(IConnectionServiceInternal.class).
111                 setCallbacks("setConnectionService", "unsetConnectionService").
112                 setRequired(true));
113
114         // Create service dependencies.
115         c.add(createServiceDependency().
116               setService(IContainerManager.class).
117               setCallbacks("setContainerManager", "unsetContainerManager").
118               setRequired(true));
119
120         c.add(createServiceDependency().
121                 setService(IForwardingRulesManager.class).
122                 setCallbacks("setForwardingRulesManager", "unsetForwardingRulesManager").
123                 setRequired(true));
124
125         c.add(createServiceDependency()
126                 .setService(BindingAwareBroker.class)
127                 .setCallbacks("setBindingAwareBroker", "unsetBindingAwareBroker")
128                 .setRequired(true));
129
130         c.add(createServiceDependency().
131                 setService(INeutronNetworkCRUD.class).
132                 setCallbacks("setNeutronNetworkCRUD", "unsetNeutronNetworkCRUD").
133                 setRequired(true));
134         c.add(createServiceDependency().
135                 setService(INeutronSubnetCRUD.class).
136                 setCallbacks("setNeutronSubnetCRUD", "unsetNeutronSubnetCRUD").
137                 setRequired(true));
138         c.add(createServiceDependency().
139                 setService(INeutronPortCRUD.class).
140                 setCallbacks("setNeutronPortCRUD", "unsetNeutronPortCRUD").
141                 setRequired(true));
142     }
143 }