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.

_images/bugyou.png

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.

  1. bugyou_plugins.cfg
  2. 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

Indices and tables