make plc ready for omf &/| reservation testing
[tests.git] / system / Trackers.py
index 257c033..29cff12 100644 (file)
@@ -53,17 +53,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.make_space track : %s"%command)
             utils.system(command)
         if not self.options.dry_run:
             self.tracks = self.tracks[how_many:]
@@ -72,6 +88,7 @@ class Tracker:
     def cleanup (self):
         for track in self.tracks:
             command=self.stop_command(track)
+            utils.header("Trackers.cleanup track : %s"%command)
             utils.system(command)
         if not self.options.dry_run:
             self.tracks=[]
@@ -90,10 +107,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):
 
@@ -109,6 +135,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
+