From 76353712030423da0362c274002b8a413adda704 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 8 Oct 2017 14:55:06 +0100 Subject: [PATCH] Move sending bug updates out of manager Signed-off-by: Michael Tremer --- Makefile.am | 1 - src/buildservice/bugtracker.py | 28 ++++++++++++++++++++-- src/crontab/pakfire-build-service | 3 +++ src/manager/__init__.py | 1 - src/manager/bugs.py | 39 ------------------------------- src/scripts/pakfire-build-service | 3 +++ 6 files changed, 32 insertions(+), 43 deletions(-) delete mode 100644 src/manager/bugs.py diff --git a/Makefile.am b/Makefile.am index 4f0ea3f..a3ba076 100644 --- a/Makefile.am +++ b/Makefile.am @@ -123,7 +123,6 @@ hubdir = $(buildservicedir)/hub manager_PYTHON = \ src/manager/__init__.py \ src/manager/base.py \ - src/manager/bugs.py \ src/manager/builds.py \ src/manager/repositories.py \ src/manager/sources.py diff --git a/src/buildservice/bugtracker.py b/src/buildservice/bugtracker.py index 7d80c1c..2832544 100644 --- a/src/buildservice/bugtracker.py +++ b/src/buildservice/bugtracker.py @@ -65,7 +65,6 @@ class BugzillaBug(base.Object): self.call("update", ids=[self.id,], **kwargs) - class Bugzilla(base.Object): def __init__(self, pakfire): @@ -133,7 +132,6 @@ class Bugzilla(base.Object): def get_bug(self, bug_id): try: bug = BugzillaBug(self, bug_id) - s = bug.status except xmlrpclib.Fault: return None @@ -174,3 +172,29 @@ class Bugzilla(base.Object): bugs.append(bug) return bugs + + def send_all(self, limit=100): + # Get up to ten updates. + query = self.db.query("SELECT * FROM builds_bugs_updates \ + WHERE error IS FALSE ORDER BY time LIMIT %s", limit) + + # XXX CHECK IF BZ IS ACTUALLY REACHABLE AND WORKING + + for update in query: + try: + bug = self.backend.bugzilla.get_bug(update.bug_id) + if not bug: + logging.error("Bug #%s does not exist." % update.bug_id) + continue + + # Set the changes. + bug.set_status(update.status, update.resolution, update.comment) + + except Exception, e: + # If there was an error, we save that and go on. + self.db.execute("UPDATE builds_bugs_updates SET error = 'Y', error_msg = %s \ + WHERE id = %s", "%s" % e, update.id) + + else: + # Remove the update when it has been done successfully. + self.db.execute("DELETE FROM builds_bugs_updates WHERE id = %s", update.id) diff --git a/src/crontab/pakfire-build-service b/src/crontab/pakfire-build-service index bf9ab18..84b598d 100644 --- a/src/crontab/pakfire-build-service +++ b/src/crontab/pakfire-build-service @@ -1,6 +1,9 @@ # Send queued emails once a minute * * * * * nobody pakfire-build-service process-message-queue &>/dev/null +# Send updates to Bugzilla +*/5 * * * * nobody pakfire-build-service send-bug-updates &>/dev/null + # Cleanup timed-out uploads 0 */6 * * * nobody pakfire-build-service cleanup-uploads &>/dev/null diff --git a/src/manager/__init__.py b/src/manager/__init__.py index 6baa095..d59e557 100644 --- a/src/manager/__init__.py +++ b/src/manager/__init__.py @@ -2,7 +2,6 @@ from . import base -from .bugs import BugsUpdateEvent from .builds import BuildsFailedRestartEvent, CheckBuildDependenciesEvent from .builds import CreateTestBuildsEvent, DistEvent from .repositories import RepositoriesUpdateEvent diff --git a/src/manager/bugs.py b/src/manager/bugs.py deleted file mode 100644 index 1ee5f64..0000000 --- a/src/manager/bugs.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/python - -import logging - -from . import base - -class BugsUpdateEvent(base.Event): - # User feedback gets a high priority. - priority = 1 - - @property - def interval(self): - return self.pakfire.settings.get_int("bugzilla_update_interval", 60) - - def run(self): - # Get up to ten updates. - query = self.db.query("SELECT * FROM builds_bugs_updates \ - WHERE error = 'N' ORDER BY time") - - # XXX CHECK IF BZ IS ACTUALLY REACHABLE AND WORKING - - for update in query: - try: - bug = self.pakfire.bugzilla.get_bug(update.bug_id) - if not bug: - logging.error("Bug #%s does not exist." % update.bug_id) - continue - - # Set the changes. - bug.set_status(update.status, update.resolution, update.comment) - - except Exception, e: - # If there was an error, we save that and go on. - self.db.execute("UPDATE builds_bugs_updates SET error = 'Y', error_msg = %s \ - WHERE id = %s", "%s" % e, update.id) - - else: - # Remove the update when it has been done successfully. - self.db.execute("DELETE FROM builds_bugs_updates WHERE id = %s", update.id) diff --git a/src/scripts/pakfire-build-service b/src/scripts/pakfire-build-service index 2fb2cc0..20c93e6 100644 --- a/src/scripts/pakfire-build-service +++ b/src/scripts/pakfire-build-service @@ -25,6 +25,9 @@ class Cli(object): # Sends all queued messages "process-message-queue" : self.backend.messages.process_queue, + + # Send bug updates to Bugzilla + "send-bug-updates" : self.backend.bugzilla.send_all, } def __call__(self, *args): -- 2.39.2