Run time check and update of OFP service status 94/65994/6
authorgobinath <gobinath@ericsson.com>
Tue, 28 Nov 2017 08:27:05 +0000 (13:57 +0530)
committerGobinath Suganthan <gobinath@ericsson.com>
Fri, 8 Dec 2017 09:27:05 +0000 (09:27 +0000)
Change-Id: I8b41cd32990e7c4ea14cabbf862008fe77c7cc91
Signed-off-by: gobinath <gobinath@ericsson.com>
(cherry picked from commit 042a4f1a62e14cd78fab243b450f77bc6e0bc86e)
Signed-off-by: gobinath <gobinath@ericsson.com>
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/diagstatus/OpenflowPluginDiagStatusProvider.java

index f4d2ff82437b9a4f36fe9e2534e5b98fcb9b236e..af37224ff4d29d7222ad7ce2853d7d068543a147 100644 (file)
@@ -7,11 +7,12 @@
  */
 package org.opendaylight.openflowplugin.api.diagstatus;
 
+import java.io.IOException;
+import java.net.Socket;
 import org.opendaylight.infrautils.diagstatus.DiagStatusService;
 import org.opendaylight.infrautils.diagstatus.ServiceDescriptor;
 import org.opendaylight.infrautils.diagstatus.ServiceState;
 import org.opendaylight.infrautils.diagstatus.ServiceStatusProvider;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -19,6 +20,8 @@ public class OpenflowPluginDiagStatusProvider implements ServiceStatusProvider {
 
     private static final Logger LOG = LoggerFactory.getLogger(OpenflowPluginDiagStatusProvider.class);
     private static final String OPENFLOW_SERVICE_NAME = "OPENFLOW";
+    private static final int OF_PORT_11 = 6633;
+    private static final int OF_PORT_13 = 6653;
 
     private final DiagStatusService diagStatusService;
     private volatile ServiceDescriptor serviceDescriptor;
@@ -36,7 +39,35 @@ public class OpenflowPluginDiagStatusProvider implements ServiceStatusProvider {
 
     @Override
     public ServiceDescriptor getServiceDescriptor() {
-        // TODO Check 6653/6633 port status to report dynamic status
+
+        if (serviceDescriptor.getServiceState().equals(ServiceState.OPERATIONAL)) {
+            if (getApplicationNetworkState(OF_PORT_13) && getApplicationNetworkState(OF_PORT_11)) {
+                return serviceDescriptor;
+            } else {
+                serviceDescriptor = new ServiceDescriptor(OPENFLOW_SERVICE_NAME, ServiceState.ERROR,
+                        "OF::PORTS:: 6653 and 6633 are not up yet");
+                return serviceDescriptor;
+            }
+        }
         return serviceDescriptor;
     }
+
+    private boolean getApplicationNetworkState(int port) {
+        Socket socket = null;
+        try {
+            socket = new Socket("localhost", port);
+            LOG.debug("Socket connection established");
+            return true;
+        } catch (IOException e) {
+            return false;
+        } finally {
+            try {
+                if (socket != null) {
+                    socket.close();
+                }
+            } catch (IOException ex) {
+                LOG.error("Failed to close socket : {}", socket, ex);
+            }
+        }
+    }
 }
\ No newline at end of file