To collect per-lease data, you first have to specify the new type of data (or ``stat'') you will be collecting in your probe's constructor. This is done using the create_lease_stat method in AccountingDataCollection (which is stored in an accounting attribute in all probes). For example, let's assume you want to keep track of an admittedly silly statistic: whether the lease's identifier is odd or even. You could create a stat called Odd or even?:
from haizea.core.accounting import AccountingProbe
class MyProbe(AccountingProbe):
def __init__(self, accounting):
AccountingProbe.__init__(self, accounting)
self.accounting.create_lease_stat("Odd or even?")
To set the value of this stat, you must use the set_lease_stat method in AccountingDataCollection. For this stat, it would make sense to call this method from the at_lease_request method in the probe:
def at_lease_request(self, lease):
if lease.id \% 2 == 1:
value = "odd"
else:
value = "even"
self.accounting.set_lease_stat("Odd or even?", lease.id, value)
If you run Haizea with this probe, and then use haizea-convert-data to print the per-lease data collected by the probes, there will be an additional column titled Odd or even? in the generated CSV file.
Borja Sotomayor 2009-12-17