Merge branch 'master' of https://github.com/OPENNETWORKINGLAB/ONOS
diff --git a/web/js/controller-status.js b/web/js/controller-status.js
index fa887e3..5c1ae30 100644
--- a/web/js/controller-status.js
+++ b/web/js/controller-status.js
@@ -32,7 +32,7 @@
 	    },
 	    dataType: "json"
         });
-    }, 5000); 
+    }, 3000); 
 
     function draw(json){
 //	var data = json.data;
diff --git a/web/js/onos-topology.js b/web/js/onos-topology.js
index cea8f1a..3772127 100644
--- a/web/js/onos-topology.js
+++ b/web/js/onos-topology.js
@@ -257,12 +257,26 @@
 	    .text(function(d) { return d.name; });
 
 	circle.attr("fill", function(d) {
-	    if (d.group == 1){return "red";}
-	    else if (d.group == 2){return "blue";}
-	    else if (d.group == 3){return "green";}
-	    else if (d.group == 4){return "orange";}
-	    else if (d.group == 1000){return "black";}
-	    else{ return "gray"; }
+               if (d.group == 1){
+                    return "red"
+                }else if (d.group == 2){
+                    return "blue"
+                }else if (d.group == 3){
+                    return "green"
+                }else if (d.group == 4){
+                    return "orange"
+                }else if (d.group == 5){
+                    return "cyan"
+                }else if (d.group == 6){
+                    return "magenta"
+                }else if (d.group == 7){
+                    return "yellow"
+                }else if (d.group == 8){
+                    return "purple"
+                }else{
+                    return "gray"
+                }
+
 	});
 
 	path.attr("stroke", function(d) {
@@ -364,12 +378,25 @@
 	})
 
 	circle.attr("fill", function(d) {
-	    ;	    if (d.group == 1){return "red";}
-	    else if (d.group == 2){return "blue";}
-	    else if (d.group == 3){return "green";}
-	    else if (d.group == 4){return "orange";}
-	    else if (d.group == 1000){return "black";}
-	    else{ return "gray"; }
+                if (d.group == 1){
+                    return "red"
+                }else if (d.group == 2){
+                    return "blue"
+                }else if (d.group == 3){
+                    return "green"
+                }else if (d.group == 4){
+                    return "orange"
+                }else if (d.group == 5){
+                    return "cyan"
+                }else if (d.group == 6){
+                    return "magenta"
+                }else if (d.group == 7){
+                    return "yellow"
+                }else if (d.group == 8){
+                    return "purple"
+                }else{
+                    return "gray"
+                }
 	});
 //	text.attr("x", function(d) { return d.x; }).attr("y", function(d) { return d.y; });
 	text.attr("transform", function(d) {
diff --git a/web/topology_rest.py b/web/topology_rest.py
index 105c141..cdfdf24 100755
--- a/web/topology_rest.py
+++ b/web/topology_rest.py
@@ -14,7 +14,8 @@
 RestIP="localhost"
 RestPort=8080
 #DBName="onos-network-map"
-controllers=["onosgui1", "onosgui2", "onosgui3", "onosgui4"]
+#controllers=["onosgui1", "onosgui2", "onosgui3", "onosgui4"]
+controllers=["onosgui1", "onosgui2", "onosgui3", "onosgui4", "onosgui5", "onosgui6", "onosgui7", "onosgui8"]
 
 DEBUG=1
 pp = pprint.PrettyPrinter(indent=4)
@@ -41,6 +42,11 @@
 @app.route('/', methods=['GET'])
 @app.route('/<filename>', methods=['GET'])
 @app.route('/tpl/<filename>', methods=['GET'])
+@app.route('/ons-demo/<filename>', methods=['GET'])
+@app.route('/ons-demo/js/<filename>', methods=['GET'])
+@app.route('/ons-demo/css/<filename>', methods=['GET'])
+@app.route('/ons-demo/assets/<filename>', methods=['GET'])
+@app.route('/ons-demo/data/<filename>', methods=['GET'])
 def return_file(filename="index.html"):
   if request.path == "/":
     fullpath = "./index.html"
@@ -61,35 +67,100 @@
 
   return response
 
-init_topo1 = { 
-  "nodes" : [ 
-    {"name" : "sw0", "group" : 0},
-    {"name" : "sw1", "group" : 0},
-    {"name" : "sw2", "group" : 0},
-    {"name" : "sw3", "group" : 0},
-    {"name" : "sw4", "group" : 0},
-    {"name" : "sw5", "group" : 0},
-    {"name" : "host0", "group" : 1}
-    ],
-  "links" : [
-    {"source" :0, "target": 1},
-    {"source" :1, "target": 0},
-    {"source" :0, "target": 2},
-    {"source" :2, "target": 0},
-    {"source" :1, "target": 3},
-    {"source" :3, "target": 1},
-    {"source" :2, "target": 3},
-    {"source" :3, "target": 2},
-    {"source" :2, "target": 4},
-    {"source" :4, "target": 2},
-    {"source" :3, "target": 5},
-    {"source" :5, "target": 3},
-    {"source" :4, "target": 5},
-    {"source" :5, "target": 4},
-    {"source" :6, "target": 0},
-    {"source" :0, "target": 6}
-    ]
-}
+## 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
+
 
 def node_id(switch_array, dpid):
   id = -1
@@ -100,6 +171,7 @@
 
   return id
 
+## API for ON.Lab local GUI ##
 @app.route('/topology', methods=['GET'])
 def topology_for_gui():
   try:
@@ -125,15 +197,6 @@
       sw['name']=dpid
       sw['group']= -1
 
-#      if state == "ACTIVE":
-#        if dpid.split(":")[5] == "0a":
-#          sw['group']=1
-#        if dpid.split(":")[5] == "0b":
-#          sw['group']=2
-#        if dpid.split(":")[5] == "0c":
-#          sw['group']=3
-#        if dpid.split(":")[5] == "0d":
-#          sw['group']=4
       if state == "INACTIVE":
         sw['group']=0
       switches.append(sw)
@@ -408,7 +471,6 @@
 
 #{"entityClass":"DefaultEntityClass","mac":["7c:d1:c3:e0:8c:a3"],"ipv4":["192.168.2.102","10.1.10.35"],"vlan":[],"attachmentPoint":[{"port":13,"switchDPID":"00:01:00:12:e2:78:32:44","errorStatus":null}],"lastSeen":1357333593496}
 
-
 ## return fake stat for now
 @app.route("/wm/core/switch/<switchId>/<statType>/json")
 def switch_stat(switchId, statType):
@@ -571,8 +633,6 @@
   pp.pprint(js)
   return resp
 
-
-
 if __name__ == "__main__":
   if len(sys.argv) > 1 and sys.argv[1] == "-d":
     print "-- query all switches --"