From 691d128db672c4a40df61e9b95b42ce0fbf12532 Mon Sep 17 00:00:00 2001 From: Jonathan Lebon Date: Oct 04 2017 18:34:27 +0000 Subject: upstream: support label filters Allow the config to specify a label to look for in an issue's labels. Change rpm-ostree config to make use of this. Also listen for 'github.issue.reopened' issues. Only mildly tested. :) --- diff --git a/ansible/files/sync2jira.py b/ansible/files/sync2jira.py index 9544648..f9689ee 100644 --- a/ansible/files/sync2jira.py +++ b/ansible/files/sync2jira.py @@ -30,7 +30,7 @@ config = { 'github': { # Only sync multi-type tickets from bodhi. 'fedora-infra/bodhi': { 'state': 'open', 'milestone': 4, }, - 'projectatomic/rpm-ostree': { 'state': 'open', 'milestone': 2, }, + 'projectatomic/rpm-ostree': { 'state': 'open', 'label': 'jira', }, }, }, 'map': { diff --git a/sync2jira/main.py b/sync2jira/main.py index 36a065e..54f0351 100644 --- a/sync2jira/main.py +++ b/sync2jira/main.py @@ -39,6 +39,8 @@ log = logging.getLogger('sync2jira.main') handlers = { # Example: https://apps.fedoraproject.org/datagrepper/id?id=2016-895ed21e-5d53-4fde-86ac-64dab36a14ad&is_raw=true&size=extra-large 'github.issue.opened': u.handle_github_message, + # Example: https://apps.fedoraproject.org/datagrepper/id?id=2017-ef579c6c-c391-449b-8cc2-837c41bd6c85&is_raw=true&size=extra-large + 'github.issue.reopened': u.handle_github_message, # Example: https://apps.fedoraproject.org/datagrepper/id?id=2016-d578d8f6-0c4c-493d-9535-4e138a03e197&is_raw=true&size=extra-large 'pagure.issue.new': u.handle_pagure_message, } diff --git a/sync2jira/upstream.py b/sync2jira/upstream.py index 2cfee83..f61468f 100644 --- a/sync2jira/upstream.py +++ b/sync2jira/upstream.py @@ -49,9 +49,17 @@ def handle_github_message(msg, config): for key, expected in filter.items(): actual = msg['msg']['issue'].get(key) - if actual != expected: - log.info("Actual %r %r != expected %r" % (key, actual, expected)) - return None + # special handling for label: we look for it in the list of msg labels + if key == 'label': + labels = [label['name'] for label in msg['msg']['issue']['labels']] + if actual not in labels: + log.info("Label %s not set on issue" % actual) + return None + else: + # direct comparison + if actual != expected: + log.info("Actual %r %r != expected %r" % (key, actual, expected)) + return None return i.Issue.from_github(upstream, msg['msg']['issue'], config)