Bugyou Documentation¶
Bugyou is a service which listens to fedmsg messages and interacts with the issue tracking tools through an API.
Table of Contents¶
Overview¶
Bugyou is a service which listens to fedmsg messages and interacts with the issue tracking tools through an API.

Bugyou is a fedmsg consumer that keeps listening to fedmsg for all the messages. Each of the plugin is configured to listen to one or more topics. The consumer maintains the list of topics and filters all the other messages other than the topics that is required by the plugins.
Each of the plugin has it’s own queue in redis. The filtered message is pushed to each of the queue. Plugins connected to their designated queue keep consuming these messages. The plugins dicards a message if the topic does match to the designated topic(s).
Once filtered, the plugins processed the message and uses the service API to manage a ticket in the issue tracking tools. If we want to track new kind of fedmsg message and file issue accordingly then we need to go ahead and write a new plugin.
The plugins are run through a controller which needs to be restarted whenever
there is a new plugin. Once restarted, the controller enqueue the plugins and
topics in an instruction
queue in Redis. On which, the BugyouConsumer
consumes the messages and updates the list of topics to be served accordingly.
Development¶
Bugyou is written in Python2.
Install virtualenvwrapper:
dnf install python-virtualenvwrapper
Clone the
bugyou
repo from pagure:git clone ssh://git@pagure.io/bugyou.git
Clone the
bugyou_plugins
repo from pagure:git clone ssh://git@pagure.io/bugyou_plugins.git
Create a virtualenv, here we will be using virtualenvwrapper:
mkvirtualenv bugyou
Install the components in development mode:
for i in bugyou bugyou_plugins; do pushd $i; python setup.py develop; popd; done
Start the fedmsg daemon:
fedmsg-hub
Start the bugyou controller:
bugyou-cntrl
Configuration¶
Bugyou is configured through two configuration files that reside in
/etc/bugyou
directory.
- bugyou_plugins.cfg
- bugyou_services.cfg
bugyou_plugins.cfg¶
This file contains the list of all the plugins along with their topic(s) they subscribe to and the issue tracking tools they use.
[plugin_name]
services = <comma-seperated names of services>
topic = <comma-seperated fedmsg topics>
A sample looks like:
[autocloud]
services = pagure
topic = org.fedoraproject.prod.autocloud.image.success, org.fedoraproject.prod.autocloud.image.failed
In the sample above, the autocloud plugin listens to the fedmsg topics
org.fedoraproject.prod.autocloud.image.success
and
org.fedoraproject.prod.autocloud.image.failed
. The only service that
autocloud uses is pagure
bugyou_services.cfg¶
This file primary contains the data required to use a particular service such as API Key, repository name etc.
[<plugin_name>_<service_name>]
repo_name = <name of the repository>
access_token = <access_token>
A sample looks like:
[autocloud_pagure]
repo_name = xyz
access_token = ABC123DEF456GHI789JKL