issue-diff: use bugowner or maintainer as assignee for bug.

This commit is contained in:
Jimmy Berry 2017-02-07 21:47:50 -06:00
parent 080dd83110
commit d9e7637a60

View File

@ -31,7 +31,7 @@ ISSUE_SUMMARY = u'[{label}]({url}) owned by {owner}: {summary}'
ISSUE_SUMMARY_PLAIN = u'[{label}]({url})'
def bug_create(bugzilla_api, meta, cc, summary, description):
def bug_create(bugzilla_api, meta, assigned_to, cc, summary, description):
createinfo = bugzilla_api.build_createbug(
product=meta[0],
component=meta[1],
@ -39,6 +39,7 @@ def bug_create(bugzilla_api, meta, cc, summary, description):
severity='normal',
op_sys='Linux',
platform='PC',
assigned_to=assigned_to,
cc=cc,
summary=summary,
description=description)
@ -46,6 +47,28 @@ def bug_create(bugzilla_api, meta, cc, summary, description):
return newbug.id
def user_email(apiurl, userid):
url = osc.core.makeurl(apiurl, ('person', userid))
root = ET.parse(osc.core.http_GET(url)).getroot()
email = root.find('email')
return email.text if email is not None else None
def bug_owner(apiurl, package):
query = {
'binary': package,
}
url = osc.core.makeurl(apiurl, ('search', 'owner'), query=query)
root = ET.parse(osc.core.http_GET(url)).getroot()
bugowner = root.find('.//person[@role="bugowner"]')
if bugowner is not None:
return user_email(apiurl, bugowner.get('name'))
maintainer = root.find('.//person[@role="maintainer"]')
if maintainer is not None:
return user_email(apiurl, maintainer.get('name'))
return None
def bug_meta_get(bugzilla_api, bug_id):
bug = bugzilla_api.getbug(bug_id)
return (bug.product, bug.component, bug.version)
@ -304,9 +327,10 @@ def main(args):
# Determine bugzilla meta information to use when creating bug.
meta = bug_meta(bugzilla_api, bugzilla_defaults, trackers, changes.keys())
owner = bug_owner(apiurl, package)
if args.bugzilla_cc:
cc.append(args.bugzilla_cc)
bug_id = bug_create(bugzilla_api, meta, cc, summary, message)
bug_id = bug_create(bugzilla_api, meta, owner, cc, summary, message)
# Mark changes in db.
notified, whitelisted = 0, 0