This is a different take at https://pagure.io/koji/pull-request/45
Instead of installing just the runroot builder plugin explicitly, here we
separate the plugins out into hub and builder plugins explicitly and install
each type in turn.
Although this is often a surprising behaviour, the Python documentation
is quite clear on this:
If a component is an absolute path, all previous components are
thrown away and joining continues from the absolute path component.
https://docs.python.org/2/library/os.path.html#os.path.join
That means we need to ensure that we don't end up in this case.
Citing from reindent docs:
Change Python (.py) files to use 4-space indents and no hard tab
characters. Also trim excess spaces and tabs from ends of lines, and
remove empty lines at the end of files. Also ensure the last line
ends with a newline.
Citing from PEP 8:
Use 4 spaces per indentation level.
Python 2 code indented with a mixture of tabs and spaces should be
converted to using spaces exclusively.
Don't write string literals that rely on significant trailing
whitespace. Such trailing whitespace is visually indistinguishable
and some editors (or more recently, reindent.py) will trim them.
Also PyLint recommends not to have trailing whitespace on any line.
The plugin will block for timeout seconds at most when trying to send a message to the broker. After that amount of time, the send will fail and an error will be logged.
The plugin will check that the broker is reachable every heartbeat seconds. If it is not reachable, the connection will be aborted and a new connection will be attempted the next time a message is sent.