Merge branch 'master' of github.com:OPENNETWORKINGLAB/ONOS
diff --git a/build.xml b/build.xml
index 65bf9c8..c7b6449 100644
--- a/build.xml
+++ b/build.xml
@@ -66,10 +66,13 @@
<include name="concurrentlinkedhashmap-lru-1.3.jar"/>
<include name="jython-2.5.2.jar"/>
<include name="libthrift-0.7.0.jar"/>
- <include name="curator-client-1.3.4-SNAPSHOT.jar"/>
- <include name="curator-framework-1.3.4-SNAPSHOT.jar"/>
- <include name="curator-recipes-1.3.4-SNAPSHOT.jar"/>
+ <include name="curator-client-1.3.5-SNAPSHOT.jar"/>
+ <include name="curator-framework-1.3.5-SNAPSHOT.jar"/>
+ <include name="curator-recipes-1.3.5-SNAPSHOT.jar"/>
+ <include name="curator-x-discovery-1.3.5-SNAPSHOT.jar"/>
<include name="zookeeper-3.4.5.jar"/>
+ <include name="ezmorph-1.0.6.jar"/>
+ <include name="json-lib-2.4-jdk15.jar"/>
</patternset>
<patternset id="titanlib">
diff --git a/mastership-test.sh b/mastership-test.sh
deleted file mode 100755
index 209ffb7..0000000
--- a/mastership-test.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#java -Dlogback.configurationFile=logback.xml -cp target/floodlight-only.jar:lib/*:lib/titan/* net.onrc.onos.registry.controller.RegistryRunner $1
-java -Dlogback.configurationFile=logback.xml -cp target/floodlight-only.jar:lib/*:lib/titan/* net.floodlightcontroller.core.Main -cf onos.properties
diff --git a/onos.sh b/onos.sh
deleted file mode 100755
index 5667114..0000000
--- a/onos.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-
-# Set paths
-FL_HOME=`dirname $0`
-FL_JAR="${FL_HOME}/target/floodlight.jar"
-FL_LOGBACK="${FL_HOME}/logback.xml"
-
-# Set JVM options
-JVM_OPTS=""
-#JVM_OPTS="$JVM_OPTS -server -d64"
-#JVM_OPTS="$JVM_OPTS -Xmx2g -Xms2g -Xmn800m"
-#JVM_OPTS="$JVM_OPTS -XX:+UseParallelGC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods"
-#JVM_OPTS="$JVM_OPTS -XX:MaxInlineSize=8192 -XX:FreqInlineSize=8192"
-#JVM_OPTS="$JVM_OPTS -XX:CompileThreshold=1500 -XX:PreBlockSpin=8"
-#JVM_OPTS="$JVM_OPTS -Dpython.security.respectJavaAccessibility=false"
-
-# Set classpath to include titan libs
-CLASSPATH=`echo ${FL_HOME}/lib/*.jar ${FL_HOME}/lib/titan/*.jar | sed 's/ /:/g'`
-
-
-# Create a logback file if required
-cat <<EOF_LOGBACK >${FL_LOGBACK}
-<configuration scan="true" debug="true">
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <pattern>%level [%logger:%thread] %msg%n</pattern>
- </encoder>
- </appender>
-
- <appender name="FILE" class="ch.qos.logback.core.FileAppender">
- <file>onos.log</file>
- <encoder>
- <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
- </encoder>
- </appender>
-
- <logger name="org" level="WARN"/>
- <logger name="LogService" level="WARN"/> <!-- Restlet access logging -->
- <logger name="net.floodlightcontroller.logging" level="WARN"/>
-
- <root level="DEBUG">
- <appender-ref ref="STDOUT" />
- <appender-ref ref="FILE" />
- </root>
-</configuration>
-EOF_LOGBACK
-
-# Delete and recreate /tmp/netmap
-#rm -rf /tmp/cassandra.titan
-#mkdir /tmp/cassandra.titan
-
-# Clear logs
-rm onos.log
-
-# Run floodlight
-echo "Starting ONOS controller ..."
-echo
-#java ${JVM_OPTS} -Dlogback.configurationFile=${FL_LOGBACK} -Xbootclasspath/a:$CLASSPATH -jar ${FL_JAR} -cf ./onos.properties
-java ${JVM_OPTS} -Dlogback.configurationFile=${FL_LOGBACK} -jar ${FL_JAR} -cf ./onos.properties
diff --git a/scripts/run-onos-simple.sh b/scripts/run-onos-simple.sh
new file mode 100755
index 0000000..41b2cc6
--- /dev/null
+++ b/scripts/run-onos-simple.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+basedir=`dirname $0`
+onosdir="${basedir}/.."
+
+logfile="${onosdir}/logback.xml"
+jarfile="${onosdir}/target/floodlight-only.jar"
+classpath="${jarfile}:${onosdir}/lib/*:${onosdir}/lib/titan/*"
+mainclass="net.floodlightcontroller.core.Main"
+propfile="${onosdir}/onos.properties"
+
+#java -Dlogback.configurationFile=logback.xml -cp target/floodlight-only.jar:lib/*:lib/titan/* net.floodlightcontroller.core.Main -cf onos.properties
+java -Dlogback.configurationFile=${logfile} -cp ${classpath} ${mainclass} -cf ${propfile}
diff --git a/src/main/java/net/floodlightcontroller/bgproute/BgpRoute.java b/src/main/java/net/floodlightcontroller/bgproute/BgpRoute.java
index 2819253..47f3d1a 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/BgpRoute.java
+++ b/src/main/java/net/floodlightcontroller/bgproute/BgpRoute.java
@@ -1,5 +1,13 @@
package net.floodlightcontroller.bgproute;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.Collection;
import java.util.Map;
import java.util.ArrayList;
@@ -18,6 +26,9 @@
import net.floodlightcontroller.restclient.RestClient;
import net.floodlightcontroller.linkdiscovery.ILinkDiscovery;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import net.sf.json.JSONSerializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -30,6 +41,10 @@
protected ITopologyService topology;
protected static Ptree ptree;
+ protected static String BGPdRestIp;
+ protected static String RouterId;
+
+
@Override
public Collection<Class<? extends IFloodlightService>> getModuleServices() {
@@ -41,7 +56,7 @@
@Override
public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls() {
Map<Class<? extends IFloodlightService>, IFloodlightService> m = new HashMap<Class<? extends IFloodlightService>, IFloodlightService>();
- m.put(IBgpRouteService.class, this);
+ m.put(IBgpRouteService.class, this);
return m;
}
@@ -69,11 +84,23 @@
// Test.
//test();
+
}
public Ptree getPtree() {
return ptree;
}
+ public void clearPtree() {
+ ptree = null;
+ ptree = new Ptree(32);
+
+ }
+ public String getBGPdRestIp() {
+ return BGPdRestIp;
+ }
+ public String getRouterId() {
+ return RouterId;
+ }
// Return nexthop address as byte array.
public Rib lookupRib(byte[] dest) {
@@ -154,8 +181,113 @@
@Override
public void startUp(FloodlightModuleContext context) {
- restApi.addRestletRoutable(new BgpRouteWebRoutable());
+ restApi.addRestletRoutable(new BgpRouteWebRoutable());
topology.addListener((ITopologyListener) this);
+
+ // get the BGPdRestIp and RouterId from transit-route-pusher.py
+ File file = new File("/home/ubuntu/sdn/transit-route-pusher.py");
+
+
+ try{
+ BufferedReader input = new BufferedReader (new FileReader(file));
+ String text;
+ int is_BGPdRestIp=0;
+ int is_RouterId=0;
+
+ while((text = input.readLine()) != null && (is_BGPdRestIp == 0) || (is_RouterId == 0) ){
+
+ if(is_BGPdRestIp == 1 && is_RouterId ==1)
+ {break;}
+
+ if(is_BGPdRestIp == 0 && text.contains("BGPdRestIp") ){
+ String[] temp = text.split("\"");
+ BGPdRestIp = temp[1];
+ is_BGPdRestIp = 1;
+
+
+ }else if (is_RouterId == 0 && text.contains("RouterId") ){
+
+ String[] temp = text.split("\"");
+ RouterId = temp[1];
+ is_RouterId = 1;
+
+
+ }
+
+ }
+
+
+ } catch(Exception e){
+ e.printStackTrace();
+ }
+
+
+ // automatically get the rib from bgpd at the ONOS initiation process.
+ String dest=RouterId;
+ String str="http://"+BGPdRestIp+"/wm/bgp/"+dest;
+
+
+ try {
+
+ URL url = new URL(str);
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("GET");
+ conn.setRequestProperty("Accept", "application/json");
+
+ if (conn.getResponseCode() != 200) {
+ throw new RuntimeException("Failed : HTTP error code : "
+ + conn.getResponseCode());
+ }
+
+ BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
+ StringBuffer res = new StringBuffer();
+ String line;
+ while ((line = br.readLine()) != null) {
+ res.append(line);
+ }
+
+ String res2=res.toString().replaceAll("\"", "'");
+ JSONObject jsonObj = (JSONObject) JSONSerializer.toJSON(res2);
+ JSONArray rib_json_array = jsonObj.getJSONArray("rib");
+ String router_id = jsonObj.getString("router-id");
+
+ int size = rib_json_array.size();
+ System.out.print("size:"+size+"\n");
+ for (int j = 0; j < size; j++) {
+ JSONObject second_json_object = rib_json_array.getJSONObject(j);
+ String prefix = second_json_object.getString("prefix");
+ String nexthop = second_json_object.getString("nexthop");
+
+ //insert each rib entry into the local rib;
+ String[] substring= prefix.split("/");
+ String prefix1=substring[0];
+ String mask1=substring[1];
+
+ Prefix p = new Prefix(prefix1, Integer.valueOf(mask1));
+ PtreeNode node = ptree.acquire(p.getAddress(), p.masklen);
+ Rib rib = new Rib(router_id, nexthop, p.masklen);
+
+ if (node.rib != null) {
+ node.rib = null;
+ ptree.delReference(node);
+ }
+ node.rib = rib;
+
+ }
+ br.close();
+ conn.disconnect();
+
+ } catch (MalformedURLException e) {
+
+ e.printStackTrace();
+
+ } catch (IOException e) {
+
+ e.printStackTrace();
+
+ }
+
+
}
@Override
diff --git a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResource.java b/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResource.java
index d5abb5a..28d9621 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResource.java
+++ b/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResource.java
@@ -7,6 +7,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.floodlightcontroller.restclient.RestClient;
+import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
public class BgpRouteResource extends ServerResource {
@@ -27,60 +29,85 @@
}
@SuppressWarnings("unused")
- @Get
- public String get(String fmJson) {
- String dest = (String) getRequestAttributes().get("dest");
- String output = "";
- IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
- get(IBgpRouteService.class.getCanonicalName());
-
- if (dest != null) {
- Prefix p = new Prefix(dest, 32);
- if (p == null) {
- return "[GET]: dest address format is wrong";
- }
- byte [] nexthop = bgpRoute.lookupRib(p.getAddress()).nextHop.getAddress();
- if (nexthop != null) {
- output += "{\"result\": \"" + addrToString(nexthop) + "\"}\n";
+ @Get
+ public String get(String fmJson) {
+ String linpp=fmJson;
+ String dest = (String) getRequestAttributes().get("dest");
+ String output = "";
+ IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
+ get(IBgpRouteService.class.getCanonicalName());
+
+ if (dest != null) {
+ Prefix p = new Prefix(dest, 32);
+ if (p == null) {
+ return "[GET]: dest address format is wrong";
+ }
+
+ // the dest here refers to router-id
+ //BGPdRestIp includes port number, such as 1.1.1.1:8080
+ String BGPdRestIp = bgpRoute.getBGPdRestIp();
+ String url="http://"+BGPdRestIp+"/wm/bgp/"+dest;
+
+
+
+ RestClient.get(url);
+ output="Get rib from bgpd finished!\n";
+ return output;
+
} else {
- output += "{\"result\": \"Nexthop does not exist\"}\n";
- }
- } else {
- Ptree ptree = bgpRoute.getPtree();
- output += "{\n \"rib\": [\n";
- boolean printed = false;
- for (PtreeNode node = ptree.begin(); node != null; node = ptree.next(node)) {
- if (node.rib == null) {
- continue;
+ Ptree ptree = bgpRoute.getPtree();
+ output += "{\n \"rib\": [\n";
+ boolean printed = false;
+ for (PtreeNode node = ptree.begin(); node != null; node = ptree.next(node)) {
+ if (node.rib == null) {
+ continue;
+ }
+ if (printed == true) {
+ output += ",\n";
+ }
+ output += " {\"prefix\": \"" + addrToString(node.key) + "/" + node.keyBits +"\", ";
+ output += "\"nexthop\": \"" + addrToString(node.rib.nextHop.getAddress()) +"\"}";
+ printed = true;
}
- if (printed == true) {
- output += ",\n";
- }
- output += " {\"prefix\": \"" + addrToString(node.key) + "/" + node.keyBits +"\", ";
- output += "\"nexthop\": \"" + addrToString(node.rib.nextHop.getAddress()) +"\"}";
- printed = true;
+ //output += "{\"router_id\": \"" + addrToString(node.rib.routerId.getAddress()) +"\"}\n";
+ output += "\n ]\n}\n";
+
}
- //output += "{\"router_id\": \"" + addrToString(node.rib.routerId.getAddress()) +"\"}\n";
- output += "\n ]\n}\n";
+ return output;
}
-
- return output;
- }
+
+ public static ByteBuffer toByteBuffer(String value) throws UnsupportedEncodingException
+ {
+ return ByteBuffer.wrap(value.getBytes("UTF-8"));
+ }
+
+public static String toString(ByteBuffer buffer) throws UnsupportedEncodingException
+ {
+ byte[] bytes = new byte[buffer.remaining()];
+ buffer.get(bytes);
+ return new String(bytes, "UTF-8");
+
+ }
+
+
@Post
public String store(String fmJson) {
IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
get(IBgpRouteService.class.getCanonicalName());
-
- Ptree ptree = bgpRoute.getPtree();
-
+
+ Ptree ptree = bgpRoute.getPtree();
+
String router_id = (String) getRequestAttributes().get("routerid");
String prefix = (String) getRequestAttributes().get("prefix");
String mask = (String) getRequestAttributes().get("mask");
String nexthop = (String) getRequestAttributes().get("nexthop");
String capability = (String) getRequestAttributes().get("capability");
- String reply = null;
+
+
+ String reply = "";
if (capability == null) {
+
// this is a prefix add
Prefix p = new Prefix(prefix, Integer.valueOf(mask));
PtreeNode node = ptree.acquire(p.getAddress(), p.masklen);
@@ -94,46 +121,73 @@
reply = "[POST: " + prefix + "/" + mask + ":" + nexthop + "]";
log.info(reply);
+
- RestClient.get("http://localhost:5000/bgp_update");
+ }else if(capability.equals("1")){
+ reply = "[POST-capability: " + capability + "]\n";
+ log.info(reply);
+ // to store the number in the top node of the Ptree
+
+ }else{
+ reply = "[POST-capability: " + capability + "]\n";
+ log.info(reply);
+ // to store the number in the top node of the Ptree
+
}
+
return reply + "\n";
+
+
}
@Delete
public String delete(String fmJson) {
- IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
+ IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
get(IBgpRouteService.class.getCanonicalName());
- Ptree ptree = bgpRoute.getPtree();
-
+ Ptree ptree = bgpRoute.getPtree();
+
String routerId = (String) getRequestAttributes().get("routerid");
String prefix = (String) getRequestAttributes().get("prefix");
String mask = (String) getRequestAttributes().get("mask");
String nextHop = (String) getRequestAttributes().get("nexthop");
String capability = (String) getRequestAttributes().get("capability");
- String reply = null;
+
+ String reply = "";
if (capability == null) {
- // this is a prefix delete
- Prefix p = new Prefix(prefix, Integer.valueOf(mask));
- PtreeNode node = ptree.lookup(p.getAddress(), p.masklen);
- Rib r = new Rib(routerId, nextHop, p.masklen);
-
- if (node != null && node.rib != null) {
- if (r.equals(node.rib)) {
- node.rib = null;
- ptree.delReference(node);
- }
- }
+ // this is a prefix delete
+ Prefix p = new Prefix(prefix, Integer.valueOf(mask));
+
+ PtreeNode node = ptree.lookup(p.getAddress(), p.masklen);
+
+ Rib r = new Rib(routerId, nextHop, p.masklen);
+
+ if (node != null && node.rib != null) {
+
+ if (r.equals(node.rib)) {
+
+ node.rib = null;
+ ptree.delReference(node);
+ }
+ }
+
+
+ reply =reply + "[DELE: " + prefix + "/" + mask + ":" + nextHop + "]";
+
+ }else {
- reply = "[DELE: " + prefix + "/" + mask + ":" + nextHop + "]";
- log.info(reply);
+ // clear the local rib: Ptree
+ bgpRoute.clearPtree();
+ reply = "[DELE-capability: " + capability + "; The local Rib is cleared!]\n";
- RestClient.get("http://localhost:5000/bgp_update");
- }
-
+
+ // to store the number in the top node of the Ptree
+
+ }
+ log.info(reply);
+
return reply + "\n";
}
}
diff --git a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResourceSynch.java b/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResourceSynch.java
new file mode 100644
index 0000000..d0c337a
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResourceSynch.java
@@ -0,0 +1,72 @@
+package net.floodlightcontroller.bgproute;
+
+
+import org.restlet.resource.Post;
+import org.restlet.resource.Delete;
+import org.restlet.resource.ServerResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import net.floodlightcontroller.restclient.RestClient;
+
+
+public class BgpRouteResourceSynch extends ServerResource {
+
+ protected static Logger log = LoggerFactory
+ .getLogger(BgpRouteResource.class);
+
+ @Post
+ public String store(String fmJson) {
+
+ IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
+ get(IBgpRouteService.class.getCanonicalName());
+
+ String router_id = (String) getRequestAttributes().get("routerid");
+ String prefix = (String) getRequestAttributes().get("prefix");
+ String mask = (String) getRequestAttributes().get("mask");
+ String nexthop = (String) getRequestAttributes().get("nexthop");
+
+ try{
+
+ String BGPdRestIp = bgpRoute.getBGPdRestIp();
+
+ //BGPdRestIp includes port number, such as 1.1.1.1:8080
+ RestClient.post("http://"+BGPdRestIp+"/wm/bgp/"+router_id+"/"+prefix+"/"+mask+"/"+nexthop);
+ }catch(Exception e)
+ {e.printStackTrace();}
+
+ String reply = "";
+ reply = "[POST: " + prefix + "/" + mask + ":" + nexthop + "/synch]";
+ log.info(reply);
+
+ return reply + "\n";
+
+
+ }
+
+ @Delete
+ public String delete(String fmJson) {
+ IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
+ get(IBgpRouteService.class.getCanonicalName());
+
+ String routerId = (String) getRequestAttributes().get("routerid");
+ String prefix = (String) getRequestAttributes().get("prefix");
+ String mask = (String) getRequestAttributes().get("mask");
+ String nextHop = (String) getRequestAttributes().get("nexthop");
+
+ String reply = "";
+ try{
+ String BGPdRestIp = bgpRoute.getBGPdRestIp();
+
+ RestClient.delete("http://"+BGPdRestIp+"/wm/bgp/"+routerId+"/"+prefix+"/"+mask+"/"+nextHop);
+
+ }catch(Exception e)
+ {e.printStackTrace();}
+
+ reply =reply + "[DELE: " + prefix + "/" + mask + ":" + nextHop + "/synch]";
+
+ log.info(reply);
+
+
+ return reply + "\n";
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteWebRoutable.java b/src/main/java/net/floodlightcontroller/bgproute/BgpRouteWebRoutable.java
index 37d5696..a18c550 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteWebRoutable.java
+++ b/src/main/java/net/floodlightcontroller/bgproute/BgpRouteWebRoutable.java
@@ -12,7 +12,8 @@
Router router = new Router(context);
router.attach("/json", BgpRouteResource.class);
router.attach("/rib/{dest}", BgpRouteResource.class);
- router.attach("/{routerid}/{prefix}/{mask}/{nexthop}", BgpRouteResource.class);
+ router.attach("/{routerid}/{prefix}/{mask}/{nexthop}", BgpRouteResource.class);
+ router.attach("/{routerid}/{prefix}/{mask}/{nexthop}/synch", BgpRouteResourceSynch.class);
router.attach("/{routerid}/{capability}", BgpRouteResource.class);
return router;
}
diff --git a/src/main/java/net/floodlightcontroller/bgproute/IBgpRouteService.java b/src/main/java/net/floodlightcontroller/bgproute/IBgpRouteService.java
index 62bdf5e..a6025ef 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/IBgpRouteService.java
+++ b/src/main/java/net/floodlightcontroller/bgproute/IBgpRouteService.java
@@ -8,4 +8,11 @@
public Ptree getPtree();
+ public String getBGPdRestIp();
+
+ public String getRouterId();
+
+ public void clearPtree() ;
+
+
}
diff --git a/src/main/java/net/floodlightcontroller/bgproute/Ptree.java b/src/main/java/net/floodlightcontroller/bgproute/Ptree.java
index d53789e..dcb6e83 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/Ptree.java
+++ b/src/main/java/net/floodlightcontroller/bgproute/Ptree.java
@@ -13,7 +13,7 @@
maxKeyOctets = bit_to_octet(max_key_bits);
refCount = 0;
}
-
+
public PtreeNode acquire(byte [] key) {
return acquire(key, maxKeyBits);
}
@@ -278,6 +278,10 @@
return add;
}
+ //add by linpp
+ private void clear() {
+
+ }
private void node_remove(PtreeNode node) {
PtreeNode child;
diff --git a/src/main/java/net/floodlightcontroller/bgproute/Rib.java b/src/main/java/net/floodlightcontroller/bgproute/Rib.java
index 71868ff..574e820 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/Rib.java
+++ b/src/main/java/net/floodlightcontroller/bgproute/Rib.java
@@ -40,6 +40,7 @@
public boolean equals(Rib r) {
- return this.routerId == r.routerId && this.nextHop == r.nextHop && this.masklen == r.masklen;
+ return this.routerId.equals(r.routerId) && this.nextHop.equals(r.nextHop) && this.masklen == r.masklen;
+
}
}
diff --git a/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java b/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java
index 36cde95..964eff1 100644
--- a/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java
+++ b/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java
@@ -102,7 +102,7 @@
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RegistryException e) {
- // TODO Auto-generated catch block
+ log.debug("Caught RegistryException trying to requestControl in cleanup thread");
e.printStackTrace();
}
}
diff --git a/src/main/java/net/floodlightcontroller/restclient/RestClient.java b/src/main/java/net/floodlightcontroller/restclient/RestClient.java
index 07eab45..541b42d 100644
--- a/src/main/java/net/floodlightcontroller/restclient/RestClient.java
+++ b/src/main/java/net/floodlightcontroller/restclient/RestClient.java
@@ -1,10 +1,17 @@
package net.floodlightcontroller.restclient;
+import java.io.BufferedReader;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import net.sf.json.JSONSerializer;
+
+
public class RestClient {
public static void get (String str) {
@@ -16,7 +23,7 @@
URL url = new URL(str);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- conn.setRequestMethod("GET");
+ conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
if (conn.getResponseCode() != 200) {
@@ -24,18 +31,68 @@
+ conn.getResponseCode());
}
- /* Disable reading the output from the server for now
- *
- BufferedReader br = new BufferedReader(new InputStreamReader(
- (conn.getInputStream())));
-
- String output;
- System.out.println("Output from Server .... \n");
- while ((output = br.readLine()) != null) {
- System.out.println(output);
- }
- */
+ if (conn.getContentType().equals("application/json"))
+ { }else{
+ System.out.print("The content received is not json format!");
+ }
+ BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
+ StringBuffer res = new StringBuffer();
+ String line;
+ while ((line = br.readLine()) != null) {
+ res.append(line);
+ }
+
+ String res2=res.toString().replaceAll("\"", "'");
+ JSONObject jsonObj = (JSONObject) JSONSerializer.toJSON(res2);
+ JSONArray rib_json_array = jsonObj.getJSONArray("rib");
+ String router_id = jsonObj.getString("router-id");
+
+ int size = rib_json_array.size();
+ System.out.print("size:"+size+"\n");
+ for (int j = 0; j < size; j++) {
+ JSONObject second_json_object = rib_json_array.getJSONObject(j);
+ String prefix = second_json_object.getString("prefix");
+ String nexthop = second_json_object.getString("nexthop");
+
+ //insert each rib entry into the local rib;
+ RestClient.post("http://127.0.0.1:8090/wm/bgp/"+router_id+"/"+prefix+"/"+nexthop);
+
+
+
+ }
+ br.close();
+ conn.disconnect();
+
+ } catch (MalformedURLException e) {
+
+ e.printStackTrace();
+
+ } catch (IOException e) {
+
+ e.printStackTrace();
+
+ }
+ }
+
+public static void post (String str) {
+
+ if (str == null)
+ return;
+
+ try {
+
+ URL url = new URL(str);
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setDoOutput(true);
+ conn.setRequestMethod("POST");
+ conn.setRequestProperty("Content-Type", "application/json");
+
+ if (conn.getResponseCode() != 200) {
+ throw new RuntimeException("Failed : HTTP error code : "
+ + conn.getResponseCode());
+ }
+
conn.disconnect();
} catch (MalformedURLException e) {
@@ -48,4 +105,38 @@
}
}
+
+
+public static void delete (String str) {
+
+ if (str == null)
+ return;
+
+ try {
+
+ URL url = new URL(str);
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("DELETE");
+ conn.setRequestProperty("Accept", "application/json");
+
+
+ if (conn.getResponseCode() != 200) {
+ throw new RuntimeException("Failed : HTTP error code : "
+ + conn.getResponseCode());
+ }
+
+ conn.disconnect();
+
+ } catch (MalformedURLException e) {
+
+ e.printStackTrace();
+
+ } catch (IOException e) {
+
+ e.printStackTrace();
+
+ }
+}
+
+
}
diff --git a/src/main/java/net/onrc/onos/registry/controller/ControllerService.java b/src/main/java/net/onrc/onos/registry/controller/ControllerService.java
new file mode 100644
index 0000000..c74e85d
--- /dev/null
+++ b/src/main/java/net/onrc/onos/registry/controller/ControllerService.java
@@ -0,0 +1,26 @@
+package net.onrc.onos.registry.controller;
+
+
+
+//@JsonRootName("controller")
+public class ControllerService {
+
+ private String controllerId;
+
+ public ControllerService(){
+ this("");
+ }
+
+ public ControllerService(String controllerId) {
+ this.controllerId = controllerId;
+ }
+
+ public void setControllerId(String controllerId) {
+ this.controllerId = controllerId;
+ }
+
+ public String getControllerId() {
+ return controllerId;
+ }
+
+}
diff --git a/src/main/java/net/onrc/onos/registry/controller/RegistryRunner.java b/src/main/java/net/onrc/onos/registry/controller/RegistryRunner.java
deleted file mode 100644
index 164f328..0000000
--- a/src/main/java/net/onrc/onos/registry/controller/RegistryRunner.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package net.onrc.onos.registry.controller;
-
-import net.floodlightcontroller.core.module.FloodlightModuleContext;
-import net.floodlightcontroller.core.module.FloodlightModuleException;
-import net.onrc.onos.registry.controller.IControllerRegistryService.ControlChangeCallback;
-
-import org.openflow.util.HexString;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Used for lightweight testing of the mastership module without having
- * to load up the entire ONOS.
- * @author jono
- *
- */
-public class RegistryRunner {
- protected static Logger log = LoggerFactory.getLogger(RegistryRunner.class);
-
- public static void main(String args[]){
- FloodlightModuleContext fmc = new FloodlightModuleContext();
- ZookeeperRegistry rm = new ZookeeperRegistry();
-
- fmc.addConfigParam(rm, "enableZookeeper", "true");
-
- String id = null;
- if (args.length > 0){
- id = args[0];
- log.info("Using unique id: {}", id);
- }
-
- try {
- rm.init(fmc);
- rm.startUp(fmc);
-
- if (id == null){
- log.error("No unique ID supplied");
- System.exit(1);
- }
-
- rm.registerController(id);
- //rm.setMastershipId(id);
-
- rm.requestControl(1L,
- new ControlChangeCallback(){
- @Override
- public void controlChanged(long dpid, boolean isMaster) {
- if (isMaster){
- log.debug("Callback for becoming master for {}", HexString.toHexString(dpid));
- }
- else {
- log.debug("Callback for losing mastership for {}", HexString.toHexString(dpid));
- }
- }
- });
-
- Thread.sleep(1000);
-
- /*
- Map<String, List<ControllerRegistryEntry>> switches = rm.getAllSwitches();
- for (List<ControllerRegistryEntry> ls : switches.values()){
- for (ControllerRegistryEntry cre : ls){
- log.debug("ctrlr: {}", cre.getControllerId());
- }
- }
- */
- //"Server" loop
- while (true) {
- Thread.sleep(60000);
- }
-
- } catch (FloodlightModuleException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- log.debug("is master: {}", rm.hasControl(1L));
- }
-}
diff --git a/src/main/java/net/onrc/onos/registry/controller/SwitchRegistryResource.java b/src/main/java/net/onrc/onos/registry/controller/SwitchRegistryResource.java
index 0a7ac5d..599a1af 100644
--- a/src/main/java/net/onrc/onos/registry/controller/SwitchRegistryResource.java
+++ b/src/main/java/net/onrc/onos/registry/controller/SwitchRegistryResource.java
@@ -6,12 +6,8 @@
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class SwitchRegistryResource extends ServerResource {
-
- protected static Logger log = LoggerFactory.getLogger(SwitchRegistryResource.class);
@Get("json")
public Map<String, List<ControllerRegistryEntry>> getAllControllers(){
@@ -26,12 +22,6 @@
switches = new HashMap<String, List<ControllerRegistryEntry>>();
}
- /*for (List<ControllerRegistryEntry> list: switches.values()){
- for (ControllerRegistryEntry en : list) {
- log.debug("Controller id {}", en.getControllerId());
- }
- }*/
-
return switches;
}
}
diff --git a/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java b/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java
index b666db7..b9d04d4 100644
--- a/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java
+++ b/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java
@@ -1,10 +1,10 @@
package net.onrc.onos.registry.controller;
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -16,9 +16,6 @@
import net.floodlightcontroller.core.module.IFloodlightService;
import net.floodlightcontroller.restserver.IRestApiService;
-import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
import org.openflow.util.HexString;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,9 +32,11 @@
import com.netflix.curator.framework.recipes.leader.LeaderLatch;
import com.netflix.curator.framework.recipes.leader.LeaderLatchEvent;
import com.netflix.curator.framework.recipes.leader.LeaderLatchListener;
-import com.netflix.curator.framework.recipes.leader.Participant;
import com.netflix.curator.retry.ExponentialBackoffRetry;
-import com.netflix.curator.utils.ZKPaths;
+import com.netflix.curator.x.discovery.ServiceCache;
+import com.netflix.curator.x.discovery.ServiceDiscovery;
+import com.netflix.curator.x.discovery.ServiceDiscoveryBuilder;
+import com.netflix.curator.x.discovery.ServiceInstance;
/**
* A registry service that uses Zookeeper. All data is stored in Zookeeper,
@@ -57,11 +56,12 @@
private final String namespace = "onos";
private final String switchLatchesPath = "/switches";
- private final String controllerPath = "/controllers";
+
+ private final String SERVICES_PATH = "/"; //i.e. the root of our namespace
+ private final String CONTROLLER_SERVICE_NAME = "controllers";
protected CuratorFramework client;
- protected PathChildrenCache controllerCache;
protected PathChildrenCache switchCache;
protected ConcurrentHashMap<String, SwitchLeadershipData> switches;
@@ -96,7 +96,8 @@
HexString.toLong(dpid), latch.hasLeadership());
}
else {
- log.debug("Latch for {} has changed", dpid);
+ log.debug("Latch for {} has changed: old latch {} - new latch {}",
+ new Object[]{dpid, latch, swData.getLatch()});
}
}
}
@@ -123,26 +124,35 @@
case CHILD_ADDED:
case CHILD_UPDATED:
//Check we have a PathChildrenCache for this child, add one if not
- if (switchPathCaches.get(strSwitch) == null){
- PathChildrenCache pc = new PathChildrenCache(client,
- event.getData().getPath(), true);
- pc.start(StartMode.NORMAL);
- switchPathCaches.put(strSwitch, pc);
+ synchronized (switchPathCaches){
+ if (switchPathCaches.get(strSwitch) == null){
+ PathChildrenCache pc = new PathChildrenCache(client,
+ event.getData().getPath(), true);
+ pc.start(StartMode.NORMAL);
+ switchPathCaches.put(strSwitch, pc);
+ }
}
break;
case CHILD_REMOVED:
//Remove our PathChildrenCache for this child
- PathChildrenCache pc = switchPathCaches.remove(strSwitch);
- pc.close();
+ PathChildrenCache pc = null;
+ synchronized(switchPathCaches){
+ pc = switchPathCaches.remove(strSwitch);
+ }
+ if (pc != null){
+ pc.close();
+ }
break;
default:
- //All other events are connection status events. We need to do anything
- //as the path cache handles these on its own.
+ //All other events are connection status events. We don't need to
+ //do anything as the path cache handles these on its own.
break;
}
}
};
+ protected ServiceDiscovery<ControllerService> serviceDiscovery;
+ protected ServiceCache<ControllerService> serviceCache;
@Override
@@ -206,6 +216,8 @@
LeaderLatch latch = swData.getLatch();
+ latch.removeAllListeners();
+
try {
latch.close();
} catch (IOException e) {
@@ -238,17 +250,13 @@
log.debug("Getting all controllers");
List<String> controllers = new ArrayList<String>();
- for (ChildData data : controllerCache.getCurrentData()){
-
- String d = null;
- try {
- d = new String(data.getData(), "UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new RegistryException("Error encoding string", e);
+ for (ServiceInstance<ControllerService> instance : serviceCache.getInstances()){
+ String id = instance.getPayload().getControllerId();
+ if (!controllers.contains(id)){
+ controllers.add(id);
}
-
- controllers.add(d);
}
+
return controllers;
}
@@ -261,78 +269,54 @@
controllerId = id;
- byte bytes[] = id.getBytes(Charsets.UTF_8);
- String path = ZKPaths.makePath(controllerPath, controllerId);
-
- log.info("Registering controller with id {}", id);
-
try {
- //We need to set a watch to recreate the node in the controller
- //registry if it gets deleted - e.g. on Zookeeper connection loss.
- Watcher watcher = new Watcher(){
- @Override
- public void process(WatchedEvent event) {
- log.debug("got any watch event {} ", event);
-
- String path = ZKPaths.makePath(controllerPath, controllerId);
- byte bytes[] = controllerId.getBytes(Charsets.UTF_8);
-
- try {
- if (event.getType() == Event.EventType.NodeDeleted){
- log.debug("got a node deleted event");
-
-
- client.create().withMode(CreateMode.EPHEMERAL)
- .forPath(path, bytes);
- }
- } catch (Exception e) {
- log.warn("Error recreating controller node for {}: {}",
- controllerId, e.getMessage());
- } finally {
- try {
- client.checkExists().usingWatcher(this).forPath(path);
- } catch (Exception e2){
- log.warn("Error resetting watch for {}: {}",
- controllerId, e2.getMessage());
- }
- }
- }
- };
+ ServiceInstance<ControllerService> thisInstance = ServiceInstance.<ControllerService>builder()
+ .name(CONTROLLER_SERVICE_NAME)
+ .payload(new ControllerService(controllerId))
+ //.port((int)(65535 * Math.random())) // in a real application, you'd use a common port
+ //.uriSpec(uriSpec)
+ .build();
- //Create ephemeral node in controller registry
- //TODO Use protection
- client.create().withMode(CreateMode.EPHEMERAL)
- .forPath(path, bytes);
- client.checkExists().usingWatcher(watcher).forPath(path);
+ serviceDiscovery.registerService(thisInstance);
} catch (Exception e) {
- throw new RegistryException("Error contacting the Zookeeper service", e);
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
+
}
@Override
public String getControllerForSwitch(long dpid) throws RegistryException {
- // TODO work out synchronization
-
String dpidStr = HexString.toHexString(dpid);
-
- SwitchLeadershipData swData = switches.get(dpidStr);
- //LeaderLatch latch = (switches.get(dpidStr) != null)?switches.get(dpidStr).getLatch():null;
- if (swData == null){
+ PathChildrenCache switchCache = switchPathCaches.get(dpidStr);
+
+ if (switchCache == null){
log.warn("Tried to get controller for non-existent switch");
return null;
}
- LeaderLatch latch = swData.getLatch();
+ List<ChildData> sortedData = new ArrayList<ChildData>(switchCache.getCurrentData());
- Participant leader = null;
- try {
- leader = latch.getLeader();
- } catch (Exception e) {
- throw new RegistryException("Error contacting the Zookeeper service", e);
+ Collections.sort(
+ sortedData,
+ new Comparator<ChildData>(){
+ private String getSequenceNumber(String path){
+ return path.substring(path.lastIndexOf('-') + 1);
+ }
+ @Override
+ public int compare(ChildData lhs, ChildData rhs) {
+ return getSequenceNumber(lhs.getPath()).
+ compareTo(getSequenceNumber(rhs.getPath()));
+ }
+ }
+ );
+
+ if (sortedData.size() == 0){
+ return null;
}
- return leader.getId();
+ return new String(sortedData.get(0).getData(), Charsets.UTF_8);
}
@Override
@@ -421,7 +405,8 @@
restApi = context.getServiceImpl(IRestApiService.class);
switches = new ConcurrentHashMap<String, SwitchLeadershipData>();
- switchPathCaches = new HashMap<String, PathChildrenCache>();
+ //switchPathCaches = new HashMap<String, PathChildrenCache>();
+ switchPathCaches = new ConcurrentHashMap<String, PathChildrenCache>();
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
client = CuratorFrameworkFactory.newClient(this.connectionString,
@@ -431,12 +416,22 @@
client = client.usingNamespace(namespace);
- controllerCache = new PathChildrenCache(client, controllerPath, true);
switchCache = new PathChildrenCache(client, switchLatchesPath, true);
switchCache.getListenable().addListener(switchPathCacheListener);
+ //Build the service discovery object
+ serviceDiscovery = ServiceDiscoveryBuilder.builder(ControllerService.class)
+ .client(client).basePath(SERVICES_PATH).build();
+
+ //We read the list of services very frequently (GUI periodically queries them)
+ //so we'll cache them to cut down on Zookeeper queries.
+ serviceCache = serviceDiscovery.serviceCacheBuilder()
+ .name(CONTROLLER_SERVICE_NAME).build();
+
+
try {
- controllerCache.start(StartMode.BUILD_INITIAL_CACHE);
+ serviceDiscovery.start();
+ serviceCache.start();
//Don't prime the cache, we want a notification for each child node in the path
switchCache.start(StartMode.NORMAL);
diff --git a/start.sh b/start.sh
deleted file mode 100755
index d6aa010..0000000
--- a/start.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#! /bin/sh
-if [ -f floodlight.onos1vpc.log ]; then
- mv floodlight.onos1vpc.log floodlight.onos1vpc.log.1
-fi
-ppid=`ps -edalf |grep java |grep floodlight.jar | awk '{print $4}'`
-if [ x$ppid != "x" ]; then
- sudo kill -KILL $ppid
-fi
-java -jar target/floodlight.jar > floodlight.onos1vpc.log 2>&1 &
diff --git a/web/js/controller-status.js b/web/js/controller-status.js
index 1cca38f..fa887e3 100644
--- a/web/js/controller-status.js
+++ b/web/js/controller-status.js
@@ -5,22 +5,22 @@
{name:'onos12vpc', onos: 0, cassandra: 1}] */
var barWidth = 100;
- var width = (barWidth + 10) * 4
+ var width = (barWidth + 10) * 8
var height = 50;
var Servers = d3.select("#servers").
append("svg:svg").
- attr("width", 800).
+ attr("width", 1280).
attr("height", 30);
var ContStatus = d3.select("#onos-status").
append("svg:svg").
- attr("width", 800).
+ attr("width", 1280).
attr("height", 50);
var CassandraStatus = d3.select("#cassandra-status").
append("svg:svg").
- attr("width", 800).
+ attr("width", 1280).
attr("height", 50);
d3.json(data_source, draw);
@@ -62,6 +62,14 @@
return "green"
}else if (index == 3){
return "orange"
+ }else if (index == 4){
+ return "cyan"
+ }else if (index == 5){
+ return "magenta"
+ }else if (index == 6){
+ return "yellow"
+ }else if (index == 7){
+ return "purple"
}else{
return "black"
}
@@ -84,6 +92,14 @@
return "green"
}else if (index == 3){
return "orange"
+ }else if (index == 4){
+ return "cyan"
+ }else if (index == 5){
+ return "magenta"
+ }else if (index == 6){
+ return "yellow"
+ }else if (index == 7){
+ return "purple"
}else{
return "black"
}
@@ -133,6 +149,14 @@
return "green"
}else if (index == 3){
return "orange"
+ }else if (index == 4){
+ return "cyan"
+ }else if (index == 5){
+ return "magenta"
+ }else if (index == 6){
+ return "yellow"
+ }else if (index == 7){
+ return "purple"
}else{
return "black"
}
diff --git a/web/ons-demo/RELEASE_NOTES.txt b/web/ons-demo/RELEASE_NOTES.txt
index 85df9bf..a9a934b 100644
--- a/web/ons-demo/RELEASE_NOTES.txt
+++ b/web/ons-demo/RELEASE_NOTES.txt
@@ -3,3 +3,26 @@
- switch config hacked 00:00:00:00:00:00:01:01 ==> 00:00:00:00:00:00:01:00 etc.
- layout does not dynamically adjust when window is resized
- refresh browser window after resizing to fix layout
+
+** March 20, 2013 **
+- URL parameters control functions as follows:
+ http://localhost:9000/ons-demo/index.html
+ uses the ONOS_HOST defined in restapi2.py. currently http://gui3.onlab.us:8080
+ http://localhost:9000/ons-demo/index.html?proxy
+ uses the index.html host to proxy to ONOS_HOST (works around cross site scripting restrictions to allow the WebUI to be served from a different server than the one that hosts the controller)
+ http://localhost:9000/ons-demo/index.html?mock
+ uses the mock JSON responses under ons-dmo/data
+- clicking a controller behavior change
+ 1) if all controllers are selected, deselects all controllers except the one clicked
+ 2) if only the clicked controller is selected, selects all controllers again
+- Update configuration files to match test bed
+- Update sample JSON files from test bed
+
+** March 22, 2013 **
+- Workarounds for Chrome v25 rendering bugs
+- Fixed broken proxy functionality in restapi2.py
+- webui should now work when hosted from a different server than the controller (where it uses gui3.onlab.us:8080) and also when run from the same server (where it uses localhost:8080)
+
+** March 23, 2013 **
+- Link and switch state updates dynamically
+- Link direction is indicated with arrow heads
diff --git a/web/ons-demo/css/skin.default.css b/web/ons-demo/css/skin.default.css
index 807aa4c..d3a9e61 100644
--- a/web/ons-demo/css/skin.default.css
+++ b/web/ons-demo/css/skin.default.css
@@ -8,23 +8,34 @@
.status {
padding: 1em;
- border-right: 1px solid white;
}
+
.status:last-child {
border-right: none;
}
.status .static {
- color: white;
+ color: #AAA;
padding: .25em;
}
.status .dynamic {
- color: blue;
+ color: #FFF;
padding: .25em;
}
+.status.bottom {
+ position: absolute;
+ bottom: 0px;
+ right: 0px;
+ font-size: 12px;
+}
+
+#status.top span {
+ font-size: 24px;
+}
+
.button {
padding: 1em;
background-color: lightgray;
@@ -32,6 +43,11 @@
border: 1px solid white;
}
+#arrow {
+ stroke: none;
+ fill: rgba(255, 255, 255, .35);
+}
+
.header {
height: 50px;
}
@@ -59,7 +75,6 @@
padding: .25em;
}
-
#logo {
height: 50px;
}
@@ -76,13 +91,13 @@
text {
stroke: none;
fill: white;
- font-size: 12px;
+ font-size: 16px;
pointer-events: none;
}
path {
stroke: rgba(255, 255, 255, .25);
- stroke-width: 1px;
+ stroke-width: 1.5px;
}
.aggregation {
@@ -94,68 +109,107 @@
visibility: hidden
}
-.color1, .color2, .color3, .color4, .color5, .color6, .color7, .color8, .color9, .color10, .color11, .color12 {
- fill: rgba(255, 255, 255, .15);
- background-color: rgba(255, 255, 255, .15);
+.color1-selected .color1,
+.color2-selected .color2,
+.color3-selected .color3,
+.color4-selected .color4,
+.color5-selected .color5,
+.color6-selected .color6,
+.color7-selected .color7,
+.color8-selected .color8,
+.color9-selected .color9,
+.color10-selected .color10,
+.color11-selected .color11,
+.color12-selected .color12 {
+ opacity: 1;
+ pointer-events: auto;
}
+.colorInactive {
+ opacity: 1;
+ fill: #444;
+ background-color: #444;
+ color: #222;
+}
-.color1-selected .color1 {
+.color1 {
+ opacity: .2;
+ pointer-events: none;
fill: #EC0033;
background-color: #EC0033;
}
-.color2-selected .color2 {
+.color2 {
+ opacity: .2;
fill: #FFBA00;
background-color: #FFBA00;
}
-.color3-selected .color3 {
+.color3 {
+ opacity: .2;
+ pointer-events: none;
fill: #3714B0;
background-color: #3714B0;
}
-.color4-selected .color4 {
+.color4 {
+ opacity: .2;
+ pointer-events: none;
fill: #B12C49;
background-color: #B12C49;
}
-.color5-selected .color5 {
+.color5 {
+ opacity: .2;
+ pointer-events: none;
fill: #402C84;
background-color: #402C84;
}
-.color6-selected .color6 {
+.color6 {
+ opacity: .2;
+ pointer-events: none;
fill: #990021;
background-color: #990021;
}
-.color7-selected .color7 {
+.color7 {
+ opacity: .2;
+ pointer-events: none;
fill: #990021;
- background-color: ;
+ background-color: #990021;
}
-.color8-selected .color8 {
+.color8 {
+ opacity: .2;
+ pointer-events: none;
fill: #A67900;
background-color: #A67900;
}
-.color9-selected .color9 {
+.color9 {
+ opacity: .2;
fill: #F53D65;
background-color: #F53D65;
}
-.color10-selected .color10 {
+.color10 {
+ opacity: .2;
+ pointer-events: none;
fill: #1F0772;
background-color: #1F0772;
}
-.color11-selected .color11 {
+.color11 {
+ opacity: .2;
+ pointer-events: none;
fill: #F56E8B;
background-color: #F56E8B;
}
-.color12-selected .color12 {
+.color12 {
+ opacity: .2;
+ pointer-events: none;
fill: #6949D7;
background-color: #6949D7;
}
diff --git a/web/ons-demo/data/configuration.json b/web/ons-demo/data/configuration.json
index bf5c855..b36fced 100644
--- a/web/ons-demo/data/configuration.json
+++ b/web/ons-demo/data/configuration.json
@@ -8,13 +8,34 @@
"00:00:00:16:97:08:9a:46"
],
"aggregation": [
- "00:00:00:00:00:00:01:00",
- "00:00:00:00:00:00:02:00",
- "00:00:00:00:00:00:03:00",
- "00:00:00:00:00:00:04:00",
- "00:00:00:00:00:00:05:00",
- "00:00:00:00:00:00:06:00",
- "00:00:00:00:00:00:07:00",
- "00:00:00:00:00:00:08:00"
- ]
+ "00:00:00:00:00:00:01:01",
+ "00:00:00:00:00:00:02:01",
+ "00:00:00:00:00:00:03:01",
+ "00:00:00:00:00:00:04:01",
+ "00:00:00:00:00:00:05:01",
+ "00:00:00:00:00:00:06:01",
+ "00:00:00:00:00:00:07:01",
+ "00:00:00:00:00:00:08:01"
+ ],
+ "association": {
+ "00:00:00:08:a2:08:f9:01": [
+ "00:00:00:00:00:00:03:01"
+ ],
+ "00:00:00:00:ba:5e:ba:11": [
+ "00:00:00:00:00:00:02:01"
+ ],
+ "00:00:20:4e:7f:51:8a:35": [
+ "00:00:00:00:00:00:07:01"
+ ],
+ "00:00:00:00:00:00:ba:12": [
+ "00:00:00:00:00:00:04:01",
+ "00:00:00:00:00:00:05:01"
+ ],
+ "00:00:00:00:ba:5e:ba:13": [
+ "00:00:00:00:00:00:06:01"
+ ],
+ "00:00:00:16:97:08:9a:46": [
+ "00:00:00:00:00:00:08:01"
+ ]
+ }
}
\ No newline at end of file
diff --git a/web/ons-demo/data/controllers.json b/web/ons-demo/data/controllers.json
new file mode 100644
index 0000000..db2f5ad
--- /dev/null
+++ b/web/ons-demo/data/controllers.json
@@ -0,0 +1,10 @@
+[
+ "onosgui1",
+ "onosgui2",
+ "onosgui3",
+ "onosgui4",
+ "onosgui5",
+ "onosgui6",
+ "onosgui7",
+ "onosgui8"
+]
\ No newline at end of file
diff --git a/web/ons-demo/data/wm_core_topology_links_json.json b/web/ons-demo/data/wm_core_topology_links_json.json
index 3fd7bf0..0a60d71 100644
--- a/web/ons-demo/data/wm_core_topology_links_json.json
+++ b/web/ons-demo/data/wm_core_topology_links_json.json
@@ -1,1166 +1 @@
-[
- {
- "dst-port": 26,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:19"
- },
- {
- "dst-port": 12,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:0b"
- },
- {
- "dst-port": 7,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:06"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:02"
- },
- {
- "dst-port": 19,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:12"
- },
- {
- "dst-port": 17,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:10"
- },
- {
- "dst-port": 15,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:0e"
- },
- {
- "dst-port": 20,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:13"
- },
- {
- "dst-port": 18,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:11"
- },
- {
- "dst-port": 29,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:1c"
- },
- {
- "dst-port": 18,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:11"
- },
- {
- "dst-port": 17,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:10"
- },
- {
- "dst-port": 46,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:2d"
- },
- {
- "dst-port": 28,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:1b"
- },
- {
- "dst-port": 33,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:20"
- },
- {
- "dst-port": 16,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:0f"
- },
- {
- "dst-port": 34,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:21"
- },
- {
- "dst-port": 12,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:0b"
- },
- {
- "dst-port": 43,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:2a"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:0b",
- "src-port": 12,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:13",
- "src-port": 20,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:05",
- "src-port": 6,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:0c",
- "src-port": 13,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:12",
- "src-port": 19,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:04",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:11",
- "src-port": 18,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:06",
- "src-port": 7,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:07",
- "src-port": 8,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:10",
- "src-port": 17,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:08",
- "src-port": 9,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:09",
- "src-port": 10,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:0f",
- "src-port": 16,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:0e",
- "src-port": 15,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:0d",
- "src-port": 14,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:ba:5e:ba:11",
- "src-port": 21,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:02",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:0a",
- "src-port": 11,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:03",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:02:00"
- },
- {
- "dst-port": 9,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:08"
- },
- {
- "dst-port": 13,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:0c"
- },
- {
- "dst-port": 44,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:2b"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:04"
- },
- {
- "dst-port": 17,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:10"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:04"
- },
- {
- "dst-port": 38,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:25"
- },
- {
- "dst-port": 37,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:24"
- },
- {
- "dst-port": 8,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:07"
- },
- {
- "dst-port": 7,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:06"
- },
- {
- "dst-port": 31,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:1e"
- },
- {
- "dst-port": 8,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:07"
- },
- {
- "dst-port": 14,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:0d"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:02"
- },
- {
- "dst-port": 19,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:12"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:ba:5e:ba:11",
- "src-port": 2,
- "src-switch": "00:00:00:00:ba:5e:ba:13"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:20:4e:7f:51:8a:35",
- "src-port": 3,
- "src-switch": "00:00:00:00:ba:5e:ba:13"
- },
- {
- "dst-port": 45,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:2c"
- },
- {
- "dst-port": 9,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:08"
- },
- {
- "dst-port": 11,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:0a"
- },
- {
- "dst-port": 20,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:13"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:16:97:08:9a:46",
- "src-port": 2,
- "src-switch": "00:00:00:08:a2:08:f9:01"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:ba:12",
- "src-port": 3,
- "src-switch": "00:00:00:08:a2:08:f9:01"
- },
- {
- "dst-port": 21,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 4,
- "src-switch": "00:00:00:08:a2:08:f9:01"
- },
- {
- "dst-port": 6,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:05"
- },
- {
- "dst-port": 36,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:23"
- },
- {
- "dst-port": 12,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:0b"
- },
- {
- "dst-port": 6,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:05"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:ba:12",
- "src-port": 2,
- "src-switch": "00:00:20:4e:7f:51:8a:35"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:ba:5e:ba:13",
- "src-port": 3,
- "src-switch": "00:00:20:4e:7f:51:8a:35"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:03"
- },
- {
- "dst-port": 8,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:07"
- },
- {
- "dst-port": 13,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:0c"
- },
- {
- "dst-port": 48,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:2f"
- },
- {
- "dst-port": 13,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:0c"
- },
- {
- "dst-port": 10,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:09"
- },
- {
- "dst-port": 16,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:0f"
- },
- {
- "dst-port": 15,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:0e"
- },
- {
- "dst-port": 41,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:28"
- },
- {
- "dst-port": 6,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:05"
- },
- {
- "dst-port": 39,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:26"
- },
- {
- "dst-port": 35,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:22"
- },
- {
- "dst-port": 14,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:0d"
- },
- {
- "dst-port": 32,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:1f"
- },
- {
- "dst-port": 23,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:16"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:01"
- },
- {
- "dst-port": 9,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:08"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:01"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:01"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:ba:5e:ba:11",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:ba:12"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:08:a2:08:f9:01",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:ba:12"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:20:4e:7f:51:8a:35",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:ba:12"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0b",
- "src-port": 12,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:13",
- "src-port": 20,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:05",
- "src-port": 6,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0c",
- "src-port": 13,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:12",
- "src-port": 19,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:04",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:11",
- "src-port": 18,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:06",
- "src-port": 7,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:07",
- "src-port": 8,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:10",
- "src-port": 17,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:08",
- "src-port": 9,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:09",
- "src-port": 10,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0f",
- "src-port": 16,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0e",
- "src-port": 15,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0d",
- "src-port": 14,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:08:a2:08:f9:01",
- "src-port": 21,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:02",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:0a",
- "src-port": 11,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:03:03",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:03:00"
- },
- {
- "dst-port": 21,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:14"
- },
- {
- "dst-port": 11,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:0a"
- },
- {
- "dst-port": 25,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:18"
- },
- {
- "dst-port": 20,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:13"
- },
- {
- "dst-port": 3,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:02"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:03"
- },
- {
- "dst-port": 7,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:06"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:27",
- "src-port": 40,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:15",
- "src-port": 22,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:30",
- "src-port": 49,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:0b",
- "src-port": 12,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:1e",
- "src-port": 31,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:13",
- "src-port": 20,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:05",
- "src-port": 6,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:1a",
- "src-port": 27,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:21",
- "src-port": 34,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:12",
- "src-port": 19,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:0c",
- "src-port": 13,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:28",
- "src-port": 41,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:2f",
- "src-port": 48,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:04",
- "src-port": 5,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:1b",
- "src-port": 28,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:20",
- "src-port": 33,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:11",
- "src-port": 18,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:29",
- "src-port": 42,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:18",
- "src-port": 25,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:2e",
- "src-port": 47,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:2d",
- "src-port": 46,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:06",
- "src-port": 7,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:19",
- "src-port": 26,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:23",
- "src-port": 36,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:07",
- "src-port": 8,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:2c",
- "src-port": 45,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:22",
- "src-port": 35,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:10",
- "src-port": 17,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:01",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:08",
- "src-port": 9,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:16:97:08:9a:46",
- "src-port": 51,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:24",
- "src-port": 37,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:2b",
- "src-port": 44,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:2a",
- "src-port": 43,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:0f",
- "src-port": 16,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:1d",
- "src-port": 30,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:16",
- "src-port": 23,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:09",
- "src-port": 10,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:0e",
- "src-port": 15,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:25",
- "src-port": 38,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:1c",
- "src-port": 29,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:17",
- "src-port": 24,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:0d",
- "src-port": 14,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:14",
- "src-port": 21,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:02",
- "src-port": 3,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:26",
- "src-port": 39,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:1f",
- "src-port": 32,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:0a",
- "src-port": 11,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:03",
- "src-port": 4,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:01:31",
- "src-port": 50,
- "src-switch": "00:00:00:00:00:00:01:00"
- },
- {
- "dst-port": 15,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:0e"
- },
- {
- "dst-port": 19,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:12"
- },
- {
- "dst-port": 10,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:09"
- },
- {
- "dst-port": 49,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:30"
- },
- {
- "dst-port": 10,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:09"
- },
- {
- "dst-port": 27,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:1a"
- },
- {
- "dst-port": 40,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:27"
- },
- {
- "dst-port": 18,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:11"
- },
- {
- "dst-port": 5,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:04"
- },
- {
- "dst-port": 4,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:03"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:ba:5e:ba:11",
- "src-port": 2,
- "src-switch": "00:00:00:16:97:08:9a:46"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:08:a2:08:f9:01",
- "src-port": 3,
- "src-switch": "00:00:00:16:97:08:9a:46"
- },
- {
- "dst-port": 51,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 4,
- "src-switch": "00:00:00:16:97:08:9a:46"
- },
- {
- "dst-port": 50,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:31"
- },
- {
- "dst-port": 30,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:1d"
- },
- {
- "dst-port": 14,
- "dst-switch": "00:00:00:00:00:00:03:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:03:0d"
- },
- {
- "dst-port": 16,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:0f"
- },
- {
- "dst-port": 22,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:15"
- },
- {
- "dst-port": 24,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:17"
- },
- {
- "dst-port": 21,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 5,
- "src-switch": "00:00:00:00:ba:5e:ba:11"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:16:97:08:9a:46",
- "src-port": 2,
- "src-switch": "00:00:00:00:ba:5e:ba:11"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:ba:5e:ba:13",
- "src-port": 3,
- "src-switch": "00:00:00:00:ba:5e:ba:11"
- },
- {
- "dst-port": 2,
- "dst-switch": "00:00:00:00:00:00:ba:12",
- "src-port": 4,
- "src-switch": "00:00:00:00:ba:5e:ba:11"
- },
- {
- "dst-port": 42,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:29"
- },
- {
- "dst-port": 11,
- "dst-switch": "00:00:00:00:00:00:02:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:02:0a"
- },
- {
- "dst-port": 47,
- "dst-switch": "00:00:00:00:00:00:01:00",
- "src-port": 2,
- "src-switch": "00:00:00:00:00:00:01:2e"
- }
-]
\ No newline at end of file
+[{"src-switch":"00:00:00:00:00:00:02:04","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:06:01","src-port":12,"dst-switch":"00:00:00:00:00:00:06:0c","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":22,"dst-switch":"00:00:00:00:00:00:06:16","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":20,"dst-switch":"00:00:00:00:00:00:06:14","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":6,"dst-switch":"00:00:00:00:00:00:06:06","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":13,"dst-switch":"00:00:00:00:00:00:06:0d","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":19,"dst-switch":"00:00:00:00:00:00:06:13","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":5,"dst-switch":"00:00:00:00:00:00:06:05","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":18,"dst-switch":"00:00:00:00:00:00:06:12","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":25,"dst-switch":"00:00:00:00:00:00:06:19","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":7,"dst-switch":"00:00:00:00:00:00:06:07","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":26,"dst-switch":"00:00:00:00:ba:5e:ba:13","dst-port":4},{"src-switch":"00:00:00:00:00:00:06:01","src-port":8,"dst-switch":"00:00:00:00:00:00:06:08","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":17,"dst-switch":"00:00:00:00:00:00:06:11","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":2,"dst-switch":"00:00:00:00:00:00:06:02","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":9,"dst-switch":"00:00:00:00:00:00:06:09","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":10,"dst-switch":"00:00:00:00:00:00:06:0a","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":23,"dst-switch":"00:00:00:00:00:00:06:17","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":16,"dst-switch":"00:00:00:00:00:00:06:10","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":15,"dst-switch":"00:00:00:00:00:00:06:0f","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":24,"dst-switch":"00:00:00:00:00:00:06:18","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":14,"dst-switch":"00:00:00:00:00:00:06:0e","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":21,"dst-switch":"00:00:00:00:00:00:06:15","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":3,"dst-switch":"00:00:00:00:00:00:06:03","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":11,"dst-switch":"00:00:00:00:00:00:06:0b","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":4,"dst-switch":"00:00:00:00:00:00:06:04","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:04:18","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":24},{"src-switch":"00:00:00:00:00:00:03:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:06:09","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":9},{"src-switch":"00:00:00:00:00:00:04:04","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:02:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:02:1d","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":29},{"src-switch":"00:00:00:00:00:00:04:08","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":8},{"src-switch":"00:00:00:00:00:00:02:06","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:02:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:02:10","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:06:07","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":7},{"src-switch":"00:00:00:00:00:00:07:12","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":18},{"src-switch":"00:00:00:00:00:00:04:10","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:06:0e","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":14},{"src-switch":"00:00:00:00:00:00:04:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:06:16","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":22},{"src-switch":"00:00:00:00:00:00:02:1f","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":31},{"src-switch":"00:00:00:00:00:00:02:2e","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":46},{"src-switch":"00:00:00:00:00:00:02:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:07:03","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":3},{"src-switch":"00:00:00:00:00:00:07:05","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:04:09","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":9},{"src-switch":"00:00:00:00:00:00:07:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:06:02","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:06:04","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:04:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:07:01","src-port":12,"dst-switch":"00:00:00:00:00:00:07:0c","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":22,"dst-switch":"00:00:00:00:00:00:07:16","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":20,"dst-switch":"00:00:00:00:00:00:07:14","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":6,"dst-switch":"00:00:00:00:00:00:07:06","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":13,"dst-switch":"00:00:00:00:00:00:07:0d","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":19,"dst-switch":"00:00:00:00:00:00:07:13","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":5,"dst-switch":"00:00:00:00:00:00:07:05","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":18,"dst-switch":"00:00:00:00:00:00:07:12","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":25,"dst-switch":"00:00:00:00:00:00:07:19","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":7,"dst-switch":"00:00:00:00:00:00:07:07","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":26,"dst-switch":"00:00:20:4e:7f:51:8a:35","dst-port":5},{"src-switch":"00:00:00:00:00:00:07:01","src-port":8,"dst-switch":"00:00:00:00:00:00:07:08","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":17,"dst-switch":"00:00:00:00:00:00:07:11","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":2,"dst-switch":"00:00:00:00:00:00:07:02","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":9,"dst-switch":"00:00:00:00:00:00:07:09","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":10,"dst-switch":"00:00:00:00:00:00:07:0a","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":23,"dst-switch":"00:00:00:00:00:00:07:17","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":16,"dst-switch":"00:00:00:00:00:00:07:10","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":15,"dst-switch":"00:00:00:00:00:00:07:0f","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":24,"dst-switch":"00:00:00:00:00:00:07:18","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":14,"dst-switch":"00:00:00:00:00:00:07:0e","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":21,"dst-switch":"00:00:00:00:00:00:07:15","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":3,"dst-switch":"00:00:00:00:00:00:07:03","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":11,"dst-switch":"00:00:00:00:00:00:07:0b","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":4,"dst-switch":"00:00:00:00:00:00:07:04","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:14","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":20},{"src-switch":"00:00:00:00:00:00:03:13","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:07:14","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":20},{"src-switch":"00:00:00:00:00:00:02:25","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":37},{"src-switch":"00:00:00:00:00:00:07:15","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":21},{"src-switch":"00:00:00:00:00:00:06:10","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:07:08","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":8},{"src-switch":"00:00:00:00:00:00:06:18","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":24},{"src-switch":"00:00:00:00:00:00:06:03","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":3},{"src-switch":"00:00:00:00:00:00:03:14","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":20},{"src-switch":"00:00:00:00:00:00:02:13","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:03:16","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":22},{"src-switch":"00:00:00:00:00:00:03:06","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:04:13","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:06:15","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":21},{"src-switch":"00:00:00:00:00:00:08:15","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":21},{"src-switch":"00:00:00:00:00:00:05:05","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:03:01","src-port":12,"dst-switch":"00:00:00:00:00:00:03:0c","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":22,"dst-switch":"00:00:00:00:00:00:03:16","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":20,"dst-switch":"00:00:00:00:00:00:03:14","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":6,"dst-switch":"00:00:00:00:00:00:03:06","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":13,"dst-switch":"00:00:00:00:00:00:03:0d","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":19,"dst-switch":"00:00:00:00:00:00:03:13","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":5,"dst-switch":"00:00:00:00:00:00:03:05","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":18,"dst-switch":"00:00:00:00:00:00:03:12","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":25,"dst-switch":"00:00:00:00:00:00:03:19","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":7,"dst-switch":"00:00:00:00:00:00:03:07","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":26,"dst-switch":"00:00:00:08:a2:08:f9:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:03:01","src-port":8,"dst-switch":"00:00:00:00:00:00:03:08","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":17,"dst-switch":"00:00:00:00:00:00:03:11","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":2,"dst-switch":"00:00:00:00:00:00:03:02","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":9,"dst-switch":"00:00:00:00:00:00:03:09","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":10,"dst-switch":"00:00:00:00:00:00:03:0a","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":23,"dst-switch":"00:00:00:00:00:00:03:17","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":16,"dst-switch":"00:00:00:00:00:00:03:10","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":15,"dst-switch":"00:00:00:00:00:00:03:0f","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":24,"dst-switch":"00:00:00:00:00:00:03:18","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":14,"dst-switch":"00:00:00:00:00:00:03:0e","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":21,"dst-switch":"00:00:00:00:00:00:03:15","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":3,"dst-switch":"00:00:00:00:00:00:03:03","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":11,"dst-switch":"00:00:00:00:00:00:03:0b","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":4,"dst-switch":"00:00:00:00:00:00:03:04","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:03:17","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":23},{"src-switch":"00:00:00:00:00:00:07:07","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":7},{"src-switch":"00:00:00:00:00:00:03:04","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:06:05","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:05:16","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":22},{"src-switch":"00:00:00:00:00:00:07:18","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":24},{"src-switch":"00:00:00:00:00:00:07:16","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":22},{"src-switch":"00:00:00:00:00:00:06:08","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":8},{"src-switch":"00:00:00:00:00:00:08:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:03:19","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":25},{"src-switch":"00:00:00:00:00:00:05:11","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":17},{"src-switch":"00:00:00:00:00:00:07:17","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":23},{"src-switch":"00:00:00:00:00:00:08:09","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":9},{"src-switch":"00:00:00:00:00:00:06:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:05:02","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:14","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":20},{"src-switch":"00:00:00:00:00:00:05:17","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":23},{"src-switch":"00:00:00:00:00:00:06:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:08:02","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:17","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":23},{"src-switch":"00:00:00:00:00:00:02:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":12},{"src-switch":"00:00:00:00:00:00:05:07","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":7},{"src-switch":"00:00:00:00:00:00:08:13","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:08:16","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":22},{"src-switch":"00:00:00:00:00:00:03:11","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":17},{"src-switch":"00:00:00:00:00:00:07:06","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:05:10","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:02:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:03:18","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":24},{"src-switch":"00:00:00:00:00:00:07:13","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:08:07","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":7},{"src-switch":"00:00:00:00:00:00:05:14","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":20},{"src-switch":"00:00:00:00:00:00:03:09","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":9},{"src-switch":"00:00:00:00:00:00:08:10","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:05:09","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":9},{"src-switch":"00:00:00:00:00:00:08:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:03:15","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":21},{"src-switch":"00:00:00:00:00:00:05:04","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:08:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":12},{"src-switch":"00:00:00:00:00:00:06:06","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:08:12","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":18},{"src-switch":"00:00:00:00:00:00:06:19","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":25},{"src-switch":"00:00:00:00:00:00:03:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:08:05","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:03:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:06:13","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:03:08","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":8},{"src-switch":"00:00:00:00:00:00:02:12","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":18},{"src-switch":"00:00:00:00:00:00:05:06","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:06:11","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":17},{"src-switch":"00:00:00:00:00:00:07:09","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":9},{"src-switch":"00:00:00:00:00:00:05:08","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":8},{"src-switch":"00:00:00:00:00:00:07:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:03:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":12},{"src-switch":"00:00:00:00:00:00:06:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:04:14","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":20},{"src-switch":"00:00:00:00:00:00:05:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":12},{"src-switch":"00:00:00:00:00:00:03:07","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":7},{"src-switch":"00:00:00:00:00:00:06:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":12},{"src-switch":"00:00:00:00:00:00:05:13","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:03:05","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:07:10","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:03:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:05:03","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":3},{"src-switch":"00:00:00:00:00:00:05:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:03:02","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:02","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:0e","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":14},{"src-switch":"00:00:00:00:00:00:04:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":12},{"src-switch":"00:00:00:00:00:00:08:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:04:05","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:05:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:03:03","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":3},{"src-switch":"00:00:00:00:00:00:05:15","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":21},{"src-switch":"00:00:00:00:00:00:03:10","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:04:06","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:05:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:04:12","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":18},{"src-switch":"00:00:00:00:00:00:04:17","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":23},{"src-switch":"00:00:00:00:00:00:06:17","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":23},{"src-switch":"00:00:00:00:00:00:04:07","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":7},{"src-switch":"00:00:00:00:00:00:08:06","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:07:11","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":17},{"src-switch":"00:00:00:00:00:00:08:0e","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":14},{"src-switch":"00:00:00:00:00:00:04:15","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":21},{"src-switch":"00:00:00:00:00:00:05:12","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":18},{"src-switch":"00:00:00:00:00:00:05:01","src-port":12,"dst-switch":"00:00:00:00:00:00:05:0c","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":22,"dst-switch":"00:00:00:00:00:00:05:16","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":20,"dst-switch":"00:00:00:00:00:00:05:14","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":6,"dst-switch":"00:00:00:00:00:00:05:06","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":13,"dst-switch":"00:00:00:00:00:00:05:0d","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":19,"dst-switch":"00:00:00:00:00:00:05:13","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":5,"dst-switch":"00:00:00:00:00:00:05:05","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":18,"dst-switch":"00:00:00:00:00:00:05:12","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":25,"dst-switch":"00:00:00:00:00:00:05:19","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":7,"dst-switch":"00:00:00:00:00:00:05:07","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":26,"dst-switch":"00:00:00:00:00:00:ba:12","dst-port":5},{"src-switch":"00:00:00:00:00:00:05:01","src-port":8,"dst-switch":"00:00:00:00:00:00:05:08","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":17,"dst-switch":"00:00:00:00:00:00:05:11","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":2,"dst-switch":"00:00:00:00:00:00:05:02","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":9,"dst-switch":"00:00:00:00:00:00:05:09","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":10,"dst-switch":"00:00:00:00:00:00:05:0a","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":23,"dst-switch":"00:00:00:00:00:00:05:17","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":16,"dst-switch":"00:00:00:00:00:00:05:10","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":15,"dst-switch":"00:00:00:00:00:00:05:0f","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":24,"dst-switch":"00:00:00:00:00:00:05:18","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":14,"dst-switch":"00:00:00:00:00:00:05:0e","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":21,"dst-switch":"00:00:00:00:00:00:05:15","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":3,"dst-switch":"00:00:00:00:00:00:05:03","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":11,"dst-switch":"00:00:00:00:00:00:05:0b","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":4,"dst-switch":"00:00:00:00:00:00:05:04","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:04","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:07:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":12},{"src-switch":"00:00:00:16:97:08:9a:46","src-port":3,"dst-switch":"00:00:20:4e:7f:51:8a:35","dst-port":2},{"src-switch":"00:00:00:16:97:08:9a:46","src-port":4,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":26},{"src-switch":"00:00:00:00:00:00:07:02","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:19","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":25},{"src-switch":"00:00:00:00:00:00:05:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:08:11","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":17},{"src-switch":"00:00:00:00:00:00:05:19","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":25},{"src-switch":"00:00:00:00:00:00:07:0e","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":14},{"src-switch":"00:00:00:00:00:00:07:04","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:05:18","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":24},{"src-switch":"00:00:00:00:00:00:04:03","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":3},{"src-switch":"00:00:00:00:00:00:08:03","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":3},{"src-switch":"00:00:00:00:00:00:08:08","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":8},{"src-switch":"00:00:00:00:00:00:05:0e","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":14},{"src-switch":"00:00:00:00:00:00:04:0e","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":14},{"src-switch":"00:00:00:00:00:00:04:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:04:11","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":17},{"src-switch":"00:00:00:00:00:00:02:02","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:16","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":22},{"src-switch":"00:00:00:00:00:00:04:01","src-port":12,"dst-switch":"00:00:00:00:00:00:04:0c","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":22,"dst-switch":"00:00:00:00:00:00:04:16","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":20,"dst-switch":"00:00:00:00:00:00:04:14","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":6,"dst-switch":"00:00:00:00:00:00:04:06","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":13,"dst-switch":"00:00:00:00:00:00:04:0d","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":19,"dst-switch":"00:00:00:00:00:00:04:13","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":5,"dst-switch":"00:00:00:00:00:00:04:05","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":18,"dst-switch":"00:00:00:00:00:00:04:12","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":25,"dst-switch":"00:00:00:00:00:00:04:19","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":7,"dst-switch":"00:00:00:00:00:00:04:07","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":26,"dst-switch":"00:00:00:00:00:00:ba:12","dst-port":4},{"src-switch":"00:00:00:00:00:00:04:01","src-port":8,"dst-switch":"00:00:00:00:00:00:04:08","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":17,"dst-switch":"00:00:00:00:00:00:04:11","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":2,"dst-switch":"00:00:00:00:00:00:04:02","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":9,"dst-switch":"00:00:00:00:00:00:04:09","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":10,"dst-switch":"00:00:00:00:00:00:04:0a","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":23,"dst-switch":"00:00:00:00:00:00:04:17","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":16,"dst-switch":"00:00:00:00:00:00:04:10","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":15,"dst-switch":"00:00:00:00:00:00:04:0f","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":24,"dst-switch":"00:00:00:00:00:00:04:18","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":14,"dst-switch":"00:00:00:00:00:00:04:0e","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":21,"dst-switch":"00:00:00:00:00:00:04:15","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":3,"dst-switch":"00:00:00:00:00:00:04:03","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":11,"dst-switch":"00:00:00:00:00:00:04:0b","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":4,"dst-switch":"00:00:00:00:00:00:04:04","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:19","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":25},{"src-switch":"00:00:00:00:00:00:04:19","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":25},{"src-switch":"00:00:00:00:00:00:08:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:08:18","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":24},{"src-switch":"00:00:00:00:00:00:06:12","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":18},{"src-switch":"00:00:00:00:00:00:08:01","src-port":12,"dst-switch":"00:00:00:00:00:00:08:0c","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":22,"dst-switch":"00:00:00:00:00:00:08:16","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":20,"dst-switch":"00:00:00:00:00:00:08:14","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":6,"dst-switch":"00:00:00:00:00:00:08:06","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":13,"dst-switch":"00:00:00:00:00:00:08:0d","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":19,"dst-switch":"00:00:00:00:00:00:08:13","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":5,"dst-switch":"00:00:00:00:00:00:08:05","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":18,"dst-switch":"00:00:00:00:00:00:08:12","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":25,"dst-switch":"00:00:00:00:00:00:08:19","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":7,"dst-switch":"00:00:00:00:00:00:08:07","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":26,"dst-switch":"00:00:00:16:97:08:9a:46","dst-port":4},{"src-switch":"00:00:00:00:00:00:08:01","src-port":8,"dst-switch":"00:00:00:00:00:00:08:08","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":17,"dst-switch":"00:00:00:00:00:00:08:11","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":2,"dst-switch":"00:00:00:00:00:00:08:02","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":9,"dst-switch":"00:00:00:00:00:00:08:09","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":10,"dst-switch":"00:00:00:00:00:00:08:0a","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":23,"dst-switch":"00:00:00:00:00:00:08:17","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":16,"dst-switch":"00:00:00:00:00:00:08:10","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":15,"dst-switch":"00:00:00:00:00:00:08:0f","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":24,"dst-switch":"00:00:00:00:00:00:08:18","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":14,"dst-switch":"00:00:00:00:00:00:08:0e","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":21,"dst-switch":"00:00:00:00:00:00:08:15","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":3,"dst-switch":"00:00:00:00:00:00:08:03","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":11,"dst-switch":"00:00:00:00:00:00:08:0b","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":4,"dst-switch":"00:00:00:00:00:00:08:04","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:03:12","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":18}]
\ No newline at end of file
diff --git a/web/ons-demo/data/wm_core_topology_switches_all_json.json b/web/ons-demo/data/wm_core_topology_switches_all_json.json
index cf23703..5b659a2 100644
--- a/web/ons-demo/data/wm_core_topology_switches_all_json.json
+++ b/web/ons-demo/data/wm_core_topology_switches_all_json.json
@@ -1,2318 +1 @@
-[
- {
- "dpid": "00:00:00:00:00:00:01:19",
- "ports": [
- {
- "desc": "sw01.25-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.25-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:0b",
- "ports": [
- {
- "desc": "sw01.11-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.11-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:06",
- "ports": [
- {
- "desc": "sw01.06-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.06-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:02",
- "ports": [
- {
- "desc": "sw01.02-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.02-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:12",
- "ports": [
- {
- "desc": "sw03.18-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.18-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:10",
- "ports": [
- {
- "desc": "sw01.16-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.16-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:0e",
- "ports": [
- {
- "desc": "sw02.14-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.14-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:13",
- "ports": [
- {
- "desc": "sw03.19-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.19-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:11",
- "ports": [
- {
- "desc": "sw03.17-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.17-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:1c",
- "ports": [
- {
- "desc": "sw01.28-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.28-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:11",
- "ports": [
- {
- "desc": "sw01.17-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.17-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:10",
- "ports": [
- {
- "desc": "sw02.16-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.16-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:2d",
- "ports": [
- {
- "desc": "sw01.45-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.45-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:1b",
- "ports": [
- {
- "desc": "sw01.27-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.27-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:20",
- "ports": [
- {
- "desc": "sw01.32-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.32-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:0f",
- "ports": [
- {
- "desc": "sw03.15-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.15-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:21",
- "ports": [
- {
- "desc": "sw01.33-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.33-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:0b",
- "ports": [
- {
- "desc": "sw03.11-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.11-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:2a",
- "ports": [
- {
- "desc": "sw01.42-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.42-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:00",
- "ports": [
- {
- "desc": "sw02.00-eth12",
- "devices": [],
- "number": 12,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth20",
- "devices": [],
- "number": 20,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth6",
- "devices": [],
- "number": 6,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth13",
- "devices": [],
- "number": 13,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth19",
- "devices": [],
- "number": 19,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth5",
- "devices": [],
- "number": 5,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth18",
- "devices": [],
- "number": 18,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth7",
- "devices": [],
- "number": 7,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth8",
- "devices": [],
- "number": 8,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth17",
- "devices": [],
- "number": 17,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth9",
- "devices": [],
- "number": 9,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth10",
- "devices": [],
- "number": 10,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth16",
- "devices": [],
- "number": 16,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth15",
- "devices": [],
- "number": 15,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth14",
- "devices": [],
- "number": 14,
- "state": "ACTIVE"
- },
- {
- "desc": "tapb0",
- "devices": [],
- "number": 21,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth3",
- "devices": [],
- "number": 3,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth11",
- "devices": [],
- "number": 11,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.00-eth4",
- "devices": [],
- "number": 4,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:08",
- "ports": [
- {
- "desc": "sw01.08-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.08-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:0c",
- "ports": [
- {
- "desc": "sw03.12-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.12-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:2b",
- "ports": [
- {
- "desc": "sw01.43-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.43-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:04",
- "ports": [
- {
- "desc": "sw02.04-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.04-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:10",
- "ports": [
- {
- "desc": "sw03.16-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.16-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:04",
- "ports": [
- {
- "desc": "sw01.04-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.04-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:25",
- "ports": [
- {
- "desc": "sw01.37-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.37-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:24",
- "ports": [
- {
- "desc": "sw01.36-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.36-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:07",
- "ports": [
- {
- "desc": "sw02.07-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.07-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:06",
- "ports": [
- {
- "desc": "sw03.06-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.06-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:1e",
- "ports": [
- {
- "desc": "sw01.30-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.30-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:07",
- "ports": [
- {
- "desc": "sw03.07-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.07-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:0d",
- "ports": [
- {
- "desc": "sw01.13-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.13-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:02",
- "ports": [
- {
- "desc": "sw02.02-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.02-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:12",
- "ports": [
- {
- "desc": "sw01.18-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.18-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:ba:5e:ba:13",
- "ports": [
- {
- "desc": "swd5-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "swd5-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- },
- {
- "desc": "swd5-eth3",
- "devices": [],
- "number": 3,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:2c",
- "ports": [
- {
- "desc": "sw01.44-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.44-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:08",
- "ports": [
- {
- "desc": "sw02.08-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.08-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:0a",
- "ports": [
- {
- "desc": "sw03.10-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.10-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:13",
- "ports": [
- {
- "desc": "sw01.19-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.19-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:08:a2:08:f9:01",
- "ports": [
- {
- "desc": "swd3-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "swd3-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- },
- {
- "desc": "swd3-eth3",
- "devices": [],
- "number": 3,
- "state": "ACTIVE"
- },
- {
- "desc": "tapd2",
- "devices": [],
- "number": 4,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:05",
- "ports": [
- {
- "desc": "sw03.05-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.05-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:23",
- "ports": [
- {
- "desc": "sw01.35-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.35-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:0b",
- "ports": [
- {
- "desc": "sw02.11-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.11-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:05",
- "ports": [
- {
- "desc": "sw01.05-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.05-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:20:4e:7f:51:8a:35",
- "ports": [
- {
- "desc": "swd6-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "swd6-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- },
- {
- "desc": "swd6-eth3",
- "devices": [],
- "number": 3,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:03",
- "ports": [
- {
- "desc": "sw03.03-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.03-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:07",
- "ports": [
- {
- "desc": "sw01.07-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.07-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:0c",
- "ports": [
- {
- "desc": "sw02.12-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.12-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:2f",
- "ports": [
- {
- "desc": "sw01.47-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.47-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:0c",
- "ports": [
- {
- "desc": "sw01.12-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.12-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:09",
- "ports": [
- {
- "desc": "sw03.09-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.09-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:0f",
- "ports": [
- {
- "desc": "sw02.15-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.15-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:0e",
- "ports": [
- {
- "desc": "sw03.14-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.14-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:28",
- "ports": [
- {
- "desc": "sw01.40-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.40-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:05",
- "ports": [
- {
- "desc": "sw02.05-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.05-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:26",
- "ports": [
- {
- "desc": "sw01.38-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.38-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:22",
- "ports": [
- {
- "desc": "sw01.34-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.34-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:0d",
- "ports": [
- {
- "desc": "sw02.13-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.13-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:1f",
- "ports": [
- {
- "desc": "sw01.31-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.31-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:16",
- "ports": [
- {
- "desc": "sw01.22-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.22-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:01",
- "ports": [
- {
- "desc": "sw02.01-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.01-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:08",
- "ports": [
- {
- "desc": "sw03.08-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.08-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:01",
- "ports": [
- {
- "desc": "sw03.01-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.01-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:01",
- "ports": [
- {
- "desc": "sw01.01-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.01-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:ba:12",
- "ports": [
- {
- "desc": "swd4-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "swd4-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- },
- {
- "desc": "swd4-eth3",
- "devices": [],
- "number": 3,
- "state": "ACTIVE"
- },
- {
- "desc": "swd4-eth4",
- "devices": [],
- "number": 4,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:00",
- "ports": [
- {
- "desc": "sw03.00-eth12",
- "devices": [],
- "number": 12,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth20",
- "devices": [],
- "number": 20,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth6",
- "devices": [],
- "number": 6,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth13",
- "devices": [],
- "number": 13,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth19",
- "devices": [],
- "number": 19,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth5",
- "devices": [],
- "number": 5,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth18",
- "devices": [],
- "number": 18,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth7",
- "devices": [],
- "number": 7,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth8",
- "devices": [],
- "number": 8,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth17",
- "devices": [],
- "number": 17,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth9",
- "devices": [],
- "number": 9,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth10",
- "devices": [],
- "number": 10,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth16",
- "devices": [],
- "number": 16,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth15",
- "devices": [],
- "number": 15,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth14",
- "devices": [],
- "number": 14,
- "state": "ACTIVE"
- },
- {
- "desc": "tapc0",
- "devices": [],
- "number": 21,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth3",
- "devices": [],
- "number": 3,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth11",
- "devices": [],
- "number": 11,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.00-eth4",
- "devices": [],
- "number": 4,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:14",
- "ports": [
- {
- "desc": "sw01.20-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.20-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:0a",
- "ports": [
- {
- "desc": "sw01.10-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.10-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:18",
- "ports": [
- {
- "desc": "sw01.24-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.24-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:13",
- "ports": [
- {
- "desc": "sw02.19-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.19-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:02",
- "ports": [
- {
- "desc": "sw03.02-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.02-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:03",
- "ports": [
- {
- "desc": "sw01.03-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.03-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:06",
- "ports": [
- {
- "desc": "sw02.06-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.06-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:00",
- "ports": [
- {
- "desc": "sw01.00-eth40",
- "devices": [],
- "number": 40,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth22",
- "devices": [],
- "number": 22,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth49",
- "devices": [],
- "number": 49,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth12",
- "devices": [],
- "number": 12,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth31",
- "devices": [],
- "number": 31,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth20",
- "devices": [],
- "number": 20,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth6",
- "devices": [],
- "number": 6,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth27",
- "devices": [],
- "number": 27,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth34",
- "devices": [],
- "number": 34,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth19",
- "devices": [],
- "number": 19,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth13",
- "devices": [],
- "number": 13,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth41",
- "devices": [],
- "number": 41,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth48",
- "devices": [],
- "number": 48,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth5",
- "devices": [],
- "number": 5,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth28",
- "devices": [],
- "number": 28,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth33",
- "devices": [],
- "number": 33,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth18",
- "devices": [],
- "number": 18,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth42",
- "devices": [],
- "number": 42,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth25",
- "devices": [],
- "number": 25,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth47",
- "devices": [],
- "number": 47,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth46",
- "devices": [],
- "number": 46,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth7",
- "devices": [],
- "number": 7,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth26",
- "devices": [],
- "number": 26,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth36",
- "devices": [],
- "number": 36,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth8",
- "devices": [],
- "number": 8,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth45",
- "devices": [],
- "number": 45,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth35",
- "devices": [],
- "number": 35,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth17",
- "devices": [],
- "number": 17,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth9",
- "devices": [],
- "number": 9,
- "state": "ACTIVE"
- },
- {
- "desc": "tapa0",
- "devices": [],
- "number": 51,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth37",
- "devices": [],
- "number": 37,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth44",
- "devices": [],
- "number": 44,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth43",
- "devices": [],
- "number": 43,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth16",
- "devices": [],
- "number": 16,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth30",
- "devices": [],
- "number": 30,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth23",
- "devices": [],
- "number": 23,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth10",
- "devices": [],
- "number": 10,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth15",
- "devices": [],
- "number": 15,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth38",
- "devices": [],
- "number": 38,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth29",
- "devices": [],
- "number": 29,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth24",
- "devices": [],
- "number": 24,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth14",
- "devices": [],
- "number": 14,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth21",
- "devices": [],
- "number": 21,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth3",
- "devices": [],
- "number": 3,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth39",
- "devices": [],
- "number": 39,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth32",
- "devices": [],
- "number": 32,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth11",
- "devices": [],
- "number": 11,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth4",
- "devices": [],
- "number": 4,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.00-eth50",
- "devices": [],
- "number": 50,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:0e",
- "ports": [
- {
- "desc": "sw01.14-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.14-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:12",
- "ports": [
- {
- "desc": "sw02.18-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.18-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:09",
- "ports": [
- {
- "desc": "sw01.09-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.09-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:30",
- "ports": [
- {
- "desc": "sw01.48-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.48-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:09",
- "ports": [
- {
- "desc": "sw02.09-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.09-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:1a",
- "ports": [
- {
- "desc": "sw01.26-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.26-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:27",
- "ports": [
- {
- "desc": "sw01.39-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.39-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:11",
- "ports": [
- {
- "desc": "sw02.17-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.17-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:04",
- "ports": [
- {
- "desc": "sw03.04-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.04-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:03",
- "ports": [
- {
- "desc": "sw02.03-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.03-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:16:97:08:9a:46",
- "ports": [
- {
- "desc": "swd1-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "swd1-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- },
- {
- "desc": "swd1-eth3",
- "devices": [],
- "number": 3,
- "state": "ACTIVE"
- },
- {
- "desc": "tapd0",
- "devices": [],
- "number": 4,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:31",
- "ports": [
- {
- "desc": "sw01.49-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.49-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:1d",
- "ports": [
- {
- "desc": "sw01.29-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.29-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:03:0d",
- "ports": [
- {
- "desc": "sw03.13-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw03.13-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:0f",
- "ports": [
- {
- "desc": "sw01.15-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.15-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:15",
- "ports": [
- {
- "desc": "sw01.21-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.21-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:17",
- "ports": [
- {
- "desc": "sw01.23-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.23-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:ba:5e:ba:11",
- "ports": [
- {
- "desc": "tapd1",
- "devices": [],
- "number": 5,
- "state": "ACTIVE"
- },
- {
- "desc": "swd2-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "swd2-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- },
- {
- "desc": "swd2-eth3",
- "devices": [],
- "number": 3,
- "state": "ACTIVE"
- },
- {
- "desc": "swd2-eth4",
- "devices": [],
- "number": 4,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:29",
- "ports": [
- {
- "desc": "sw01.41-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.41-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:02:0a",
- "ports": [
- {
- "desc": "sw02.10-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw02.10-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- },
- {
- "dpid": "00:00:00:00:00:00:01:2e",
- "ports": [
- {
- "desc": "sw01.46-eth2",
- "devices": [],
- "number": 2,
- "state": "ACTIVE"
- },
- {
- "desc": "sw01.46-eth1",
- "devices": [],
- "number": 1,
- "state": "ACTIVE"
- }
- ],
- "state": "ACTIVE"
- }
-]
\ No newline at end of file
+[{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:04"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":12,"desc":"sw06.01-eth12","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw06.01-eth22","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw06.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw06.01-eth6","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw06.01-eth13","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw06.01-eth19","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw06.01-eth5","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw06.01-eth18","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw06.01-eth25","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw06.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"tap06_1","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw06.01-eth8","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw06.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw06.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw06.01-eth9","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw06.01-eth10","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw06.01-eth23","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw06.01-eth16","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw06.01-eth15","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw06.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw06.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw06.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw06.01-eth3","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw06.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw06.01-eth4","devices":[]}],"dpid":"00:00:00:00:00:00:06:01"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:18"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:0b"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.38-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.38-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:26"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:09"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:04"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:0b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.29-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.29-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:1d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:06"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:10"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.39-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.39-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:27"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:12"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:10"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:0e"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:19"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:0f"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:16"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.31-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.31-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:1f"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.32-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.32-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:20"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.46-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.46-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:2e"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:0d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:03"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:15"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:09"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.33-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.33-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:21"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:02"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:0d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:04"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:0b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":12,"desc":"sw07.01-eth12","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw07.01-eth22","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw07.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw07.01-eth6","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw07.01-eth13","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw07.01-eth19","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw07.01-eth5","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw07.01-eth18","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw07.01-eth25","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw07.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"tap07_1","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw07.01-eth8","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw07.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw07.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw07.01-eth9","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw07.01-eth10","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw07.01-eth23","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw07.01-eth16","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw07.01-eth15","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw07.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw07.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw07.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw07.01-eth3","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw07.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw07.01-eth4","devices":[]}],"dpid":"00:00:00:00:00:00:07:01"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:14"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:13"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:17"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.50-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.50-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:32"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:14"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.27-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.27-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:1b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.37-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.37-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:25"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:15"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.28-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.28-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:1c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:10"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:18"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:18"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:03"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:14"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:13"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:16"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:06"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:13"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:15"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:15"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":12,"desc":"sw03.01-eth12","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw03.01-eth22","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw03.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw03.01-eth6","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw03.01-eth13","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw03.01-eth19","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw03.01-eth5","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw03.01-eth18","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw03.01-eth25","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw03.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"tap03_1","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw03.01-eth8","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw03.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw03.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw03.01-eth9","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw03.01-eth10","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw03.01-eth23","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw03.01-eth16","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw03.01-eth15","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw03.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw03.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw03.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw03.01-eth3","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw03.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw03.01-eth4","devices":[]}],"dpid":"00:00:00:00:00:00:03:01"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:0f"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:17"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":40,"desc":"sw02.01-eth40","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw02.01-eth22","devices":[]},{"state":"ACTIVE","number":49,"desc":"sw02.01-eth49","devices":[]},{"state":"ACTIVE","number":12,"desc":"sw02.01-eth12","devices":[]},{"state":"ACTIVE","number":31,"desc":"sw02.01-eth31","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw02.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw02.01-eth6","devices":[]},{"state":"ACTIVE","number":27,"desc":"sw02.01-eth27","devices":[]},{"state":"ACTIVE","number":34,"desc":"sw02.01-eth34","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw02.01-eth19","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw02.01-eth13","devices":[]},{"state":"ACTIVE","number":41,"desc":"sw02.01-eth41","devices":[]},{"state":"ACTIVE","number":48,"desc":"sw02.01-eth48","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw02.01-eth5","devices":[]},{"state":"ACTIVE","number":28,"desc":"sw02.01-eth28","devices":[]},{"state":"ACTIVE","number":33,"desc":"sw02.01-eth33","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw02.01-eth18","devices":[]},{"state":"ACTIVE","number":42,"desc":"sw02.01-eth42","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw02.01-eth25","devices":[]},{"state":"ACTIVE","number":47,"desc":"sw02.01-eth47","devices":[]},{"state":"ACTIVE","number":46,"desc":"sw02.01-eth46","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw02.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"sw02.01-eth26","devices":[]},{"state":"ACTIVE","number":36,"desc":"sw02.01-eth36","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw02.01-eth8","devices":[]},{"state":"ACTIVE","number":45,"desc":"sw02.01-eth45","devices":[]},{"state":"ACTIVE","number":35,"desc":"sw02.01-eth35","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw02.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw02.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw02.01-eth9","devices":[]},{"state":"ACTIVE","number":51,"desc":"tap02_1","devices":[]},{"state":"ACTIVE","number":37,"desc":"sw02.01-eth37","devices":[]},{"state":"ACTIVE","number":44,"desc":"sw02.01-eth44","devices":[]},{"state":"ACTIVE","number":43,"desc":"sw02.01-eth43","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw02.01-eth16","devices":[]},{"state":"ACTIVE","number":30,"desc":"sw02.01-eth30","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw02.01-eth23","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw02.01-eth10","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw02.01-eth15","devices":[]},{"state":"ACTIVE","number":38,"desc":"sw02.01-eth38","devices":[]},{"state":"ACTIVE","number":29,"desc":"sw02.01-eth29","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw02.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw02.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw02.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw02.01-eth3","devices":[]},{"state":"ACTIVE","number":39,"desc":"sw02.01-eth39","devices":[]},{"state":"ACTIVE","number":32,"desc":"sw02.01-eth32","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw02.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw02.01-eth4","devices":[]},{"state":"ACTIVE","number":50,"desc":"sw02.01-eth50","devices":[]}],"dpid":"00:00:00:00:00:00:02:01"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.48-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.48-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:30"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:04"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:16"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:16"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:18"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:16"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:0f"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:19"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:17"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:09"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:0b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:02"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:14"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:09"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:17"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:0d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:02"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:17"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:0c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:13"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:16"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:06"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:10"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:0f"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:18"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:13"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:14"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.41-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.41-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:29"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:09"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:10"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:09"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:03"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:15"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.30-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.30-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:1e"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:04"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:0c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:06"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:12"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:19"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:0d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:13"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:12"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:06"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:09"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:0b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:0c"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:0f"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:14"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:0c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:0c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:13"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:10"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:0f"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:03"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:0f"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.26-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.26-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:1a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:02"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:0e"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:02"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:0e"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:0c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:0d"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.49-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.49-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:31"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:03"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:15"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:10"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:06"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw3-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw3-eth1","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw3-eth3","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw3-eth4","devices":[]},{"state":"ACTIVE","number":5,"desc":"tap01_3","devices":[]}],"dpid":"00:00:00:08:a2:08:f9:01"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:0d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:12"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:17"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:17"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:06"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.40-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.40-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:28"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.44-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.44-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:2c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:0e"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:15"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:12"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":12,"desc":"sw05.01-eth12","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw05.01-eth22","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw05.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw05.01-eth6","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw05.01-eth13","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw05.01-eth19","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw05.01-eth5","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw05.01-eth18","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw05.01-eth25","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw05.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"tap05_1","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw05.01-eth8","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw05.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw05.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw05.01-eth9","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw05.01-eth10","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw05.01-eth23","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw05.01-eth16","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw05.01-eth15","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw05.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw05.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw05.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw05.01-eth3","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw05.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw05.01-eth4","devices":[]}],"dpid":"00:00:00:00:00:00:05:01"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:04"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:0c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":1,"desc":"sw1-eth1","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw1-eth3","devices":[]},{"state":"ACTIVE","number":4,"desc":"tap01_8","devices":[]}],"dpid":"00:00:00:16:97:08:9a:46"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:02"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.36-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.36-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:24"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:19"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw5-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw5-eth1","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw5-eth3","devices":[]},{"state":"ACTIVE","number":4,"desc":"tap01_6","devices":[]}],"dpid":"00:00:00:00:ba:5e:ba:13"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:0b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:11"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw6-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw6-eth1","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw6-eth3","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw6-eth4","devices":[]},{"state":"ACTIVE","number":5,"desc":"tap01_7","devices":[]}],"dpid":"00:00:20:4e:7f:51:8a:35"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:19"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:0e"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:14"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:04"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:18"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:03"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:03"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:0e"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:0e"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:02"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:16"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":1,"desc":"sw2-eth1","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw2-eth3","devices":[]},{"state":"ACTIVE","number":4,"desc":"tap01_2","devices":[]}],"dpid":"00:00:00:00:ba:5e:ba:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":12,"desc":"sw04.01-eth12","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw04.01-eth22","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw04.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw04.01-eth6","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw04.01-eth13","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw04.01-eth19","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw04.01-eth5","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw04.01-eth18","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw04.01-eth25","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw04.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"tap04_1","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw04.01-eth8","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw04.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw04.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw04.01-eth9","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw04.01-eth10","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw04.01-eth23","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw04.01-eth16","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw04.01-eth15","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw04.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw04.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw04.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw04.01-eth3","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw04.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw04.01-eth4","devices":[]}],"dpid":"00:00:00:00:00:00:04:01"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:19"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:19"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:0b"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.43-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.43-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:2b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:18"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.45-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.45-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:2d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:12"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":12,"desc":"sw08.01-eth12","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw08.01-eth22","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw08.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw08.01-eth6","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw08.01-eth13","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw08.01-eth19","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw08.01-eth5","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw08.01-eth18","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw08.01-eth25","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw08.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"tap08_1","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw08.01-eth8","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw08.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw08.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw08.01-eth9","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw08.01-eth10","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw08.01-eth23","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw08.01-eth16","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw08.01-eth15","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw08.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw08.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw08.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw08.01-eth3","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw08.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw08.01-eth4","devices":[]}],"dpid":"00:00:00:00:00:00:08:01"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.35-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.35-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:23"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:0d"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.47-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.47-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:2f"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.34-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.34-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:22"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw4-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw4-eth1","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw4-eth3","devices":[]},{"state":"ACTIVE","number":4,"desc":"tap01_4","devices":[]},{"state":"ACTIVE","number":5,"desc":"tap01_5","devices":[]}],"dpid":"00:00:00:00:00:00:ba:12"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.42-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.42-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:2a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:12"}]
\ No newline at end of file
diff --git a/web/ons-demo/data/wm_registry_controllers_json.json b/web/ons-demo/data/wm_registry_controllers_json.json
index 18dc9b0..38b0907 100644
--- a/web/ons-demo/data/wm_registry_controllers_json.json
+++ b/web/ons-demo/data/wm_registry_controllers_json.json
@@ -1,6 +1 @@
-[
- "onos9vpc",
- "onos10vpc",
- "onos11vpc",
- "onos12vpc"
-]
\ No newline at end of file
+["onosgui1","onosgui2","onosgui3","onosgui4","onosgui5","onosgui6","onosgui7","onosgui8"]
\ No newline at end of file
diff --git a/web/ons-demo/data/wm_registry_switches_json.json b/web/ons-demo/data/wm_registry_switches_json.json
index da2e5aa..841cdb6 100644
--- a/web/ons-demo/data/wm_registry_switches_json.json
+++ b/web/ons-demo/data/wm_registry_switches_json.json
@@ -1,1022 +1 @@
-{
- "00:00:00:00:00:00:01:00": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:01:01": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:02": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:03": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:01:04": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:05": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:06": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:07": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:08": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:09": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:0a": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:0b": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:0c": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:0d": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:0e": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:0f": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:10": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:11": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:12": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:13": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:14": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- }
- ],
- "00:00:00:00:00:00:01:15": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:16": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:17": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:18": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- }
- ],
- "00:00:00:00:00:00:01:19": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:1a": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:01:1b": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:01:1c": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:1d": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:1e": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:1f": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:20": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:21": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:22": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:23": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:24": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:25": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:26": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:27": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:28": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:29": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:01:2a": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:2b": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:2c": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:2d": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:2e": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:01:2f": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:01:30": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- }
- ],
- "00:00:00:00:00:00:01:31": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:02:00": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- }
- ],
- "00:00:00:00:00:00:02:01": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- }
- ],
- "00:00:00:00:00:00:02:02": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- }
- ],
- "00:00:00:00:00:00:02:03": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:02:04": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:02:05": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- }
- ],
- "00:00:00:00:00:00:02:06": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:02:07": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:02:08": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:02:09": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:02:0a": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:02:0b": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:02:0c": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:02:0d": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:02:0e": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:02:0f": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:02:10": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:02:11": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:02:12": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:02:13": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:03:00": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:01": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:02": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- }
- ],
- "00:00:00:00:00:00:03:03": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:04": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:05": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:03:06": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:07": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:08": [
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:03:09": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:0a": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:0b": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:0c": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:0d": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:0e": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:0f": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:10": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:11": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:00:00:00:03:12": [
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- },
- {
- "controllerId": "onos9vpc"
- }
- ],
- "00:00:00:00:00:00:03:13": [
- {
- "controllerId": "onos9vpc"
- },
- {
- "controllerId": "onos11vpc"
- },
- {
- "controllerId": "onos10vpc"
- }
- ],
- "00:00:00:16:97:08:9a:46": [
- {
- "controllerId": "onos12vpc"
- }
- ],
- "00:00:00:00:ba:5e:ba:11": [
- {
- "controllerId": "onos12vpc"
- }
- ],
- "00:00:00:08:a2:08:f9:01": [
- {
- "controllerId": "onos12vpc"
- }
- ],
- "00:00:00:00:00:00:ba:12": [
- {
- "controllerId": "onos12vpc"
- }
- ],
- "00:00:00:00:ba:5e:ba:13": [
- {
- "controllerId": "onos12vpc"
- }
- ],
- "00:00:20:4e:7f:51:8a:35": [
- {
- "controllerId": "onos12vpc"
- }
- ]
-}
\ No newline at end of file
+{"00:00:00:00:00:00:02:08":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:09":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:16":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:15":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:18":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:17":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:07:0a":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:12":[{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:0b":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:11":[{"controllerId":"onosgui2"},{"controllerId":"onosgui7"}],"00:00:00:00:00:00:07:0c":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:14":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:07:0d":[{"controllerId":"onosgui7"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:13":[{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:0e":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:0f":[{"controllerId":"onosgui7"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:10":[{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:0f":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:0d":[{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:0e":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:0b":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:0c":[{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:0a":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:19":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:29":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:28":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:27":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:26":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:25":[{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:24":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:23":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:22":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:21":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:20":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:07:02":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:01":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:04":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:03":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:17":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:18":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:19":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:13":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:14":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:09":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:15":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:16":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:06":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:10":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:05":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:11":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:08":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:12":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:07":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:16:97:08:9a:46":[{"controllerId":"onosgui1"},{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui5"},{"controllerId":"onosgui6"},{"controllerId":"onosgui4"},{"controllerId":"onosgui2"},{"controllerId":"onosgui3"}],"00:00:00:00:00:00:04:10":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:11":[{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:12":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:13":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:14":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:15":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:16":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:17":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:18":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:19":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:15":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:14":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:13":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:12":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:11":[{"controllerId":"onosgui7"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:0a":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:0f":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:10":[{"controllerId":"onosgui7"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:0e":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:0d":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:0c":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:0e":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:0b":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:0d":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:0a":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:0c":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:0b":[{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:19":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:18":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:17":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:16":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:0f":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:03":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:02":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:01":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:07":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:06":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:05":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:04":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:0f":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:0e":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:0d":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:0c":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:0b":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:08:a2:08:f9:01":[{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:0a":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:11":[{"controllerId":"onosgui5"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:10":[{"controllerId":"onosgui5"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:13":[{"controllerId":"onosgui5"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:12":[{"controllerId":"onosgui5"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:15":[{"controllerId":"onosgui5"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:14":[{"controllerId":"onosgui5"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:17":[{"controllerId":"onosgui5"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:16":[{"controllerId":"onosgui5"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:19":[{"controllerId":"onosgui5"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:18":[{"controllerId":"onosgui5"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:01":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:05":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:04":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:03":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:02":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:09":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:08":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:07":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:0e":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:06":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:0f":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:0c":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:0d":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:0a":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:0b":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:02":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:01":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:06":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:05":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:04":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:03":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:09":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:08":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:07":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:09":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:1b":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:1a":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:1d":[{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:1c":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:1f":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:1e":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:30":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:31":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:03:11":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:32":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:03:10":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:13":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:12":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:15":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:14":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:17":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:16":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:19":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:18":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:2a":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:2e":[{"controllerId":"onosgui2"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:2d":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:2c":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:2b":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:2f":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:03:04":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:03":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:02":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:01":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:08":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:07":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:06":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:05":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:ba:12":[{"controllerId":"onosgui1"}],"00:00:20:4e:7f:51:8a:35":[{"controllerId":"onosgui1"}],"00:00:00:00:ba:5e:ba:11":[{"controllerId":"onosgui1"}],"00:00:00:00:ba:5e:ba:13":[{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:03":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:02":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:05":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:04":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:07":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:06":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:09":[{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:08":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:01":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:09":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:08":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:05":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:04":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:07":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:06":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:01":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:03":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:02":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:0d":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:0e":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:0f":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:0a":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:0b":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:0c":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:18":[{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:17":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:16":[{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:15":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:19":[{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:10":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:14":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:13":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:12":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:11":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}]}
\ No newline at end of file
diff --git a/web/ons-demo/index.html b/web/ons-demo/index.html
index ef2cd65..36d50db 100644
--- a/web/ons-demo/index.html
+++ b/web/ons-demo/index.html
@@ -5,6 +5,7 @@
<link rel="stylesheet" href="css/skin.default.css" type="text/css"/>
<script src="js/d3.v3.js" charset="utf-8"></script>
<script src="js/async.js"></script>
+ <script src="js/utils.js"></script>
<script src="js/model.js"></script>
</head>
@@ -15,22 +16,24 @@
<img id='logo' src='assets/logo.png'></img>
</div>
<div id='controllers'>
- <div class='header'>Controllers</div>
+ <div class='header'>ONOS Nodes</div>
<div id='controllerList'></div>
</div>
</div>
<div id='right'>
<div class='header'>
- <div id='status'>
- <div class='status'><span class='static'>Last updated:</span><span id='lastUpdate' class='dynamic'>Mon Mar 18 11:11:12 PDT 2013</span></div>
- <div class='status'><span class='dynamic' id='activeFlows'>4000</span><span class='static'>Flows</span></div>
- <div class='status'><span class='dynamic' id='activeSwitches'>200</span><span class='static'>Active Switches</span></div>
+ <div id='status' class='top'>
+ <div class='status'><span class='dynamic' id='activeFlows'>????</span><span class='static'>Flows</span></div>
+ <div class='status'><span class='dynamic' id='activeSwitches'>???</span><span class='static'>Active Switches</span></div>
</div>
<div id='traceButton' class='button'>Trace</div>
</div>
<div id='selectedFlows'>Selected Flows</div>
- <div id='topology'><div id='svg-container'> </div></div>
+ <div id='topology'>
+ <div id='svg-container'></div>
+ <div class='status bottom'><span class='static'>Last updated:</span><span id='lastUpdate' class='dynamic'>Mon Mar 18 11:11:12 PDT 2013</span></div>
+ </div>
</div>
diff --git a/web/ons-demo/js/app.js b/web/ons-demo/js/app.js
index 6f259d0..2e9048d 100644
--- a/web/ons-demo/js/app.js
+++ b/web/ons-demo/js/app.js
@@ -1,5 +1,10 @@
/*global d3*/
+d3.selection.prototype.moveToFront = function() {
+ return this.each(function(){
+ this.parentNode.appendChild(this);
+ });
+};
var colors = [
'color1',
@@ -15,13 +20,26 @@
'color11',
'color12',
]
+colors.reverse();
var controllerColorMap = {};
function createTopologyView() {
- return d3.select('#svg-container').append('svg:svg').append('svg:svg').attr('id', 'viewBox').attr('viewBox', '0 0 1000 1000').attr('preserveAspectRatio', 'none').
+ var svg = d3.select('#svg-container').append('svg:svg');
+
+ svg.append("svg:defs").append("svg:marker")
+ .attr("id", "arrow")
+ .attr("viewBox", "0 -5 10 10")
+ .attr("refX", -1)
+ .attr("markerWidth", 5)
+ .attr("markerHeight", 5)
+ .attr("orient", "auto")
+ .append("svg:path")
+ .attr("d", "M0,-3L10,0L0,3");
+
+ return svg.append('svg:svg').attr('id', 'viewBox').attr('viewBox', '0 0 1000 1000').attr('preserveAspectRatio', 'none').
attr('id', 'viewbox').append('svg:g').attr('transform', 'translate(500 500)');
}
@@ -35,9 +53,7 @@
return angle * (Math.PI / 180);
}
-function updateTopology(svg, model) {
-
- // DRAW THE NODES
+function createRingsFromModel(model) {
var rings = [{
radius: 3,
width: 6,
@@ -70,7 +86,7 @@
// record the angle for the agg switch layout
var dpid = s.dpid.split(':');
- dpid[7] = '00';
+ dpid[7] = '01'; // the last component of the agg switch is always '01'
var aggdpid = dpid.join(':');
var aggRange = aggRanges[aggdpid];
if (!aggRange) {
@@ -79,8 +95,6 @@
} else {
aggRange.max = angle;
}
-
-
});
// arrange aggregation switches to "fan out" to edge switches
@@ -92,92 +106,228 @@
rings[1].angles[i] = (range.min + range.max)/2;
});
- // arrange core switches at equal increments
- k = 360 / rings[2].switches.length;
- rings[2].switches.forEach(function (s, i) {
- rings[2].angles[i] = k * i;
+ // find the association between core switches and aggregation switches
+ var aggregationSwitchMap = {};
+ model.aggregationSwitches.forEach(function (s, i) {
+ aggregationSwitchMap[s.dpid] = i;
});
+ // put core switches next to linked aggregation switches
+ k = 360 / rings[2].switches.length;
+ rings[2].switches.forEach(function (s, i) {
+// rings[2].angles[i] = k * i;
+ var associatedAggregationSwitches = model.configuration.association[s.dpid];
+ // TODO: go between if there are multiple
+ var index = aggregationSwitchMap[associatedAggregationSwitches[0]];
+
+ rings[2].angles[i] = rings[1].angles[index];
+ });
+
+ // TODO: construct this form initially rather than converting. it works better because
+ // it allows binding by dpid
+ var testRings = [];
+ rings.forEach(function (ring) {
+ var testRing = [];
+ ring.switches.forEach(function (s, i) {
+ var testSwitch = {
+ dpid: s.dpid,
+ state: s.state,
+ radius: ring.radius,
+ width: ring.width,
+ className: ring.className,
+ angle: ring.angles[i],
+ controller: s.controller
+ }
+ testRing.push(testSwitch);
+ });
+
+
+ testRings.push(testRing);
+ });
+
+
+// return rings;
+ return testRings;
+}
+
+function updateTopology(svg, model) {
+
+ // DRAW THE SWITCHES
+ var rings = svg.selectAll('.ring').data(createRingsFromModel(model));
+
function ringEnter(data, i) {
- if (!data.switches.length) {
+ if (!data.length) {
return;
}
-
+ // create the nodes
var nodes = d3.select(this).selectAll("g")
- .data(d3.range(data.switches.length).map(function() {
- return data;
- }))
+ .data(data, function (data) {
+ return data.dpid;
+ })
.enter().append("svg:g")
.classed('nolabel', true)
- .attr("id", function (_, i) {
- return data.switches[i].dpid;
+ .attr("id", function (data, i) {
+ return data.dpid;
})
- .attr("transform", function(_, i) {
- return "rotate(" + data.angles[i]+ ")translate(" + data.radius * 150 + ")rotate(" + (-data.angles[i]) + ")";
+ .attr("transform", function(data, i) {
+ return "rotate(" + data.angle+ ")translate(" + data.radius * 150 + ")rotate(" + (-data.angle) + ")";
});
+ // add the cirles representing the switches
nodes.append("svg:circle")
- .attr('class', function (_, i) {
- return data.className + ' ' + controllerColorMap[data.switches[i].controller];
- })
- .attr("transform", function(_, i) {
+ .attr("transform", function(data, i) {
var m = document.querySelector('#viewbox').getTransformToElement().inverse();
if (data.scale) {
m = m.scale(data.scale);
}
return "matrix( " + m.a + " " + m.b + " " + m.c + " " + m.d + " " + m.e + " " + m.f + " )";
})
- .attr("x", -data.width / 2)
- .attr("y", -data.width / 2)
- .attr("r", data.width)
- // .attr("fill", function (_, i) {
- // return controllerColorMap[data.switches[i].controller]
- // })
+ .attr("x", function (data) {
+ return -data.width / 2;
+ })
+ .attr("y", function (data) {
+ return -data.width / 2;
+ })
+ .attr("r", function (data) {
+ return data.width;
+ })
- nodes.append("svg:text")
- .text(function (d, i) {return d.switches[i].dpid})
- .attr("x", 0)
- .attr("y", 0)
- .attr("transform", function(_, i) {
- var m = document.querySelector('#viewbox').getTransformToElement().inverse();
- if (data.scale) {
- m = m.scale(data.scale);
- }
- return "matrix( " + m.a + " " + m.b + " " + m.c + " " + m.d + " " + m.e + " " + m.f + " )";
- })
-
+ // setup the mouseover behaviors
function showLabel(data, index) {
- d3.select(document.getElementById(data.switches[index].dpid)).classed('nolabel', false);
+ d3.select(document.getElementById(data.dpid + '-label')).classed('nolabel', false);
}
function hideLabel(data, index) {
- d3.select(document.getElementById(data.switches[index].dpid)).classed('nolabel', true);
+ d3.select(document.getElementById(data.dpid + '-label')).classed('nolabel', true);
}
nodes.on('mouseover', showLabel);
nodes.on('mouseout', hideLabel);
}
- var ring = svg.selectAll("g")
- .data(rings)
- .enter().append("svg:g")
+ // append switches
+ rings.enter().append("svg:g")
.attr("class", "ring")
.each(ringEnter);
+ function ringUpdate(data, i) {
+ nodes = d3.select(this).selectAll("g")
+ .data(data, function (data) {
+ return data.dpid;
+ })
+ nodes.select('circle').attr('class', function (data, i) {
+ if (data.state == 'ACTIVE') {
+ return data.className + ' ' + controllerColorMap[data.controller];
+ } else {
+ return data.className + ' ' + 'colorInactive';
+ }
+ })
+ }
+
+ // update switches
+ rings.each(ringUpdate);
+
+
+ // Now setup the labels
+ // This is done separately because SVG draws in node order and we want the labels
+ // always on top
+ var labelRings = svg.selectAll('.labelRing').data(createRingsFromModel(model));
+
+ function labelRingEnter(data) {
+ if (!data.length) {
+ return;
+ }
+
+ // create the nodes
+ var nodes = d3.select(this).selectAll("g")
+ .data(data, function (data) {
+ return data.dpid;
+ })
+ .enter().append("svg:g")
+ .classed('nolabel', true)
+ .attr("id", function (data) {
+ return data.dpid + '-label';
+ })
+ .attr("transform", function(data, i) {
+ return "rotate(" + data.angle+ ")translate(" + data.radius * 150 + ")rotate(" + (-data.angle) + ")";
+ });
+
+ // add the text nodes which show on mouse over
+ nodes.append("svg:text")
+ .text(function (data) {return data.dpid})
+ .attr("x", function (data) {
+ if (data.angle <= 90 || data.angle >= 270 && data.angle <= 360) {
+ if (data.className == 'edge') {
+ return - data.width*3 - 4;
+ } else {
+ return - data.width - 4;
+ }
+ } else {
+ if (data.className == 'edge') {
+ return data.width*3 + 4;
+ } else {
+ return data.width + 4;
+ }
+ }
+ })
+ .attr("y", function (data) {
+ var y;
+ if (data.angle <= 90 || data.angle >= 270 && data.angle <= 360) {
+ if (data.className == 'edge') {
+ y = data.width*3/2 + 4;
+ } else {
+ y = data.width/2 + 4;
+ }
+ } else {
+ if (data.className == 'edge') {
+ y = data.width*3/2 + 4;
+ } else {
+ y = data.width/2 + 4;
+ }
+ }
+ return y - 6;
+ })
+ .attr("text-anchor", function (data) {
+ if (data.angle <= 90 || data.angle >= 270 && data.angle <= 360) {
+ return "end";
+ } else {
+ return "start";
+ }
+ })
+ .attr("transform", function(data) {
+ var m = document.querySelector('#viewbox').getTransformToElement().inverse();
+ if (data.scale) {
+ m = m.scale(data.scale);
+ }
+ return "matrix( " + m.a + " " + m.b + " " + m.c + " " + m.d + " " + m.e + " " + m.f + " )";
+ })
+ }
+
+ labelRings.enter().append("svg:g")
+ .attr("class", "textRing")
+ .each(labelRingEnter);
+
+
+ // switches should not change during operation of the ui so no
+ // rings.exit()
+
+
// do mouseover zoom on edge nodes
function zoom(data, index) {
- var g = d3.select(document.getElementById(data.switches[index].dpid)).select('circle');
- g.transition().duration(100).attr("r", rings[0].width*3);
+ var g = d3.select(document.getElementById(data.dpid)).select('circle');
+ g.transition().duration(100).attr("r", data.width*3);
+ // TODO: this doesn't work because the data binding is by index
+ d3.select(this.parentNode).moveToFront();
}
svg.selectAll('.edge').on('mouseover', zoom);
svg.selectAll('.edge').on('mousedown', zoom);
function unzoom(data, index) {
- var g = d3.select(document.getElementById(data.switches[index].dpid)).select('circle');
- g.transition().duration(100).attr("r", rings[0].width);
+ var g = d3.select(document.getElementById(data.dpid)).select('circle');
+ g.transition().duration(100).attr("r", data.width);
}
svg.selectAll('.edge').on('mouseout', unzoom);
@@ -189,55 +339,98 @@
})
.y(function(d) {
return d.y;
- })
- .interpolate("basis");
+ });
+// .interpolate("basis");
- d3.select('svg').selectAll('path').data(model.links).enter().append("svg:path").attr("d", function (d) {
+ // key on link dpids since these will come/go during demo
+ var links = d3.select('svg').selectAll('.link').data(model.links, function (d) {
+ return d['src-switch']+'->'+d['dst-switch'];
+ });
+
+ // add new links
+ links.enter().append("svg:path")
+ .attr("class", "link")
+ .attr("d", function (d) {
+
var src = d3.select(document.getElementById(d['src-switch']));
var dst = d3.select(document.getElementById(d['dst-switch']));
var srcPt = document.querySelector('svg').createSVGPoint();
srcPt.x = src.attr('x');
srcPt.y = src.attr('y');
+ srcPt = srcPt.matrixTransform(src[0][0].getCTM());
var dstPt = document.querySelector('svg').createSVGPoint();
dstPt.x = dst.attr('x');
- dstPt.y = dst.attr('y');
+ dstPt.y = dst.attr('y'); // tmp: make up and down links distinguishable
+ dstPt = dstPt.matrixTransform(dst[0][0].getCTM());
- return line([srcPt.matrixTransform(src[0][0].getCTM()), dstPt.matrixTransform(dst[0][0].getCTM())]);
- });
+ var midPt = document.querySelector('svg').createSVGPoint();
+ midPt.x = (srcPt.x + dstPt.x)/2;
+ midPt.y = (srcPt.y + dstPt.y)/2;
+
+ return line([srcPt, midPt, dstPt]);
+ })
+ .attr("marker-mid", function(d) { return "url(#arrow)"; });
+
+ // remove old links
+ links.exit().remove();
+
}
function updateControllers(model) {
var controllers = d3.select('#controllerList').selectAll('.controller').data(model.controllers);
controllers.enter().append('div')
- .attr('class', function (d) {
- var color = controllerColorMap[d];
- if (!color) {
- color = controllerColorMap[d] = colors.pop();
- }
- return 'controller ' + color;
+ .each(function (c) {
+ controllerColorMap[c] = colors.pop();
+ d3.select(document.body).classed(controllerColorMap[c] + '-selected', true);
+ })
+ .text(function (d) {
+ return d;
});
- controllers.text(function (d) {
- return d;
- });
- controllers.exit().remove();
- model.controllers.forEach(function (c) {
- d3.select(document.body).classed(controllerColorMap[c] + '-selected', true);
- });
+ controllers.attr('class', function (d) {
+ var color = 'colorInactive';
+ if (model.activeControllers.indexOf(d) != -1) {
+ color = controllerColorMap[d];
+ }
+ var className = 'controller ' + color;
+ return className;
+ });
+
+ // this should never be needed
+ // controllers.exit().remove();
controllers.on('click', function (c, index) {
- var selected = d3.select(document.body).classed(controllerColorMap[c] + '-selected');
- d3.select(document.body).classed(controllerColorMap[c] + '-selected', !selected);
+ var allSelected = true;
+ for (var key in controllerColorMap) {
+ if (!d3.select(document.body).classed(controllerColorMap[key] + '-selected')) {
+ allSelected = false;
+ break;
+ }
+ }
+ if (allSelected) {
+ for (var key in controllerColorMap) {
+ d3.select(document.body).classed(controllerColorMap[key] + '-selected', key == c)
+ }
+ } else {
+ for (var key in controllerColorMap) {
+ d3.select(document.body).classed(controllerColorMap[key] + '-selected', true)
+ }
+ }
+
+ // var selected = d3.select(document.body).classed(controllerColorMap[c] + '-selected');
+ // d3.select(document.body).classed(controllerColorMap[c] + '-selected', !selected);
});
}
var oldModel;
function sync(svg) {
+ var d = Date.now();
updateModel(function (newModel) {
+ console.log('Update time: ' + (Date.now() - d)/1000 + 's');
- if (!oldModel && JSON.stringify(oldModel) != JSON.stringify(newModel)) {
+ if (!oldModel || JSON.stringify(oldModel) != JSON.stringify(newModel)) {
updateControllers(newModel);
updateTopology(svg, newModel);
} else {
@@ -254,4 +447,14 @@
});
}
-sync(createTopologyView());
\ No newline at end of file
+svg = createTopologyView();
+// workaround for Chrome v25 bug
+// if executed immediately, the view box transform logic doesn't work properly
+// fixed in Chrome v27
+setTimeout(function () {
+ // workaround for another Chrome v25 bug
+ // viewbox transform stuff doesn't work in combination with browser zoom
+ // also works in Chrome v27
+ d3.select('#svg-container').style('zoom', window.document.body.clientWidth/window.document.width);
+ sync(svg);
+}, 100);
diff --git a/web/ons-demo/js/model.js b/web/ons-demo/js/model.js
index ad45469..94bbdfe 100644
--- a/web/ons-demo/js/model.js
+++ b/web/ons-demo/js/model.js
@@ -5,9 +5,11 @@
edgeSwitches: [],
aggregationSwitches: [],
coreSwitches: [],
- flows: results.flows,
+ flows: [],
controllers: results.controllers,
- links: results.links
+ activeControllers: results.activeControllers,
+ links: results.links,
+ configuration: results.configuration
}
// sort the switches
@@ -16,7 +18,7 @@
var bB = b.dpid.split(':');
for (var i=0; i<aA.length; i+=1) {
if (aA[i] != bB[i]) {
- return aA[i] - bB[i];
+ return parseInt(aA[i], 16) - parseInt(bB[i], 16);
}
}
return 0;
@@ -34,7 +36,10 @@
});
results.switches.forEach(function (s) {
- s.controller = results.mapping[s.dpid][0].controllerId;
+ var mapping = results.mapping[s.dpid]
+ if (mapping) {
+ s.controller = mapping[0].controllerId;
+ }
if (coreSwitchDPIDs[s.dpid]) {
model.coreSwitches.push(s);
@@ -48,41 +53,73 @@
return model;
}
+var urls = {
+ links: '/wm/core/topology/links/json',
+ switches: '/wm/core/topology/switches/all/json',
+ flows: '/wm/flow/getall/json',
+ activeControllers: '/wm/registry/controllers/json',
+ controllers: 'data/controllers.json',
+ mapping: '/wm/registry/switches/json',
+ configuration: 'data/configuration.json'
+}
+
+var mockURLs = {
+ links: 'data/wm_core_topology_links_json.json',
+ switches: 'data/wm_core_topology_switches_all_json.json',
+ flows: 'data/wm_flow_getall_json.json',
+ activeControllers: 'data/wm_registry_controllers_json.json',
+ controllers: 'data/controllers.json',
+ mapping: 'data/wm_registry_switches_json.json',
+ configuration: 'data/configuration.json'
+}
+
+var proxyURLs = {
+ links: '/wm/core/topology/links/json?proxy',
+ switches: '/wm/core/topology/switches/all/json?proxy',
+ flows: '/wm/flow/getall/json?proxy',
+ activeControllers: '/wm/registry/controllers/json?proxy',
+ controllers: 'data/controllers.json',
+ mapping: '/wm/registry/switches/json?proxy',
+ configuration: 'data/configuration.json'
+}
+
+var params = parseURLParameters();
+if (params.mock) {
+ urls = mockURLs;
+}
+if (params.proxy) {
+ urls = proxyURLs;
+}
+
+function makeRequest(url) {
+ return function (cb) {
+ d3.json(url, function (error, result) {
+ if (error) {
+ error = url + ' : ' + error.status;
+ }
+
+ cb(error, result);
+ });
+ }
+}
+
+
function updateModel(cb) {
async.parallel({
- links: function(cb) {
- d3.json('data/wm_core_topology_links_json.json', function (error, result) {
- cb(error, result);
- });
- },
- switches: function(cb) {
- d3.json('data/wm_core_topology_switches_all_json.json', function (error, result) {
- cb(error, result);
- });
- },
- flows: function(cb) {
- d3.json('data/wm_flow_getall_json.json', function (error, result) {
- cb(error, result);
- });
- },
- controllers: function(cb) {
- d3.json('data/wm_registry_controllers_json.json', function (error, result) {
- cb(error, result);
- });
- },
- mapping: function(cb) {
- d3.json('data/wm_registry_switches_json.json', function (error, result) {
- cb(error, result);
- });
- },
- configuration: function(cb) {
- d3.json('data/configuration.json', function (error, result) {
- cb(error, result);
- });
- },
+ links: makeRequest(urls.links),
+ switches: makeRequest(urls.switches),
+ controllers: makeRequest(urls.controllers),
+ activeControllers: makeRequest(urls.activeControllers),
+ mapping: makeRequest(urls.mapping),
+ configuration: makeRequest(urls.configuration)
+// flows: makeRequest(urls.flows),
},
function(err, results) {
- var model = toD3(results);
- cb(model);
+ if (!err) {
+ var model = toD3(results);
+ cb(model);
+ } else {
+ alert(JSON.stringify(err));
+ }
});
-}
\ No newline at end of file
+}
diff --git a/web/ons-demo/js/utils.js b/web/ons-demo/js/utils.js
new file mode 100644
index 0000000..17100b1
--- /dev/null
+++ b/web/ons-demo/js/utils.js
@@ -0,0 +1,14 @@
+function parseURLParameters() {
+ var parameters = {};
+
+ var search = location.href.split('?')[1];
+ if (search) {
+ search.split('&').forEach(function (param) {
+ var key = param.split('=')[0];
+ var value = param.split('=')[1];
+ parameters[key] = decodeURIComponent(value);
+ });
+ }
+
+ return parameters;
+}
\ No newline at end of file
diff --git a/web/restapi2.py b/web/restapi2.py
index 93404b4..c9952ac 100755
--- a/web/restapi2.py
+++ b/web/restapi2.py
@@ -53,6 +53,103 @@
return response
+## PROXY API (allows development where the webui is served from someplace other than the controller)##
+ONOS_GUI3_HOST="http://gui3.onlab.us:8080"
+ONOS_LOCAL_HOST="http://localhost:8080" ;# for Amazon EC2
+
+@app.route("/wm/core/topology/switches/all/json")
+def switches():
+ if request.args.get('proxy') == None:
+ host = ONOS_LOCAL_HOST
+ else:
+ host = ONOS_GUI3_HOST
+
+ try:
+ command = "curl -s %s/wm/core/topology/switches/all/json" % (host)
+ print command
+ result = os.popen(command).read()
+ except:
+ print "REST IF has issue"
+ exit
+
+ resp = Response(result, status=200, mimetype='application/json')
+ return resp
+
+@app.route("/wm/core/topology/links/json")
+def links():
+ if request.args.get('proxy') == None:
+ host = ONOS_LOCAL_HOST
+ else:
+ host = ONOS_GUI3_HOST
+
+ try:
+ command = "curl -s %s/wm/core/topology/links/json" % (host)
+ print command
+ result = os.popen(command).read()
+ except:
+ print "REST IF has issue"
+ exit
+
+ resp = Response(result, status=200, mimetype='application/json')
+ return resp
+
+@app.route("/wm/flow/getall/json")
+def flows():
+ if request.args.get('proxy') == None:
+ host = ONOS_LOCAL_HOST
+ else:
+ host = ONOS_GUI3_HOST
+
+ try:
+ command = "curl -s %s/wm/flow/getall/json" % (host)
+ print command
+ result = os.popen(command).read()
+ except:
+ print "REST IF has issue"
+ exit
+
+ resp = Response(result, status=200, mimetype='application/json')
+ return resp
+
+@app.route("/wm/registry/controllers/json")
+def registry_controllers():
+ if request.args.get('proxy') == None:
+ host = ONOS_LOCAL_HOST
+ else:
+ host = ONOS_GUI3_HOST
+
+ try:
+ command = "curl -s %s/wm/registry/controllers/json" % (host)
+ print command
+ result = os.popen(command).read()
+ except:
+ print "REST IF has issue"
+ exit
+
+ resp = Response(result, status=200, mimetype='application/json')
+ return resp
+
+@app.route("/wm/registry/switches/json")
+def registry_switches():
+ if request.args.get('proxy') == None:
+ host = ONOS_LOCAL_HOST
+ else:
+ host = ONOS_GUI3_HOST
+
+ try:
+ command = "curl -s %s/wm/registry/switches/json" % (host)
+ print command
+ result = os.popen(command).read()
+ except:
+ print "REST IF has issue"
+ exit
+
+ resp = Response(result, status=200, mimetype='application/json')
+ return resp
+
+
+
+
## REST API ##
#@app.route("/wm/topology/links/json")
#def links():
@@ -253,7 +350,7 @@
if __name__ == "__main__":
app.debug = True
- app.run(host="0.0.0.0", port=9000)
+ app.run(threaded=True, host="0.0.0.0", port=9000)
# query_switch()
# query_links()
# devices()