fix for compat mode
[tests.git] / system / Trackers.py
index 93b917a..de26b31 100644 (file)
@@ -1,6 +1,8 @@
 #!/usr/bin/python
-# $Id$
 
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA 
+#
 import os
 
 import utils
@@ -53,18 +55,33 @@ class Tracker:
         self.tracks.append( track )
         print "Recorded %s in tracker %s"%(track,self.filename)
 
+    # this stops the instances currently attached with this test session and release tracker
+    def release (self,track):
+        for already in self.tracks:
+            if already==track:
+                if self.options.dry_run:
+                    print 'dry_run: Tracker.release - skipping %s'%(track)
+                    return
+                self.tracks.remove(track)
+                print "Releasing %s in tracker %s"%(track,self.filename)
+                command = self.stop_command (track)
+                utils.header("Trackers.make_space track : %s"%command)
+                utils.system(command)
+        print '%s was not found in %s'%(track,self.filename)
+        return
+
     # this actually stops the old instances, so that the total fits in the number of instances 
-    def free (self):
+    def make_space (self):
         # number of instances to stop
         how_many=len(self.tracks)-self.instances
         # nothing todo until we have more than keep_vservers in the tracker
         if how_many <= 0:
-            print 'Tracker.free : limit %d not reached'%self.instances
+            print 'Tracker.make_space : limit %d not reached'%self.instances
             return
         to_stop = self.tracks[:how_many]
         for track in to_stop:
             command = self.stop_command (track)
-            utils.header("Trackers.free track : %s"%command)
+            utils.header("Trackers.make_space track : %s"%command)
             utils.system(command)
         if not self.options.dry_run:
             self.tracks = self.tracks[how_many:]
@@ -92,10 +109,19 @@ class TrackerPlc (Tracker):
     def record (self, hostname, vservername):
         Tracker.record (self,"%s@%s"%(hostname,vservername))
 
+    def release (self, hostname, vservername):
+        Tracker.release (self,"%s@%s"%(hostname,vservername))
+
     def stop_command (self, track):
         (hostname,vservername) = track.split('@')
         return TestSsh(hostname).actual_command("vserver --silent %s stop"%vservername)
         
+    def plcnames (self):
+        return [ self.plcname(track) for track in self.tracks ]
+
+    def plcname (self, track):
+        (hostname,vservername) = track.split('@')
+        return vservername.rsplit('-',1)[1]
 
 class TrackerQemu (Tracker):
 
@@ -111,6 +137,24 @@ class TrackerQemu (Tracker):
     def record (self, hostname, buildname, nodename):
         Tracker.record (self,"%s@%s@%s"%(hostname,buildname,nodename))
 
+    def release (self, hostname, buildname, nodename):
+        Tracker.release (self,"%s@%s@%s"%(hostname,buildname,nodename))
+
     def stop_command (self, track):
         (hostname,buildname,nodename) = track.split('@')
         return TestSsh(hostname).actual_command("%s/qemu-%s/qemu-kill-node this"%(buildname,nodename))
+
+    def hostnames (self):
+        return [ self.hostname(track) for track in self.tracks ]
+
+    def hostname (self, track):
+        (hostname,buildname,nodename) = track.split('@')
+        return hostname
+
+    def nodenames (self):
+        return [ self.nodename(track) for track in self.tracks ]
+        
+    def nodename (self, track):
+        (hostname,buildname,nodename) = track.split('@')
+        return nodename
+