bot/code_review_bot/report/__init__.py (27 lines of code) (raw):
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import structlog
from code_review_bot.report.lando import LandoReporter
from code_review_bot.report.mail import MailReporter
from code_review_bot.report.mail_builderrors import BuildErrorsReporter
from code_review_bot.report.phabricator import PhabricatorReporter
logger = structlog.get_logger(__name__)
def get_reporters(configuration):
"""
Load reporters using Taskcluster configuration
"""
assert isinstance(configuration, list)
reporters = {
"lando": LandoReporter,
"mail": MailReporter,
"build_error": BuildErrorsReporter,
"phabricator": PhabricatorReporter,
}
out = {}
for conf in configuration:
try:
if "reporter" not in conf:
raise Exception("Missing reporter declaration")
name = conf["reporter"]
cls = reporters.get(name)
if cls is None:
raise Exception("Missing reporter class {}".format(conf["reporter"]))
out[name] = cls(conf)
except Exception as e:
logger.warning(f"Failed to create reporter: {e}")
return out