예제 #1
0
    def bug_data(self, bugidlist, tdelta, bugcolumn=DEFAULT_BUGCOLUMN):
        bugsdata = []
        for id in bugidlist:
            argv_openbug = ['-w', bugcolumn, str(id)]
            args = bz.parse_options(argv_openbug)
            bugzilla_url = bz.options.bugzilla_url

            bd_bug = bd.Bug()
            cookie_file = bd_bug.cookie_file()
            server = bz.BugzillaServer(bugzilla_url, cookie_file, bz.options)
            server.login()

            bug_id = args[0]
            regular_bugdata = {}
            bugdata = server.show_bug(bug_id, regular_bugdata)
            link = 'https://bugzilla.eng.vmware.com/show_bug.cgi?id=' + str(
                bugdata['Bug ID'])
            bugdata['buglink'] = genHyperLink(str(bugdata['Bug ID']), link)
            time_format = '%Y-%m-%d %H:%M:%S'
            create_time = time.strptime(bugdata['Creation Date'],
                                        '%Y.%m.%d %H:%M:%S')
            create_time = time.strftime(time_format, create_time)
            create_time = datetime.datetime.strptime(create_time, time_format)
            bugdata['Creation Date'] = create_time

            report_time = datetime.datetime.now()
            if (report_time - create_time).days > tdelta:
                break
            if bugdata['Status'] != 'resolved' and bugdata[
                    'Status'] != 'closed':
                openeddelta = TODAY - create_time
                bugdata['Time expense (opened)'] = openeddelta.days

            #resolved date and closed date
            ori_bugata = server.original_bugdata(bug_id)
            if ori_bugata.has_key('comments'):
                for comment in ori_bugata['comments']:
                    for comment_ in comment['activity']:
                        if comment_['what'] == 'Status':
                            if comment_['added'] == 'resolved':
                                bugdata['Resolved Date'] = comment_['time']
                                resolved_time = datetime.datetime.strptime(
                                    bugdata['Resolved Date'], time_format)
                                tdelta_ = resolved_time - create_time
                                time_expense = tdelta_.days
                                bugdata[
                                    'Time expense (opened -> resolved)'] = time_expense
                            if comment_['added'] == 'closed':
                                bugdata['Closed Date'] = comment_['time']
                                closed_time = datetime.datetime.strptime(
                                    bugdata['Closed Date'], time_format)
                                tdelta_ = closed_time - resolved_time
                                time_expense = tdelta_.days
                                bugdata[
                                    'Time expense (resolved -> closed)'] = time_expense
            bugsdata.append(bugdata)
        return bugsdata
예제 #2
0
    def buglist(self, arg):
        arg = bz.parse_options(arg)
        bugzilla_url = bz.options.bugzilla_url

        cookie_file = self.cookie_file()
        server = bz.BugzillaServer(bugzilla_url, cookie_file, bz.options)
        server.login()

        bugidlist = server.query(bz.options.query)
        return bugidlist
예제 #3
0
    def bug_data(self, bugidlist, bugcolumn=DEFAULT_BUGCOLUMN):
        bugsdata = []
        for id in bugidlist:
            argv_openbug = ['-w', bugcolumn, str(id)]
            args = bz.parse_options(argv_openbug)
            bugzilla_url = bz.options.bugzilla_url

            cookie_file = self.cookie_file()
            server = bz.BugzillaServer(bugzilla_url, cookie_file, bz.options)
            server.login()

            bug_id = args[0]
            regular_bugdata = {}
            bugdata = server.show_bug(bug_id, regular_bugdata)
            if (bugdata['Status'] == 'closed'):
                continue

            link = 'https://bugzilla.eng.vmware.com/show_bug.cgi?id=' + str(
                bugdata['Bug ID'])
            bugdata['Bug ID'] = genHyperLink(str(bugdata['Bug ID']), link)
            time_format = '%Y-%m-%d %H:%M:%S'
            ori_bugata = server.original_bugdata(bug_id)
            if ori_bugata.has_key('comments'):
                for comment in ori_bugata['comments']:
                    for comment_ in comment['activity']:
                        if comment_['what'] == 'Status':
                            if comment_['added'] == 'resolved':
                                bugdata['Resolved Date'] = comment_['time']
                                if bugdata['Status'] == 'resolved':
                                    resolved_time = datetime.datetime.strptime(
                                        bugdata['Resolved Date'], time_format)
                                    tdelta_ = NOW_TIME - resolved_time
                                    bugdata[
                                        'Time expense (resolved)'] = tdelta_.days
            flag = False
            if bugdata.has_key('Dup_id'):
                dup_bugid = [bugdata['Dup_id']]
                # if the duplicated bug is also be duplicated
                if dup_bugid != ['']:
                    i = 0
                    duplicate = str(bug_id)
                    dup_product = bugdata['Product']
                    while i <= (len(dup_bugid) - 1):
                        dup_bug = server.original_bugdata(dup_bugid[i])
                        if dup_bug['bug_status'] != 'closed' and dup_bug[
                                'bug_status'] != 'resolved':
                            flag = True
                        elif dup_bug['bug_status'] == 'resolved':
                            dup_bug = self.bugstatusdate(dup_bug)
                            resolved_time = datetime.datetime.strptime(
                                dup_bug['Resolved Date'], time_format)
                            tdelta = NOW_TIME - resolved_time
                            if tdelta.days <= 7:
                                flag = True
                        else:
                            dup_bug = self.bugstatusdate(dup_bug)
                            closed_time = datetime.datetime.strptime(
                                dup_bug['Closed Date'], time_format)
                            tdelta = NOW_TIME - closed_time
                            if tdelta.days <= 7:
                                flag = True
                        if flag:
                            link = 'https://bugzilla.eng.vmware.com/show_bug.cgi?id=' + str(
                                dup_bugid[i])
                            duplicate += '->' + genHyperLink(
                                str(dup_bugid[i]),
                                link) + '(' + dup_bug['bug_status'] + ')'
                            if dup_product != dup_bug['product']:
                                dup_product = ''
                            flag = False
                        if dup_bug['dup_id'] != '':
                            dup_bugid.append(dup_bug['dup_id'])
                        i += 1
                    bugdata['dup_product'] = dup_product
                    if duplicate != str(bug_id):
                        bugdata['Duplicate'] = duplicate
            bugsdata.append(bugdata)
        return bugsdata