[haizea-commit] r469 - trunk/src/haizea/resourcemanager

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Thu Aug 7 06:10:00 CDT 2008


Author: borja
Date: 2008-08-07 06:09:59 -0500 (Thu, 07 Aug 2008)
New Revision: 469

Modified:
   trunk/src/haizea/resourcemanager/resourcepool.py
   trunk/src/haizea/resourcemanager/rm.py
   trunk/src/haizea/resourcemanager/slottable.py
Log:
Miscellaneous small fixes

Modified: trunk/src/haizea/resourcemanager/resourcepool.py
===================================================================
--- trunk/src/haizea/resourcemanager/resourcepool.py	2008-08-07 10:32:58 UTC (rev 468)
+++ trunk/src/haizea/resourcemanager/resourcepool.py	2008-08-07 11:09:59 UTC (rev 469)
@@ -39,11 +39,15 @@
         
         self.imagenode_bandwidth = self.info.get_bandwidth()
         
-        self.reusealg = self.rm.config.get("diskimage-reuse")
-        if self.reusealg == constants.REUSE_IMAGECACHES:
-            self.maxcachesize = self.rm.config.get("diskimage-cache-size")
+        self.lease_deployment_type = self.rm.config.get("lease-preparation")
+        if self.lease_deployment_type == constants.DEPLOYMENT_TRANSFER:
+            self.reusealg = self.rm.config.get("diskimage-reuse")
+            if self.reusealg == constants.REUSE_IMAGECACHES:
+                self.maxcachesize = self.rm.config.get("diskimage-cache-size")
+            else:
+                self.maxcachesize = None
         else:
-            self.maxcachesize = None
+            self.reusealg = None
             
     def loadEnactmentModules(self):
         mode = self.rm.config.get("mode")

Modified: trunk/src/haizea/resourcemanager/rm.py
===================================================================
--- trunk/src/haizea/resourcemanager/rm.py	2008-08-07 10:32:58 UTC (rev 468)
+++ trunk/src/haizea/resourcemanager/rm.py	2008-08-07 11:09:59 UTC (rev 469)
@@ -315,16 +315,29 @@
     # events in OpenNebula 1.2. For now, the only event is a prematurely
     # ending VM.
     def notify_event(self, lease_id, event):
-        self.scheduler.notify_event(lease_id, event)
-
+        try:
+            self.scheduler.notify_event(lease_id, event)
+        except Exception, msg:
+            # Exit if something goes horribly wrong
+            self.logger.error("Exception when notifying an event for lease %i. Dumping state..." % lease_id , constants.RM)
+            self.print_stats("ERROR", verbose=True)
+            raise            
+        
     def cancel_lease(self, lease_id):
         """Cancels a lease.
         
         Arguments:
         lease -- Lease to cancel
-        """
-        self.scheduler.cancel_lease(lease_id)
+        """    
+        try:
+            self.scheduler.cancel_lease(lease_id)
+        except Exception, msg:
+            # Exit if something goes horribly wrong
+            self.logger.error("Exception when canceling lease %i. Dumping state..." % lease_id, constants.RM)
+            self.print_stats("ERROR", verbose=True)
+            raise          
 
+
             
 class Clock(object):
     """Base class for the resource manager's clock.

Modified: trunk/src/haizea/resourcemanager/slottable.py
===================================================================
--- trunk/src/haizea/resourcemanager/slottable.py	2008-08-07 10:32:58 UTC (rev 468)
+++ trunk/src/haizea/resourcemanager/slottable.py	2008-08-07 11:09:59 UTC (rev 469)
@@ -177,8 +177,9 @@
         # Inefficient, but ok since this query seldom happens
         res = [i.value for i in self.reservationsByEnd if isinstance(i.value, ds.VMResourceReservation) and i.value.prematureend > after]
         if len(res) > 0:
-            res.sort()
-            return res[0].prematureend
+            prematureends = [r.prematureend for r in res]
+            prematureends.sort()
+            return prematureends[0]
         else:
             return None
     
@@ -405,9 +406,9 @@
 
     def findLeasesToPreempt(self, mustpreempt, startTime, endTime):
         def comparepreemptability(rrX, rrY):
-            if rrX.lease.tSubmit > rrY.lease.submit_time:
+            if rrX.lease.submit_time > rrY.lease.submit_time:
                 return constants.BETTER
-            elif rrX.lease.tSubmit < rrY.lease.submit_time:
+            elif rrX.lease.submit_time < rrY.lease.submit_time:
                 return constants.WORSE
             else:
                 return constants.EQUAL        
@@ -821,10 +822,12 @@
         
         # TODO: The deployment module should just provide a list of nodes
         # it prefers
-        reusealg = self.rm.config.get("diskimage-reuse")
         nodeswithimg=[]
-        if reusealg==constants.REUSE_IMAGECACHES:
-            nodeswithimg = self.rm.resourcepool.getNodesWithImgInPool(diskImageID, start)
+        self.lease_deployment_type = self.rm.config.get("lease-preparation")
+        if self.lease_deployment_type == constants.DEPLOYMENT_TRANSFER:
+            reusealg = self.rm.config.get("diskimage-reuse")
+            if reusealg==constants.REUSE_IMAGECACHES:
+                nodeswithimg = self.rm.resourcepool.getNodesWithImgInPool(diskImageID, start)
 
         # Compares node x and node y. 
         # Returns "x is ??? than y" (???=BETTER/WORSE/EQUAL)



More information about the Haizea-commit mailing list