Bug 3407 - Don't reconnect Node without a full clean of OPERATIONAL DataStore.
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / OpenFlowPluginProviderImpl.java
index 1112009e9a524df998a87515d84683419702a388..469fff3197112d3b39742e922c92437c5c7b2459 100644 (file)
@@ -56,7 +56,9 @@ import org.slf4j.LoggerFactory;
 public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenFlowPluginExtensionRegistratorProvider {
 
     private static final Logger LOG = LoggerFactory.getLogger(OpenFlowPluginProviderImpl.class);
+    private static final MessageIntelligenceAgency messageIntelligenceAgency = new MessageIntelligenceAgencyImpl();
 
+    private final int rpcRequestsQuota;
     private DeviceManager deviceManager;
     private RpcManager rpcManager;
     private RpcProviderRegistry rpcProviderRegistry;
@@ -70,10 +72,10 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF
     private DataBroker dataBroker;
     private OfpRole role;
     private Collection<SwitchConnectionProvider> switchConnectionProviders;
-    private Long rpcRequestsQuota;
 
-    public OpenFlowPluginProviderImpl(final Long rpcRequestsQuota) {
-        this.rpcRequestsQuota = rpcRequestsQuota;
+    public OpenFlowPluginProviderImpl(final long rpcRequestsQuota) {
+        Preconditions.checkArgument(rpcRequestsQuota > 0 && rpcRequestsQuota <= Integer.MAX_VALUE, "rpcRequestQuota has to be in range <1,%s>", Integer.MAX_VALUE);
+        this.rpcRequestsQuota = (int) rpcRequestsQuota;
     }
 
 
@@ -100,6 +102,10 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF
         });
     }
 
+    public static MessageIntelligenceAgency getMessageIntelligenceAgency() {
+        return OpenFlowPluginProviderImpl.messageIntelligenceAgency;
+    }
+
     @Override
     public void setSwitchConnectionProviders(final Collection<SwitchConnectionProvider> switchConnectionProviders) {
         this.switchConnectionProviders = switchConnectionProviders;
@@ -134,7 +140,6 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF
         OFSessionUtil.getSessionManager().setExtensionConverterProvider(extensionConverterManager);
 
         connectionManager = new ConnectionManagerImpl();
-        MessageIntelligenceAgency messageIntelligenceAgency = new MessageIntelligenceAgencyImpl();
 
         registerMXBean(messageIntelligenceAgency);
 
@@ -150,10 +155,12 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF
         rpcManager.setDeviceInitializationPhaseHandler(deviceManager);
 
         TranslatorLibraryUtil.setBasicTranslatorLibrary(deviceManager);
+        deviceManager.initialize();
+
         startSwitchConnections();
     }
 
-    private void registerMXBean(final MessageIntelligenceAgency messageIntelligenceAgency) {
+    private static void registerMXBean(final MessageIntelligenceAgency messageIntelligenceAgency) {
         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
         try {
             String pathToMxBean = String.format("%s:type=%s",