the-new-hotness: Fix patch file
Signed-off-by: Michal Konečný <mkonecny@redhat.com>
This commit is contained in:
parent
e75f1366cc
commit
433114a5da
1 changed files with 275 additions and 7 deletions
|
@ -1,10 +1,54 @@
|
||||||
--- bz.py
|
--- bz.py
|
||||||
+++ bz.py
|
+++ bz.py
|
||||||
@@ -60,10 +60,25 @@ class Bugzilla(object):
|
@@ -31,46 +31,66 @@ _log = logging.getLogger(__name__)
|
||||||
url = self.config.get("url", default)
|
|
||||||
self.username = self.config["user"]
|
class Bugzilla(object):
|
||||||
password = self.config["password"]
|
base_query = {
|
||||||
- self.bugzilla = bugzilla.Bugzilla(url=url, cookiefile=None, tokenfile=None)
|
- 'query_format': 'advanced',
|
||||||
|
- 'emailreporter1': '1',
|
||||||
|
- 'emailtype1': 'exact',
|
||||||
|
+ "query_format": "advanced",
|
||||||
|
+ "emailreporter1": "1",
|
||||||
|
+ "emailtype1": "exact",
|
||||||
|
}
|
||||||
|
- bug_status_early = ['NEW', 'ASSIGNED']
|
||||||
|
+ bug_status_early = ["NEW", "ASSIGNED"]
|
||||||
|
bug_status_open = bug_status_early + [
|
||||||
|
- 'MODIFIED', 'ON_DEV', 'ON_QA', 'VERIFIED', 'FAILS_QA',
|
||||||
|
- 'RELEASE_PENDING', 'POST']
|
||||||
|
- bug_status_closed = ['CLOSED']
|
||||||
|
+ "MODIFIED",
|
||||||
|
+ "ON_DEV",
|
||||||
|
+ "ON_QA",
|
||||||
|
+ "VERIFIED",
|
||||||
|
+ "FAILS_QA",
|
||||||
|
+ "RELEASE_PENDING",
|
||||||
|
+ "POST",
|
||||||
|
+ ]
|
||||||
|
+ bug_status_closed = ["CLOSED"]
|
||||||
|
|
||||||
|
new_bug = {
|
||||||
|
- 'op_sys': 'Unspecified',
|
||||||
|
- 'platform': 'Unspecified',
|
||||||
|
- 'bug_severity': 'unspecified',
|
||||||
|
+ "op_sys": "Unspecified",
|
||||||
|
+ "platform": "Unspecified",
|
||||||
|
+ "bug_severity": "unspecified",
|
||||||
|
}
|
||||||
|
|
||||||
|
def __init__(self, consumer, config):
|
||||||
|
self.consumer = consumer
|
||||||
|
self.config = config
|
||||||
|
- default = 'https://partner-bugzilla.redhat.com'
|
||||||
|
- url = self.config.get('url', default)
|
||||||
|
- self.username = self.config['user']
|
||||||
|
- password = self.config['password']
|
||||||
|
- self.bugzilla = bugzilla.Bugzilla(
|
||||||
|
- url=url, cookiefile=None, tokenfile=None)
|
||||||
|
+ default = "https://partner-bugzilla.redhat.com"
|
||||||
|
+ url = self.config.get("url", default)
|
||||||
|
+ self.username = self.config["user"]
|
||||||
|
+ password = self.config["password"]
|
||||||
+ api_key = self.config["api_key"]
|
+ api_key = self.config["api_key"]
|
||||||
+ _log.info("Using BZ URL %s" % url)
|
+ _log.info("Using BZ URL %s" % url)
|
||||||
+
|
+
|
||||||
|
@ -27,5 +71,229 @@
|
||||||
- _log.info("Logging in to %s" % url)
|
- _log.info("Logging in to %s" % url)
|
||||||
- self.bugzilla.login(self.username, password)
|
- self.bugzilla.login(self.username, password)
|
||||||
|
|
||||||
self.base_query["product"] = self.config["product"]
|
- self.base_query['product'] = self.config['product']
|
||||||
self.base_query["email1"] = self.config["user"]
|
- self.base_query['email1'] = self.config['user']
|
||||||
|
+ self.base_query["product"] = self.config["product"]
|
||||||
|
+ self.base_query["email1"] = self.config["user"]
|
||||||
|
|
||||||
|
- self.new_bug['product'] = self.config['product']
|
||||||
|
+ self.new_bug["product"] = self.config["product"]
|
||||||
|
if "keywords" in self.config:
|
||||||
|
- self.new_bug['keywords'] = self.config['keywords']
|
||||||
|
- self.new_bug['version'] = self.config['version']
|
||||||
|
- self.new_bug['status'] = self.config['bug_status']
|
||||||
|
+ self.new_bug["keywords"] = self.config["keywords"]
|
||||||
|
+ self.new_bug["version"] = self.config["version"]
|
||||||
|
+ self.new_bug["status"] = self.config["bug_status"]
|
||||||
|
|
||||||
|
- self.short_desc_template = self.config['short_desc_template']
|
||||||
|
- self.description_template = self.config['description_template']
|
||||||
|
+ self.short_desc_template = self.config["short_desc_template"]
|
||||||
|
+ self.description_template = self.config["description_template"]
|
||||||
|
|
||||||
|
def handle(self, projectid, package, upstream, version, release, url):
|
||||||
|
""" Main API entry point. Push updates to bugzilla.
|
||||||
|
@@ -82,22 +102,21 @@ class Bugzilla(object):
|
||||||
|
- There is no bug and we need to file one.
|
||||||
|
"""
|
||||||
|
kwargs = copy.copy(self.config)
|
||||||
|
- kwargs.update(dict(
|
||||||
|
- projectid=projectid,
|
||||||
|
- package=package,
|
||||||
|
- name=package,
|
||||||
|
- version=version,
|
||||||
|
- release=release,
|
||||||
|
-
|
||||||
|
- repo_name=self.consumer.repoid,
|
||||||
|
- repo_version=version,
|
||||||
|
- repo_release=release,
|
||||||
|
-
|
||||||
|
- upstream=upstream,
|
||||||
|
- latest_upstream=upstream,
|
||||||
|
-
|
||||||
|
- url=url,
|
||||||
|
- ))
|
||||||
|
+ kwargs.update(
|
||||||
|
+ dict(
|
||||||
|
+ projectid=projectid,
|
||||||
|
+ package=package,
|
||||||
|
+ name=package,
|
||||||
|
+ version=version,
|
||||||
|
+ release=release,
|
||||||
|
+ repo_name=self.consumer.repoid,
|
||||||
|
+ repo_version=version,
|
||||||
|
+ repo_release=release,
|
||||||
|
+ upstream=upstream,
|
||||||
|
+ latest_upstream=upstream,
|
||||||
|
+ url=url,
|
||||||
|
+ )
|
||||||
|
+ )
|
||||||
|
|
||||||
|
bug = self.exact_bug(**kwargs)
|
||||||
|
if bug:
|
||||||
|
@@ -115,13 +134,7 @@ class Bugzilla(object):
|
||||||
|
return bug
|
||||||
|
|
||||||
|
def follow_up(self, text, bug):
|
||||||
|
- update = {
|
||||||
|
- 'comment': {
|
||||||
|
- 'body': text,
|
||||||
|
- 'is_private': False,
|
||||||
|
- },
|
||||||
|
- 'ids': [bug.bug_id],
|
||||||
|
- }
|
||||||
|
+ update = {"comment": {"body": text, "is_private": False}, "ids": [bug.bug_id]}
|
||||||
|
_log.debug("Following up on bug %r with %r" % (bug.bug_id, update))
|
||||||
|
self.bugzilla._proxy.Bug.update(update)
|
||||||
|
_log.info("Followed up on bug: %s" % bug.weburl)
|
||||||
|
@@ -133,21 +146,21 @@ class Bugzilla(object):
|
||||||
|
_log.info("Attached file to bug: %s" % bug.weburl)
|
||||||
|
|
||||||
|
def attach_log(self, filename, description, bug):
|
||||||
|
- self._attach_file(filename, description, bug, content_type='text/plain')
|
||||||
|
+ self._attach_file(filename, description, bug, content_type="text/plain")
|
||||||
|
|
||||||
|
def attach_patch(self, filename, description, bug):
|
||||||
|
self._attach_file(filename, description, bug, is_patch=True)
|
||||||
|
|
||||||
|
def ftbfs_bugs(self, name):
|
||||||
|
""" Return all FTBFS bugs we find for a package """
|
||||||
|
- short_desc_pattern = '%s: FTBFS in rawhide' % name
|
||||||
|
+ short_desc_pattern = "%s: FTBFS in rawhide" % name
|
||||||
|
query = {
|
||||||
|
- 'component': name,
|
||||||
|
- 'bug_status': self.bug_status_open,
|
||||||
|
- 'short_desc': short_desc_pattern,
|
||||||
|
- 'short_desc_type': 'substring',
|
||||||
|
- 'product': self.config['product'],
|
||||||
|
- 'query_format': 'advanced',
|
||||||
|
+ "component": name,
|
||||||
|
+ "bug_status": self.bug_status_open,
|
||||||
|
+ "short_desc": short_desc_pattern,
|
||||||
|
+ "short_desc_type": "substring",
|
||||||
|
+ "product": self.config["product"],
|
||||||
|
+ "query_format": "advanced",
|
||||||
|
}
|
||||||
|
bugs = self.bugzilla.query(query)
|
||||||
|
bugs = bugs or []
|
||||||
|
@@ -160,14 +173,14 @@ class Bugzilla(object):
|
||||||
|
|
||||||
|
def review_request_bugs(self, name):
|
||||||
|
""" Return the review request bugs for a package. """
|
||||||
|
- short_desc_pattern = ' %s ' % name
|
||||||
|
+ short_desc_pattern = " %s " % name
|
||||||
|
query = {
|
||||||
|
- 'component': 'Package Review',
|
||||||
|
- 'bug_status': self.bug_status_open,
|
||||||
|
- 'short_desc': short_desc_pattern,
|
||||||
|
- 'short_desc_type': 'substring',
|
||||||
|
- 'product': self.config['product'],
|
||||||
|
- 'query_format': 'advanced',
|
||||||
|
+ "component": "Package Review",
|
||||||
|
+ "bug_status": self.bug_status_open,
|
||||||
|
+ "short_desc": short_desc_pattern,
|
||||||
|
+ "short_desc_type": "substring",
|
||||||
|
+ "product": self.config["product"],
|
||||||
|
+ "query_format": "advanced",
|
||||||
|
}
|
||||||
|
bugs = self.bugzilla.query(query)
|
||||||
|
bugs = bugs or []
|
||||||
|
@@ -176,12 +189,12 @@ class Bugzilla(object):
|
||||||
|
|
||||||
|
def exact_bug(self, **package):
|
||||||
|
""" Return a particular upstream release ticket for a package. """
|
||||||
|
- short_desc_pattern = '%(name)s-%(upstream)s ' % package
|
||||||
|
+ short_desc_pattern = "%(name)s-%(upstream)s " % package
|
||||||
|
query = {
|
||||||
|
- 'component': package['name'],
|
||||||
|
- 'bug_status': self.bug_status_open + self.bug_status_closed,
|
||||||
|
- 'short_desc': short_desc_pattern,
|
||||||
|
- 'short_desc_type': 'substring',
|
||||||
|
+ "component": package["name"],
|
||||||
|
+ "bug_status": self.bug_status_open + self.bug_status_closed,
|
||||||
|
+ "short_desc": short_desc_pattern,
|
||||||
|
+ "short_desc_type": "substring",
|
||||||
|
}
|
||||||
|
|
||||||
|
query.update(self.base_query)
|
||||||
|
@@ -198,13 +211,10 @@ class Bugzilla(object):
|
||||||
|
""" Return any upstream release ticket for a package. """
|
||||||
|
# We'll match bugs in the NEW or ASSIGNED state
|
||||||
|
# https://github.com/fedora-infra/the-new-hotness/issues/58
|
||||||
|
- possible_statuses = list(set(
|
||||||
|
- self.bug_status_early + [self.config['bug_status']]
|
||||||
|
- ))
|
||||||
|
- query = {
|
||||||
|
- 'component': [package['name']],
|
||||||
|
- 'bug_status': possible_statuses,
|
||||||
|
- }
|
||||||
|
+ possible_statuses = list(
|
||||||
|
+ set(self.bug_status_early + [self.config["bug_status"]])
|
||||||
|
+ )
|
||||||
|
+ query = {"component": [package["name"]], "bug_status": possible_statuses}
|
||||||
|
|
||||||
|
query.update(self.base_query)
|
||||||
|
bugs = self.bugzilla.query(query)
|
||||||
|
@@ -218,17 +228,17 @@ class Bugzilla(object):
|
||||||
|
# short_desc should be '<name>-<version> <some text>'
|
||||||
|
# To extract the version get everything before the first space
|
||||||
|
# with split and then remove the name and '-' via slicing
|
||||||
|
- bug_version = short_desc.split(" ")[0][len(package['name']) + 1:]
|
||||||
|
+ bug_version = short_desc.split(" ")[0][len(package["name"]) + 1 :]
|
||||||
|
|
||||||
|
- _log.info("Comparing %r, %r" % (bug_version, package['upstream']))
|
||||||
|
- if bug_version != package['upstream']:
|
||||||
|
+ _log.info("Comparing %r, %r" % (bug_version, package["upstream"]))
|
||||||
|
+ if bug_version != package["upstream"]:
|
||||||
|
update = {
|
||||||
|
- 'summary': self.short_desc_template % package,
|
||||||
|
- 'comment': {
|
||||||
|
- 'body': self.description_template % package,
|
||||||
|
- 'is_private': False,
|
||||||
|
+ "summary": self.short_desc_template % package,
|
||||||
|
+ "comment": {
|
||||||
|
+ "body": self.description_template % package,
|
||||||
|
+ "is_private": False,
|
||||||
|
},
|
||||||
|
- 'ids': [bug.bug_id],
|
||||||
|
+ "ids": [bug.bug_id],
|
||||||
|
}
|
||||||
|
_log.debug("Updating bug %r with %r" % (bug.bug_id, update))
|
||||||
|
res = self.bugzilla._proxy.Bug.update(update)
|
||||||
|
@@ -236,26 +246,28 @@ class Bugzilla(object):
|
||||||
|
_log.info("Updated bug: %s" % bug.weburl)
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
- _log.warn("They are the same, which is odd. %r == %r" % (
|
||||||
|
- bug_version, package['upstream']))
|
||||||
|
+ _log.warn(
|
||||||
|
+ "They are the same, which is odd. %r == %r"
|
||||||
|
+ % (bug_version, package["upstream"])
|
||||||
|
+ )
|
||||||
|
return False
|
||||||
|
|
||||||
|
def create_bug(self, **package):
|
||||||
|
bug_dict = {
|
||||||
|
- 'component': package['name'],
|
||||||
|
- 'short_desc': self.short_desc_template % package,
|
||||||
|
- 'description': self.description_template % package,
|
||||||
|
+ "component": package["name"],
|
||||||
|
+ "short_desc": self.short_desc_template % package,
|
||||||
|
+ "description": self.description_template % package,
|
||||||
|
}
|
||||||
|
bug_dict.update(self.new_bug)
|
||||||
|
new_bug = self.bugzilla.createbug(**bug_dict)
|
||||||
|
change_status = None
|
||||||
|
_log.info("Created bug: %s" % new_bug)
|
||||||
|
|
||||||
|
- if new_bug.bug_status != self.config['bug_status']:
|
||||||
|
+ if new_bug.bug_status != self.config["bug_status"]:
|
||||||
|
change_status = self.bugzilla._proxy.bugzilla.changeStatus(
|
||||||
|
new_bug.bug_id,
|
||||||
|
- self.config['bug_status'],
|
||||||
|
- self.config['user'],
|
||||||
|
+ self.config["bug_status"],
|
||||||
|
+ self.config["user"],
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
False,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue