Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)