[haizea-commit] r779 - in branches/1.1/src/haizea: core pluggable/accounting

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Sun Jan 17 22:02:29 CST 2010


Author: borja
Date: 2010-01-17 22:02:29 -0600 (Sun, 17 Jan 2010)
New Revision: 779

Modified:
   branches/1.1/src/haizea/core/leases.py
   branches/1.1/src/haizea/pluggable/accounting/leases.py
Log:
Store more information about leases in the accounting file

Modified: branches/1.1/src/haizea/core/leases.py
===================================================================
--- branches/1.1/src/haizea/core/leases.py	2010-01-18 03:51:32 UTC (rev 778)
+++ branches/1.1/src/haizea/core/leases.py	2010-01-18 04:02:29 UTC (rev 779)
@@ -1046,6 +1046,9 @@
     def __repr__(self):
         """Returns a string representation of the Duration"""
         return "REQ: %s  |  SCH: %s  |  ACT: %s" % (self.requested, self.scheduled, self.actual)
+    
+    def is_requested_exact(self):
+        return self.requested != Timestamp.UNSPECIFIED and self.requested != Timestamp.NOW
         
 class Duration(object):
     """A duration

Modified: branches/1.1/src/haizea/pluggable/accounting/leases.py
===================================================================
--- branches/1.1/src/haizea/pluggable/accounting/leases.py	2010-01-18 03:51:32 UTC (rev 778)
+++ branches/1.1/src/haizea/pluggable/accounting/leases.py	2010-01-18 04:02:29 UTC (rev 779)
@@ -22,7 +22,7 @@
 from haizea.core.leases import Lease
 from haizea.common.utils import get_policy
 
-from mx.DateTime import TimeDelta
+from mx.DateTime import TimeDelta, DateTime
           
 class LeaseProbe(AccountingProbe):
     """
@@ -77,16 +77,34 @@
     """
     
     LEASE_STAT_STATE="State"
+    LEASE_STAT_NUMNODES="Number of nodes"
+    LEASE_STAT_REQDURATION="Requested duration"
+    LEASE_STAT_DURATION="Actual duration"
+    LEASE_STAT_START="Start"
+    LEASE_STAT_DEADLINE="Deadline"
     
     def __init__(self, accounting):
         """See AccountingProbe.__init__"""
         AccountingProbe.__init__(self, accounting)
         self.accounting.create_lease_stat(LeaseExtrasProbe.LEASE_STAT_STATE)
+        self.accounting.create_lease_stat(LeaseExtrasProbe.LEASE_STAT_NUMNODES)
+        self.accounting.create_lease_stat(LeaseExtrasProbe.LEASE_STAT_REQDURATION)
+        self.accounting.create_lease_stat(LeaseExtrasProbe.LEASE_STAT_DURATION)
+        self.accounting.create_lease_stat(LeaseExtrasProbe.LEASE_STAT_START)
+        self.accounting.create_lease_stat(LeaseExtrasProbe.LEASE_STAT_DEADLINE)
         
 
     def at_lease_done(self, lease):
         """See AccountingProbe.at_lease_done"""
         self.accounting.set_lease_stat(LeaseExtrasProbe.LEASE_STAT_STATE, lease.id, Lease.state_str[lease.get_state()])
+        self.accounting.set_lease_stat(LeaseExtrasProbe.LEASE_STAT_NUMNODES, lease.id, lease.numnodes)
+        self.accounting.set_lease_stat(LeaseExtrasProbe.LEASE_STAT_REQDURATION, lease.id, lease.duration.requested.seconds)
+        if lease.duration.actual != None:
+            self.accounting.set_lease_stat(LeaseExtrasProbe.LEASE_STAT_DURATION, lease.id, lease.duration.actual.seconds)
+        if lease.start.is_requested_exact():
+            self.accounting.set_lease_stat(LeaseExtrasProbe.LEASE_STAT_START, lease.id, (lease.start.requested - lease.submit_time).seconds)
+            if lease.deadline != None:
+                self.accounting.set_lease_stat(LeaseExtrasProbe.LEASE_STAT_DEADLINE, lease.id, (lease.deadline - lease.start.requested).seconds)
         for name, value in lease.extras.items():
             self.accounting.create_lease_stat(name)
             self.accounting.set_lease_stat(name, lease.id, value)
@@ -311,7 +329,7 @@
             user_rate = float(lease.extras["simul_userrate"])
             user_price = get_policy().pricing.get_base_price(lease, user_rate)
             
-            if lease.get_state() == Lease.STATE_DONE:
+            if lease.get_state() == Lease.STATE_DONE and lease.extras.has_key("rate"):
                 surcharge = lease.price - get_policy().pricing.get_base_price(lease, lease.extras["rate"])
                 self.accounting.incr_counter(PriceProbe.COUNTER_MISSED_REVENUE_UNDERCHARGE, lease.id, user_price - lease.price)
                 self.accounting.incr_counter(PriceProbe.COUNTER_SURCHARGE, lease.id, surcharge)



More information about the Haizea-commit mailing list