def run(self): self.parse_options() datafiles = self.args[1:] if len(datafiles) == 0: print "Please specify at least one datafile to convert" exit(1) datafile1 = unpickle(datafiles[0]) counter_names = datafile1.counters.keys() attr_names = datafile1.attrs.keys() lease_stats_names = datafile1.lease_stats_names stats_names = datafile1.stats_names if self.opt.list_counters: for counter in counter_names: print counter exit(0) if self.opt.type == "per-run": header_fields = attr_names + stats_names elif self.opt.type == "per-lease": header_fields = attr_names + ["lease_id"] + lease_stats_names elif self.opt.type == "counter": counter = self.opt.counter if not datafile1.counters.has_key(counter): print "The specified datafile does not have a counter called '%s'" % counter exit(1) header_fields = attr_names + ["time", "value"] if datafile1.counter_avg_type[ counter] != AccountingDataCollection.AVERAGE_NONE: header_fields.append("average") header = ",".join(header_fields) print header for datafile in datafiles: data = unpickle(datafile) attrs = [data.attrs[attr_name] for attr_name in attr_names] if self.opt.type == "per-run": fields = attrs + [ ` data.stats[stats_name] ` for stats_name in stats_names ] print ",".join(fields)
def run(self): self.parse_options() datafiles=self.args[1:] if len(datafiles) == 0: print "Please specify at least one datafile to convert" exit(1) datafile1 = unpickle(datafiles[0]) counter_names = datafile1.counters.keys() attr_names = datafile1.attrs.keys() lease_stats_names = datafile1.lease_stats_names stats_names = datafile1.stats_names if self.opt.list_counters: for counter in counter_names: print counter exit(0) if self.opt.type == "per-run": header_fields = attr_names + stats_names elif self.opt.type == "per-lease": header_fields = attr_names + ["lease_id"] + lease_stats_names elif self.opt.type == "counter": counter = self.opt.counter if not datafile1.counters.has_key(counter): print "The specified datafile does not have a counter called '%s'" % counter exit(1) header_fields = attr_names + ["time", "value"] if datafile1.counter_avg_type[counter] != AccountingDataCollection.AVERAGE_NONE: header_fields.append("average") header = ",".join(header_fields) print header for datafile in datafiles: data = unpickle(datafile) attrs = [data.attrs[attr_name] for attr_name in attr_names] if self.opt.type == "per-run": fields = attrs + [`data.stats[stats_name]` for stats_name in stats_names] print ",".join(fields)
def run(self): self.parse_options() datafiles=self.args[1:] if len(datafiles) == 0: print "Please specify at least one datafile to convert" exit(1) counter_names = set() attr_names = set() lease_stats_names = set() stats_names = set() for datafile in datafiles: try: data = unpickle(datafile) counter_names.update(data.counters.keys()) attr_names.update(data.attrs.keys()) lease_stats_names.update(data.lease_stats_names) stats_names.update(data.stats_names) except: print >> sys.stderr, "Error reading file %s" % (datafile) counter_names = list(counter_names) attr_names = list(attr_names) lease_stats_names = list(lease_stats_names) stats_names = list(stats_names) if self.opt.list_counters: for counter in counter_names: print counter exit(0) if self.opt.type == "per-run": header_fields = attr_names + stats_names elif self.opt.type == "per-lease": header_fields = attr_names + ["lease_id"] + lease_stats_names elif self.opt.type == "counter": counter = self.opt.counter data = unpickle(datafiles[0]) if not data.counters.has_key(counter): print "The specified datafile does not have a counter called '%s'" % counter exit(1) header_fields = attr_names + ["time", "value"] if data.counter_avg_type[counter] != AccountingDataCollection.AVERAGE_NONE: header_fields.append("average") header = ",".join(header_fields) print header for datafile in datafiles: try: data = unpickle(datafile) attrs = [data.attrs.get(attr_name, "") for attr_name in attr_names] if self.opt.type == "per-run": fields = attrs + [str(data.stats.get(stats_name,"")) for stats_name in stats_names] print ",".join(fields) elif self.opt.type == "per-lease": leases = data.lease_stats for lease_id, lease_stat in leases.items(): fields = attrs + [`lease_id`] + [str(lease_stat.get(lease_stat_name,"")) for lease_stat_name in lease_stats_names] print ",".join(fields) elif self.opt.type == "counter": for (time, lease_id, value, avg) in data.counters[counter]: fields = attrs + [`time`, `value`] if data.counter_avg_type[counter] != AccountingDataCollection.AVERAGE_NONE: fields.append(`avg`) print ",".join(fields) except: print >> sys.stderr, "Error reading file %s" % (datafile)