X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fimpl%2FOpenFlowPluginProviderImpl.java;h=5eea2de76ba8760d225da36c3aa5051fa9209c6f;hb=777c94332871b8c34f56f7f2010de1536cb759ba;hp=f1970937805f11559105c445e533e90177cb0a8b;hpb=ed0ab1365d652c0db6dad1ca92ce9119b2519c2a;p=openflowplugin.git diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java index f197093780..5eea2de76b 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java @@ -11,7 +11,6 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; import io.netty.util.HashedWheelTimer; @@ -19,6 +18,7 @@ import io.netty.util.Timer; import java.lang.management.ManagementFactory; import java.util.Collection; import java.util.List; +import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; @@ -37,8 +37,6 @@ import javax.management.MBeanServer; import javax.management.MalformedObjectNameException; import javax.management.NotCompliantMBeanException; import javax.management.ObjectName; -import org.apache.aries.blueprint.annotation.service.Reference; -import org.apache.aries.blueprint.annotation.service.Service; import org.opendaylight.infrautils.diagstatus.ServiceState; import org.opendaylight.infrautils.ready.SystemReadyListener; import org.opendaylight.infrautils.ready.SystemReadyMonitor; @@ -50,7 +48,8 @@ import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvid import org.opendaylight.openflowjava.protocol.api.connection.OpenflowDiagStatusProvider; import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider; import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProviderList; -import org.opendaylight.openflowplugin.api.openflow.FlowGroupCacheManager; +import org.opendaylight.openflowplugin.api.openflow.FlowGroupInfoHistories; +import org.opendaylight.openflowplugin.api.openflow.FlowGroupInfoHistory; import org.opendaylight.openflowplugin.api.openflow.OpenFlowPluginProvider; import org.opendaylight.openflowplugin.api.openflow.configuration.ConfigurationService; import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionManager; @@ -83,15 +82,16 @@ import org.opendaylight.openflowplugin.openflow.md.core.extension.ExtensionConve import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; 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; @Singleton -@Service(classes = { OpenFlowPluginProvider.class, OpenFlowPluginExtensionRegistratorProvider.class }) public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenFlowPluginExtensionRegistratorProvider, + FlowGroupInfoHistories, SystemReadyListener { private static final Logger LOG = LoggerFactory.getLogger(OpenFlowPluginProviderImpl.class); @@ -124,11 +124,10 @@ public class OpenFlowPluginProviderImpl implements private StatisticsManager statisticsManager; private RoleManager roleManager; private ConnectionManager connectionManager; - private ListeningExecutorService executorService; + private ExecutorService executorService; private ContextChainHolderImpl contextChainHolder; private final OpenflowDiagStatusProvider openflowDiagStatusProvider; private final SystemReadyMonitor systemReadyMonitor; - private final FlowGroupCacheManager flowGroupCacheManager; private final SettableFuture fullyStarted = SettableFuture.create(); private static final String OPENFLOW_SERVICE_NAME = "OPENFLOW"; @@ -140,14 +139,13 @@ public class OpenFlowPluginProviderImpl implements public OpenFlowPluginProviderImpl(final ConfigurationService configurationService, final SwitchConnectionProviderList switchConnectionProviders, final PingPongDataBroker pingPongDataBroker, - final @Reference RpcProviderService rpcProviderRegistry, - final @Reference NotificationPublishService notificationPublishService, - final @Reference ClusterSingletonServiceProvider singletonServiceProvider, - final @Reference EntityOwnershipService entityOwnershipService, + final RpcProviderService rpcProviderRegistry, + final NotificationPublishService notificationPublishService, + final ClusterSingletonServiceProvider singletonServiceProvider, + final EntityOwnershipService entityOwnershipService, final MastershipChangeServiceManager mastershipChangeServiceManager, - final @Reference OpenflowDiagStatusProvider openflowDiagStatusProvider, - final @Reference SystemReadyMonitor systemReadyMonitor, - final FlowGroupCacheManager flowGroupCacheManager) { + final OpenflowDiagStatusProvider openflowDiagStatusProvider, + final SystemReadyMonitor systemReadyMonitor) { this.switchConnectionProviders = switchConnectionProviders; this.dataBroker = pingPongDataBroker; this.rpcProviderRegistry = rpcProviderRegistry; @@ -161,7 +159,6 @@ public class OpenFlowPluginProviderImpl implements this.mastershipChangeServiceManager = mastershipChangeServiceManager; this.openflowDiagStatusProvider = openflowDiagStatusProvider; this.systemReadyMonitor = systemReadyMonitor; - this.flowGroupCacheManager = flowGroupCacheManager; } @Override @@ -169,7 +166,7 @@ public class OpenFlowPluginProviderImpl implements LOG.info("onSystemBootReady() received, starting the switch connections"); Futures.addCallback(Futures.allAsList(switchConnectionProviders.stream().map(switchConnectionProvider -> { // Inject OpenFlowPlugin custom serializers and deserializers into OpenFlowJava - if (config.isUseSingleLayerSerialization()) { + if (config.getUseSingleLayerSerialization()) { SerializerInjector.injectSerializers(switchConnectionProvider, switchConnectionProvider.getConfiguration().isGroupAddModEnabled()); DeserializerInjector.injectDeserializers(switchConnectionProvider); @@ -206,7 +203,7 @@ public class OpenFlowPluginProviderImpl implements final ListenableFuture> listListenableFuture = Futures.allAsList(switchConnectionProviders.stream().map(switchConnectionProvider -> { // Revert deserializers to their original state - if (config.isUseSingleLayerSerialization()) { + if (config.getUseSingleLayerSerialization()) { DeserializerInjector.revertDeserializers(switchConnectionProvider); } @@ -241,11 +238,11 @@ public class OpenFlowPluginProviderImpl implements // Creates a thread pool that creates new threads as needed, but will reuse previously // constructed threads when they are available. // Threads that have not been used for x seconds are terminated and removed from the cache. - executorService = MoreExecutors.listeningDecorator(new ThreadPoolLoggingExecutor( + executorService = new ThreadPoolLoggingExecutor( config.getThreadPoolMinThreads().toJava(), config.getThreadPoolMaxThreads().getValue().toJava(), config.getThreadPoolTimeout().toJava(), - TimeUnit.SECONDS, new SynchronousQueue<>(), POOL_NAME)); + TimeUnit.SECONDS, new SynchronousQueue<>(), POOL_NAME); deviceManager = new DeviceManagerImpl( config, @@ -265,8 +262,7 @@ public class OpenFlowPluginProviderImpl implements rpcProviderRegistry, extensionConverterManager, convertorManager, - notificationPublishService, - flowGroupCacheManager); + notificationPublishService); statisticsManager = new StatisticsManagerImpl( config, @@ -303,6 +299,16 @@ public class OpenFlowPluginProviderImpl implements return extensionConverterManager; } + @Override + public Map getAllFlowGroupHistories() { + return deviceManager.getAllFlowGroupHistories(); + } + + @Override + public FlowGroupInfoHistory getFlowGroupHistory(final NodeId nodeId) { + return deviceManager.getFlowGroupHistory(nodeId); + } + @Override @PreDestroy @SuppressWarnings("checkstyle:IllegalCatch")