controllers should allow refreshes while findall is running.
[monitor.git] / monitor / scanapi.py
index 963822d..35f24ac 100644 (file)
@@ -20,7 +20,7 @@ from monitor.sources import comon
 from monitor.wrapper import plc, plccache
 
 import traceback
-from monitor.common import nmap_port_status
+from monitor.common import nmap_port_status, email_exception
 
 COMON_COTOPURL= "http://summer.cs.princeton.edu/status/tabulator.cgi?" + \
                        "table=table_nodeview&" + \
@@ -157,6 +157,7 @@ class ScanInterface(object):
 
                except:
                        print "ERROR:"
+                       email_exception(str(nodename))
                        print traceback.print_exc()
                        pass
 
@@ -203,13 +204,15 @@ class ScanNodeInternal(ScanInterface):
                                                echo '  "bmlog":"'`ls /tmp/bm.log`'",'
                                                echo '  "bootcd_version":"'`cat /mnt/cdrom/bootme/ID`'",'
                                                echo '  "nm_status":"'`ps ax | grep nm.py | grep -v grep`'",'
-                                               echo '  "fs_status":"'`touch /var/log/monitor 2>&1`'",'
+                                               echo '  "fs_status":"'`touch /var/log/monitor 2>&1 ; if [ -d /vservers/ ] ; then touch /vservers/monitor.log 2>&1 ; fi ; grep proc /proc/mounts | grep ro,`'",'
                                                echo '  "dns_status":"'`host boot.planet-lab.org 2>&1`'",'
                                                echo '  "princeton_comon_dir":"'`ls -d /vservers/princeton_comon`'",'
 
                                                ID=`grep princeton_comon /etc/passwd | awk -F : '{if ( $3 > 500 ) { print $3}}'` 
                                                echo '  "princeton_comon_running":"'`ls -d /proc/virtual/$ID`'",'
                                                echo '  "princeton_comon_procs":"'`vps ax | grep $ID | grep -v grep | wc -l`'",'
+                                               echo '  "rpm_version":"'`rpm -q NodeManager`'",'
+                                               echo '  "rpm_versions":"'`rpm -q -a`'",'
                                                echo "}"
 EOF                            """)
                                        
@@ -224,6 +227,8 @@ EOF                         """)
                                                                                'nm_status' : '', 
                                                                                'fs_status' : '',
                                                                                'dns_status' : '',
+                                                                               'rpm_version' : '',
+                                                                               'rpm_versions' : '',
                                                                                'princeton_comon_dir' : "", 
                                                                                'princeton_comon_running' : "", 
                                                                                'princeton_comon_procs' : "", 'ssh_portused' : None})
@@ -231,6 +236,9 @@ EOF                         """)
                                print traceback.print_exc()
                                sys.exit(1)
 
+                       print "ALLVERSIONS: %s %s" % (nodename, values['rpm_versions'])
+
+                       print "RPMVERSION: %s %s" % (nodename, values['rpm_version'])
                        ### RUN SSH ######################
                        b_getbootcd_id = True
 
@@ -334,9 +342,10 @@ EOF                                """)
                        plc_lock.acquire()
                        d_node = None
                        try:
-                               d_node = plc.getNodes({'hostname': nodename}, ['pcu_ids', 'site_id', 
-                                                                               'date_created', 'last_updated', 
-                                                                               'last_contact', 'boot_state', 'nodegroup_ids'])[0]
+                               d_node = plccache.GetNodeByName(nodename)
+                               #d_node = plc.getNodes({'hostname': nodename}, ['pcu_ids', 'site_id', 
+                               #                                               'date_created', 'last_updated', 
+                               #                                               'last_contact', 'boot_state', 'nodegroup_ids'])[0]
                        except:
                                traceback.print_exc()
                        plc_lock.release()
@@ -363,8 +372,9 @@ EOF                         """)
                        d_site = None
                        values['loginbase'] = ""
                        try:
-                               d_site = plc.getSites({'site_id': site_id}, 
-                                                                       ['max_slices', 'slice_ids', 'node_ids', 'login_base'])[0]
+                               d_site = plccache.GetSitesById([ site_id ])[0]
+                               #d_site = plc.getSites({'site_id': site_id}, 
+                               #                                       ['max_slices', 'slice_ids', 'node_ids', 'login_base'])[0]
                                values['loginbase'] = d_site['login_base']
                        except:
                                traceback.print_exc()