BUG-5636: making table features configurable for the He plugin.
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / yang / gen / v1 / urn / opendaylight / params / xml / ns / yang / openflow / common / config / impl / rev140326 / ConfigurableOpenFlowProviderModule.java
1 /**
2 * Generated file
3
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
7 *
8 * Do not modify this file unless it is present under src/main directory
9 */
10 package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.common.config.impl.rev140326;
11
12 import com.google.common.base.MoreObjects;
13 import javax.management.ObjectName;
14
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;
19
20 /**
21 *
22 */
23 public final class ConfigurableOpenFlowProviderModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.common.config.impl.rev140326.AbstractConfigurableOpenFlowProviderModule {
24
25     private static final Logger LOG = LoggerFactory.getLogger(ConfigurableOpenFlowProviderModule.class);
26
27     private OpenflowPluginProvider pluginProvider;
28
29     private static final boolean SKIP_TABLE_FEATURES = false;
30
31     /**
32      * @param identifier module identifier
33      * @param dependencyResolver dependency resolver
34      */
35     public ConfigurableOpenFlowProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
36         super(identifier, dependencyResolver);
37     }
38
39     /**
40      * @param identifier module identifier
41      * @param dependencyResolver dependency resolver
42      * @param oldModule old module
43      * @param oldInstance old instance
44      */
45     public ConfigurableOpenFlowProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
46             ConfigurableOpenFlowProviderModule oldModule, java.lang.AutoCloseable oldInstance) {
47
48         super(identifier, dependencyResolver, oldModule, oldInstance);
49     }
50
51     @Override
52     protected void customValidation() {
53         // Add custom validation for module attributes here.
54     }
55
56     @Override
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;
68     }
69
70     @Override
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);
81
82         for (ObjectName ofSwitchProvider : getOpenflowSwitchConnectionProvider()) {
83             noChangeExceptRole &= dependencyResolver.canReuseDependency(
84                     ofSwitchProvider, openflowSwitchConnectionProviderJmxAttribute);
85         }
86         return noChangeExceptRole;
87     }
88
89     @Override
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()));
94
95         return recycled;
96     }
97
98     private OpenflowPluginConfig readConfig(){
99
100         final OpenflowPluginConfig.OpenflowPluginConfigBuilder openflowCfgBuilder = OpenflowPluginConfig.builder();
101
102         if(getSkipTableFeatures()!=null){
103             openflowCfgBuilder.setSkipTableFeatures(getSkipTableFeatures().booleanValue());
104         } else{
105             LOG.warn("Could not load XML configuration file via ConfigSubsystem! Fallback to default config value(s)");
106             openflowCfgBuilder.setSkipTableFeatures(SKIP_TABLE_FEATURES);
107         }
108
109         return openflowCfgBuilder.build();
110     }
111 }