From cccbcf3069da9b6fe5e5817b5370bf1339bf42eb Mon Sep 17 00:00:00 2001
From: Stephen Soltesz <soltesz@cs.princeton.edu>
Date: Mon, 27 Jul 2009 16:23:41 +0000
Subject: [PATCH] add a 'delete_recent' function to ActionRecord collect
 'uptime'

---
 monitor/database/info/action.py |  5 +++++
 monitor/scanapi.py              | 14 ++++----------
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/monitor/database/info/action.py b/monitor/database/info/action.py
index 0cdad0a..f324daa 100644
--- a/monitor/database/info/action.py
+++ b/monitor/database/info/action.py
@@ -83,6 +83,11 @@ class ActionRecord(Entity):
 		# TODO: need to sort on 'round' since actions will not be globally sync'd.
 		return cls.query.filter_by(**kwargs).order_by(ActionRecord.id.desc()).first()
 
+	@classmethod
+	def delete_recent_by(cls, since, **kwargs):
+		acts = cls.query.filter_by(**kwargs).filter(cls.date_created >= datetime.now() - timedelta(since)).order_by(cls.date_created.desc())
+		for i in acts: i.delete()
+
 	# ACCOUNTING
 	date_created = Field(DateTime,default=datetime.now)
 	loginbase = Field(String,default=None)
diff --git a/monitor/scanapi.py b/monitor/scanapi.py
index 60ba41d..af7fcd4 100644
--- a/monitor/scanapi.py
+++ b/monitor/scanapi.py
@@ -206,6 +206,7 @@ class ScanNodeInternal(ScanInterface):
 						echo '  "nm_status":"'`ps ax | grep nm.py | grep -v grep`'",'
 						echo '  "dns_status":"'`host boot.planet-lab.org 2>&1`'",'
 						echo '  "princeton_comon_dir":"'`ls -d /vservers/princeton_comon`'",'
+						echo '  "uptime":"'`uptime`'",'
 
 						ID=`grep princeton_comon /etc/passwd | awk -F : '{if ( $3 > 500 ) { print $3}}'` 
 						echo '  "princeton_comon_running":"'`ls -d /proc/virtual/$ID`'",'
@@ -226,6 +227,7 @@ EOF				""")
 						values.update({'kernel_version': "", 'bmlog' : "", 'bootcd_version' : '', 
 										'nm_status' : '', 
 										'fs_status' : '',
+										'uptime' : '',
 										'dns_status' : '',
 										'rpm_version' : '',
 										'rpm_versions' : '',
@@ -240,6 +242,7 @@ EOF				""")
 			print "ALLVERSIONS: %s %s" % (nodename, values['rpm_versions'])
 
 			print "RPMVERSION: %s %s" % (nodename, values['rpm_version'])
+			print "UPTIME: %s %s" % (nodename, values['uptime'])
 			### RUN SSH ######################
 			b_getbootcd_id = True
 
@@ -340,16 +343,7 @@ EOF				""")
 										'memsize'  : 'null'}
 			# include output value
 			### GET PLC NODE ######################
-			plc_lock.acquire()
-			d_node = None
-			try:
-				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()
+			d_node = plccache.GetNodeByName(nodename)
 			values['plc_node_stats'] = d_node
 
 			##### NMAP  ###################
-- 
2.47.0