2b38255f57
Add a doc clarification about statusbot listening to public messages, rather than private ones. Change-Id: I62dcf8b0b04af1850bc18b6f3ff86c07e8a4f52c
165 lines
5.5 KiB
ReStructuredText
165 lines
5.5 KiB
ReStructuredText
:title: IRC Services
|
|
|
|
.. _irc:
|
|
|
|
IRC Services
|
|
############
|
|
|
|
The infrastructure team runs a number of IRC bots that are active on
|
|
OpenStack related channels.
|
|
|
|
At a Glance
|
|
===========
|
|
|
|
:Hosts:
|
|
* http://eavesdrop.openstack.org/
|
|
* http://review.openstack.org/
|
|
* https://wiki.openstack.org/wiki/Infrastructure_Status
|
|
:Puppet:
|
|
* :file:`modules/meetbot`
|
|
* :file:`modules/statusbot`
|
|
* :file:`modules/gerritbot`
|
|
* :file:`modules/openstack_project/manifests/eavesdrop.pp`
|
|
* :file:`modules/openstack_project/manifests/review.pp`
|
|
:Configuration:
|
|
* :file:`modules/gerritbot/files/gerritbot_channel_config.yaml`
|
|
:Projects:
|
|
* http://wiki.debian.org/MeetBot
|
|
* http://sourceforge.net/projects/supybot/
|
|
* https://git.openstack.org/cgit/openstack-infra/meetbot
|
|
* https://git.openstack.org/cgit/openstack-infra/gerritbot
|
|
* https://git.openstack.org/cgit/openstack-infra/statusbot
|
|
:Bugs:
|
|
* http://bugs.launchpad.net/openstack-ci
|
|
|
|
Meetbot
|
|
=======
|
|
|
|
The OpenStack Infrastructure team run a slightly modified
|
|
`Meetbot <http://wiki.debian.org/MeetBot>`_ to log IRC channel activity and
|
|
meeting minutes. Meetbot is a plugin for
|
|
`Supybot <http://sourceforge.net/projects/supybot/>`_ which adds meeting
|
|
support features to the Supybot IRC bot.
|
|
|
|
Supybot
|
|
-------
|
|
|
|
In order to run Meetbot you will need to get Supybot. You can find the latest
|
|
release `here <http://sourceforge.net/projects/supybot/files/>`_. Once you have
|
|
extracted the release you will want to read the ``INSTALL`` and
|
|
``doc/GETTING_STARTED`` files. Those two files should have enough information to
|
|
get you going, but there are other goodies in ``doc/``.
|
|
|
|
Once you have Supybot installed you will need to configure a bot. The
|
|
``supybot-wizard`` command can get you started with a basic config, or you can
|
|
have the OpenStack meetbot puppet module do the heavy lifting.
|
|
|
|
One important config setting is ``supybot.reply.whenAddressedBy.chars``, which
|
|
sets the prefix character for this bot. This should be set to something other
|
|
than ``#`` as ``#`` will conflict with Meetbot (you can leave the setting blank
|
|
if you don't want a prefix character).
|
|
|
|
Meetbot
|
|
-------
|
|
|
|
The OpenStack Infrastructure Meetbot fork can be found at
|
|
https://git.openstack.org/cgit/openstack-infra/meetbot. Manual installation of the Meetbot
|
|
plugin is straightforward and documented in that repository's README.
|
|
OpenStack Infrastructure installs and configures Meetbot through Puppet.
|
|
|
|
Voting
|
|
^^^^^^
|
|
|
|
The OpenStack Infrastructure Meetbot fork adds simple voting features. After
|
|
a meeting has been started a meeting chair can begin a voting block with the
|
|
``#startvote`` command. The command takes two arguments, a question posed to
|
|
voters (ending with a ``?``), and the valid voting options. If the second
|
|
argument is missing the default options are "Yes" and "No". For example:
|
|
|
|
``#startvote Should we vote now? Yes, No, Maybe``
|
|
|
|
Meeting participants vote using the ``#vote`` command. This command takes a
|
|
single argument, which should be one of the options listed for voting by the
|
|
``#startvote`` command. For example:
|
|
|
|
``#vote Yes``
|
|
|
|
Note that you can vote multiple times, but only your last vote will count.
|
|
|
|
One can check the current vote tallies useing the ``#showvote`` command, which
|
|
takes no arguments. This will list the number of votes and voters for each item
|
|
that has votes.
|
|
|
|
When the meeting chair(s) are ready to stop the voting process they can issue
|
|
the ``#endvote`` command, which takes no arguments. Doing so will report the
|
|
voting results and log these results in the meeting minutes.
|
|
|
|
A somewhat contrived voting example:
|
|
|
|
::
|
|
|
|
foo | #startvote Should we vote now? Yes, No, Maybe
|
|
meetbot | Begin voting on: Should we vote now? Valid vote options are Yes, No, Maybe.
|
|
meetbot | Vote using '#vote OPTION'. Only your last vote counts.
|
|
foo | #vote Yes
|
|
bar | #vote Absolutely
|
|
meetbot | bar: Absolutely is not a valid option. Valid options are Yes, No, Maybe.
|
|
bar | #vote Yes
|
|
bar | #showvote
|
|
meetbot | Yes (2): foo, bar
|
|
foo | #vote No
|
|
foo | #showvote
|
|
meetbot | Yes (1): bar
|
|
meetbot | No (1): foo
|
|
foo | #endvote
|
|
meetbot | Voted on "Should we vote now?" Results are
|
|
meetbot | Yes (1): bar
|
|
meetbot | No (1): foo
|
|
|
|
|
|
.. _statusbot:
|
|
|
|
Statusbot
|
|
=========
|
|
|
|
Statusbot is used to distribute urgent information from the
|
|
Infrastructure team to OpenStack channels. It updates the
|
|
`Infrastructure Status wiki page
|
|
<https://wiki.openstack.org/wiki/Infrastructure_Status>`_. It
|
|
supports the following public message commands when issued by
|
|
authenticated and whitelisted users from the channels the bot is
|
|
listening to, including #openstack-infra:
|
|
|
|
#status log MESSAGE
|
|
Log a message to the wiki page.
|
|
|
|
#status notice MESSAGE
|
|
Broadcast a message to all OpenStack channels, and log to the wiki
|
|
page.
|
|
|
|
#status alert MESSAGE
|
|
Broadcast a message to all OpenStack channels and change their
|
|
topics, log to the wiki page, and set an alert box on the wiki
|
|
page (eventually include this alert box on status.openstack.org
|
|
pages).
|
|
|
|
#status ok [MESSAGE]
|
|
Remove alert box and restore channel topics, optionally announcing
|
|
and logging an "okay" message.
|
|
|
|
|
|
.. _gerritbot:
|
|
|
|
Gerritbot
|
|
=========
|
|
|
|
Gerritbot watches the Gerrit event stream (using the "stream-events"
|
|
Gerrit command) and announces events (such as patchset-created, or
|
|
change-merged) to relevant IRC channels.
|
|
|
|
Gerritbot's configuration is in
|
|
:file:`modules/gerritbot/files/gerritbot_channel_config.yaml`.
|
|
|
|
The configuration is organized by channel, with each project that a
|
|
channel is interested in listed under the channel.
|