2 * Copyright IBM Corporation, 2013. All rights reserved.
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
9 package org.opendaylight.controller.networkconfig.neutron.implementation;
11 import org.apache.felix.dm.Component;
12 import org.opendaylight.controller.clustering.services.IClusterContainerServices;
13 import org.opendaylight.controller.configuration.IConfigurationContainerAware;
14 import org.opendaylight.controller.configuration.IConfigurationContainerService;
15 import org.opendaylight.controller.networkconfig.neutron.INeutronFirewallCRUD;
16 import org.opendaylight.controller.networkconfig.neutron.INeutronFirewallPolicyCRUD;
17 import org.opendaylight.controller.networkconfig.neutron.INeutronFirewallRuleCRUD;
18 import org.opendaylight.controller.networkconfig.neutron.INeutronFloatingIPCRUD;
19 import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkCRUD;
20 import org.opendaylight.controller.networkconfig.neutron.INeutronPortCRUD;
21 import org.opendaylight.controller.networkconfig.neutron.INeutronRouterCRUD;
22 import org.opendaylight.controller.networkconfig.neutron.INeutronSecurityGroupCRUD;
23 import org.opendaylight.controller.networkconfig.neutron.INeutronSecurityRuleCRUD;
24 import org.opendaylight.controller.networkconfig.neutron.INeutronSubnetCRUD;
25 import org.opendaylight.controller.sal.core.ComponentActivatorAbstractBase;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
29 import java.util.Dictionary;
30 import java.util.Hashtable;
32 public class Activator extends ComponentActivatorAbstractBase {
33 protected static final Logger logger = LoggerFactory
34 .getLogger(Activator.class);
37 * Function called when the activator starts just after some
38 * initializations are done by the
39 * ComponentActivatorAbstractBase.
48 * Function called when the activator stops just before the
49 * cleanup done by ComponentActivatorAbstractBase
53 public void destroy() {
58 * Function that is used to communicate to dependency manager the
59 * list of known implementations for services inside a container
62 * @return An array containing all the CLASS objects that will be
63 * instantiated in order to get an fully working implementation
67 public Object[] getImplementations() {
68 Object[] res = { NeutronFloatingIPInterface.class,
69 NeutronRouterInterface.class,
70 NeutronPortInterface.class,
71 NeutronSubnetInterface.class,
72 NeutronNetworkInterface.class,
73 NeutronSecurityGroupInterface.class,
74 NeutronSecurityRuleInterface.class,
75 NeutronFirewallInterface.class,
76 NeutronFirewallPolicyInterface.class,
77 NeutronFirewallRuleInterface.class};
82 * Function that is called when configuration of the dependencies
85 * @param c dependency manager Component object, used for
86 * configuring the dependencies exported and imported
87 * @param imp Implementation class that is being configured,
88 * needed as long as the same routine can configure multiple
90 * @param containerName The containerName being configured, this allow
91 * also optional per-container different behavior if needed, usually
92 * should not be the case though.
95 public void configureInstance(Component c, Object imp, String containerName) {
96 if (imp.equals(NeutronFloatingIPInterface.class)) {
99 new String[] { INeutronFloatingIPCRUD.class.getName(),
100 IConfigurationContainerAware.class.getName()}, null);
101 Dictionary<String, String> props = new Hashtable<String, String>();
102 props.put("salListenerName", "neutron");
103 c.add(createContainerServiceDependency(containerName)
104 .setService(IClusterContainerServices.class)
105 .setCallbacks("setClusterContainerService",
106 "unsetClusterContainerService").setRequired(true));
107 c.add(createContainerServiceDependency(containerName).setService(
108 IConfigurationContainerService.class).setCallbacks(
109 "setConfigurationContainerService",
110 "unsetConfigurationContainerService").setRequired(true));
112 if (imp.equals(NeutronRouterInterface.class)) {
113 // export the service
115 new String[] { INeutronRouterCRUD.class.getName(),
116 IConfigurationContainerAware.class.getName()}, null);
117 Dictionary<String, String> props = new Hashtable<String, String>();
118 props.put("salListenerName", "neutron");
119 c.add(createContainerServiceDependency(containerName)
120 .setService(IClusterContainerServices.class)
121 .setCallbacks("setClusterContainerService",
122 "unsetClusterContainerService").setRequired(true));
123 c.add(createContainerServiceDependency(containerName).setService(
124 IConfigurationContainerService.class).setCallbacks(
125 "setConfigurationContainerService",
126 "unsetConfigurationContainerService").setRequired(true));
128 if (imp.equals(NeutronPortInterface.class)) {
129 // export the service
131 new String[] { INeutronPortCRUD.class.getName(),
132 IConfigurationContainerAware.class.getName()}, null);
133 Dictionary<String, String> props = new Hashtable<String, String>();
134 props.put("salListenerName", "neutron");
135 c.add(createContainerServiceDependency(containerName)
136 .setService(IClusterContainerServices.class)
137 .setCallbacks("setClusterContainerService",
138 "unsetClusterContainerService").setRequired(true));
139 c.add(createContainerServiceDependency(containerName).setService(
140 IConfigurationContainerService.class).setCallbacks(
141 "setConfigurationContainerService",
142 "unsetConfigurationContainerService").setRequired(true));
144 if (imp.equals(NeutronSubnetInterface.class)) {
145 // export the service
147 new String[] { INeutronSubnetCRUD.class.getName(),
148 IConfigurationContainerAware.class.getName()}, null);
149 Dictionary<String, String> props = new Hashtable<String, String>();
150 props.put("salListenerName", "neutron");
151 c.add(createContainerServiceDependency(containerName)
152 .setService(IClusterContainerServices.class)
153 .setCallbacks("setClusterContainerService",
154 "unsetClusterContainerService").setRequired(true));
155 c.add(createContainerServiceDependency(containerName).setService(
156 IConfigurationContainerService.class).setCallbacks(
157 "setConfigurationContainerService",
158 "unsetConfigurationContainerService").setRequired(true));
160 if (imp.equals(NeutronNetworkInterface.class)) {
161 // export the service
163 new String[] { INeutronNetworkCRUD.class.getName(),
164 IConfigurationContainerAware.class.getName()}, null);
165 Dictionary<String, String> props = new Hashtable<String, String>();
166 props.put("salListenerName", "neutron");
167 c.add(createContainerServiceDependency(containerName)
168 .setService(IClusterContainerServices.class)
169 .setCallbacks("setClusterContainerService",
170 "unsetClusterContainerService").setRequired(true));
171 c.add(createContainerServiceDependency(containerName).setService(
172 IConfigurationContainerService.class).setCallbacks(
173 "setConfigurationContainerService",
174 "unsetConfigurationContainerService").setRequired(true));
176 if (imp.equals(NeutronSecurityGroupInterface.class)) {
177 // export the service
179 new String[] { INeutronSecurityGroupCRUD.class.getName(),
180 IConfigurationContainerAware.class.getName()}, null);
181 Dictionary<String, String> props = new Hashtable<String, String>();
182 props.put("salListenerName", "neutron");
183 c.add(createContainerServiceDependency(containerName)
184 .setService(IClusterContainerServices.class)
185 .setCallbacks("setClusterContainerService",
186 "unsetClusterContainerService").setRequired(true));
187 c.add(createContainerServiceDependency(containerName).setService(
188 IConfigurationContainerService.class).setCallbacks(
189 "setConfigurationContainerService",
190 "unsetConfigurationContainerService").setRequired(true));
192 if (imp.equals(NeutronSecurityRuleInterface.class)) {
193 // export the service
195 new String[] { INeutronSecurityRuleCRUD.class.getName(),
196 IConfigurationContainerAware.class.getName()}, null);
197 Dictionary<String, String> props = new Hashtable<String, String>();
198 props.put("salListenerName", "neutron");
199 c.add(createContainerServiceDependency(containerName)
200 .setService(IClusterContainerServices.class)
201 .setCallbacks("setClusterContainerService",
202 "unsetClusterContainerService").setRequired(true));
203 c.add(createContainerServiceDependency(containerName).setService(
204 IConfigurationContainerService.class).setCallbacks(
205 "setConfigurationContainerService",
206 "unsetConfigurationContainerService").setRequired(true));
208 if (imp.equals(NeutronFirewallInterface.class)) {
209 // export the service
211 new String[] { INeutronFirewallCRUD.class.getName(),
212 IConfigurationContainerAware.class.getName()}, null);
213 Dictionary<String, String> props = new Hashtable<String, String>();
214 props.put("salListenerName", "neutron");
215 c.add(createContainerServiceDependency(containerName)
216 .setService(IClusterContainerServices.class)
217 .setCallbacks("setClusterContainerService",
218 "unsetClusterContainerService").setRequired(true));
219 c.add(createContainerServiceDependency(containerName).setService(
220 IConfigurationContainerService.class).setCallbacks(
221 "setConfigurationContainerService",
222 "unsetConfigurationContainerService").setRequired(true));
224 if (imp.equals(NeutronFirewallPolicyInterface.class)) {
225 // export the service
227 new String[] { INeutronFirewallPolicyCRUD.class.getName(),
228 IConfigurationContainerAware.class.getName()}, null);
229 Dictionary<String, String> props = new Hashtable<String, String>();
230 props.put("salListenerName", "neutron");
231 c.add(createContainerServiceDependency(containerName)
232 .setService(IClusterContainerServices.class)
233 .setCallbacks("setClusterContainerService",
234 "unsetClusterContainerService").setRequired(true));
235 c.add(createContainerServiceDependency(containerName).setService(
236 IConfigurationContainerService.class).setCallbacks(
237 "setConfigurationContainerService",
238 "unsetConfigurationContainerService").setRequired(true));
240 if (imp.equals(NeutronFirewallRuleInterface.class)) {
241 // export the service
243 new String[] { INeutronFirewallRuleCRUD.class.getName(),
244 IConfigurationContainerAware.class.getName()}, null);
245 Dictionary<String, String> props = new Hashtable<String, String>();
246 props.put("salListenerName", "neutron");
247 c.add(createContainerServiceDependency(containerName)
248 .setService(IClusterContainerServices.class)
249 .setCallbacks("setClusterContainerService",
250 "unsetClusterContainerService").setRequired(true));
251 c.add(createContainerServiceDependency(containerName).setService(
252 IConfigurationContainerService.class).setCallbacks(
253 "setConfigurationContainerService",
254 "unsetConfigurationContainerService").setRequired(true));