changes for 3.0
[monitor.git] / comon.py
index 1182114..8d96e16 100755 (executable)
--- a/comon.py
+++ b/comon.py
@@ -40,6 +40,40 @@ COMONURL = "http://summer.cs.princeton.edu/status/tabulator.cgi?table=table_node
 #      3 == rins
 #      4 == ins
 
+def _tohash(rawdata):
+       # First line Comon returns is list of keys with respect to index
+       try:
+               keys = rawdata.readline().rstrip().split(", ")
+               l_host = []
+               hash = {}
+               i_ignored = 0
+               for line in rawdata.readlines():
+                       l_host = line.rstrip().split(", ")              # split the line on ', '
+                       hostname = l_host[0]
+                       hash[hostname] = {}
+                       for i in range(1,len(keys)):
+                               hash[hostname][keys[i]]=l_host[i]
+
+       except Exception, err:
+               logger.debug("No hosts retrieved")      
+               return {} 
+       return hash
+
+def comonget(url):
+       rawdata = None
+       print "Getting: %s" % url
+       try:
+               coserv = urllib2.Request(url)
+               coserv.add_header('User-Agent', 'PL_Monitor +http://monitor.planet-lab.org/')
+               opener = urllib2.build_opener()
+               # Initial web get from summer.cs in CSV
+               rawdata = opener.open(coserv)
+       except urllib2.URLError, (err):
+               print "Attempting %s" %COMONURL
+               print "URL error (%s)" % (err)
+               rawdata = None
+       return _tohash(rawdata)
+
 
 class Comon(Thread): 
        """
@@ -211,12 +245,6 @@ def main():
                        print("%-40s \t Bootstate %s nodetype %s kernver %s keyok %s" % ( 
                                host, cdb[host]['bootstate'], cdb[host]['nodetype'], 
                                cdb[host]['kernver'], cdb[host]['keyok']))
-                       #ssh = soltesz.SSH('root', host)
-                       #try:
-                       #       val = ssh.run("uname -r")
-                       #       print "%s == %s" % (host, val),
-                       #except:
-                       #       pass
        #       else:
        #               print("key mismatch at: %s" % host)
        #print a.codata['michelangelo.ani.univie.ac.at']