4 * Generated from: yang module name: openflow-provider-impl yang module local name: openflow-provider-impl
5 * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
6 * Generated at: Wed Apr 02 16:59:36 PDT 2014
8 * Do not modify this file unless it is present under src/main directory
10 package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.common.config.impl.rev140326;
12 import com.google.common.base.MoreObjects;
13 import javax.management.ObjectName;
15 import org.opendaylight.openflowplugin.openflow.md.core.sal.OpenflowPluginConfig;
16 import org.opendaylight.openflowplugin.openflow.md.core.sal.OpenflowPluginProvider;
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
23 public final class ConfigurableOpenFlowProviderModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.common.config.impl.rev140326.AbstractConfigurableOpenFlowProviderModule {
25 private static final Logger LOG = LoggerFactory.getLogger(ConfigurableOpenFlowProviderModule.class);
27 private OpenflowPluginProvider pluginProvider;
29 private static final boolean SKIP_TABLE_FEATURES = false;
32 * @param identifier module identifier
33 * @param dependencyResolver dependency resolver
35 public ConfigurableOpenFlowProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
36 super(identifier, dependencyResolver);
40 * @param identifier module identifier
41 * @param dependencyResolver dependency resolver
42 * @param oldModule old module
43 * @param oldInstance old instance
45 public ConfigurableOpenFlowProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
46 ConfigurableOpenFlowProviderModule oldModule, java.lang.AutoCloseable oldInstance) {
48 super(identifier, dependencyResolver, oldModule, oldInstance);
52 protected void customValidation() {
53 // Add custom validation for module attributes here.
57 public java.lang.AutoCloseable createInstance() {
58 pluginProvider = new OpenflowPluginProvider();
59 pluginProvider.setDataBroker(getDataBrokerDependency());
60 pluginProvider.setNotificationService(getNotificationServiceDependency());
61 pluginProvider.setRpcRegistry(getRpcRegistryDependency());
62 pluginProvider.setSwitchConnectionProviders(getOpenflowSwitchConnectionProviderDependency());
63 pluginProvider.setEntityOwnershipService(getOwnershipServiceDependency());
64 pluginProvider.setRole(getRole());
65 pluginProvider.setOpenflowPluginConfig(readConfig());
66 pluginProvider.initialization();
67 return pluginProvider;
71 public boolean canReuseInstance(
72 AbstractConfigurableOpenFlowProviderModule oldModule) {
73 // we can reuse if only the role field changed
74 boolean noChangeExceptRole = true;
75 noChangeExceptRole &= dependencyResolver.canReuseDependency(
76 getDataBroker(), dataBrokerJmxAttribute);
77 noChangeExceptRole &= dependencyResolver.canReuseDependency(
78 getNotificationService(), notificationServiceJmxAttribute);
79 noChangeExceptRole &= dependencyResolver.canReuseDependency(
80 getRpcRegistry(), rpcRegistryJmxAttribute);
82 for (ObjectName ofSwitchProvider : getOpenflowSwitchConnectionProvider()) {
83 noChangeExceptRole &= dependencyResolver.canReuseDependency(
84 ofSwitchProvider, openflowSwitchConnectionProviderJmxAttribute);
86 return noChangeExceptRole;
90 public AutoCloseable reuseInstance(AutoCloseable oldInstance) {
91 OpenflowPluginProvider recycled = (OpenflowPluginProvider) super.reuseInstance(oldInstance);
92 // change role if different
93 recycled.fireRoleChange(MoreObjects.firstNonNull(getRole(), getRole()));
98 private OpenflowPluginConfig readConfig(){
100 final OpenflowPluginConfig.OpenflowPluginConfigBuilder openflowCfgBuilder = OpenflowPluginConfig.builder();
102 if(getSkipTableFeatures()!=null){
103 openflowCfgBuilder.setSkipTableFeatures(getSkipTableFeatures().booleanValue());
105 LOG.warn("Could not load XML configuration file via ConfigSubsystem! Fallback to default config value(s)");
106 openflowCfgBuilder.setSkipTableFeatures(SKIP_TABLE_FEATURES);
109 return openflowCfgBuilder.build();