unifying statistics manager api packages
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / sal / OpenflowPluginProvider.java
index bddc84feac34a39c4a566d40cb336861e4d5d9cd..08d0cb7f4055bdafc48023ae1976e4b1c5c8f8a8 100644 (file)
@@ -8,9 +8,7 @@
 package org.opendaylight.openflowplugin.openflow.md.core.sal;
 
 import java.util.Collection;
-import java.util.Collections;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
 import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
@@ -18,11 +16,13 @@ import org.opendaylight.openflowplugin.extension.api.ExtensionConverterRegistrat
 import org.opendaylight.openflowplugin.openflow.md.core.MDController;
 import org.opendaylight.openflowplugin.openflow.md.core.extension.ExtensionConverterManager;
 import org.opendaylight.openflowplugin.openflow.md.core.extension.ExtensionConverterManagerImpl;
-import org.opendaylight.openflowplugin.api.statistics.MessageCountDumper;
-import org.opendaylight.openflowplugin.api.statistics.MessageObservatory;
+import org.opendaylight.openflowplugin.openflow.md.core.session.OFRoleManager;
+import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil;
+import org.opendaylight.openflowplugin.api.openflow.statistics.MessageCountDumper;
+import org.opendaylight.openflowplugin.api.openflow.statistics.MessageObservatory;
 import org.opendaylight.openflowplugin.statistics.MessageSpyCounterImpl;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.common.config.impl.rev140326.OfpRole;
 import org.opendaylight.yangtools.yang.binding.DataContainer;
-import org.opendaylight.yangtools.yang.binding.RpcService;
 import org.osgi.framework.BundleContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -32,7 +32,7 @@ import org.slf4j.LoggerFactory;
  */
 public class OpenflowPluginProvider implements BindingAwareProvider, AutoCloseable {
 
-    private static Logger LOG = LoggerFactory.getLogger(OpenflowPluginProvider.class);
+    private static final Logger LOG = LoggerFactory.getLogger(OpenflowPluginProvider.class);
 
     private BindingAwareBroker broker;
 
@@ -48,12 +48,17 @@ public class OpenflowPluginProvider implements BindingAwareProvider, AutoCloseab
 
     private ExtensionConverterManager extensionConverterManager;
 
+    private OfpRole role;
+
+    private OFRoleManager roleManager;
+
     /**
      * Initialization of services and msgSpy counter
      */
     public void initialization() {
         messageCountProvider = new MessageSpyCounterImpl();
         extensionConverterManager = new ExtensionConverterManagerImpl();
+        roleManager = new OFRoleManager(OFSessionUtil.getSessionManager());
         this.registerProvider();
     }
 
@@ -93,21 +98,6 @@ public class OpenflowPluginProvider implements BindingAwareProvider, AutoCloseab
         registrationManager = null;
     }
 
-    @Override
-    public void onSessionInitialized(ConsumerContext session) {
-        // NOOP
-    }
-
-    @Override
-    public Collection<? extends ProviderFunctionality> getFunctionality() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public java.util.Collection<? extends RpcService> getImplementations() {
-        return Collections.emptySet();
-    }
-
     /**
      * @return BA default broker
      */
@@ -159,4 +149,38 @@ public class OpenflowPluginProvider implements BindingAwareProvider, AutoCloseab
     public ExtensionConverterRegistrator getExtensionConverterRegistrator() {
         return extensionConverterManager;
     }
+
+    /**
+     * @param role of instance
+     */
+    public void setRole(OfpRole role) {
+        this.role = role;
+    }
+
+    /**
+     * @param newRole
+     */
+    public void fireRoleChange(OfpRole newRole) {
+        if (!role.equals(newRole)) {
+            LOG.debug("my role was chaged from {} to {}", role, newRole);
+            role = newRole;
+            switch (role) {
+            case BECOMEMASTER:
+                //TODO: implement appropriate action
+                roleManager.manageRoleChange(role);
+                break;
+            case BECOMESLAVE:
+                //TODO: implement appropriate action
+                roleManager.manageRoleChange(role);
+                break;
+            case NOCHANGE:
+                //TODO: implement appropriate action
+                roleManager.manageRoleChange(role);
+                break;
+            default:
+                LOG.warn("role not supported: {}", role);
+                break;
+            }
+        }
+    }
 }