Merge "Bug 6110: Fixed bugs in statistics manager due to race condition." into stable...
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / OpenFlowPluginProviderFactoryImpl.java
index 202b177ed1c4a78e32cb0bf53dd07c0eb1bd6621..74944b00e6bc054264dc8a75ea136bd7561e4d4d 100644 (file)
@@ -13,10 +13,10 @@ import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService
 import org.opendaylight.controller.md.sal.binding.api.NotificationService;
 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
 import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
 import org.opendaylight.openflowplugin.api.openflow.OpenFlowPluginProvider;
 import org.opendaylight.openflowplugin.api.openflow.OpenFlowPluginProviderFactory;
-import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.provider.config.rev160510.OpenflowProviderConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -30,37 +30,70 @@ public class OpenFlowPluginProviderFactoryImpl implements OpenFlowPluginProvider
     private static final Logger LOG = LoggerFactory.getLogger(OpenFlowPluginProviderFactoryImpl.class);
 
     @Override
-    public OpenFlowPluginProvider newInstance(OpenflowProviderConfig providerConfig, DataBroker dataBroker,
-            RpcProviderRegistry rpcRegistry, NotificationService notificationService,
-            NotificationPublishService notificationPublishService,
-            EntityOwnershipService entityOwnershipService,
-            List<SwitchConnectionProvider> switchConnectionProviders) {
+    public OpenFlowPluginProvider newInstance(OpenflowProviderConfig providerConfig,
+                                              DataBroker dataBroker,
+                                              RpcProviderRegistry rpcRegistry,
+                                              NotificationService notificationService,
+                                              NotificationPublishService notificationPublishService,
+                                              EntityOwnershipService entityOwnershipService,
+                                              List<SwitchConnectionProvider> switchConnectionProviders,
+                                              ClusterSingletonServiceProvider singletonServiceProvider) {
 
         LOG.info("Initializing new OFP southbound.");
 
-        OpenflowPortsUtil.init();
-        OpenFlowPluginProvider openflowPluginProvider = new OpenFlowPluginProviderImpl(providerConfig.getRpcRequestsQuota(),
-                providerConfig.getGlobalNotificationQuota());
+        OpenFlowPluginProvider openflowPluginProvider = new OpenFlowPluginProviderImpl(
+                providerConfig.getRpcRequestsQuota(),
+                providerConfig.getGlobalNotificationQuota(),
+                providerConfig.getThreadPoolMinThreads(),
+                providerConfig.getThreadPoolMaxThreads().getValue(),
+                providerConfig.getThreadPoolTimeout());
 
+        //Set services
         openflowPluginProvider.setSwitchConnectionProviders(switchConnectionProviders);
         openflowPluginProvider.setDataBroker(dataBroker);
         openflowPluginProvider.setRpcProviderRegistry(rpcRegistry);
         openflowPluginProvider.setNotificationProviderService(notificationService);
         openflowPluginProvider.setNotificationPublishService(notificationPublishService);
-        openflowPluginProvider.setEntityOwnershipService(entityOwnershipService);
+        openflowPluginProvider.setEntityOwnershipServiceProvider(entityOwnershipService);
+        openflowPluginProvider.setClusteringSingletonServicesProvider(singletonServiceProvider);
+
+        //Set config parameters
         openflowPluginProvider.setSwitchFeaturesMandatory(providerConfig.isSwitchFeaturesMandatory());
-        openflowPluginProvider.setIsStatisticsPollingOff(providerConfig.isIsStatisticsPollingOff());
+        openflowPluginProvider.setFlowRemovedNotification(providerConfig.isEnableFlowRemovedNotification());
         openflowPluginProvider.setIsStatisticsRpcEnabled(providerConfig.isIsStatisticsRpcEnabled());
         openflowPluginProvider.setBarrierCountLimit(providerConfig.getBarrierCountLimit().getValue());
         openflowPluginProvider.setBarrierInterval(providerConfig.getBarrierIntervalTimeoutLimit().getValue());
         openflowPluginProvider.setEchoReplyTimeout(providerConfig.getEchoReplyTimeout().getValue());
+        openflowPluginProvider.setStatisticsPollingOn(providerConfig.isIsStatisticsPollingOn());
+        openflowPluginProvider.setSkipTableFeatures(providerConfig.isSkipTableFeatures());
+        openflowPluginProvider.setBasicTimerDelay(providerConfig.getBasicTimerDelay().getValue());
+        openflowPluginProvider.setMaximumTimerDelay(providerConfig.getMaximumTimerDelay().getValue());
 
         openflowPluginProvider.initialize();
 
-        LOG.info("Configured values, StatisticsPollingOff:{}, SwitchFeaturesMandatory:{}, BarrierCountLimit:{}, BarrierTimeoutLimit:{}, EchoReplyTimeout:{}",
-                providerConfig.isIsStatisticsPollingOff(), providerConfig.isSwitchFeaturesMandatory(),
+        LOG.info("Configured values, " +
+                "StatisticsPollingOn:{}, " +
+                "SwitchFeaturesMandatory:{}, " +
+                "BarrierCountLimit:{}, " +
+                "BarrierTimeoutLimit:{}, " +
+                "EchoReplyTimeout:{}, " +
+                "ThreadPoolMinThreads:{}, " +
+                "ThreadPoolMaxThreads:{}, " +
+                "ThreadPoolTimeout:{}, " +
+                "NotificationFlowRemovedOff:{}, " +
+                "BasicTimerDelay:{}, "+
+                "MaximumTimerDelay:{} ",
+                providerConfig.isIsStatisticsPollingOn(),
+                providerConfig.isSwitchFeaturesMandatory(),
                 providerConfig.getBarrierCountLimit().getValue(),
-                providerConfig.getBarrierIntervalTimeoutLimit().getValue(), providerConfig.getEchoReplyTimeout().getValue());
+                providerConfig.getBarrierIntervalTimeoutLimit().getValue(),
+                providerConfig.getEchoReplyTimeout().getValue(),
+                providerConfig.getThreadPoolMinThreads(),
+                providerConfig.getThreadPoolMaxThreads().getValue(),
+                providerConfig.getThreadPoolTimeout(),
+                providerConfig.isEnableFlowRemovedNotification(),
+                providerConfig.getBasicTimerDelay().getValue(),
+                providerConfig.getMaximumTimerDelay().getValue());
 
         return openflowPluginProvider;
     }