Cleaned up the simple GUI scripts.

 * Removed unused functions/code from topology_rest.py
 * Removed checking of Cassandra process status
 * Removed the topology_rest_napi.py script which was a clone of topology_rest.py

Change-Id: I7039fd59ae1324564e0a87c3788fd3c59dab1cb4
diff --git a/web/js/controller-status.js b/web/js/controller-status.js
index 5c1ae30..3004ce8 100644
--- a/web/js/controller-status.js
+++ b/web/js/controller-status.js
@@ -18,11 +18,6 @@
 	attr("width", 1280).
 	attr("height", 50);
 
-    var CassandraStatus = d3.select("#cassandra-status").
-	append("svg:svg").
-	attr("width", 1280).
-	attr("height", 50);
-
     d3.json(data_source, draw);
     setInterval(function() {
         $.ajax({
@@ -35,17 +30,13 @@
     }, 3000); 
 
     function draw(json){
-//	var data = json.data;
 	var data = json;
 	var server = Servers.selectAll("text").data(data);
 	var controller_rect = ContStatus.selectAll("rect").data(data);
 	var controller_text = ContStatus.selectAll("text").data(data);
-	var cassandra_rect = CassandraStatus.selectAll("rect").data(data);
-	var cassandra_text = CassandraStatus.selectAll("text").data(data);
 
 	var x = d3.scale.linear().domain([0, data.length]).range([0, width]);
 	var y = d3.scale.linear().domain([0, d3.max(data, function(datum) { return datum.onos; })]).rangeRound([0, height]);
-	var y2 = d3.scale.linear().domain([0, d3.max(data, function(datum) { return datum.cassandra; })]).rangeRound([0, height]);
 
 	console.log(data)
 	server.
@@ -115,26 +106,6 @@
 	    attr("width", barWidth).
 	    attr('fill', 'white'); 
 
-	cassandra_rect.
-	    enter().
-	    append("svg:rect").
-	    attr("x", function(datum, index) { return x(index); }).
-	    attr("y", function(datum) { return height - y2(datum.cassandra); }).
-	    attr("height", function(datum) { return y2(datum.cassandra); }).
-	    attr("width", barWidth).
-	    attr("fill", "#aa0000");
-
-	cassandra_text.
-	    enter().
-	    append("svg:text").
-	    text(function(){return "Cassandra"}).
-	    attr("x", function(datum, index) { return x(index); }).
-	    attr("y", function(datum) { return 30 ; }).
-	    attr("height", function(datum) { return y(datum.onos); }).
-	    attr("width", barWidth).
-	    attr('fill', 'white'); 
-
-
 	controller_rect.
 	    attr("x", function(datum, index) { return x(index); }).
 	    attr("y", function(datum) { return height - y(datum.onos); }).
@@ -170,48 +141,9 @@
 	    attr("width", barWidth).
 	    attr('fill', 'white'); 
 
-	cassandra_rect.
-	    attr("x", function(datum, index) { return x(index); }).
-	    attr("y", function(datum) { return height - y2(datum.cassandra); }).
-	    attr("height", function(datum) { return y2(datum.cassandra); }).
-	    attr("width", barWidth).
-	    attr("fill", "#aa0000");
-
-	cassandra_text.
-	    text(function(){return "Cassandra"}).
-	    attr("x", function(datum, index) { return x(index); }).
-	    attr("y", function(datum) { return 30 ; }).
-	    attr("height", function(datum) { return y(datum.cassandra); }).
-	    attr("width", barWidth).
-	    attr('fill', 'white'); 
-
-
 	server.exit().remove();
 	controller_rect.exit().remove();
 	controller_text.exit().remove();
-	cassandra_rect.exit().remove();
-	cassandra_text.exit().remove();
-
     }
-/*
-    $("#more").click( function() {
-        $.ajax({
-	    url: 'http://gui.onlab.us:8080/controller_status1',
-	    success: function(json) {
-		draw(json);
-	    },
-	    dataType: "json"
-        });
-    });
-    $("#less").click( function() {
-        $.ajax({
-	    url: 'http://gui.onlab.us:8080/controller_status2',
-	    success: function(json) {
-		draw(json);
-	    },
-	    dataType: "json"
-        });
-    });
-*/
 }
 
diff --git a/web/onos-topology.html b/web/onos-topology.html
index b4e5097..6db7862 100644
--- a/web/onos-topology.html
+++ b/web/onos-topology.html
@@ -20,10 +20,6 @@
 <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
 </head>
 <body>
-<!--
-<button id="more">more</button>
-<button id="less">less</button>
---!>
 <svg width="0.1in" height="0.1in" 
      viewBox="0 0 4000 2000" version="1.1"
      xmlns="http://www.w3.org/2000/svg">
@@ -47,7 +43,6 @@
 <h2>Controller Status</h2>
 <div id="servers"></div>
 <div id="onos-status"></div>
-<div id="cassandra-status"></div>
 <h2>Topology View</h2>
 <div id="topology"></div>
 <script type="text/javascript" src="js/controller-status.js"></script>
diff --git a/web/topology_rest.py b/web/topology_rest.py
index 64f6275..703fddb 100755
--- a/web/topology_rest.py
+++ b/web/topology_rest.py
@@ -1,34 +1,23 @@
 #! /usr/bin/env python
-import pprint
 import os
-import sys
-import subprocess
 import json
-import argparse
-import io
-import time
-import random
-import re
 from urllib2 import Request, urlopen, URLError, HTTPError
-
 from flask import Flask, json, Response, render_template, make_response, request
 
-CONFIG_FILE=os.getenv("HOME") + "/ONOS/web/config.json"
-LINK_FILE=os.getenv("HOME") + "/ONOS/web/link.json"
-ONOSDIR=os.getenv("HOME") + "/ONOS"
+CONFIG_FILE="config.json"
 
 ## Global Var for this proxy script setting.
 # "0.0.0.0" means any interface
-ProxyIP="0.0.0.0"
-ProxyPort=9000
+GuiIp="0.0.0.0"
+GuiPort=9000
 
 ## Global Var for ON.Lab local REST ##
+# The GUI can be accessed at <this_host>:9000/onos-topology.html
 RestIP="localhost"
 RestPort=8080
 ONOS_DEFAULT_HOST="localhost" ;# Has to set if LB=False
 DEBUG=1
 
-pp = pprint.PrettyPrinter(indent=4)
 app = Flask(__name__)
 
 def read_config():
@@ -47,25 +36,15 @@
 def log_error(txt):
   print '%s' % (txt)
 
-def debug(txt):
-  if DEBUG:
-    print '%s' % (txt)
-
 ### File Fetch ###
 @app.route('/ui/img/<filename>', methods=['GET'])
-@app.route('/img/<filename>', methods=['GET'])
-@app.route('/css/<filename>', methods=['GET'])
-@app.route('/js/models/<filename>', methods=['GET'])
-@app.route('/js/views/<filename>', methods=['GET'])
 @app.route('/js/<filename>', methods=['GET'])
-@app.route('/lib/<filename>', methods=['GET'])
 @app.route('/log/<filename>', methods=['GET'])
 @app.route('/', methods=['GET'])
 @app.route('/<filename>', methods=['GET'])
-@app.route('/tpl/<filename>', methods=['GET'])
 def return_file(filename="index.html"):
   if request.path == "/":
-    fullpath = "./index.html"
+    fullpath = "./onos-topology.html"
   else:
     fullpath = str(request.path)[1:]
 
@@ -99,17 +78,15 @@
   try:
     response = urlopen(url)
   except URLError, e:
-    print "get_json: REST IF %s has issue. Reason: %s" % (url, e.reason)
+    log_error("get_json: REST IF %s has issue. Reason: %s" % (url, e.reason))
     result = ""
     return (500, result)
   except HTTPError, e:
-    print "get_json: REST IF %s has issue. Code %s" % (url, e.code)
+    log_error("get_json: REST IF %s has issue. Code %s" % (url, e.code))
     result = ""
     return (e.code, result)
 
-  print response
   result = response.read()
-#  parsedResult = json.loads(result)
   return (code, result)
 
 
@@ -176,7 +153,6 @@
     log_error("REST IF has issue: %s" % url)
     log_error("%s" % result)
     return
-#    sys.exit(0)
 
   for v in parsedResult:
     link = {}
@@ -189,13 +165,6 @@
     link['source'] = src_id
     link['target'] = dst_id
 
-    #onpath = 0
-    #for (s,d) in path:
-    #  if s == v['src-switch'] and d == v['dst-switch']:
-    #    onpath = 1
-    #    break
-    #link['type'] = onpath
-
     links.append(link)
 
   topo['nodes'] = switches
@@ -205,137 +174,6 @@
   resp = Response(js, status=200, mimetype='application/json')
   return resp
 
-@app.route("/wm/floodlight/topology/toporoute/<v1>/<p1>/<v2>/<p2>/json")
-def shortest_path(v1, p1, v2, p2):
-  try:
-    url = "http://%s:%s/wm/onos/topology/switches/json" % (RestIP, RestPort)
-    (code, result) = get_json(url)
-    parsedResult = json.loads(result)
-  except:
-    log_error("REST IF has issue: %s" % command)
-    log_error("%s" % result)
-    return
-
-  topo = {}
-  switches = []
-  links = []
-
-  for v in parsedResult:
-    if v.has_key('dpid'):
-      dpid = str(v['dpid'])
-      state = str(v['state'])
-      sw = {}
-      sw['name']=dpid
-      if str(v['state']) == "ACTIVE":
-        if dpid[-2:-1] == "a":
-         sw['group']=1
-        if dpid[-2:-1] == "b":
-         sw['group']=2
-        if dpid[-2:-1] == "c":
-         sw['group']=3
-      if str(v['state']) == "INACTIVE":
-         sw['group']=0
-
-      switches.append(sw)
-
-  try:
-    url = "http://%s:%s/wm/onos/topology/route/%s/%s/%s/%s/json" % (RestIP, RestPort, v1, p1, v2, p2)
-    (code, result) = get_json(url)
-    parsedResult = json.loads(result)
-  except:
-    log_error("No route")
-    parsedResult = []
-
-  path = [];
-  for i, v in enumerate(parsedResult):
-    if i < len(parsedResult) - 1:
-      sdpid= parsedResult['flowEntries'][i]['dpid']['value']
-      ddpid= parsedResult['flowEntries'][i+1]['dpid']['value']
-      path.append( (sdpid, ddpid))
-
-  try:
-    url = "http://%s:%s/wm/onos/topology/links/json" % (RestIP, RestPort)
-    (code, result) = get_json(url)
-    parsedResult = json.loads(result)
-  except:
-    log_error("REST IF has issue: %s" % command)
-    log_error("%s" % result)
-    return
-
-  for v in parsedResult:
-    link = {}
-    if v.has_key('dst-switch'):
-      dst_dpid = str(v['dst-switch'])
-      dst_id = node_id(switches, dst_dpid)
-    if v.has_key('src-switch'):
-      src_dpid = str(v['src-switch'])
-      src_id = node_id(switches, src_dpid)
-    link['source'] = src_id
-    link['target'] = dst_id
-    onpath = 0
-    for (s,d) in path:
-      if s == v['src-switch'] and d == v['dst-switch']:
-        onpath = 1
-        break
-
-    link['type'] = onpath
-    links.append(link)
-
-  topo['nodes'] = switches
-  topo['links'] = links
-
-  js = json.dumps(topo)
-  resp = Response(js, status=200, mimetype='application/json')
-  return resp
-
-@app.route("/wm/floodlight/core/controller/switches/json")
-def query_switch():
-  try:
-    url = "http://%s:%s/wm/onos/topology/switches/json" % (RestIP, RestPort)
-    (code, result) = get_json(url)
-    parsedResult = json.loads(result)
-  except:
-    log_error("REST IF has issue: %s" % url)
-    log_error("%s" % result)
-    return
-#    sys.exit(0)
-
-#  print command
-#  print result
-  switches_ = []
-  for v in parsedResult:
-    if v.has_key('dpid'):
-      if v.has_key('dpid') and str(v['state']) == "ACTIVE":#;if you want only ACTIVE nodes
-        dpid = str(v['dpid'])
-        state = str(v['state'])
-        sw = {}
-        sw['dpid']=dpid
-        sw['active']=state
-        switches_.append(sw)
-
-#  pp.pprint(switches_)
-  js = json.dumps(switches_)
-  resp = Response(js, status=200, mimetype='application/json')
-  return resp
-
-## return fake stat for now
-@app.route("/wm/floodlight/core/switch/<switchId>/<statType>/json")
-def switch_stat(switchId, statType):
-    if statType == "desc":
-        desc=[{"length":1056,"serialNumber":"None","manufacturerDescription":"Nicira Networks, Inc.","hardwareDescription":"Open vSwitch","softwareDescription":"1.4.0+build0","datapathDescription":"None"}]
-        ret = {}
-        ret[switchId]=desc
-    elif statType == "aggregate":
-        aggr = {"packetCount":0,"byteCount":0,"flowCount":0}
-        ret = {}
-        ret[switchId]=aggr
-    else:
-        ret = {}
-
-    js = json.dumps(ret)
-    resp = Response(js, status=200, mimetype='application/json')
-    return resp
-
 @app.route("/controller_status")
 def controller_status():
   url= "http://%s:%d/wm/onos/registry/controllers/json" % (RestIP, RestPort)
@@ -351,7 +189,6 @@
       onos=0
     status["name"]=i
     status["onos"]=onos
-    status["cassandra"]=0
     cont_status.append(status)
 
   js = json.dumps(cont_status)
@@ -359,27 +196,6 @@
   return resp
 
 if __name__ == "__main__":
-  random.seed()
   read_config()
-  if len(sys.argv) > 1 and sys.argv[1] == "-d":
-    # for debugging
-    #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")
-    #proxy_link_change("up", "00:00:00:00:ba:5e:ba:11", 1, "00:00:00:00:00:00:00:00", 1)
-    #proxy_link_change("down", "00:00:20:4e:7f:51:8a:35", 1, "00:00:00:00:00:00:00:00", 1)
-    #proxy_link_change("up", "00:00:00:00:00:00:02:03", 1, "00:00:00:00:00:00:00:00", 1)
-    #proxy_link_change("down", "00:00:00:00:00:00:07:12", 1, "00:00:00:00:00:00:00:00", 1)
-    #print "-- query all switches --"
-    #query_switch()
-    #print "-- query topo --"
-    #topology_for_gui()
-    ##print "-- query all links --"
-    ##query_links()
-    #print "-- query all devices --"
-    #devices()
-    #links()
-    #switches()
-    #reset_demo()
-    pass
-  else:
-    app.debug = True
-    app.run(threaded=True, host=ProxyIP, port=ProxyPort)
\ No newline at end of file
+  app.debug = True
+  app.run(threaded=True, host=GuiIp, port=GuiPort)
diff --git a/web/topology_rest_napi.py b/web/topology_rest_napi.py
deleted file mode 100755
index 58c2de9..0000000
--- a/web/topology_rest_napi.py
+++ /dev/null
@@ -1,207 +0,0 @@
-#!/usr/bin/env python
-
-import json
-from urllib2 import Request, urlopen, URLError, HTTPError
-from flask import Flask, json, Response, render_template, make_response, request
-
-## Global Var for ON.Lab local REST ##
-# The GUI can be accessed at <this_host>:9000/onos-topology.html
-RestIP="localhost"
-RestPort=8080
-ONOS_DEFAULT_HOST="localhost" ;# Has to set if LB=False
-DEBUG=1
-controllers=["ubuntu1","ubuntu2","ubuntu3","ubuntu4"]
-
-app = Flask(__name__)
-
-## Worker Functions ##
-def log_error(txt):
-  print '%s' % (txt)
-
-def debug(txt):
-  if DEBUG:
-    print '%s' % (txt)
-
-def node_id(switch_array, dpid):
-  id = -1
-  for i, val in enumerate(switch_array):
-    if val['name'] == dpid:
-      id = i
-      break
-
-  return id
-
-###### ONOS REST API ##############################
-## Worker Func ###
-def get_json(url):
-  code = 200;
-  try:
-    response = urlopen(url)
-  except URLError, e:
-    print "get_json: REST IF %s has issue. Reason: %s" % (url, e.reason)
-    result = ""
-    return (500, result)
-  except HTTPError, e:
-    print "get_json: REST IF %s has issue. Code %s" % (url, e.code)
-    result = ""
-    return (e.code, result)
-
-  result = response.read()
-#  parsedResult = json.loads(result)
-  return (code, result)
-
-### File Fetch ###
-@app.route('/ui/img/<filename>', methods=['GET'])
-@app.route('/img/<filename>', methods=['GET'])
-@app.route('/css/<filename>', methods=['GET'])
-@app.route('/js/models/<filename>', methods=['GET'])
-@app.route('/js/views/<filename>', methods=['GET'])
-@app.route('/js/<filename>', methods=['GET'])
-@app.route('/lib/<filename>', methods=['GET'])
-@app.route('/log/<filename>', methods=['GET'])
-@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/d3/<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"
-  else:
-    fullpath = str(request.path)[1:]
-
-  try:
-    open(fullpath)
-  except:
-    response = make_response("Cannot find a file: %s" % (fullpath), 500)
-    response.headers["Content-type"] = "text/html"
-    return response
-
-  response = make_response(open(fullpath).read())
-  suffix = fullpath.split(".")[-1]
-
-  if suffix == "html" or suffix == "htm":
-    response.headers["Content-type"] = "text/html"
-  elif suffix == "js":
-    response.headers["Content-type"] = "application/javascript"
-  elif suffix == "css":
-    response.headers["Content-type"] = "text/css"
-  elif suffix == "png":
-    response.headers["Content-type"] = "image/png"
-  elif suffix == "svg":
-    response.headers["Content-type"] = "image/svg+xml"
-
-  return response
-
-## API for ON.Lab local GUI ##
-@app.route('/topology', methods=['GET'])
-def topology_for_gui():
-  try:
-    url="http://%s:%s/wm/onos/topology/switches/json" % (RestIP, RestPort)
-    (code, result) = get_json(url)
-    parsedResult = json.loads(result)
-  except:
-    log_error("REST IF has issue: %s" % url)
-    log_error("%s" % result)
-    return
-
-  topo = {}
-  switches = []
-  links = []
-  devices = []
-
-  for v in parsedResult:
-    if v.has_key('dpid'):
-#      if v.has_key('dpid') and str(v['state']) == "ACTIVE":#;if you want only ACTIVE nodes
-      dpid = str(v['dpid'])
-      state = str(v['state'])
-      sw = {}
-      sw['name']=dpid
-      sw['group']= -1
-
-      if state == "INACTIVE":
-        sw['group']=0
-      switches.append(sw)
-
-  try:
-    url="http://%s:%s/wm/onos/registry/switches/json" % (RestIP, RestPort)
-    (code, result) = get_json(url)
-    parsedResult = json.loads(result)
-  except:
-    log_error("REST IF has issue: %s" % url)
-    log_error("%s" % result)
-
-  for key in parsedResult:
-    dpid = key
-    ctrl = parsedResult[dpid][0]['controllerId']
-    sw_id = node_id(switches, dpid)
-    if sw_id != -1:
-      if switches[sw_id]['group'] != 0:
-        switches[sw_id]['group'] = controllers.index(ctrl) + 1
-
-  try:
-    url = "http://%s:%s/wm/onos/topology/links/json" % (RestIP, RestPort)
-    (code, result) = get_json(url)
-    parsedResult = json.loads(result)
-  except:
-    log_error("REST IF has issue: %s" % url)
-    log_error("%s" % result)
-    return
-#    sys.exit(0)
-
-  for v in parsedResult:
-    link = {}
-    if v.has_key('dst-switch'):
-      dst_dpid = str(v['dst-switch'])
-      dst_id = node_id(switches, dst_dpid)
-    if v.has_key('src-switch'):
-      src_dpid = str(v['src-switch'])
-      src_id = node_id(switches, src_dpid)
-    link['source'] = src_id
-    link['target'] = dst_id
-
-    #onpath = 0
-    #for (s,d) in path:
-    #  if s == v['src-switch'] and d == v['dst-switch']:
-    #    onpath = 1
-    #    break
-    #link['type'] = onpath
-
-    links.append(link)
-
-  topo['nodes'] = switches
-  topo['links'] = links
-
-  js = json.dumps(topo)
-  resp = Response(js, status=200, mimetype='application/json')
-  return resp
-
-@app.route("/controller_status")
-def controller_status():
-  url= "http://%s:%d/wm/onos/registry/controllers/json" % (RestIP, RestPort)
-  (code, result) = get_json(url)
-  parsedResult = json.loads(result)
-
-  cont_status=[]
-  for i in controllers:
-    status={}
-    if i in parsedResult:
-      onos=1
-    else:
-      onos=0
-    status["name"]=i
-    status["onos"]=onos
-    status["cassandra"]=0
-    cont_status.append(status)
-
-  js = json.dumps(cont_status)
-  resp = Response(js, status=200, mimetype='application/json')
-  return resp
-
-if __name__ == "__main__":
-  app.debug = True
-  app.run(threaded=True, host="0.0.0.0", port=9000)