[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