From ff657f928b9b25b2f014904c13e455d862b2794d Mon Sep 17 00:00:00 2001
From: Vishnu Emmadi <vishnu.emmadi@bigswitch.com>
Date: Fri, 21 Jun 2013 11:53:39 -0700
Subject: [PATCH] topology events update

o show openflow cluster count with/without tunnels
o show external port count for each external cluster
---
 .../topology/TopologyManager.java             | 48 +++++++++++++------
 1 file changed, 34 insertions(+), 14 deletions(-)

diff --git a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
index 961d6259c..25b91464a 100644
--- a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
+++ b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
@@ -186,28 +186,46 @@ public class TopologyManager implements
      * the BigTopologyEvent class
      */
     protected class TopologyEventInfo {
-        private final int numOpenflowClusters;
-        private final int numExternalClusters;
-        private final int numExternalPorts;
+        private final int numOpenflowClustersWithTunnels;
+        private final int numOpenflowClustersWithoutTunnels;
+        private final Map<Long, List<NodePortTuple>> externalPortsMap;
         private final int numTunnelPorts;
-        public TopologyEventInfo(int numOpenflowClusters,
-                int numExternalClusters, int numExternalPorts,
-                int numTunnelPorts) {
+        public TopologyEventInfo(int numOpenflowClustersWithTunnels,
+                                 int numOpenflowClustersWithoutTunnels,
+                                 Map<Long, List<NodePortTuple>> externalPortsMap,
+                                 int numTunnelPorts) {
             super();
-            this.numOpenflowClusters = numOpenflowClusters;
-            this.numExternalClusters = numExternalClusters;
-            this.numExternalPorts = numExternalPorts;
+            this.numOpenflowClustersWithTunnels = numOpenflowClustersWithTunnels;
+            this.numOpenflowClustersWithoutTunnels = numOpenflowClustersWithoutTunnels;
+            this.externalPortsMap = externalPortsMap;
             this.numTunnelPorts = numTunnelPorts;
         }
         @Override
         public String toString() {
             StringBuilder builder = new StringBuilder();
-            builder.append("# Openflow Clusters: ");
-            builder.append(numOpenflowClusters);
+            builder.append("# Openflow Clusters:");
+            builder.append(" { With Tunnels: ");
+            builder.append(numOpenflowClustersWithTunnels);
+            builder.append(" Without Tunnels: ");
+            builder.append(numOpenflowClustersWithoutTunnels);
+            builder.append(" }");
             builder.append(", # External Clusters: ");
+            int numExternalClusters = externalPortsMap.size();
             builder.append(numExternalClusters);
-            builder.append(", # External Ports: ");
-            builder.append(numExternalPorts);
+            if (numExternalClusters > 0) {
+                builder.append(" { ");
+                int count = 0;
+                for (Long extCluster : externalPortsMap.keySet()) {
+                    builder.append("#" + extCluster + ":Ext Ports: ");
+                    builder.append(externalPortsMap.get(extCluster).size());
+                    if (++count < numExternalClusters) {
+                        builder.append(", ");
+                    } else {
+                        builder.append(" ");
+                    }
+                }
+                builder.append("}");
+            }
             builder.append(", # Tunnel Ports: ");
             builder.append(numTunnelPorts);
             return builder.toString();
@@ -1229,7 +1247,9 @@ public class TopologyManager implements
         currentInstanceWithoutTunnels = nt;
 
         TopologyEventInfo topologyInfo =
-                new TopologyEventInfo(nt.getClusters().size(), 0, 0, 0);
+                new TopologyEventInfo(0, nt.getClusters().size(),
+                                      new HashMap<Long, List<NodePortTuple>>(),
+                                      0);
         evTopology.updateEventWithFlush(new TopologyEvent(reason,
                                                           topologyInfo));
         return true;
-- 
GitLab