From aa79ad5630f890d49f1321fc54dddefea16a2f84 Mon Sep 17 00:00:00 2001 From: Tristan Cacqueray Date: Sep 15 2020 10:07:47 +0000 Subject: message_url: add pull request url to help with rechecking failure This change formats the message original url to help rechecking failure. --- diff --git a/fmgateway/callback.py b/fmgateway/callback.py index 944dc1e..c1bd014 100644 --- a/fmgateway/callback.py +++ b/fmgateway/callback.py @@ -23,6 +23,7 @@ from twisted.internet import endpoints, reactor from prometheus_client.twisted import MetricsResource from prometheus_client import Counter from prometheus_client import Gauge +from typing import Any, Optional log = logging.getLogger("FMGateway") @@ -132,6 +133,27 @@ def get_project_fullname(message): return message.body.get("repo", {}).get("fullname") +def message_host(message): + if message.topic.startswith("io.pagure"): + return "https://pagure.io" + elif message.topic.startswith("org.fedoraproject"): + return "https://src.fedoraproject.org" + elif message.topic.startswith("org.centos"): + return "https://git.centos.org" + else: + raise RuntimeError("Unknown topic pagure host: " + message.topic) + + +def message_url(message: Any) -> Optional[str]: + try: + pagure_url = message_host(message) + project_name = get_project_fullname(message) + pr_nr = message.body[get_pr_field_name(message)]["id"] + return pagure_url + "/" + project_name + "/pull-request/" + str(pr_nr) + except Exception: + return None + + def _process_message( message, topics_dest, exclude_projects, send_to_file=False, verify_ssl=True ): @@ -182,8 +204,8 @@ def process_message( except Exception as exc: inc_stat("errors") log.exception( - "Unable to process message. topic: %s, body: %s" - % (message.topic, message.body) + "Unable to process message. topic: %s, body: %s, url: %s" + % (message.topic, message.body, message_url(message)) ) add_errors(exc, message.body) diff --git a/tests/test_fmgateway.py b/tests/test_fmgateway.py index 0f4ddcc..39e2078 100644 --- a/tests/test_fmgateway.py +++ b/tests/test_fmgateway.py @@ -23,6 +23,7 @@ from fmgateway.callback import ( process_message, get_project_fullname, get_pr_field_name, + message_url, reduce_topic, stats, errors @@ -60,6 +61,11 @@ class testConvert(unittest.TestCase): if get_pr_field_name(ffm) not in payload["msg"]: self.assertGreaterEqual(len(payload["msg"]["project_fullname"]), 1) + def test_messsage_url(self): + message = create_fake_message("io.pagure.prod.pagure.pull-request.tag.added") + self.assertEqual( + "https://pagure.io/fedora-zuul-jobs-config/pull-request/65", message_url(message)) + @requests_mock.Mocker() def test_process_message(self, mr): reset_stats()