Merge branch 'master' of github.com:OPENNETWORKINGLAB/ONOS
diff --git a/scripts/ctrl-add-ext.sh b/scripts/ctrl-add-ext.sh
new file mode 100755
index 0000000..88be2f3
--- /dev/null
+++ b/scripts/ctrl-add-ext.sh
@@ -0,0 +1,29 @@
+#! /usr/bin/env python
+import sys
+import time
+import os
+import re
+import json
+import socket
+
+CONFIG_FILE=os.getenv("HOME") + "/ONOS/web/config.json"
+
+def read_config():
+  global controllers
+  f = open(CONFIG_FILE)
+  conf = json.load(f)
+  controllers = conf['controllers']
+  f.close()
+
+if __name__ == "__main__":
+  read_config()
+  controllers.pop(0) 
+  url = ""
+  for c in controllers:
+    url += " " + "tcp:%s:6633" % socket.gethostbyname(c)
+
+  switches = os.popen("sudo ovs-vsctl list-br").read().split("\n");
+  switches.remove('')
+  for s in switches:
+    print "set switch %s controller %s" % (s, url)  
+    os.popen("sudo ovs-vsctl set-controller %s %s" % (s, url) )
diff --git a/web/config.json.hw b/web/config.json.hw
new file mode 100644
index 0000000..493a2b4
--- /dev/null
+++ b/web/config.json.hw
@@ -0,0 +1,25 @@
+{
+    "LB": false, 
+    "ONOS_DEFAULT_HOST": "localhost",
+    "ONOS_GUI3_CONTROL_HOST": "http://10.128.4.11:9000", 
+    "ONOS_GUI3_HOST": "http://10.128.4.11:9000", 
+    "cluster_basename": "ONOS", 
+    "controllers": [
+        "ONOS1", 
+        "ONOS2", 
+        "ONOS3", 
+        "ONOS4", 
+        "ONOS5", 
+        "ONOS6", 
+        "ONOS7", 
+        "ONOS8"
+    ], 
+    "core_switches": [
+        "00:00:00:00:ba:5e:ba:11", 
+        "00:00:00:00:00:00:ba:12", 
+        "00:00:20:4e:7f:51:8a:35", 
+        "00:00:00:00:ba:5e:ba:13", 
+        "00:00:00:08:a2:08:f9:01", 
+        "00:01:00:16:97:08:9a:46"
+    ]
+}
diff --git a/web/config.json.sw b/web/config.json.sw
new file mode 100644
index 0000000..b1903c6
--- /dev/null
+++ b/web/config.json.sw
@@ -0,0 +1,25 @@
+{
+    "LB": false, 
+    "ONOS_DEFAULT_HOST": "localhost",
+    "ONOS_GUI3_CONTROL_HOST": "http://devy-gui.onlab.us:8080", 
+    "ONOS_GUI3_HOST": "http://devy-gui.onlab.us:8080", 
+    "cluster_basename": "onosdevy", 
+    "controllers": [
+        "onosdevy1", 
+        "onosdevy2", 
+        "onosdevy3", 
+        "onosdevy4", 
+        "onosdevy5", 
+        "onosdevy6", 
+        "onosdevy7", 
+        "onosdevy8"
+    ], 
+    "core_switches": [
+        "00:00:00:00:ba:5e:ba:11", 
+        "00:00:00:00:00:00:ba:12", 
+        "00:00:20:4e:7f:51:8a:35", 
+        "00:00:00:00:ba:5e:ba:13", 
+        "00:00:00:08:a2:08:f9:01", 
+        "00:00:00:16:97:08:9a:46"
+    ]
+}
diff --git a/web/config.json.sw_dev b/web/config.json.sw_dev
new file mode 100644
index 0000000..57a1a3d
--- /dev/null
+++ b/web/config.json.sw_dev
@@ -0,0 +1,25 @@
+{
+    "LB": false, 
+    "ONOS_DEFAULT_HOST": "localhost",
+    "ONOS_GUI3_CONTROL_HOST": "http://devy-gui.onlab.us:8080", 
+    "ONOS_GUI3_HOST": "http://devy-gui.onlab.us:8080", 
+    "cluster_basename": "onosdevy", 
+    "controllers": [
+        "onosdevy1", 
+        "onosdevy2", 
+        "onosdevy3", 
+        "onosdevy4", 
+        "onosdevy5", 
+        "onosdevy6", 
+        "onosdevy7", 
+        "onosdevy8"
+    ], 
+    "core_switches": [
+        "00:00:00:00:00:00:01:01", 
+        "00:00:00:00:00:00:01:02", 
+        "00:00:00:00:00:00:01:03", 
+        "00:00:00:00:00:00:01:04", 
+        "00:00:00:00:00:00:01:05", 
+        "00:00:00:00:00:00:01:06"
+    ]
+}
diff --git a/web/pingallm.py b/web/pingallm.py
index 43f10ad..db1f81c 100755
--- a/web/pingallm.py
+++ b/web/pingallm.py
@@ -3,12 +3,20 @@
 import time
 import os
 import re
+import json
 
-hosts=['onosdevz1', 'onosdevz2', 'onosdevz3', 'onosdevz4', 'onosdevz5', 'onosdevz6', 'onosdevz7', 'onosdevz8']
 ping_cnt=3
 wait1=ping_cnt
 wait2=10
 
+CONFIG_FILE=os.getenv("HOME") + "/ONOS/web/config.json"
+
+def read_config():
+  global controllers
+  f = open(CONFIG_FILE)
+  conf = json.load(f)
+  controllers = conf['controllers']
+  f.close()
 
 def do_pingall():
 
@@ -20,8 +28,8 @@
   nr_ping = 0
   for line in f:
     if line[0] != "#":
-#      logfile="/tmp/ping.pid%d.%d" % (pid, fid)
       fid=int(line.strip().split()[0])
+#      logfile="/tmp/ping.pid%d.%d" % (pid, fid)
       logfile="/tmp/ping.%d" % (fid)
       src_dpid=line.strip().split()[2]
       dst_dpid=line.strip().split()[4]
@@ -31,8 +39,8 @@
       dst_hostid=int(dst_dpid.split(':')[-1], 16)
       cmd="echo \"Pingall flow %d : 192.168.%d.%d -> 192.168.%d.%d\" > %s" % (fid, src_nwid, src_hostid, dst_nwid, dst_hostid,logfile)
       os.popen(cmd)
-      cmd="ssh %s \'${HOME}/ONOS/test-network/mininet/mrun host%d \'ping -c %d -W 1 192.168.%d.%d\'\' >> %s 2>&1 &" % (hosts[src_nwid-1], src_hostid, ping_cnt, dst_nwid, dst_hostid,logfile)
-    #    print cmd
+      cmd="ssh %s \'${HOME}/ONOS/test-network/mininet/mrun host%d \'ping -c %d -W 1 192.168.%d.%d\'\' >> %s 2>&1 &" % (controllers[src_nwid-1], src_hostid, ping_cnt, dst_nwid, dst_hostid,logfile)
+      print cmd
       result = os.popen(cmd).read()
       time.sleep(0.2)
       nr_ping = nr_ping + 1
@@ -72,6 +80,7 @@
         print "flow # %d %s : %s" % (i+1, flow_desc, result)
 
 if __name__ == "__main__":
+  read_config()
   nr_ping=do_pingall()
   nr_done=wait_ping_finish(nr_ping)
   report(nr_ping, nr_done)
diff --git a/web/topology_rest.py b/web/topology_rest.py
index 87bdeb0..b1ce2ca 100755
--- a/web/topology_rest.py
+++ b/web/topology_rest.py
@@ -13,28 +13,25 @@
 
 from flask import Flask, json, Response, render_template, make_response, request
 
+
+CONFIG_FILE=os.getenv("HOME") + "/ONOS/web/config.json"
+
 ## Global Var for ON.Lab local REST ##
 RestIP="localhost"
 RestPort=8080
-
-LB=False #; True or False
 ONOS_DEFAULT_HOST="localhost" ;# Has to set if LB=False
-TESTBED="hw"
 DEBUG=1
 
-if (TESTBED == "hw"): 
-  # Settings for running on hardware testbed
-  controllers=["ONOS1", "ONOS2", "ONOS3", "ONOS4", "ONOS5", "ONOS6", "ONOS7", "ONOS8"]
-  core_switches=["00:00:00:00:ba:5e:ba:11", "00:00:00:00:00:00:ba:12", "00:00:20:4e:7f:51:8a:35", "00:00:00:00:ba:5e:ba:13", "00:00:00:08:a2:08:f9:01", "00:01:00:16:97:08:9a:46"]
-  ONOS_GUI3_HOST="http://10.128.4.11:9000"
-  ONOS_GUI3_CONTROL_HOST="http://10.128.4.11:9000"
-else:
-  # Settings for running on software testbed
-  controllers=["onosdevt1", "onosdevt2", "onosdevt3", "onosdevt4", "onosdevt5", "onosdevt6", "onosdevt7", "onosdevt8"]
-#  core_switches=["00:00:00:00:ba:5e:ba:11", "00:00:00:00:00:00:ba:12", "00:00:20:4e:7f:51:8a:35", "00:00:00:00:ba:5e:ba:13", "00:00:00:08:a2:08:f9:01", "00:00:00:16:97:08:9a:46"]
-  core_switches=["00:00:00:00:00:00:01:01", "00:00:00:00:00:00:01:02", "00:00:00:00:00:00:01:03", "00:00:00:00:00:00:01:04", "00:00:00:00:00:00:01:05", "00:00:00:00:00:00:01:06"]
-  ONOS_GUI3_HOST="http://devt-gui.onlab.us:8080"
-  ONOS_GUI3_CONTROL_HOST="http://devt-gui.onlab.us:8080"
+def read_config():
+  global LB, controllers, core_switches, ONOS_GUI3_HOST, ONOS_GUI3_CONTROL_HOST
+  f = open(CONFIG_FILE)
+  conf = json.load(f)
+  LB = conf['LB']
+  controllers = conf['controllers']
+  core_switcehs=conf['core_switches']
+  ONOS_GUI3_HOST=conf['ONOS_GUI3_HOST']
+  ONOS_GUI3_CONTROL_HOST=conf['ONOS_GUI3_CONTROL_HOST']
+  f.close()
 
 pp = pprint.PrettyPrinter(indent=4)
 app = Flask(__name__)
@@ -986,6 +983,7 @@
 
 if __name__ == "__main__":
   random.seed()
+  read_config()
   if len(sys.argv) > 1 and sys.argv[1] == "-d":
 #      add_flow("00:00:00:00:00:00:02:02", 1, "00:00:00:00:00:00:03:02", 1, "00:00:00:00:02:02", "00:00:00:00:03:0c")
 #     link_change("up", "00:00:00:00:ba:5e:ba:11", 1, "00:00:00:00:00:00:00:00", 1)