def make(self, apps):
        for (appname, app) in sorted(apps.items(), key=lambda x: (x[1].priority, x[0])):
            logger.info('Getting report results from %r', appname)
            for report_data in app.report_data:
                if report_data.subreport != self.name:
                    continue
                if report_data.function == 'total':
                    for opt in report_data:
                        match = report_data.parse_report_data(opt)
                        cond = match.group('condition')
                        valfld = match.group('valfld')
                        unit = match.group('unit')
                        itemtitle = match.group('fields').strip('"')
                        total = report_data.rules[opt].total_events(cond, valfld)
                        if total == 0:
                            continue
                        if unit is not None:
                            total, unit = get_value_unit(total, unit, 'T')
                            total = '{0} {1}'.format(total, unit)
                        else:
                            total = str(total)
                        report_data.results.append(tuple([total, itemtitle]))
                elif report_data.function == 'top':
                    k = int(report_data.topnum)
                    for opt in report_data:
                        match = report_data.parse_report_data(opt)
                        valfld = match.group('valfld')
                        field = match.group('fields')
                        usemax = match.group('add2res') is None
                        toplist = report_data.rules[opt].top_events(k, valfld, usemax, field)
                        report_data.results.extend(toplist)
                elif report_data.function == 'table':
                    cols = len(re.split('\s*,\s*', report_data.headers))
                    for opt in report_data:
                        match = report_data.parse_report_data(opt)
                        cond = match.group('condition')
                        fields = re.split('\s*,\s*', match.group('fields'))
                        tablelist = report_data.rules[opt].list_events(cond, cols, fields)
                        report_data.results.extend(tablelist)
                if report_data.results:
                    self.report_data.append(report_data)
        for report_data in self.report_data:
            if report_data.function == 'top':
                report_data.results = sorted(report_data.results, key=lambda x: x[0], reverse=True)
                unit = None
                for opt in report_data:
                    match = report_data.parse_report_data(opt)
                    unit = match.group('unit')
                    if unit is not None:
                        break
                for res in report_data.results:
                    if unit is not None:
                        v, u = get_value_unit(res[0], unit, 'T')
                        res[0] = '{0} {1}'.format(v, u)
                    else:
                        res[0] = str(res[0])